YAML でのロード テストを構成する
YAML を使用して Azure Load Testing でロード テストを構成する方法について説明します。 テスト構成 YAML ファイルを使用して、継続的インテグレーションと継続的デリバリー (CI/CD) ワークフローからロード テストを作成して実行します。
ロード テストの YAML 構文
ロード テストの構成では、次のキーを使います。
キー | Type | 必須 | 規定値 | 説明 |
---|---|---|---|---|
version |
string | 年 | ロード テスト仕様のバージョン。 値 v0.1 のみがサポートされています。 |
|
testId |
string | 年 | ロード テストの一意識別子。 値は、2 から 50 文字にする必要があります ([a-z0-9_-])。 既存のテストの場合は、Azure portal のテストの詳細ページから testId を取得できます。 |
|
testName |
string | N | 削除されました。 ロード テストの一意識別子。 この設定は、 testId に置き換えられます。 testName フィールドを使って既存のテストを実行することもできます。 |
|
displayName |
string | N | テストの表示名。 この値は、Azure portal のテストの一覧で示されます。 指定しないと、testId が表示名として使われます。 |
|
description |
string | N | テストの簡単な説明。 値の最大長は 100 文字です。 | |
testType |
string | 年 | テストの種類。 指定できる値
|
|
testPlan |
string | 年 | テスト計画ファイルへの参照。
|
|
engineInstances |
integer | 年 | テスト計画を実行するための並列テスト エンジン インスタンスの数。 高スケールの負荷 構成する方法の詳細についてはを参照してください。 | |
configurationFiles |
文字列の配列 | N | テスト スクリプトに必要な外部ファイルの一覧。 たとえば、CSV データ ファイル、画像、その他のデータ ファイル。 Azure Load Testing は、すべてのファイルをテスト スクリプトと同じフォルダーにアップロードします。 JMeter スクリプトまたは子スクリプトでは、ファイル名を使用して外部ファイルのみを参照し、ファイル パス情報を削除します。 |
|
failureCriteria |
オブジェクト | N | ロード テストの失敗条件の一覧。 詳細については、 failureCriteria を参照してください。 | |
autoStop |
文字列またはオブジェクト | N | エラーの割合がある値を超えると、ロード テストを自動的に停止します。 指定できる値 - disable : ロード テストを自動的に停止しません。- object: 詳細については、 autostop の構成を参照してください。 |
|
properties |
オブジェクト | N |
|
|
zipArtifacts |
文字列の配列 | N | zip 成果物ファイルの一覧を指定します。 JMeter ベースのテスト用の JMeter スクリプトおよびユーザー プロパティ以外のファイルの場合、また、50 MB を超えるファイル サイズの場合は、Zip ファイルに圧縮します。 ZIP ファイルのサイズが 50 MB 未満であることを確認します。 ZIP アーティファクトは 5 つしか許可されず、各ファイルに最大 1,000 個のファイルがあり、圧縮されていないサイズは 1 GB です。 testType: JMX とtestType: Locust にのみ適用されます。 |
|
splitAllCSVs |
boolean | N | False | 入力 CSV ファイルをすべてのテスト エンジン インスタンスに均等に分割します。 詳細については、 ロード テストのCSVファイルを読むを参照してください。 |
secrets |
オブジェクト | N | Apache JMeter または子スクリプトが参照するシークレットの一覧。 詳細については、 secrets を参照してください。 | |
env |
オブジェクト | N | Apache JMeter スクリプトまたは子が参照する環境変数の一覧。 詳細については、 environment 変数 を参照してください。 | |
certificates |
オブジェクト | N | JMeter または子スクリプトのアプリケーション エンドポイントで認証するためのクライアント証明書の一覧。 詳細については、 certificates を参照してください。 | |
keyVaultReferenceIdentity |
string | N | Azure キー コンテナーからシークレットにアクセスするための、ユーザー割り当てマネージド ID のリソース ID。 システム マネージド ID を使う場合、この情報は必要ありません。 このユーザー割り当て ID には、Azure キー コンテナーへのアクセス権を必ず付与してください。 Azure Load Testing 管理された ID の詳細についてはを参照してください。 | |
subnetId |
string | N | プライベートにホストされるエンドポイントをテストするための仮想ネットワーク サブネットのリソース ID。 このサブネットは、挿入されたテスト エンジン VM をホストします。 詳細については、 プライベートにホストされているエンドポイントをロード テストする方法に関する記事を参照してください。 | |
publicIPDisabled |
boolean | N | プライベート エンドポイントのテスト中は、パブリック IP アドレス、ロード バランサー、ネットワーク セキュリティ グループのデプロイを無効にします。 詳細については、 プライベートにホストされているエンドポイントをロード テストする方法に関する記事を参照してください。 | |
regionalLoadTestConfig |
オブジェクト | N | リージョン間で負荷を分散して、複数のリージョンからのユーザー トラフィックをシミュレートします。 詳細については、「 リージョンのロード テストの構成 を参照してください。 |
ロード テスト構成サンプル
次の YAML スニペットには、ロード テスト構成の例が含まれています。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
subnetId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/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/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity
failureCriteria
構成
テストの失敗条件を使用すると、ロード テストの実行が成功したかどうかを判断する条件を定義できます。 1 つ以上の不合格条件が満たされた場合、テストは失敗したテスト結果を取得します。 ロード テストの失敗条件 使用する方法の詳細についてはを参照してください。
ロード テスト全体に適用される、または特定の要求に適用される失敗条件を定義できます。 不合格条件の構造は次のとおりです。
- ロード テスト レベルでのテスト条件:
Aggregate_function (client_metric) condition threshold
。 - 特定の JMeter 要求に適用されるテスト条件:
Request: Aggregate_function (client_metric) condition threshold
。
サポートされているクライアント メトリック
Azure Load Testing では、次のクライアント メトリックがサポートされています。
メトリック | 集計関数 | Threshold | 条件 | 説明 |
---|---|---|---|---|
response_time_ms |
avg (平均)min (最小)max (最大)pxx (パーセンタイル): xx は 50、75、90、95、96、97、98、99、999、9999 のいずれかです。 |
ミリ秒 (ms) を表す整数値。 | > (より大きい)< (より小さい) |
応答時間または経過時間 (ミリ秒単位)。 経過時間の詳細については、「Apache JMeter のドキュメント」を参照してください。 |
latency |
avg (平均)min (最小)max (最大)pxx (パーセンタイル)、xx は 50、90、95、99 にすることができます |
ミリ秒 (ms) を表す整数値。 | > (より大きい)< (より小さい) |
待機時間 (ミリ秒単位)。 待機時間の詳細については、「Apache JMeter のドキュメント」を参照してください。 |
error |
percentage |
パーセントを表す 0 - 100 の範囲の数値。 | > (より大きい) |
失敗した要求の割合。 |
requests_per_sec |
avg (平均) |
小数点以下 2 桁までの数値。 | > (より大きい) < (より小さい) |
1 秒あたりの要求回数。 |
requests |
count |
整数値。 | > (より大きい) < (より小さい) |
要求の合計数。 |
失敗条件の構成サンプル
次のコード スニペットは、ロード テストの失敗条件が 3 つのロード テスト構成を示しています。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
failureCriteria:
- avg(response_time_ms) > 300
- percentage(error) > 50
- GetCustomerDetails: avg(latency) >200
autoStop
構成
ロード テストの自動停止機能を使用すると、特定の時間枠内にエラーの割合が特定のしきい値を超えたときに、ロード テストを自動的に停止できます。 自動停止のテスト機能の 読み込みの詳細については。
キー | Type | 既定値 | 説明 |
---|---|---|---|
errorPercentage |
integer | 90 | timeWindow 中のエラー率のしきい値。 特定の時間枠中にエラーの割合がこの割合を超えると、テストの実行は自動的に停止します。 |
timeWindow |
integer | 60 | errorPercentage を計算するための時間枠 (秒単位)。 |
Autostop 構成サンプル
次のコード スニペットは、ロード テストの失敗条件が 3 つのロード テスト構成を示しています。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
autoStop:
errorPercentage: 80
timeWindow: 60
properties
構成
ロード テスト用の JMeter ユーザー プロパティ ファイルを指定できます。 ユーザー プロパティ ファイルは、テスト 計画やその他のファイルと共にアップロードされます。 Azure Load Testing での JMeter ユーザー プロパティの使用 の詳細。
キー | Type | 既定値 | 説明 |
---|---|---|---|
userPropertyFile |
string | Apache JMeter user プロパティ ファイルとして使用するファイル または 構成ファイル。 また、1 つの構成ファイルとして、.conf、.ini、.toml という拡張子のファイルがサポートされています。 このファイルは、テスト スクリプトやその他の構成ファイルと共に Azure Load Testing リソースにアップロードされます。 ファイルがローカル コンピューター上のサブフォルダー内にある場合は、テスト スクリプトの場所を基準とした相対パスを使用します。 |
ユーザー プロパティ ファイルの構成サンプル
次のコード スニペットは、ユーザー プロパティ ファイルを指定するロード テスト構成を示しています。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
properties:
userPropertyFile: 'user.properties'
次のコード スニペットは、ロード テストの構成を示しています。この構成では、子の構成ファイルを指定します。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.py
testType: Locust
engineInstances: 1
properties:
userPropertyFile: 'locust.conf'
secrets
構成
シークレット値は Azure Key Vault に格納し、テスト 計画で参照できます。 Azure Load Testing でのシークレットの使用 の詳細。
キー | Type | 既定値 | 説明 |
---|---|---|---|
name |
string | シークレットの名前。 この名前は、テスト 計画要求で使用するシークレット名と一致する必要があります。 | |
value |
string | Azure Key Vault シークレットの URI (シークレット識別子) |
シークレット構成のサンプル
次のコード スニペットは、Azure Key Vault 内のシークレット my-secret
を参照するロード テスト構成を示しています。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
secrets:
- name: my-secret
value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
env
構成
環境変数を指定し、テスト計画でそれらを参照できます。 Azure Load Testing を使用した環境変数の使用 の詳細。
キー | Type | 既定値 | 説明 |
---|---|---|---|
name |
string | 環境変数の名前。 この名前は、テスト 計画要求で使用する変数名と一致する必要があります。 | |
value |
string | 環境変数の値。 |
環境変数の構成サンプル
次のコード スニペットは、環境変数の my-variable
と値の my-value
を指定するロード テスト構成を示しています。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
env:
- name: my-variable
value: my-value
certificates
構成
ロード テストにクライアント証明書を渡すことができます。 証明書は Azure Key Vault に格納されます。 Azure Load Testing を使用したクライアント証明書の使用 の詳細。
キー | Type | 既定値 | 説明 |
---|---|---|---|
name |
string | 証明書の名前。 | |
value |
string | Azure Key Vault の証明書の URI (シークレット識別子)。 |
証明書構成のサンプル
次のコード スニペットは、Azure Key Vault のクライアント証明書を参照するロード テスト構成を示しています。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
certificates:
- name: my-certificate
value: https://akv-contoso.vault.azure.net/certificates/MyCertificate/abc1234567890def12345
JSON ファイルを要求します
URL ベースのテストを使用する場合は、JMeter テスト スクリプトを使用する代わりに、JSON ファイルで HTTP 要求を指定できます。 テスト構成 YAML ファイルでURL
するようにtestType
を設定し、要求 JSON ファイルを参照してください。
HTTP 要求
要求 JSON ファイルでは、 requests
プロパティで要求を定義するために次のプロパティを使用します。
プロパティ | タイプ | 説明 |
---|---|---|
requestName |
string | 一意の要求名。 テストの失敗条件を構成 場合は、要求名を参照できます。 |
responseVariables |
配列 | 応答変数の一覧。 応答変数を使用して要求から値を抽出し、後続の要求でそれを参照します。 応答変数の詳細についてはを参照してください。 |
responseVariables.extractorType |
string | 応答出力から値を抽出するメカニズム。 サポートされている値は、XPathExtractor 、JSONExtractor 、および RegularExpression です。 |
responseVariables.expression |
string | 応答出力を取得する式。 式は、エクストラクターの型の値に依存します。 |
responseVariables.variableName |
string | 一意の応答変数名。 {$variable-name} 構文を使用して、後続の要求でこの変数を参照できます。 |
queryParameters |
配列 | エンドポイントに渡すクエリ文字列パラメーターの一覧。 |
queryParameters.key |
string | クエリ文字列パラメーター名。 |
queryParameters.value |
string | クエリ文字列パラメーター値。 |
requestType |
string | 要求の種類。 サポートされる値は、 URL または CURL です。 |
endpoint |
string | テストするアプリケーション エンドポイントの URL。 |
headers |
配列 | アプリケーション エンドポイントに渡す HTTP ヘッダーの一覧。 各ヘッダーのキーと値のペアを指定します。 |
body |
string | HTTP 要求の本文。 requestBodyFormat を使用して、本文のコンテンツの形式を指定できます。 |
requestBodyFormat |
string | 本文の内容の形式。 サポートされている値は、Text 、JSON 、JavaScript 、HTML 、XML です。 |
method |
string | エンドポイントを呼び出す HTTP メソッド。 サポートされる値は、 GET 、 POST 、 PUT 、 DELETE 、 PATCH 、 HEAD 、および OPTIONS です。 |
curlCommand |
string | 実行する cURL コマンド。 requestType がCURL されている必要があります。 |
次の JSON スニペットには、要求 JSON ファイルの例が含まれています。
{
"version": "1.0",
"scenarios": {
"requestGroup1": {
"requests": [
{
"requestName": "add",
"responseVariables": [],
"queryParameters": [
{
"key": "param1",
"value": "value1"
}
],
"requestType": "URL",
"endpoint": "https://www.contoso.com/orders",
"headers": {
"api-token": "my-token"
},
"body": "{\r\n \"customer\": \"Contoso\",\r\n \"items\": {\r\n\t \"product_id\": 321,\r\n\t \"count\": 50,\r\n\t \"amount\": 245.95\r\n }\r\n}",
"method": "POST",
"requestBodyFormat": "JSON"
},
{
"requestName": "get",
"responseVariables": [],
"requestType": "CURL",
"curlCommand": "curl --request GET 'https://www.contoso.com/orders'"
},
],
"csvDataSetConfigList": []
}
},
"testSetup": [
{
"virtualUsersPerEngine": 1,
"durationInSeconds": 600,
"loadType": "Linear",
"scenario": "requestGroup1",
"rampUpTimeInSeconds": 30
}
]
}
構成の読み込み
要求 JSON ファイルでは、 testSetup
プロパティで読み込み構成を定義するために、次のプロパティを使用します。
プロパティ | Type | 負荷型 | 説明 |
---|---|---|---|
loadType |
string | 読み込みパターンの種類。 サポートされている値は、 linear 、 step 、および spike です。 |
|
scenario |
string | scenarios プロパティで指定された要求グループへの参照。 |
|
virtualUsersPerEngine |
integer | すべて | テスト エンジン インスタンスあたりの仮想ユーザーの数。 |
durationInSeconds |
integer | すべて | ロード テストの合計期間 (秒単位)。 |
rampUpTimeInSeconds |
integer | Linear、Step | ターゲットの仮想ユーザー数まで上昇する時間 (秒単位)。 |
rampUpSteps |
integer | Step | ターゲットの仮想ユーザー数に到達するステップの数。 |
spikeMultiplier |
integer | スパイク | スパイク期間中にターゲット ユーザーの数を乗算する係数。 |
spikeHoldTimeInSeconds |
integer | スパイク | スパイクの負荷を維持するための合計時間 (秒)。 |
リージョンロード テストの構成
リージョン間で負荷を分散して、実際のトラフィック パターンをより適切にシミュレートできます。 負荷を生成するリージョンと、各リージョンからシミュレートする負荷の量を指定できます。 そのためには、リージョン名と、そのリージョンに必要なエンジン インスタンスの数を指定します。 複数のリージョンから負荷を する方法について説明します。
キー | Type | 既定値 | 説明 |
---|---|---|---|
region |
string | Azure リージョンの名前。 | |
engineInstances |
integer | その Azure リージョンのエンジン インスタンスの数。 |
リージョンロード テストの構成サンプル
次のコード スニペットは、 eastus
と eastasia
の 2 つの Azure リージョンと、各リージョンのエンジン インスタンスの数を指定するロード テスト構成を示しています。
displayName: Sample Test
testPlan: sampleScript.jmx
description: 'Load test website home page'
engineInstances: 4
testId: SampleTest
testType: Locust
splitAllCSVs: False
regionalLoadTestConfig:
- region: eastus
engineInstances: 2
- region: eastasia
engineInstances: 2
failureCriteria:
- p90(response_time_ms) > 10000
autoStop:
errorPercentage: 90
timeWindow: 60
関連するコンテンツ
- CI/CD ワークフローで自動回帰テストをビルドする方法について説明します。
- シークレットと環境変数を使用してロード テストをパラメーター化する方法について説明します。
- セキュリティで保護されたエンドポイントをロード テストする方法について説明します。