コマンド・ラインを使用した UFT One テストの並列実行
コマンド・ラインを使用して パラレル・ランナー・ツールをトリガし,複数の UFT One テストを並列に実行します。
テストの並列実行
パラレル・ランナー・ツールは <UFT One インストール・フォルダ>/bin ディレクトリにあります。このツールはコマンド・ラインを使用してトリガし,並列テストを実行します。
次の手順を実行します。
-
UFT One を閉じます。パラレル・ランナーと UFT One は同時に実行できません。
-
次のいずれかの方法でテスト実行を設定して,コマンド・ライン・インタフェースからテストを並列に実行します。
-
.json ファイルを使用する場合は,テスト実行間の依存関係を作成し,実行の開始時刻を制御することで,並列実行の同期と制御を行うことができます。詳細については,条件の使用による並列実行の同期を参照してください。
パラレル・ランナーを使用したテスト実行は[高速]モードで実行されます。詳細については,高速モードを参照してください。
詳細については,次を参照してください。
コマンド・ライン・オプションを使用したテスト実行情報の定義
GUI Web およびモバイル・テストと API テストに関連
コマンド・ラインからテストを実行する場合は,個別のコマンドで各テストを別々に実行します。
GUI テストの場合,各コマンドで実行対象として異なる選択肢を指定すると,テストが複数回実行されます。次の要素に対して選択肢を指定することができます。
- ブラウザ
- デバイス
- データ・テーブル
- テスト・パラメータ
コマンド・ラインからテストを実行するには,以下のセクションで定義された構文を使用します。選択肢を区切るにはセミコロン(;)を使用します。
パラレル・ランナーによって,指定した選択肢のすべての組み合わせをテストするために必要な回数のテストが実行されます。
例:
テストを各ブラウザに対して 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 テストのコマンド・ライン構文 |
コマンド・ラインから,次の構文を使用して各 Web テストを実行します。
例:
複数のブラウザを指定すると,テストは各ブラウザで 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 回ずつ,複数回実行されます。 利用可能なデバイスの待機 利用可能なデバイスがない場合に,すぐにテスト実行を失敗にするのではなく,適切なデバイスが利用可能になるまで待機するように,パラレル・ランナーを設定することができます。これを行うには,パラレル・ランナー・コマンドに |
API テストのコマンド・ライン構文 |
コマンド・ラインから,次の構文を使用して各 API テストを実行します。
例:
|
コマンド・ラインから直接テストを実行する場合は,次のオプションを使用します。
-
オプション名には大文字と小文字の区別がありません。
-
ダッシュ(
-
)の後にオプションの省略形を使用するか,2 つのダッシュ(--
)の後にオプションの正式名を使用します。
|
文字列。必須。実行する UFT One テストが含まれるフォルダのパスを定義します。 パスにスペース文字が含まれる場合は,パスを二重引用符("")で囲む必要があります。例:-t ".\GUITest Demo" 同じパスでの複数のテストはサポートされていません。 |
--browsers |
文字列。オプション。Web テストでサポートされています。 複数のブラウザはセミコロン(;)を使用して定義します。パラレル・ランナーでテストが複数回実行され,指定したすべてのブラウザでテストが行われます。 次の値がサポートされています。 Chrome,Chrome_Headless,ChromiumEdge,Edge,Firefox,Firefox64,IE,IE64,Safari 注:
|
|
文字列。オプション。モバイル・テストでサポートされています。 複数のデバイスはセミコロン(;)を使用して定義します。パラレル・ランナーでテストが複数回実行され,指定したすべてのデバイスでテストが行われます。 この文字列で以下の属性を使用して,特定のデバイス ID を使用してデバイスを定義したり,機能でデバイスを検索したりします。
注:この文字列のカンマ,コロン,セミコロンの前後に余分なスペースを追加しないでください。特殊文字をサポートするために,文字列は常に二重引用符("")で囲むことをお勧めします。 例: –d "manufacturer:apple,osType:iOS,osVersion:>=11.0" |
|
文字列。オプション。Web テストとモバイル・テストでサポートされます。 このテストに使用するデータ・テーブルのパスを定義します。UFT One では,テストに保存されているデータ・テーブルではなく,指定したテーブルが使用されます。 複数のデータ・テーブルはセミコロン(;)を使用して定義します。パラレル・ランナーでテストが複数回実行され,指定したすべてのデータ・テーブルを使用してテストが行われます。 パスにスペース文字が含まれる場合は,パスを二重引用符("")で囲む必要があります。 例:-dt ".\Data Tables\Datatable1.xlsx;.\Data Tables\Datatable2.xlsx" |
-o
|
文字列。オプション。テストの実行中と実行後にコンソールに表示される結果出力を指定します。 次の値がサポートされています。
|
|
文字列。オプション。テストの実行結果を保存するパスを定義します。標準設定では,実行結果は %Temp%\TempResults に保存されます。 文字列にスペース文字が含まれる場合は,文字列を二重引用符("")で囲む必要があります。例:- r "%Temp%\Temp Results" |
-rl
|
オプション。コマンドに含めると,テスト実行が開始されたときに自動的に実行結果が開きます。更新頻度を指定するには,-rr--report-auto-refresh オプションを使用します。 詳細については,パラレル・ランナーの応答と実行結果の例を参照してください。 |
-rn
|
文字列。オプション。レポート名を定義します。レポート名は,並列実行のサマリ・レポートを開いたときにブラウザのタブに表示されます。標準設定では,この名前は「Parallel Report」です。 この名前をカスタマイズすれば,複数のレポートを一度に開いたときに実行が区別しやすくなります。この目的のため,各レポート名にはタイムスタンプも追加されます。 文字列にスペース文字が含まれる場合は,文字列を二重引用符("")で囲む必要があります。例:- rn "My Report Title" |
-rr
|
オプション。開いている実行結果ファイルを自動的に更新する頻度(秒)を指定します。 例:-rr 5 整数が指定されない場合の標準設定:5 秒 |
--testParameters
|
文字列。オプション。Web テストとモバイル・テストでサポートされます。 テスト・パラメータに使用する値を定義します。パラメータの名前と値のペアをカンマで区切ったリストを指定します。 指定されないテスト・パラメータについては,テスト自体で定義されている標準設定値が使用されます。 例:-tp "param1:value1,param2:value2" 複数のテスト・パラメータ・セットはセミコロン(;)を使用して定義します。パラレル・ランナーでテストが複数回実行され,指定したすべてのテスト・パラメータを使用してテストが行われます。 例:-tp "param1:value1, param2:value2; param1:value3, param2:value4" パラメータ値にカンマ(,),セミコロン(;),またはコロン(:)が含まれている場合は,値をバックスラッシュと二重引用符の組み合わせ(\")で囲みます。 たとえば,TimeParam の値が 10:00;00 の場合は,次のようになります。 -tp "TimeParam:\"10:00;00\"" 注:コマンド・ライン・オプションを使用して,パラメータ値に二重引用符(")を含めることはできません。代わりに,パラレル・ランナー・コマンド用の JSON 設定ファイルを使用します。 |
-we
|
オプション。モバイル・テストでサポートされています。 コマンドに含めることで,各モバイル・テスト実行に対して,利用可能なデバイスがない場合にすぐに失敗となるのではなく,適切なデバイスが利用可能になるまで待機するよう指定します。 |
テスト実行情報を定義する .json ファイルの手動作成
GUI Web,モバイル,および Java テストと API テストに関連
.json ファイルを手動で作成して,並列に実行する複数のテストを指定し,テスト情報をテスト実行ごとに定義します。その後,コマンド・ラインから .json ファイルを直接参照します。
.json ファイルを作成し,そのファイルを使って並列テストを開始するには,次の手順を実行します。
-
.json ファイルで,テスト実行ごとに別々の行を追加します。.json のオプションを使用して,各実行で使用する環境,データ・テーブル,パラメータを記述します。
ヒント: パラレル・ランナー UI ツールを使用すると,.json ファイルを自動的に作成できます。詳細については,並列テスト実行の設定を参照してください。
-
GUI モバイル・テストの場合,Digital Lab(UFT Mobile) の接続設定を,テスト情報とともに .json ファイルに含めることができます。接続設定の定義方法については,.json ファイルの例を参照してください。
.json ファイルは,UFT One の[ツール]>[オプション]>[GUI テスト]>[モバイル]で定義された接続設定よりも優先されます。
-
コマンド・ラインで,次のコマンド・ライン・オプションを移用して .json ファイルを参照します。
-c
文字列。.json 設定ファイルのパスを定義します。
次の構文を使用して,並列テストを開始します。
例:
ParallelRunner -c parallelexecution.json
-
コマンド・ライン・オプションを追加して,実行結果を設定します。詳細については,-o,-rl,-rr を参照してください。
.json 設定ファイルとともに使用できるのは,これらのオプションだけです。その他のコマンド・ライン・オプションはすべて無視されます。
以下のサンプル・ファイルを参照してください。このファイルでは,最後のテストはローカル・デスクトップ・ブラウザとモバイル・デバイスの両方で実行されます。同期を含む .json 設定ファイルの例も参照してください。
{
"reportPath": "C:\\parallelexecution",
"reportName":"My Report Title",
"waitForEnvironment":true,
"parallelRuns": [
{
"test": "C:\\Users\\qtp\\Documents\\UFT One",
"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\\UFT One",
"reportSuffix": "ID_HT69K0201987",
"env": {
"mobile": {
"device": {
"deviceID": "HT69K0201987"
}
}
}
},
{
"test": "C:\\Users\\qtp\\Documents\\API Test",
"reportSuffix": "API"
} ,
{
"test": "C:\\Users\\qtp\\Documents\\UFT One",
"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"
}
}
}
}
]
"settings": {
"mc": {
"Protocol": "http",
"Hostname": "xxxxx",
"Port": 8080,
"Pathname": null,
"AuthType": 1,
"Account": "default",
"Username": "xxxxx",
"Password": "xxxxx",
"ClientId": "xxxxx",
"SecretKey": "xxxxx",
"TenantId": "xxxxx",
"WorkspaceId": null,
"Proxy": null
}
}
}
.json ファイルを作成するためのオプションのリファレンス
.json ファイルで次のオプション(大文字と小文字を区別)を定義します。
reportPath |
文字列。テストの実行結果を保存するパスを定義します。 標準設定では,実行結果は %Temp%\TempResults に保存されます。 |
reportName |
文字列。レポート名を定義します。レポート名は,並列実行のサマリ・レポートを開いたときにブラウザのタブに表示されます。標準設定では,レポート名は .json ファイル名と同じです。 この名前をカスタマイズすれば,複数のレポートを一度に開いたときに実行が区別しやすくなります。この目的のため,各レポート名にはタイムスタンプも追加されます。 |
test |
文字列。実行する UFT One テストが含まれるフォルダのパスを定義します。 |
reportSuffix |
文字列。実行結果のファイル名の末尾に追加するサフィックスを定義します。たとえば,テストを実行した環境を示すサフィックスを追加できます。 例: 標準設定:"[N]"。これは,同じ並列実行の同じテストに複数の結果がある場合に,現在の結果インスタンスのインデックス番号を示します。 注:
|
browser |
文字列。Web テストの実行時に使用するブラウザを定義します。 次の値がサポートされています。 Chrome,Chrome Headless,ChromiumEdge,Edge,IE,IE64,Firefox,Firefox64,Safari 注:
|
deviceID |
文字列。Digital Lab(UFT Mobile) デバイス・ラボ内の特定のデバイスのデバイス ID を定義します。 注:deviceID とデバイス機能属性の両方が指定されると,デバイス機能属性は無視されます。 |
manufacturer |
文字列。デバイスの製造者を定義します。 |
model |
文字列。デバイスのモデルを定義します。 |
osVersion |
文字列。デバイスのオペレーティング・システムのバージョンを定義します。 次のいずれかの値です。
|
osType |
デバイスのオペレーティング・システムを定義します。 次のいずれかの値です。
|
文字列。GUI Web,モバイル,および Java テストでサポートされています。 このテスト実行に使用するデータ・テーブルのパスを定義します。UFT One では,テストに保存されているデータ・テーブルではなく,指定したテーブルが使用されます。 dataTable 定義は,関連するテスト実行を記述するセクションに配置します。 |
|
testParameter |
文字列。GUI Web,モバイル,および Java テストでサポートされています。 このテスト実行のテスト・パラメータに使用する値を定義します。パラメータの名前と値のペアをカンマで区切ったリストを指定します。 例: "testParameter":{ "para1":"val1", "para2":"val2" } testParameter 定義は,関連するテスト実行を記述するセクションに配置します。 パラメータ値にバックスラッシュ(\)または二重引用符(")が含まれる場合は,その文字の前にバックスラッシュを追加します。例:"para1":"val\"1" では,パラメータ para1 に値 val"1 が割り当てられます。 指定されないテスト・パラメータについては,テスト自体で定義されている標準設定値が使用されます。 |
waitForEnvironment |
各モバイル・テスト実行に対して,利用可能なデバイスがない場合にすぐに失敗となるのではなく,適切なデバイスが利用可能になるまで待機するよう指定する場合は,このオプションを |
Hostname / Port |
Digital Lab(UFT Mobile) サーバの IP アドレスとポート番号。 標準設定のポート:8080 |
AuthType |
Digital Lab(UFT Mobile) への接続に使用する認証モード。 利用可能な値:
|
Username / Password | Digital Lab(UFT Mobile) サーバのログイン資格情報。 |
ClientId / SecretKey / TenantId (UFT One バージョン 2023 以降) |
Digital Lab(UFT Mobile) から受け取ったアクセス・キー。 |
条件の使用による並列実行の同期
並列実行の同期と制御を行うには,テスト実行間の依存関係を作成し,実行の開始時刻を制御します(パラレル・ランナー・コマンドで .json ファイルを使用する場合にのみサポート)。
条件を使用することで,テスト実行では次の動作を実行できます。
- 数秒待ってから実行を開始する
- 別のテスト実行の後に実行する
- 別のテストが実行され,特定のステータスに到達した後にのみ開始する
.json ファイルで定義されたテスト実行ごとに,実行開始のタイミングを制御する条件を作成します。条件は,「test」セクションで,次に説明する要素を使用して作成します。
次の種類の条件を作成できます。
- 単純条件:1 つ以上の待機ステートメントが含まれます。
- 複合条件:複数の条件と,すべての条件を満たす必要があるかどうかを指定する AND/OR 演算子が含まれます。
次に,並列実行を同期させる .json 設定ファイルの例を示します。
{
"reportPath": "C:\\parallelexecution",
"reportName": "My Report Title",
"waitForEnvironment": true,
"parallelRuns": [{
"test": "C:\\Users\\qtp\\Documents\\UFT One\\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\\UFT One\\GUITest_Mobile",
"testRunName": "2",
"condition": {
"waitForTestRun": "3",
"waitSeconds": 10
},
"env": {
"mobile": {
"device": {
"osType": "IOS"
}
}
}
}, {
"test": "C:\\Users\\qtp\\Documents\\UFT One\\GUITest_Mobile",
"testRunName": "3",
"env": {
"mobile": {
"device": {
"deviceID": "63010fd84e136ce154ce466d79a2ebd357aa5ce2"
}
}
}
}]
}
この .json file を使用してパラレル・ランナーを実行すると,次のような動作となります。
-
テスト実行 3 は,デバイス 63010fd84e136ce154ce466d79a2ebd357aa5ce2 を待機します。
-
テスト実行 2 は,テスト実行 3 の終了後に 10 秒間待機し,iOS デバイスが利用可能になるまで待機します。
-
テスト実行 1 は,パラレル・ランナー・コマンドの実行後にまず 5 秒間待機します。
続いて,実行 2 が終了するか,実行 3 が「失敗」,「警告」,「キャンセル済み」のいずれかのステータスに到達した後に,10 秒間待機します。
さらに,iOS デバイスが利用可能になるまで待機します。
並列実行の停止
コマンド・ラインからテスト実行を終了するには,キーボードで CTRL+C キーを押します。
-
まだ完了していないことを示す「実行中」または「保留中」ステータスのテストは,即座に停止します。
-
キャンセルされたこれらのテストでは,実行結果は生成されません。
パラレル・ランナーの応答と実行結果の例
次のコードは,パラレル・ランナーを使用してテストを実行した後にコマンド・ラインに表示される応答の例です。
>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」です。
表の最初の行は,パラレル・ランナー・コマンドで定義されたルールを示します。それ以降の行は,結果とテスト中に使用された実際の環境を示します。
ヒント: 各テスト実行で,HTML レポートアイコンをクリックすると,個別の実行結果が開きます。これは,UFT One が HTML の実行結果を生成するように設定されている場合にのみサポートされます。
例:
注:レポートでは,ブラウザ名は大文字と小文字を区別して比較され,ブラウザ名ごとに個別のカラムが表示されます。そのため,IE と ie に対して別々のカラムが表示されます。
その他の参照項目: