ロードテストのYAML構成ファイルを作成する
YAML を使用して Azure Load Testing でロード テストを構成する方法について説明します。 テスト構成 YAML ファイルを使用して、GitHub Actions ワークフローからロード テストを作成して実行します。
ロード テストの YAML 構文
ロード テスト構成では、次のキーを使用します。
| 鍵 | タイプ | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
version |
文字列 | Y | ロード テスト仕様のバージョン。 サポートされている値は v0.1のみです。 |
|
testId |
文字列 | Y | ロード テストの一意識別子。 値は 2 ~ 50 文字 ([a-z0-9_-]) である必要があります。 既存のテストの場合は、Azure portal のテストの詳細ページから testId を取得できます。 |
|
testName |
文字列 | N | 非推奨。 ロード テストの一意識別子。 この設定は、testIdに置き換えられます。 testName フィールドを使用して既存のテストを実行することもできます。 |
|
displayName |
文字列 | N | テストの表示名。 この値は、Azure portal のテストの一覧に表示されます。 指定しない場合は、表示名として testId が使用されます。 |
|
description |
文字列 | N | テストの簡単な説明。 この値の最大長は 100 文字です。 | |
testType |
文字列 | Y | テストの種類。 使用可能な値:
|
|
testPlan |
文字列 | Y | テスト 計画ファイルへの参照。
|
|
engineInstances |
整数 | Y | テスト 計画を実行するための並列テスト エンジン インスタンスの数。 | |
configurationFiles |
文字列の配列 | N | テスト スクリプトに必要な外部ファイルの一覧。 たとえば、CSV データ ファイル、画像、その他のデータ ファイルなどです。 Azure Load Testing では、テスト スクリプトと同じフォルダー内のすべてのファイルがアップロードされます。 JMeter スクリプトでは、ファイル名を使用して外部ファイルのみを参照し、ファイル パス情報を削除します。 |
|
failureCriteria |
オブジェクト | N | ロード テストの失敗条件の一覧。 | |
autoStop |
文字列またはオブジェクト | N | エラーの割合が値を超えると、ロード テストを自動的に停止します。 使用可能な値: - disable: ロード テストを自動的に停止しないでください。 |
|
properties |
オブジェクト | N | JMeterのユーザープロパティファイルの参照。 | |
zipArtifacts |
文字列の配列 | N | zip アーティファクト ファイルの一覧を指定します。 JMeter スクリプトとユーザー プロパティ以外のファイルの場合、ファイル サイズが 50 MB を超える場合は、ZIP ファイルに圧縮します。 ZIP ファイルのサイズが 50 MB 未満であることを確認します。 最大 1,000 個のファイルがあり、圧縮されていないサイズが 1 GB の ZIP アーティファクトは 5 つだけです。 testType: JMX場合にのみ適用されます。 |
|
splitAllCSVs |
ブーリアン | N | False | 入力 CSV ファイルをすべてのテスト エンジン インスタンスに均等に分割します。 |
secrets |
オブジェクト | N | Apache JMeter スクリプトが参照するシークレットの一覧。 | |
env |
オブジェクト | N | Apache JMeter スクリプトが参照する環境変数の一覧。 | |
certificates |
オブジェクト | N | JMeter スクリプトのアプリケーション エンドポイントで認証するためのクライアント証明書の一覧。 | |
keyVaultReferenceIdentity |
文字列 | N | Azure Key Vault からシークレットにアクセスするためのユーザー割り当てマネージド ID のリソース ID。 システム マネージド ID を使用する場合、この情報は必要ありません。 このユーザー割り当て ID に Azure キー コンテナーへのアクセス権を付与してください。 | |
subnetId |
文字列 | N | プライベートにホストされるエンドポイントをテストするための仮想ネットワーク サブネットのリソース ID。 このサブネットは、挿入されたテスト エンジン VM をホストします。 | |
publicIPDisabled |
ブーリアン | N | プライベート エンドポイントのテスト中に、パブリック IP アドレス、ロード バランサー、およびネットワーク セキュリティ グループのデプロイを無効にします。 |
次の YAML スニペットには、ロード テスト構成の例が含まれています。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
subnetId: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample-rg/providers/Microsoft.Network/virtualNetworks/load-testing-vnet/subnets/load-testing
configurationFiles:
- 'sampledata.csv'
zipArtifacts:
- bigdata.zip
splitAllCSVs: True
failureCriteria:
- avg(response_time_ms) > 300
- percentage(error) > 50
- GetCustomerDetails: avg(latency) >200
autoStop:
errorPercentage: 80
timeWindow: 60
secrets:
- name: my-secret
value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
keyVaultReferenceIdentity: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity
読み込みパラメーターを構成する
アプリケーションのユーザー トラフィックをシミュレートするには、読み込みパターンと、読み込みをシミュレートする仮想ユーザーの数を構成します。 Azure Load Testing では、多数の並列テスト エンジン インスタンスでロード テストを実行することで、アプリケーションへのトラフィックをシミュレートする仮想ユーザーの数をスケールアウトできます。 ロード パターンは、ロード テストの期間中に負荷がどのように分散されるかを決定します。 負荷パターンの例としては、 線形、 階段状、 スパイク荷重があります。
ロード テスト、URL ベース、または JMeter ベースの種類に応じて、ターゲットの負荷と読み込みパターンを構成するためのさまざまなオプションがあります。 次の表に、2 つのテストの種類の違いを示します。
| テストの種類 | 仮想ユーザーの数 | ロード パターン |
|---|---|---|
| URLに基づく(基本) | ロード テスト構成の仮想ユーザーのターゲット数を指定します。 | 仮想ユーザーのランプアップ時間と数に基づく線形ロードパターン。 |
| URL ベース (詳細) | ロード テスト構成で、テスト エンジンの数とインスタンスあたりの仮想ユーザー数を指定します。 | 負荷パターン (線形、ステップ、スパイク) を構成します。 |
| JMeter ベース | ロード テスト構成のテスト エンジンの数を指定します。 テスト スクリプト内の仮想ユーザーの数を指定します。 | テスト スクリプトでロード パターンを構成します。 |
JMeter ベースのテストの読み込みパラメーターを構成する
GitHub アクション ワークフローの場合は、YAML テスト構成ファイル内のエンジン インスタンスの数を構成します。 ロード テスト構成ファイルは、JMeter テスト スクリプト ファイルと共にソース管理リポジトリに格納します。
次の例では、10 個の並列テスト エンジン インスタンスにわたって実行されるロード テストを構成します。
engineInstances 設定でテスト エンジン インスタンスの数を構成します。
version: v0.1
testId: SampleTestCICD
displayName: Sample test from CI/CD
testPlan: SampleTest.jmx
description: Load test website home page
engineInstances: 10