ppium Mobile Extensions パッケージには、Android および iOS アプリ (ネイティブ、ウェブ、ハイブリッド) 向けの JUnit 形式の Appium モバイル テストを実行するのに役立つツールが含まれています。このセクションの内容
ツールの概要
パッケージには以下のツールが含まれています。
Appium Mobile Executor Tool
Appium Mobile Executor ツールを使用すると、JUnit 形式の Appium テストと SOAtest で実行可能な他のさまざまなタイプのテストを組み合わせて実行できます。ツールは Android および iOS アプリ (ネイティブ、ウェブ、ハイブリッド) 向けの JUnit 機能テストをサポートします。テストは Android エミュレーター、iOS シミュレーター、またはネイティブ デバイス (iOS または Android) で実行できます。テストしたい OS バージョンがサポートされるかどうかは、Appium サーバーに依存します。詳細については Appium のドキュメントを参照してください。
一連のイベントの一部として複数のモバイル テストをオーケストレーションする単一の包括的なテスト シナリオを設計して実行できます。たとえば、SOAtest の直感的なインターフェイスを使用して以下を実行できます。
- いくつかのアクションを実行してテスト環境やテスト データをセットアップする単一のシナリオを実行する
- 単体テストおよびサービスレベルのテストを実行する
- モバイル テストを実行する
任意のテスト実行から値を抽出し、検証や、エンドツーエンド テスト シナリオに含まれる他のツールに入力するために使用できます。
Start Appium Server Tool
このツールは、指定された設定を使用して Node.js Server 上で Appium アプリケーションを開始するプロセスを自動化します。
Stop Appium Server Tool
このツールは、Start Appium Server ツールで開始されたすべてのサーバー インスタンスを停止するプロセスを自動化します。
前提条件
- Java 8 以降で Eclipse を実行する SOAtest 9.10.x 以降
- Appium Server 1.6.5 以降Desktop App または Appium on a Node.js server をインストールできます。
- 実行を計画しているテストのタイプに対して Appium が期待する前提条件および設定詳細については、Appium のドキュメント、とくに「Setting up the Appium Client」を参照してください。
エミュレーターと接続する場合、「Appium Concepts」または「Desired Capabilities documentation」で説明されている推奨機能を JUnit が備えている必要があります。例:
DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("deviceName", "testDevice"); capabilities.setCapability("platformVersion", "4.4.2"); capabilities.setCapability("app", "C:\path\to\application.apk");
'Device name’ は、必ずツールの UI および JUnit で設定する必要があります。
これは、Appium の要件です。他の設定は、JUnit テスト自体またはツールの UI で設定します。ツールの UI での指定は、JUnit で設定された値を上書きします。
JUnit 3.8.x および 4 形式で作成された Appium Selenium WebDriver テストがサポートされます。「テストの実行」で説明されている Appium の要件に従ってテストを作成および設定する必要があります。
インストール
ツールは UI またはコマンドラインからインストールできます。
UI からのインストール
- [Parasoft] メニューの [設定] を選択します。
- [システム プロパティ] ページで [JAR の追加] をクリックします。
- appiumextensions.jar ファイルを選択します。
- SOAtest/Virtualize を再起動します。
コマンドラインからのインストール
localsettings プロパティ ファイルの system.properties.classpath プロパティに appiumextensions.jar を追加します。例:
system.properties.classpath=<path to jar>/ appiumextensions.jar
全般設定
テストを実行する特定のモバイル プラットフォーム用に環境をセット アップする必要があります。詳細については、Appium のドキュメント、とくに「requirements」および「setup」を参照してください。
Start Appium Server Tool の使用方法
テストの追加ウィザードを使用し、スタンドアロン ツールとして Start Appium Server ツールを追加できます (「プロジェクト、.tstファイル、テスト スイートの追加」を参照)。テスト スイート内の Appium Mobile Executor ツールより前の位置に Start Appium Server ツールを配置します。
Start Appium Server ツールの出力は、一時ディレクトリの <temp>/parasoft/xtest/AppiumServerLog-< timestamp>.txt に保存されます。
Start Appium Server Tool の設定
デバイスまたはエミュレーターで Appium を実行する前に、ツールを設定しておく必要があります。
環境設定
Node.js インストール ディレクトリ | Node.js がインストールされたディレクトリを指定します。このディレクトリには node.exe (Windows) または bin/node (Linux または Mac) がなければなりません。Windows の場合、このディレクトリは通常 "C:\Program Files\nodejs" です。この設定は、パス上に Node.js がない場合にだけ指定する必要があります。 |
---|---|
Appium インストール ディレクトリ | Appium Server (Appium Desktop ではありません) がインストールされたディレクトリを指定します。 Node.js に Appium をインストールした場合、通常、サーバーは次のディレクトリにあります。 <APPIUM_DESKTOP_INSTALL>/resources/app/node_modules/appium Node.js のインストールによって Appium をインストールした場合、通常、サーバーは次のディレクトリにあります。 %APPDATA%\npm\node_modules\appium (Windows) または /usr/local/lib/node_modules/appium (Linux または Mac) APPIUM_HOME が定義され、有効な Appium の場所を指している場合、この設定は必要ありません。 Appium が HomeBrew を使用して (Appium のドキュメントで説明されているとおり) Mac にインストールされた場合、APPIUM_HOME の指定やこのフィールドへの入力は必要ありません。 |
ポート (Appium flag: --port) | Appium Server が実行されているポートです。デフォルト値は 4713 です。 |
その他のサーバー フラグ (オプション) | 使用する任意のサーバー フラグを指定します。
<temp>/parasoft/xtest/AppiumServerLog-< timestamp>.txt |
デバイス設定
プラットフォーム名 (Appium flag: --platform-name) | デバイスのプラットフォーム名です。使用できる値は iOS または Android です。プラットフォーム名は、指定どおり正確に入力する必要があります (たとえば I OS ではなく iOS )。 |
---|---|
プラットフォーム バージョン (Appium flag: --platform-version) | プラットフォームのバージョンを指定します (例: 7.1 、4.4 )。 |
デバイス名 (Appium flag: --device-name) | iOS の場合、シミュレートされたデバイスまたは物理デバイス名を指定します。 Android の物理デバイスの場合、物理デバイス名を指定します。エミュレートされた Android デバイスを起動したい場合は、[Android 仮想デバイス名 ] フィールドを使用します。デバイス名または Android 仮想デバイス名 のどちらかに入力します。両方に入力してはいけません。 |
Android 仮想デバイス名 (Appium flag: --avd) | 起動する Android 仮想デバイス名を指定します。デバイス名または Android 仮想デバイス名 のどちらかに入力します。両方に入力してはいけません。 |
アプリケーション設定
アプリケーションの場所 (Appium flag: --app) | 起動するアプリケーションの実行モジュールの場所を指定します。 |
---|
Android 固有の設定
Android デバイスを起動するには、ANDROID_HOME を定義する必要があります。たとえば、Windows ではこの変数に %LOCALAPPDATA%\Android\Sdk を指定します。
マシンにプラグインされた物理 Android デバイスを使用する場合、[デバイス名] を設定し、[Android 仮想デバイス名] は空のままにします。
エミュレートされた Android デバイスを使用する場合、[Android 仮想デバイス名] を設定し、[デバイス名] は空のままにします。次のサンプルでは、Start Appium Server は、エミュレーターで実行される Android テスト用に設定されています。
iOS 固有の設定
次のサンプル ~/.bash_profile は、PATH に Node.js を追加し、Appium Desktop application for OSX に基づいて APPIUM_HOME 変数を設定します。
Appium Homebrew パッケージ マネージャーを使用して Appium をインストールし、/usr/local/bin/appium にシンボリック リンクがある場合、Environment Settings ページで Node.js および Appium の場所を入力する必要はありません。which appium
コマンドを使用して検証します。
次のサンプルでは、Start Appium Server は、Appium Desktop アプリケーションに基づく いOS アプリケーション用に設定されています。
シミュレーターの場合も物理デバイスの場合も [デバイス名] オプションを使用できます。[Android 仮想デバイス名] オプションは常に空にします。
Stop Appium Server Tool の使用方法
テストの追加ウィザードを使用し、スタンドアロン ツールとして Stop Appium Server ツールを追加できます (「プロジェクト、.tstファイル、テスト スイートの追加」を参照)。テスト スイート内の Appium Mobile Executor ツールおよび Start Appium Server ツールより後ろの位置に Stop Appium Server ツールを配置します。
テスト スイートのいずれかのツールが失敗したときにでも、必ずこのツールが実行されるようにするには、ティアダウン テストにツールを追加します。
このツールには設定オプションはありません。このツールは、Start Appium Server ツールで開始されたすべてのサーバー インスタンスを停止するよう事前設定されています。ツールは以下のコンポーネントをシャットダウンしません。
- Android エミュレーターまたは iPhone シミュレーター (Appium はこれらの操作を処理しないため)
- Start Appium Server ツールを使って開始されたのではないサーバー
Appium Mobile Executor の使用方法
テストの追加ウィザードを使用し、スタンドアロン ツールとして Appium Mobile Executor ツールを追加できます (「プロジェクト、.tstファイル、テスト スイートの追加」を参照)。
実行したい JUnit がテストのクラス フォルダーまたは .jar ファイルに含まれている必要があります。その他の依存ライブラリを jar/フォルダーにインクルードしたり、システム プロパティに追加したりできます。ツールはまず jar/フォルダーを確認し、その後 (必要があれば) システム プロパティを確認します。Appium Executor が JUnit テストを実行するには、Appium Server が実行中である必要があります。サーバーは自動的には開始されません。
単一の JUnit テスト メソッドの実行
- テストのクラス フォルダーまたは jar ファイルを指定し、実行するテスト クラスおよびテスト メソッドを指定します。
- (任意) ツールから動的に JUnit 値を変更したい場合、キー/値のペアをセミコロンで区切って [データ] フィールドに入力します。
Java の システム プロパティ オブジェクトを使用して JUnit から変数にアクセスできます。例:
String lastName = System.getProperty("lastName")
クラス内のすべてのテスト メソッドを実行
- テストのクラス フォルダーまたは jar ファイルを指定し、テスト クラスを指定します。[メソッド] フィールドは空のままにします。
- (任意) ツールから動的に JUnit 値を変更したい場合、キー/値のペアをセミコロンで区切って [データ] フィールドに入力します。
Java の システム プロパティ オブジェクトを使用して JUnit から変数にアクセスできます。例:
String lastName = System.getProperty("lastName")
実行の詳細の参照
テストを開始すると、関連付けられたシミュレーター、エミュレーター、またはデバイスでアプリケーションが起動されます。テスト実行時にシミュレーター/エミュレーター/デバイスを監視し、テスト アクションがアプリケーションに与える影響を参照できます。Appium 関連の実行の詳細は、Appium Server ウィンドウにレポートされます。
結果の参照
実行の詳細および結果については、[コンソール] ビューにレポートされます。また、テストの失敗が検出された場合、品質タスク ビューにレポートされます。
JUnit テストからコンソールにメッセージをレポート
JUnit テストからコンソールにメッセージをレポートするには (デバッグや実行の詳細確認のため)、次を使用します。
Application.showMessage("this displays in the console");
アプリケーション コンテキストにアクセスするには、JUnit に com.parasoft.api パッケージがインポートされている必要があります。インポートを有効にするには、必ず Java プロジェクトのクラスパスに [install dir]/plugins/com.parasoft.xtest.libs.web_[version]/root/com.parasoft.api.jar を追加してください。
JUnit テストからの値の取得
SOAtest/Virtualize は JUnit テストからデータを取得し、他の SOAtest/Virtualize ツールに渡すことができます。保存する値を指定するよう JUnit を設定し、Executor ツールの JUnit Output に適切なツールを連結する必要があります。データは XML フォーマットで連結されたツールに渡されます。たとえば、Diff、XML Assertor、または XML Data Bank ツールにデータを送信できます。
JUnit Output の設定
JUnit Output タイプを使用する前に、JUnit はアプリケーション コンテキストにアクセスし、標準 Java Map に "custom_tool_junit_output" というキーで値を保存する必要があります。Appium Mobile Executor ツールはアプリケーション コンテキストをチェックし、保存されたマップがあれば、XML に変換してツールの "JUnit Output" 出力に渡します。マップのキーおよび値は文字列でなければなりません。JUnit にページ ソース文字列を返させるには、ソース全体をマップの値に追加します (具体例は下の「サンプル」を参照してください)。
アプリケーション コンテキストにアクセスするには、JUnit に com.parasoft.api パッケージがインポートされている必要があります。インポートを有効にするには、必ず Java プロジェクトのクラスパスに [install dir]/plugins/com.parasoft.xtest.libs.web_[version]/root/com.parasoft.api.jar を追加してください。
別のツールにデータを送信
- Appium Mobile Executor ツールを右クリックし、ショートカット メニューの [出力の追加] をクリックします。
- 左側で [JUnit Output] を選択し、右側で出力を受け取るツールを選択します。
- [終了] をクリックします。
サンプル
たとえば、アプリのレイアウト ソースを XML 形式で取得して XML Data Bank に送り、後続のテストで使用できるようにモバイル アプリから値を抽出したいとします。
それにはまず、1) XML Data Bank に送信する値を含むマップを構築し、2) マップをアプリケーション コンテキストに追加する JUnit テストを作成します。マップの値は XML ドキュメントに変換され、JUnit Output に連結されたツールに渡されます。
@org.junit.Test public void testAccessibilityPage() throws Exception { WebElement element = driver.findElement(By.xpath("//android.widget.TextView[1]")); element.click(); // Create map representing name-value pairs for XML Map<String, String> map = new HashMap<String, String>(); // Get App's layout source in XML String source = driver.getPageSource(); // Place source in map with key "source" map.put("source", source); // Get the Parasoft Scripting Context ScriptingContext context = Application.getContext(); // Place the map in the context with the custom_tool_junit_output context.put("custom_tool_junit_output", map); }
次に、このテストを実行するよう設定された Appium Mobile Executor ツールを追加します。このデータを XML Data Bank ツールに送る JUnit 出力をツールに追加します。
そこで、抽出する値を指定し、後で他のツールで値を使用できます。マップのコンテンツは、JUnit 出力に連結されたツールに渡される XML ドキュメントの <root> 要素の下にあります。
サード パーティのコンテンツ
このツールは、以下のサード パーティのコンテンツを含みます。
- Appium (Apache License 2.0)
- JUnit (Eclipse Public License 1.0)
その他のライセンスの詳細については、Parasoft Burp Suite Extensions の licenses フォルダーを参照してください。