Web テスト、モバイル・テスト、または API テストの並列実行
複数の UFT One テストを並列で実行するには、ParallelRunner CLI ツールを使用します。GUI テストをモバイル・デバイスと Web ブラウザで実行できるほか、API テストを実行することもできます。ParallelRunner は、GUI テストによって呼び出される API テストと、その逆の API テストによって呼び出される GUI テストもサポートします。
ParallelRunner を使用した API テストの実行は、UFT One バージョン 15.0.2 以降でサポートされています
サポート環境
Web の並列テストは、Web Add-in でサポートされているコントロールについて、特定のブラウザでサポートされます。サポートされているブラウザのリストについては、ブラウザのパラメータ値のリストを参照してください。
モバイル・デバイスでの並列テストは、UFT Mobile を使用する場合にサポートされており、ローカル・デバイスでテストする場合はサポートされていません。
並列テストを開始する前に
並列テストを開始する前に、次の手順を実行します。
ライセンス |
お使いのライセンスでユース・ケースがサポートされていることを確認します。 ParallelRunner では、最大 4 つのテストの並列実行がサポートされています。さらに、デスクトップ Web テストを並列実行するには、コンカレント・ライセンス・サーバが必要です。Web テスト実行はそれぞれ 1 つのコンカレント・ライセンスを消費します。 |
ParallelRunner ポートへのアクセス | UFT One コンピュータのファイアウォールによって ParallelRunner が使用するポート(標準設定で 50051)がブロックされていないことを確認します。 |
モバイル Web テスト |
モバイル Web ブラウザをテストする場合は、[モバイル]タブの[記録と実行環境設定]で、正しいブラウザが選択されていることを確認します。 詳細については、「モバイル・アプリをテストするための設定の定義」を参照してください。 |
Web テスト |
次の点に注意してください。 ParallelRunner コマンドで Web ブラウザを指定すると、これらのブラウザはテストを実行する前に起動されます。この値は、[記録と実行環境設定]で定義された設定と、テスト内で設定されたすべてのブラウザ・パラメータ化より優先されます。 つまり
|
テストの並列実行
ParallelRunner ツールは <UFT One インストール・フォルダ>/bin ディレクトリにあります。
次の手順を実行します。
-
UFT One を閉じます。ParallelRunner と UFT One は同時に実行できません。
-
コマンド・ラインからテストを並列実行します。テストと環境の詳細は次の方法で定義します。
-
「.json ファイルを使用したテスト、環境、パラメータの定義」
.json ファイルを使用する場合は、テスト実行間の依存関係を作成し、実行の開始時刻を制御することで、並列実行の同期と制御を行うことができます。詳細については、「条件の使用による並列実行の同期」を参照してください。
ParallelRunner を使用したテスト実行は[高速]モードで実行されます。詳細については、「高速モード」を参照してください。
詳細については、次を参照してください。
コマンド・ライン・オプションを使用したテスト、環境、およびパラメータの定義
コマンド・ラインからテストを実行する場合は、個別のコマンドで各テストを別々に実行します。
GUI テストの場合、各コマンドで実行対象として異なる選択肢を指定すると、テストが複数回実行されます。次の要素に対して選択肢を指定することができます。
- ブラウザ
- デバイス
- データ・テーブル
- テスト・パラメータ
コマンド・ラインからテストを実行するには、以下のセクションで定義された構文を使用します。選択肢を区切るにはセミコロン(;)を使用します。
ParallelRunner によって、指定した選択肢のすべての組み合わせをテストするために必要な回数のテストが実行されます。
例:
テストを各ブラウザに対して 1 回ずつ、3 回実行します。
ParallelRunner -t "C:\GUIWebTest" -b "Chrome;IE;Firefox"
テストを各ブラウザで各データ・テーブルに対して 1 回ずつ、4 回実行します。
ParallelRunner -t "C:\GUIWebTest" -b "Chrome;Firefox" -dt ".\Datatable1.xlsx;.\Datatable2.xlsx"
テストを各ブラウザで各データ・テーブルを使用して各テスト・パラメータ・セットで 8 回実行します。
ParallelRunner -t "C:\GUIWebTest" -b "Chrome;Firefox" -dt ".\Datatable1.xlsx;.\Datatable2.xlsx" -tp "param1:value1, param2:value2; param1:value3, param2:value4"
ヒント: 別の方法として、1 つのファイルで複数のテストが設定されている .json ファイルを参照する方法があります。このファイルでは、各テスト実行を個別に設定します。詳細については、「.json ファイルを使用したテスト、環境、パラメータの定義」を参照してください。
コマンド・ラインから、次の構文を使用して各 Web テストを実行します。
例:
ParallelRunner -t "C:\GUIWebTest_Demo" -b "Chrome;IE;Firefox" -r "C:\parallelexecution"
複数のブラウザを指定すると、テストは各ブラウザで 1 回ずつ、複数回実行されます。
コマンド・ラインから、次の構文を使用して各モバイル・テストを実行します。
例:
ParallelRunner -t "C:\GUITest_Demo" -d "deviceID:HT69K0201987;manufacturer:samsung,osType:Android,osVersion:>6.0;manufacturer:motorola,model:Nexus 6" -r "C:\parallelexecution"
複数のデバイスを指定すると、テストは各デバイスで 1 回ずつ、複数回実行されます。
利用可能なデバイスの待機
利用可能なデバイスがない場合に、すぐにテスト実行を失敗にするのではなく、適切なデバイスが利用可能になるまで待機するように、ParallelRunner を設定することができます。これを行うには、ParallelRunner コマンドに -we
オプションを追加します。
コマンド・ラインから、次の構文を使用して各 API テストを実行します。
例:
ParallelRunner -t "C:\APITest" -r "C:\API_TestResults"
コマンド・ラインから直接テストを実行する場合は、次のオプションを使用します。
-
オプション名には大文字と小文字の区別がありません。
-
ダッシュ(
-
)の後にオプションの省略形を使用するか、2 つのダッシュ(--
)の後にオプションの正式名を使用します。
|
文字列。必須。 実行する UFT One テストが含まれるフォルダのパスを定義します。 パスにスペース文字が含まれる場合は、パスを二重引用符("")で囲む必要があります。例:-t ".\GUITest Demo" 同じパスでの複数のテストはサポートされていません。 |
-b
--browsers
|
文字列。オプション。Web テストでサポートされています。 複数のブラウザはセミコロン(;)を使用して定義します。ParallelRunner でテストが複数回実行され、指定したすべてのブラウザでテストが行われます。 次の値がサポートされています。
注:
|
|
文字列。オプション。モバイル・テストでサポートされています。 複数のデバイスはセミコロン(;)を使用して定義します。ParallelRunner でテストが複数回実行され、指定したすべてのデバイスでテストが行われます。 この文字列で以下の属性を使用して、特定のデバイス ID を使用してデバイスを定義したり、機能でデバイスを検索したりします。
注:この文字列のカンマ、コロン、セミコロンの前後に余分なスペースを追加しないでください。特殊文字をサポートするために、文字列は常に二重引用符("")で囲むことをお勧めします。 例: –d "manufacturer:apple,osType:iOS,osVersion:>=11.0" |
|
文字列。オプション。Web テストまたはモバイル・テストでサポートされます。 このテストに使用するデータ・テーブルのパスを定義します。UFT One では、テストに保存されているデータ・テーブルではなく、指定したテーブルが使用されます。 複数のデータ・テーブルはセミコロン(;)を使用して定義します。ParallelRunner でテストが複数回実行され、指定したすべてのデータ・テーブルを使用してテストが行われます。 パスにスペース文字が含まれる場合は、パスを二重引用符("")で囲む必要があります。 例:-dt ".\Data Tables\Datatable1.xlsx;.\Data Tables\Datatable2.xlsx" |
-o
|
文字列。オプション。 テストの実行中と実行後にコンソールに表示される結果出力を指定します。 次の値がサポートされています。
|
-r
|
文字列。オプション。 テストの実行結果を保存するパスを定義します。標準設定では、実行結果は %Temp%\TempResults に保存されます。 文字列にスペース文字が含まれる場合は、文字列を二重引用符("")で囲む必要があります。例:- r "%Temp%\Temp Results" |
-rl
|
オプション。 コマンドに含めると、テスト実行が開始されたときに自動的に実行結果が開きます。更新頻度を指定するには、「-rr--report-auto-refresh」 オプションを使用します。 詳細については、「ParallelRunner の応答と実行結果の例」を参照してください。 |
-rn
|
文字列。オプション。 レポート名を定義します。レポート名は、並列実行のサマリ・レポートを開いたときにブラウザのタブに表示されます。標準設定では、この名前は「Parallel Report」です。 この名前をカスタマイズすれば、複数のレポートを一度に開いたときに実行が区別しやすくなります。この目的のため、各レポート名にはタイムスタンプも追加されます。 文字列にスペース文字が含まれる場合は、文字列を二重引用符("")で囲む必要があります。例:- rn "My Report Title" |
-rr
|
オプション。 開いている実行結果ファイルを自動的に更新する頻度(秒)を指定します。 例:-rr 5 整数が指定されない場合の標準設定:5 秒 |
--testParameters
|
文字列。オプション。Web テストとモバイル・テストでサポートされます。 テスト・パラメータに使用する値を定義します。パラメータの名前と値のペアをカンマで区切ったリストを指定します。 指定されないテスト・パラメータについては、テスト自体で定義されている標準設定値が使用されます。 例:-tp "param1:value1,param2:value2" 複数のテスト・パラメータ・セットはセミコロン(;)を使用して定義します。ParallelRunner でテストが複数回実行され、指定したすべてのテスト・パラメータを使用してテストが行われます。 例:-tp "param1:value1, param2:value2; param1:value3, param2:value4" パラメータ値にカンマ(,)、セミコロン(;)、またはコロン(:)が含まれている場合は、値をバックスラッシュと二重引用符の組み合わせ(\")で囲みます。 たとえば、TimeParam の値が 10:00;00 の場合は、次のようになります。 -tp "TimeParam:\"10:00;00\"" 注:コマンド・ライン・オプションを使用して、パラメータ値に二重引用符(")を含めることはできません。代わりに、ParallelRunner コマンド用の JSON 設定ファイルを使用します。 |
-we
|
オプション。モバイル・テストでサポートされています。 コマンドに含めることで、各モバイル・テスト実行に対して、利用可能なデバイスがない場合にすぐに失敗となるのではなく、適切なデバイスが利用可能になるまで待機するよう指定します。 |
.json ファイルを使用したテスト、環境、パラメータの定義
ParallelRunner を実行し、コマンド・ラインから直接 .json 設定ファイルを参照します。
.json ファイルでは、次のことが可能です。
- 並列実行する複数のテストの指定
- 複数の実行で使用する複数の環境およびパラメータの定義
.json 設定ファイルを使用して ParallelRunner を実行するには、次の手順を実行します。
-
.json ファイルで、テスト実行ごとに別々の行を追加します。.json のオプションを使用して、各実行で使用する環境とパラメータを記述します。
-
コマンド・ラインで、次のコマンド・ライン・オプションを移用して .json ファイルを参照します。
-c
文字列。.json 設定ファイルのパスを定義します。
次の構文を使用します。
ParallelRunner -c <.json ファイルのパス>
例:
ParallelRunner -c parallelexecution.json
-
コマンド・ライン・オプションを追加して、実行結果を設定します。詳細については、-o、-rl、-rr を参照してください。
.json 設定ファイルとともに使用できるのは、これらのオプションだけです。その他のコマンド・ライン・オプションはすべて無視されます。
.json 設定ファイルの例
次に、.json 設定ファイルの構文の例を示します。このファイルでは、最後のテストはローカル・デスクトップ・ブラウザとモバイル・デバイスの両方で実行されます。「同期を含む .json 設定ファイルの例」も参照してください。
{ "「reportPath」": "C:\\parallelexecution", "「reportName」":"My Report Title", "「waitForEnvironment」":true, "parallelRuns": [ { "「test」": "C:\\Users\\qtp\\Documents\\Unified Functional Testing", "「dataTable」": "C:\\Data Tables\\Datatable1.xls", "「testParameter」":{ "para1":"val1", "para2":"val2" } "「reportSuffix」": "Samsung_OS_above_6", "env": { "mobile": { "device": { "「manufacturer」": "samsung", "「osVersion」": ">6.0", "「osType」": "Android" } } } }, { "「test」": "C:\\Users\\qtp\\Documents\\Unified Functional Testing", "「dataTable」: "C:\\Data Tables\\Datatable2.xls", "「testParameter」":{ "para1":"val3", "para2":"val4" } "「reportSuffix」": "Moto_Nexus_6_OS_equals_7", "env": { "mobile": { "device": { "「manufacturer」": "motorola", "「model」": "Nexus 6", "「osVersion」": "7.0", "「osType」": "Android" } } } }, { "「test」": "C:\\Users\\qtp\\Documents\\Unified Functional Testing", "「reportSuffix」": "ID_HT69K0201987", "env": { "mobile": { "device": { "「deviceID」": "HT69K0201987" } } } }, { "「test」": "C:\\Users\\qtp\\Documents\\Unified Functional Testing", "「reportSuffix」": "Web_Chrome", "env": { "web": { "「browser」": "Chrome" } } } , { "「test」": "C:\\Users\\qtp\\Documents\\API Test", "「reportSuffix」": "API" } , { "「test」": "C:\\Users\\qtp\\Documents\\Unified Functional Testing", "「dataTable」": "C:\\Data Tables\\Datatable3.xls", "「reportSuffix」": "Mobile_Web", "env": { "web": { "「browser」": "Chrome" }, "mobile": { "device": { "「manufacturer」": "motorola", "「model」": "Nexus 6", "「osVersion」": "7.0", "「osType」": "Android" } } } } ] }
.json 設定ファイルで次のオプションを定義して、コマンド・ラインから参照します(大文字と小文字が区別されます)。
reportPath |
文字列。テストの実行結果を保存するパスを定義します。 標準設定では、実行結果は %Temp%\TempResults に保存されます。 |
reportName |
文字列。 レポート名を定義します。レポート名は、並列実行のサマリ・レポートを開いたときにブラウザのタブに表示されます。標準設定では、レポート名は .json ファイル名と同じです。 この名前をカスタマイズすれば、複数のレポートを一度に開いたときに実行が区別しやすくなります。この目的のため、各レポート名にはタイムスタンプも追加されます。 |
test |
文字列。実行する UFT One テストが含まれるフォルダのパスを定義します。 |
reportSuffix |
文字列。実行結果のファイル名の末尾に追加するサフィックスを定義します。たとえば、テストを実行した環境を示すサフィックスを追加できます。 例: 標準設定:"[N]"。これは、同じ並列実行の同じテストに複数の結果がある場合に、現在の結果インスタンスのインデックス番号を示します。 注:
|
browser |
文字列。Web テストの実行時に使用するブラウザを定義します。 次の値がサポートされています。
注:
|
deviceID |
文字列。UFT Mobile デバイス・ラボ内の特定のデバイスのデバイス ID を定義します。 注:deviceID とデバイス機能属性の両方が指定されると、デバイス機能属性は無視されます。 |
manufacturer |
文字列。デバイスの製造者を定義します。 |
model |
文字列。デバイスのモデルを定義します。 |
osVersion |
文字列。デバイスのオペレーティング・システムのバージョンを定義します。 次のいずれかの値です。
|
osType |
デバイスのオペレーティング・システムを定義します。 次のいずれかの値です。
|
文字列。Web テストとモバイル・テストでサポートされます。 このテスト実行に使用するデータ・テーブルのパスを定義します。UFT One では、テストに保存されているデータ・テーブルではなく、指定したテーブルが使用されます。 dataTable 定義は、関連するテスト実行を記述するセクションに配置します。 |
|
testParameter |
文字列。Web テストとモバイル・テストでサポートされます。 このテスト実行のテスト・パラメータに使用する値を定義します。パラメータの名前と値のペアをカンマで区切ったリストを指定します。 例: "testParameter":{ "para1":"val1", "para2":"val2" } testParameter 定義は、関連するテスト実行を記述するセクションに配置します。 パラメータ値にバックスラッシュ(\)または二重引用符(")が含まれる場合は、その文字の前にバックスラッシュを追加します。例:"para1":"val\"1" では、パラメータ para1 に値 val"1 が割り当てられます。 指定されないテスト・パラメータについては、テスト自体で定義されている標準設定値が使用されます。 |
waitForEnvironment |
各モバイル・テスト実行に対して、利用可能なデバイスがない場合にすぐに失敗となるのではなく、適切なデバイスが利用可能になるまで待機するよう指定する場合は、このオプションを |
条件の使用による並列実行の同期
並列実行の同期と制御を行うには、テスト実行間の依存関係を作成し、実行の開始時刻を制御します(ParallelRunner コマンドで .json ファイルを使用する場合にのみサポート)。
条件を使用することで、テスト実行では次の動作を実行できます。
- 数秒待ってから実行を開始する
- 別のテスト実行の後に実行する
- 別のテストが実行され、特定のステータスに到達した後にのみ開始する
.json ファイルで定義されたテスト実行ごとに、実行開始のタイミングを制御する条件を作成します。条件は、「test」セクションで、次に説明する要素を使用して作成します。
次の種類の条件を作成できます。
- 単純条件:1 つ以上の待機ステートメントが含まれます。
- 複合条件:複数の条件と、すべての条件を満たす必要があるかどうかを指定する AND/OR 演算子が含まれます。
次に、並列実行を同期させる .json 設定ファイルの例を示します。
{ "reportPath": "C:\\parallelexecution", "reportName": "My Report Title", "waitForEnvironment": true, "parallelRuns": [{ "test": "C:\\Users\\qtp\\Documents\\Unified Functional Testing\\GUITest_Mobile", "testRunName": "1", "condition": { "operator": "AND", "conditions": [{ "waitSeconds": 5 }, { "operator": "OR", "conditions": [{ "waitSeconds": 10, "waitForTestRun": "2" }, { "waitForTestRun": "3", "waitSeconds": 10, "waitForRunStatuses": ["failed", "warning", "canceled"] } ] } ] }, "env": { "mobile": { "device": { "osType": "IOS" } } } }, { "test": "C:\\Users\\qtp\\Documents\\Unified Functional Testing\\GUITest_Mobile", "testRunName": "2", "condition": { "waitForTestRun": "3", "waitSeconds": 10 }, "env": { "mobile": { "device": { "osType": "IOS" } } } }, { "test": "C:\\Users\\qtp\\Documents\\Unified Functional Testing\\GUITest_Mobile", "testRunName": "3", "env": { "mobile": { "device": { "deviceID": "63010fd84e136ce154ce466d79a2ebd357aa5ce2" } } } }] }
この .json file を使用して ParallelRunner を実行すると、次のような動作となります。
-
テスト実行 3 は、デバイス 63010fd84e136ce154ce466d79a2ebd357aa5ce2 を待機します。
-
テスト実行 2 は、テスト実行 3 の終了後に 10 秒間待機し、iOS デバイスが利用可能になるまで待機します。
-
テスト実行 1 は、ParallelRunner コマンドの実行後にまず 5 秒間待機します。
続いて、実行 2 が終了するか、実行 3 が「失敗」、「警告」、「キャンセル済み」のいずれかのステータスに到達した後に、10 秒間待機します。
さらに、iOS デバイスが利用可能になるまで待機します。
分離モードでのステップの実行
複数のテストを並列実行する場合、同じオブジェクトを操作する関連ステップがあると、ステップが互いに干渉して、並列テストの実行でエラーが発生する場合があります。
エラーの発生を防ぐために、こうしたステップは分離モードで実行されるように設定し、並列実行される他のテストの干渉から保護します。
並列実行するステップは、以下のユーティリティ・ステップで囲みます。
- ParallelUtil.StartIsolatedExecution
- ParallelUtil.StopIsolatedExecution
例:
ParallelUtil.StartIsolatedExecution
Browser("Advantage Shopping").Page("Google").WebEdit("Search").Click
Dim mySendKeys
set mySendKeys = CreateObject("WScript.shell")
mySendKeys.SendKeys("Values")
ParallelUtil.StopIsolatedExecution
詳細については、『UFT One Object Model Reference』の ParallelUtil オブジェクトのリファレンスを参照してください。
並列実行の停止
コマンド・ラインからテスト実行を終了するには、キーボードで CTRL+C キーを押します。
-
まだ完了していないことを示す「実行中」または「保留中」ステータスのテストは、即座に停止します。
-
キャンセルされたこれらのテストでは、実行結果は生成されません。
ParallelRunner の応答と実行結果の例
次のコードは、ParallelRunner を使用してテストを実行した後にコマンド・ラインに表示される応答の例です。
>ParallelRunner -t ".\GUITest_Demo" -d "manufacturer:samsung,osType:Android,osVersion:Any;deviceID:N2F4C15923006550" -r "C:\parallelexecution" -rn "My Report Name"
Report Folder: C:\parallelexecution\Res1
ProcessId, Test, Report, Status
3328, GUITest_Demo, GUITest_Demo_[1], Running -
3348, GUITest_Demo, GUITest_Demo_[2], Pass
この例では、実行が完了すると、C:\parallelexecution\Res1 ディレクトリに次の結果ファイルが保存されます。
- GUITest_Demo_[1]
- GUITest_Demo_[2]
parallelrun_results.html ファイルに、並列実行されたすべてのテスト実行の結果が表示されます。ブラウザのタブのレポート名は、「My Report Name」です。
表の最初の行は、ParallelRunner コマンドで定義されたルールを示します。それ以降の行は、結果とテスト中に使用された実際の環境を示します。
ヒント: 各テスト実行で、HTML レポートアイコンをクリックすると、個別の実行結果が開きます。これは、UFT One が HTML の実行結果を生成するように設定されている場合にのみサポートされます。
例:
注:レポートでは、ブラウザ名は大文字と小文字を区別して比較され、ブラウザ名ごとに個別のカラムが表示されます。そのため、IE と ie に対して別々のカラムが表示されます。
ParallelRunner ポートの変更
ParallelRunner では、<UFT One インストール・フォルダ>/bin ディレクトリにある parallel.ini ファイルで設定されたポートが使用されます。標準設定のポートは 50051 です。
そのファイルで設定されているポートがすでに別の場所で使用されている場合は、次のいずれかの手順を実行して変更します。
-
<UFT One インストール・フォルダ>/bin/parallel.ini ファイルを編集用に開き、設定されているポート番号を変更します。
-
このファイルの編集に関してアクセス許可の問題がある場合は、%ProgramData%\UFT ディレクトリに parallel.custom.ini という名前の新しいファイルを作成します。
次のコードを追加します。
[Mediator]
Port=<ポート番号>parallel.custom.ini ファイルの設定は、parallel.ini ファイルの設定よりも優先されます。
その他の参照項目: