コマンド・ラインを使用した UFT One テストの並列実行

コマンド・ラインを使用してパラレル・ランナー・ツールをトリガし,複数の UFT One テストを並列に実行します。

テストの並列実行

パラレル・ランナー・ツールは <UFT One インストール・フォルダ>/bin ディレクトリにあります。

コマンド・ラインを使用してこのツールをトリガし,並列テストを実行します。

  1. UFT One を閉じます。パラレル・ランナーと UFT One は同時に実行できません。

  2. 次のいずれかの方法でテスト実行を設定して,コマンド・ライン・インタフェースからテストを並列に実行します。

パラレル・ランナーを使用したテスト実行は[高速]モードで実行されます。詳細については,高速モードを参照してください。

詳細については,次を参照してください。

先頭に戻る

コマンド・ラインを使用したテスト実行情報の定義

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 テストを実行します。

ParallelRunner -t <test path> -b <browser> -r <results path>

例:

ParallelRunner -t "C:\GUIWebTest_Demo" -b "Chrome;IE;Firefox" -r "C:\parallelexecution"

複数のブラウザを指定すると,テストは各ブラウザで 1 回ずつ,複数回実行されます。

モバイル・テストのコマンド・ライン構文

コマンド・ラインから,次の構文を使用して各モバイル・テストを実行します。

ParallelRunner -t <test path> -d <device details> -r <results path>

例:

ParallelRunner -t "C:\GUITest_Demo" -d "deviceID:HT69K0201987;manufacturer:samsung,osType:Android,osVersion:>6.0;manufacturer:motorola,model:Nexus 6" -r "C:\parallelexecution"

 

複数のデバイスを指定すると,テストは各デバイスで 1 回ずつ,複数回実行されます。

利用可能なデバイスの待機

利用可能なデバイスがない場合に,すぐにテスト実行を失敗にするのではなく,適切なデバイスが利用可能になるまで待機するように,パラレル・ランナーを設定することができます。これを行うには,パラレル・ランナー・コマンドに -we オプションを追加します。

API テストのコマンド・ライン構文

コマンド・ラインから,次の構文を使用して各 API テストを実行します。

ParallelRunner -t <test path> -r <results path>

例:

ParallelRunner -t "C:\APITest" -r "C:\API_TestResults"

コマンド・ライン・オプション

コマンド・ラインから直接テストを実行する場合は,次のオプションを使用します。

  • オプション名には大文字と小文字の区別がありません。

  • ダッシュ(-)の後にオプションの省略形を使用するか,2 つのダッシュ(--)の後にオプションの正式名を使用します。

-t

--test

文字列。必須。実行する UFT One テストが含まれるフォルダのパスを定義します。

パスにスペース文字が含まれる場合は,パスを二重引用符("")で囲む必要があります。例:-t ".\GUITest Demo"

同じパスでの複数のテストはサポートされていません。

-b


--browsers

文字列。オプション。Web テストでサポートされています。

複数のブラウザはセミコロン(;)を使用して定義します。パラレル・ランナーでテストが複数回実行され,指定したすべてのブラウザでテストが行われます。

次の値がサポートされています。

ChromeChrome_HeadlessChromiumEdgeEdgeFirefoxFirefox64IEIE64Safari

  • この値は,[記録と実行環境設定]で定義されたすべての設定と,テスト内で設定されたすべてのブラウザ・パラメータ化より優先されます。WebUtil.LaunchBrowser メソッドは影響を受けません。

  • Chromium の実行結果レポートで同じブラウザ・タイプに対して別々のカラムが作成されることを避けるため,ブラウザ名の大文字と小文字には一貫性を持たせることをお勧めします。詳細については,パラレル・ランナーの応答と実行結果の例を参照してください。

  • Safari は,リモートの Mac マシンでのテストの場合にサポートされます。詳細については,リモートの Mac コンピュータに接続するを参照してください。

  • UFT One 23.4 以前:Edge は Microsoft Edge Legacy を指します。

    UFT One 24.2 以降:Edge は Chromium ベースの Microsoft Edge を指します。ChromiumEdge という値は後方互換性のためだけにサポートされています。

-d

--devices

文字列。オプション。モバイル・テストでサポートされています。

複数のデバイスはセミコロン(;)を使用して定義します。パラレル・ランナーでテストが複数回実行され,指定したすべてのデバイスでテストが行われます。

この文字列で以下の属性を使用して,特定のデバイス ID を使用してデバイスを定義したり,機能でデバイスを検索したりします。

  • deviceID:Digital Lab デバイス・ラボ内の特定のデバイスのデバイス ID を定義します。この属性は,他のデバイス機能属性と一緒に使用することはできません。

  • manufacturer:デバイスの製造者を定義します。

  • model:デバイスのモデルを定義します。

  • osType:デバイスのオペレーティング・システムを定義します。

    次のいずれかの値です。AndroidiOSWindows Phone

    この値が定義されていない場合は,標準設定として[記録と実行環境設定]で定義されている OS タイプが使用されます。

  • osVersion:デバイスのオペレーティング・システムのバージョンを定義します。次のいずれかの値です。

    • Any:バージョン番号を未定義のままにします。

    • 特定のバージョン。例:10.0

    • ブール演算子とバージョンの値。例:>10.0<10.0>=10.0<=10.0

:この文字列のカンマ,コロン,セミコロンの前後に余分なスペースを追加しないでください。特殊文字をサポートするために,文字列は常に二重引用符("")で囲むことをお勧めします。

例:

–d "manufacturer:apple,osType:iOS,osVersion:>=11.0"

-dt

--dataTables

文字列。オプション。Web テストとモバイル・テストでサポートされます。

このテストに使用するデータ・テーブルのパスを定義します。UFT One では,テストに保存されているデータ・テーブルではなく,指定したテーブルが使用されます。

複数のデータ・テーブルはセミコロン(;)を使用して定義します。パラレル・ランナーでテストが複数回実行され,指定したすべてのデータ・テーブルを使用してテストが行われます。

パスにスペース文字が含まれる場合は,パスを二重引用符("")で囲む必要があります。

例:-dt ".\Data Tables\Datatable1.xlsx;.\Data Tables\Datatable2.xlsx"

-o

--output

文字列。オプション。テストの実行中と実行後にコンソールに表示される結果出力を指定します。

次の値がサポートされています。

  • Normal:(標準設定)コンソールの実行出力は自動的に更新されます。

    たとえば,実行ステータスが「保留中」から「実行中」に変化し,さらに「成功」や「失敗」に変化する,などです。

  • Static:テスト実行の開始時にレポートのパスが表示され,テストが完了すると実行ステータスが表示されます。

  • Disable:コンソールに出力がまったく表示されません。

-r

--reportPath

文字列。オプション。テストの実行結果を保存するパスを定義します。標準設定では,実行結果は %Temp%\TempResults に保存されます。

文字列にスペース文字が含まれる場合は,文字列を二重引用符("")で囲む必要があります。例:- r "%Temp%\Temp Results"

-rl

--report-auto-launch

オプション。コマンドに含めると,テスト実行が開始されたときに自動的に実行結果が開きます。更新頻度を指定するには,-rr--report-auto-refresh オプションを使用します。

詳細については,パラレル・ランナーの応答と実行結果の例を参照してください。

-rn

--reportName

文字列。オプション。レポート名を定義します。レポート名は,並列実行のサマリ・レポートを開いたときにブラウザのタブに表示されます。標準設定では,この名前は「Parallel Report」です。

この名前をカスタマイズすれば,複数のレポートを一度に開いたときに実行が区別しやすくなります。この目的のため,各レポート名にはタイムスタンプも追加されます。

文字列にスペース文字が含まれる場合は,文字列を二重引用符("")で囲む必要があります。例:- rn "My Report Title"

-rr

--report-auto-refresh

オプション。開いている実行結果ファイルを自動的に更新する頻度(秒)を指定します。

例:-rr 5

整数が指定されない場合の標準設定:5 秒

-tp

--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

--wait-for-environment

オプション。モバイル・テストでサポートされています。

コマンドに含めることで,各モバイル・テスト実行に対して,利用可能なデバイスがない場合にすぐに失敗となるのではなく,適切なデバイスが利用可能になるまで待機するよう指定します。

先頭に戻る

テスト実行情報を定義する .json ファイルの手動作成

GUI Web,モバイル,および Java テストと API テストに関連

.json ファイルを手動で作成して,並列に実行する複数のテストを指定し,テスト情報をテスト実行ごとに定義します。その後,コマンド・ラインから .json ファイルを直接参照します。

.json ファイルを作成し,そのファイルを使って並列テストを開始するには,次の手順を実行します。

  1. .json ファイルで,テスト実行ごとに別々の行を追加します。.json のオプションを使用して,各実行で使用する環境,データ・テーブル,パラメータを記述します。

    ヒント: パラレル・ランナー UI ツールを使用すると,.json ファイルを自動的に作成できます。詳細については,並列テスト実行の設定を参照してください。

  2. GUI モバイル・テストの場合,Digital Lab の接続設定を,テスト情報とともに .json ファイルに含めることができます。接続設定の定義方法については,.json ファイルの例を参照してください。

    .json ファイルは,UFT One[ツール]>[オプション]>[GUI テスト]>[モバイル]で定義された接続設定よりも優先されます。

  3. コマンド・ラインで,次のコマンド・ライン・オプションを移用して .json ファイルを参照します。

    -c

    文字列。.json 設定ファイルのパスを定義します。

    次の構文を使用して,並列テストを開始します。

    ParallelRunner -c <.json ファイルのパス>

    例:

    ParallelRunner -c parallelexecution.json

  4. コマンド・ライン・オプションを追加して,実行結果を設定します。詳細については,-o-rl-rr を参照してください。

    .json 設定ファイルとともに使用できるのは,これらのオプションだけです。その他のコマンド・ライン・オプションはすべて無視されます。

