自動化テストの実行
ビルドパイプラインにテスト自動化を追加することは、継続的インテグレーションをサポートし、できるだけ早く新機能を実装してテストすることを可能にします。
Eggplant DAIでは、コマンドラインから一連のテスト、つまりテスト構成をトリガーできます。これを行うには、DAI CLIツール、またはAzure、Github、Jenkins向けに提供されているパイプラインプラグインをダウンロード、インストール、実行する必要があります(詳細は後述)。
-
お使いのプラットフォーム用のDAI CLIツールをダウンロードしてください。以下のプラットフォームがサポートされています。
- Windows 10/11/ and Server 2019/2022
- macOS: 11 and above
- Linux: RHEL 8, Ubuntu 16 and Ubuntu 22
Azure、Github、Jenkins 用のプラグインは、それぞれのマーケットストアから入手できます。インストールと設定の手順については、以下のリンクをご覧ください。
-
CLIツールまたはプラグイン実行ファイルを使用して、コマンドラインからテスト構成を実行します。詳細については、テスト構成をIDで実行またはテスト構成を名前で実行を参照してください。
DAI CLIツールを実行するシェルは、UTF-8エンコードされた文字をサポートしている必要があります。これは、コマンドラインまたはバッチファイルからツールを実行する場合に当てはまります。
.exeはテスト構成が完了するまで実行されます。
- テスト構成が正常に実行される場合、終了コード
0で完了します。 - 他の終了コードはテスト構成が失敗したことを示します。
テスト構成IDによるテスト構成の実行
テスト構成を作成する際、各テスト構成には一意の識別子(TEST_CONFIG_ID)が割り当てられます。
このIDを取得するには、Controller > Test Configに移動し、実行したいテスト構成を編集します。TEST_CONFIG_IDの値はURLに追加されます。。
その他の必須オプション:
| Parameter | 値 説明 |
|---|---|
SERVER_URL | Eggplant DAIサーバーのURL。例:https://myeggplantserver.com |
TEST_CONFIG_ID | テスト構成ID。例:adcb4d6e-3b3e-4cc3-a62b-3bba84fe5ab0。テスト構成を開いた際にDAI URLに追加される文字列です。上記の画像をご覧ください。 |
--client-id <CLIENT_ID>--client-secret <CLIENT_SECRET> | インストール中に設定されたクライアントシークレットペアを取得します。 セキュリティ上の理由から、コマンドラインで資格情報を渡す代わりに、 DAI_CLIENT_SECRET環境変数を設定することをお勧めします。 |
すべてのパラメータとオプションを表示するには、cli --help で次のコマンドを実行します。
eggplant-runner-Windows-xx.x.xx.exe --help
コマンドラインで以下のコマンドを実行します:
eggplant-runner-Windows-xx.x.xx.exe <SERVER_URL> <TEST_CONFIG_ID> --client-id=<CLIENT_ID> --client-secret=<CLIENT_SECRET>
より詳細な設定については、詳細オプションを参照してください。
テスト構成名によるテスト構成の実行
あるいは、DAIサーバーで設定されたテスト構成名と、そのモデル名またはスイート名を使用してテスト構成を実行することもできます。この情報は、Controller > Test Config から確認できます。
その他の必須オプション:
| Parameter | 値 説明 |
|---|---|
SERVER_URL | Eggplant DAIサーバーのURL。例:https://myeggplantserver.com |
--client-id <CLIENT_ID>--client-secret <CLIENT_SECRET> | インストール中に設定されたクライアント シークレット ペアを取得します。 セキュリティ上の理由から、コマンドラインで資格情報を渡す代わりに、 DAI_CLIENT_SECRET 環境変数を設定することをお勧めします。 |
モデルベースのテスト構成
Modelベースのテスト構成を実行するには、テスト構成から以下のオプションの値を取得します:
| Parameter | 値の説明 |
|---|---|
--test-config-name <TEST_CONFIG_NAME> | 実行する DAI テスト構成名。 例: --test-config-name=TestConfigEggplantApp |
--model-name <MODEL_NAME> | 指定されたテスト構成の DAI モデル名。 例: --model-name=ModelEggplantApp |
コマンドラインで以下のコマンドを実行します:
eggplant-runner-Windows-xx.x.xx.exe modelbased <SERVER_URL> --test-config-name=<TEST_CONFIG_NAME> --model-name=<MODEL_NAME> --client-id=<CLIENT_ID> --client-secret=<CLIENT_SECRET>
スクリプトベースのテスト構成
script-based のテスト構成を実行するには、テスト構成から次のオプションの値を取得します。
| Parameter | 値 説明 |
|---|---|
--test-config-name <TEST_CONFIG_NAME> | 実行する DAI テスト構成名。 例: --test-config-name=TestConfigEggplantApp |
--suite-name <SUITE_NAME> | 指定されたテスト構成のDAIスイート名。末尾に.suiteを含む完全なスイート名。 例: --suite-name=EggApplication.suite |
cli --help を使用して スクリプトベース のすべてのパラメーターとオプションを表示するには、次のコマンドを実行します。
eggplant-runner-Windows-xx.x.xx.exe scriptbased --help
コマンドラインで以下のコマンドを実行します:
eggplant-runner-Windows-xx.x.xx.exe scriptbased <SERVER_URL> --test-config-name=<TEST_CONFIG_NAME> --suite-name=<SUITE_NAME> --client-id=<CLIENT_ID> --client-secret=<CLIENT_SECRET>
より詳細な設定については、詳細オプションを参照してください。
詳細オプション
詳細オプションはオプションですが、テスト実行を微調整できます。最新のリストについては、--help オプションを実行してください。CLI の例については、advanced examples を参照してください。
| オプション | 説明 |
|---|---|
--request-timeout INTEGER | DAIサーバーへの各HTTPリクエストのタイムアウト(秒)。デフォルト:30 |
--request-retries INTEGER | DAIサーバーへの各HTTPリクエストの試行回数。デフォルト:5 |
--backoff-factor FLOAT | 各HTTPリクエスト間の指数バックオフ係数。デフォルト:0.5 |
--log-level TEXT | ロギングレベル。デフォルト:INFO |
--ca-cert-path PATH | 代替証明書作成者 pem ファイルへのパス |
--test-result-path PATH | テスト結果がjunit xml形式で保存されるファイルへのパス |
--version | バージョン番号を表示して終了 |
--dry run / --no-dry-run | ドライランのみ実行。デフォルト:no-dry-run |
--param TEXT | オーバーライドするテスト構成のグローバル パラメーター。形式は parameter_name=parameter_value です。たとえば、 --param username=Lily または --param "textEntry=\"スペースと特殊記号を含むテキスト エントリ!\""。個々のパラメーターを渡す代わりに、パラメーターを JSON ファイルに入れて、1 つのパラメーター (以下で説明する --param-file PATH) を使用してその場所を指定することをお勧めします。 |
--filter-by TEXT | テスト構成内で特定のステップを実行するためのフィルターは、filter_name=filter_value の形式で指定します。 たとえば、 --filter-by step_status_include=Failed,Error または --filter-by "test_case_tag_exclude=\"tag with space,another tag\"" です。使用可能なフィルターの完全なリストについては、以下の 高度な例 を参照してください。 個々のフィルターを渡す代わりに、フィルターを JSON ファイルに入れて、1 つのパラメーター (以下で説明する --filter-by-json PATH) を使用してその場所を指定することをお勧めします。 |
--filter-by-json PATH | テスト構成内の特定のステップを実行するためのすべてのフィルターを含む、ユーザーが作成したJSONファイルへのパス。JSONファイルの形式の例は、以下のAdvanced Exampleに記載されています。 |
--previous-task-instance-id <TASK_INSTANCE_ID> | 現在のテスト構成実行で使用する、以前に実行されたテスト構成定義のUUID。デフォルトは、指定されたテスト構成の最後の実行です。 |
--poll-interval INTEGER と --test-environment-timeout INTEGER はDAI 7.4 で非推奨となりました。代わりに使用すべき変数設定については、SUT および実行環境への接続を再試行する を参照してください。
高度な例
次の DAI CLI の例は、高度なオプションの使用方法を示しています。
--log-level TRACE
eggplant-runner-Windows-xx.x.xx.exe スクリプトベース <SERVER_URL> --test-config-name=<TEST_CONFIG_NAME> --suite-name=<SUITE_NAME> --client-id=<CLIENT_ID> --client-secret=<CLIENT_SECRET> --log-level=TRACE
--test-result-path PATH
eggplant-runner-Windows-xx.x.xx.exe scriptbased <SERVER_URL> --test-config-name=<TEST_CONFIG_NAME> --suite-name=<SUITE_NAME> --client-id=<CLIENT_ID> --client-secret=<CLIENT_SECRET> --test-result-path="c:\EggplantResults\ResultEggplantAppJunit.xml"
--param TEXT
eggplant-runner-Windows-xx.x.xx.exe scriptbased <SERVER_URL> --test-config-name=<TEST_CONFIG_NAME> --suite-name=<SUITE_NAME> --client-id=<CLIENT_ID> --client-secret=<CLIENT_SECRET> --param MyEnvironment=Production --param username=Eggy
--param-file PATH
パラメータjsonファイルの例
{
"MyEnvironment": "Production",
"username": "Eggy@eggplant.com"
}
eggplant-runner-Windows-xx.x.xx.exe scriptbased <SERVER_URL> --test-config-name=<TEST_CONFIG_NAME> --suite-name=<SUITE_NAME> --client-id=<CLIENT_ID> --client-secret=<CLIENT_SECRET> --param-file="c:\EggplantCLI\TestConfigParameter.json"
--filter-by TEXT
使用可能なテスト構成のステップ実行フィルター:
| ファイル名 | 例: |
|---|---|
| step_status_include | --filter-by step_status_include=Passed,Failed |
| step_status_exclude | --filter-by step_status_exclude=Error,Cancelled,Untested |
| test_case_tag_include | --filter-by test_case_tag_include=admin,tc_tag1 |
| test_case_tag_exclude | --filter-by test_case_tag_exclude="logic module,critical" |
| test_case_name_include | --filter-by test_case_name_include=tc_001 |
| test_case_name_exclude | --filter-by test_case_name_exclude=login_user |
| scenario_tag | --filter-by scenario_tag="@scea,@input_tag ~@order_page" |
eggplant-runner-Windows-xx.x.xx.exe <SERVER_URL> <TEST_CONFIG_ID> --client-id=<CLIENT_ID> --client-secret=<CLIENT_SECRET> --filter-by test_case_tag_exclude="*Ignored*, #hash#" --filter-by step_status_include=Passed,Failed
--filter-by-json PATH
テスト構成のステップ実行フィルター JSON ファイルの例
{
"step_status": {
"include": "Passed,Failed",
"exclude": "Error,Cancelled,Untested"
},
"test_case_tag": {
"include": "admin, tc_tag1",
"exclude": "logic module, critical"
},
"test_case_name": {
"include": "tc_001",
"exclude": "login_user"
},
"scenario_tag": "@scea,@input_tag ~@order_page"
}
eggplant-runner-Windows-xx.x.xx.exe <SERVER_URL> <TEST_CONFIG_ID> --client-id=<CLIENT_ID> --client-secret=<CLIENT_SECRET> --filter-by-json="c:\EggplantCLI\TestConfigFilters.json"
--previous-task-instance-id <TASK_INSTANCE_ID>
eggplant-runner-Windows-xx.x.xx.exe <SERVER_URL> <TEST_CONFIG_ID> --client-id=<CLIENT_ID> --client-secret=<CLIENT_SECRET> --filter-by test_case_tag_exclude="*Ignored*, #hash#" --filter-by step_status_include=Passed,Failed --previous-task-instance-id b1cd8e74-6622-4086-9751-9631db3d3f00