.json ファイルの例

以下のサンプル・ファイルを参照してください。このファイルでは,最後のテストはローカル・デスクトップ・ブラウザとモバイル・デバイスの両方で実行されます。同期を含む .json 設定ファイルの例も参照してください。

.json ファイルを作成するためのオプションのリファレンス

.json ファイルで次のオプション(大文字と小文字を区別)を定義します。

reportPath

文字列。テストの実行結果を保存するパスを定義します。

標準設定では,実行結果は %Temp%\TempResults に保存されます。

reportName

文字列。レポート名を定義します。レポート名は,並列実行のサマリ・レポートを開いたときにブラウザのタブに表示されます。標準設定では,レポート名は .json ファイル名と同じです。

この名前をカスタマイズすれば,複数のレポートを一度に開いたときに実行が区別しやすくなります。この目的のため,各レポート名にはタイムスタンプも追加されます。

test

文字列。実行する UFT One テストが含まれるフォルダのパスを定義します。

reportSuffix

文字列。実行結果のファイル名の末尾に追加するサフィックスを定義します。たとえば,テストを実行した環境を示すサフィックスを追加できます。

例:"reportSuffix":"Samsung6_Chrome"

標準設定:"[N]"。これは,同じ並列実行の同じテストに複数の結果がある場合に,現在の結果インスタンスのインデックス番号を示します。

注: 

  • 実行結果のファイル名は「<test name>_<reportSuffix>」という構造であり,一意である必要があります。そのため,同じテストの複数の実行に同じサフィックスを指定しないでください。
  • サフィックスを決めるときは,結果のファイル名が 22 文字を超えると,パラレル・ランナーによってコマンド・ウィンドウに表示される出力で,ファイル名が切り捨てられることに注意してください。
browser

文字列。Web テストの実行時に使用するブラウザを定義します。

次の値がサポートされています。

ChromeChrome HeadlessChromiumEdgeEdgeIEIE64FirefoxFirefox64Safari

  • この値は,[記録と実行環境設定]で定義されたすべての設定と,テスト内で設定されたすべてのブラウザ・パラメータ化より優先されます。WebUtil.LaunchBrowser メソッドは影響を受けません。
  • 実行結果レポートで同じブラウザ・タイプに対して別々のカラムが生じるのを避けるため,ブラウザ名の大文字と小文字には一貫性を持たせることをお勧めします。詳細については,パラレル・ランナーの応答と実行結果の例を参照してください。
  • Safari は,リモートの Mac マシンでのテストの場合にサポートされます。詳細については,リモートの Mac コンピュータに接続するを参照してください。
  • UFT One 23.4 以前:Edge は Microsoft Edge Legacy を指します。

    UFT One 24.2 以降:Edge は Chromium ベースの Microsoft Edge を指します。ChromiumEdge という値は後方互換性のためだけにサポートされています。

deviceID

文字列。Digital Lab デバイス・ラボ内の特定のデバイスのデバイス ID を定義します。

deviceID とデバイス機能属性の両方が指定されると,デバイス機能属性は無視されます。

manufacturer

文字列。デバイスの製造者を定義します。

model

文字列。デバイスのモデルを定義します。

osVersion

文字列。デバイスのオペレーティング・システムのバージョンを定義します。

次のいずれかの値です。

  • Any:バージョン番号を未定義のままにします。

  • 特定のバージョン。例:10.0。

  • ブール演算子とバージョンの値。例:>10.0<10.0>=10.0<=10.

osType

デバイスのオペレーティング・システムを定義します。

次のいずれかの値です。

  • Android
  • iOS
  • Windows Phone

dataTable

文字列。GUI Web,モバイル,および Java テストでサポートされています。

このテスト実行に使用するデータ・テーブルのパスを定義します。UFT One では,テストに保存されているデータ・テーブルではなく,指定したテーブルが使用されます。

dataTable 定義は,関連するテスト実行を記述するセクションに配置します。

testParameter

文字列。GUI Web,モバイル,および Java テストでサポートされています。

このテスト実行のテスト・パラメータに使用する値を定義します。パラメータの名前と値のペアをカンマで区切ったリストを指定します。

例: 

"testParameter":{
      "para1":"val1",
      "para2":"val2"
    }

testParameter 定義は,関連するテスト実行を記述するセクションに配置します。

パラメータ値にバックスラッシュ(\)または二重引用符(")が含まれる場合は,その文字の前にバックスラッシュを追加します。例:"para1":"val\"1" では,パラメータ para1 に値 val"1 が割り当てられます。

指定されないテスト・パラメータについては,テスト自体で定義されている標準設定値が使用されます。

waitForEnvironment

各モバイル・テスト実行に対して,利用可能なデバイスがない場合にすぐに失敗となるのではなく,適切なデバイスが利用可能になるまで待機するよう指定する場合は,このオプションを true に設定します。

Hostname / Port

Digital Lab サーバの IP アドレスとポート番号。

標準設定のポート:8080

AuthType

Digital Lab への接続に使用する認証モード。

利用可能な値:

  • 1:Access key authentication:Digital Lab から受け取ったアクセス・キーを使用して認証します。

  • 0:Basic authentication:ユーザ名とパスワードを使用して認証します。

Username / Password Digital Lab サーバのログイン資格情報。

ClientId / SecretKey / TenantId

Digital Lab から受け取ったアクセス・キー。

先頭に戻る

条件の使用による並列実行の同期

並列実行の同期と制御を行うには,テスト実行間の依存関係を作成し,実行の開始時刻を制御します(パラレル・ランナー・コマンドで .json ファイルを使用する場合にのみサポート)。

条件を使用することで,テスト実行では次の動作を実行できます。 

  • 数秒待ってから実行を開始する
  • 別のテスト実行の後に実行する
  • 別のテストが実行され,特定のステータスに到達した後にのみ開始する

.json ファイルで定義されたテスト実行ごとに,実行開始のタイミングを制御する条件を作成します。条件は,「test」セクションで,次に説明する要素を使用して作成します。

次の種類の条件を作成できます。 

  • 単純条件:1 つ以上の待機ステートメントが含まれます。
  • 複合条件:複数の条件と,すべての条件を満たす必要があるかどうかを指定する AND/OR 演算子が含まれます。
testRunName テスト実行の名前。waitForTestRun または waitForRunStatuses 条件で,他のテスト実行によって使用されます。
condition

このテストの実行を制御するために使用されるすべての待機条件を含むメインの要素。

待機オプションを含めたり,conditions 要素をネストしたりすることができます。

conditions

1 つ以上の単純条件の配列または追加の複合条件を含む要素。

conditions 要素は複合条件に含めることができます。

operator

operator に続く conditions 要素の条件が,すべて満たされる必要があるかどうかを指定します。

取り得る値: 

  • AND:テスト実行の開始前に,operator の後のすべての条件が満たされる必要があります。
  • OR:operator に続く条件のいずれかが満たされると,すぐにテスト実行が開始されます。
waitSeconds

このテスト実行の開始前に指定した秒数だけ待機するように,パラレル・ランナーを設定します。

waitForTestRun

指定した実行の終了後にこのテスト実行を実行するように,パラレル・ランナーを設定します。待機する実行は testRunName を使用して指定します。

waitForTestRun オプションは,他のオプションと組み合わせることができます。

  • waitSeconds を使用すると,指定した実行の終了後に一定の秒数待機します。
  • waitForRunStatuses を使用すると,指定したテストが特定のステータスに到達するまで待機します。

例:次の条件は,テスト実行 3 が指定したステータスのいずれかに到達してから 10 秒後にテスト実行 1 を実行するように,パラレル・ランナーを設定します。

"testRunName": "1",
    "condition":{
        "waitForTestRun": "3",
        "waitSeconds": 10,
        "waitForRunStatuses": ["passed", "failed", "warning", "canceled"]
}

注:複数の待機オプションを組み合わせる場合,暗黙的に指定される演算子は AND です。

waitForRunStatuses

指定した実行が特定のステータスに到達した後にこのテスト実行を実行するように,パラレル・ランナーを設定します。

  • 待機する実行は testRunName を使用して指定します。

  • 待機する 1 つ以上のテスト・ステータスの文字列を指定します。指定したテストが指定したステータスのいずれかに到達すると,条件が満たされます。

    例:"waitForRunStatuses": ["passed", "failed", "warning", "canceled"]

同期を含む .json 設定ファイルの例

次に,並列実行を同期させる .json 設定ファイルの例を示します。

Copy code
{
  "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 に対して別々のカラムが表示されます。

先頭に戻る

その他の参照項目: