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 テストの種類。 指定できる値
  • URL: URL ベースのロード テスト
  • JMX: JMeter ベースのロード テスト
testPlan string テスト 計画ファイルへの参照。
  • If testType: JMX: JMeter テスト スクリプトへの相対パス。
  • iftestType: URL: 要求 JSON ファイルへの相対パス。
engineInstances integer テスト 計画を実行するための並列テスト エンジン インスタンスの数。 高スケールの負荷の構成について詳しくは、こちらをご覧ください。
configurationFiles 文字列の配列 N テスト スクリプトに必要な外部ファイルの一覧。 たとえば、CSV データ ファイル、画像、その他のデータ ファイルなどです。
Azure Load Testing では、テスト スクリプトと同じフォルダー内のすべてのファイルがアップロードされます。 JMeter スクリプトでは、ファイル名を使用して外部ファイルのみを参照し、ファイル パス情報を削除します。
failureCriteria object N ロード テストの失敗条件の一覧。 詳細については、 failureCriteria を参照してください。
autoStop 文字列またはオブジェクト N エラーの割合が値を超えると、ロード テストを自動的に停止します。
指定できる値
- disable: ロード テストを自動的に停止しないでください。
- object: 詳細については 、autostop 構成を参照してください。
properties object N JMeter ユーザー プロパティ ファイル参照。 詳細については 、プロパティ を参照してください。
zipArtifacts 文字列の配列 N zip アーティファクト ファイルの一覧を指定します。 JMeter スクリプトとユーザー プロパティ以外のファイルの場合、ファイル サイズが 50 MB (メガバイト)を超える場合は、ZIP ファイルに圧縮します。 ZIP ファイルのサイズが 50 MB (メガバイト)未満であることを確認メイン。 ZIP アーティファクトは 5 つしか許可されず、各ファイルに最大 1,000 個のファイルがあり、圧縮されていないサイズは 1 GB です。 場合にのみ適用されます testType: JMX
splitAllCSVs boolean N False 入力 CSV ファイルをすべてのテスト エンジン インスタンスに均等に分割します。 詳細については、 ロード テストのCSVファイルを読むを参照してください。
secrets object N Apache JMeter スクリプトによって参照されるシークレットの一覧。 詳細については シークレットを参照してください。
env object N Apache JMeter スクリプトによって参照される環境変数の一覧。 詳細については 、環境変数 を参照してください。
certificates object N JMeter スクリプトのアプリケーション エンドポイントで認証するためのクライアント証明書の一覧。 詳細については、 証明書 を参照してください。
keyVaultReferenceIdentity string N Azure キー コンテナーからシークレットにアクセスするための、ユーザー割り当てマネージド ID のリソース ID。 システム マネージド ID を使う場合、この情報は必要ありません。 このユーザー割り当て ID には、Azure キー コンテナーへのアクセス権を必ず付与してください。 Azure Load Testing のマネージド ID の詳細について説明します。
subnetId string N プライベートにホストされるエンドポイントをテストするための仮想ネットワーク サブネットのリソース ID。 このサブネットは、挿入されたテスト エンジン VM をホストします。 詳細については、 プライベートにホストされているエンドポイントをロード テストする方法に関する記事を参照してください。
publicIPDisabled boolean 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/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、90、95、99 にすることができます
ミリ秒 (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 のユーザー プロパティ ファイルとして使用するファイル。 このファイルは、JMeter テスト スクリプトやその他の構成ファイルと共に 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'

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 ファイルで to をURL設定testTypeし、要求 JSON ファイルを参照してください。

HTTP 要求

要求 JSON ファイルでは、プロパティで要求を定義するために次のプロパティを requests 使用します。

プロパティ タイプ Description
requestName string 一意の要求名。 テストの失敗条件を構成するときに、要求名を参照できます。
responseVariables 配列 応答変数の一覧。 応答変数を使用して要求から値を抽出し、後続の要求でそれを参照します。 応答変数の詳細を 確認します
responseVariables.extractorType string 応答出力から値を抽出するメカニズム。 サポートされている値は、XPathExtractorJSONExtractor、および RegularExpression です。
responseVariables.expression string 応答出力を取得する式。 式は、エクストラクターの型の値に依存します。
responseVariables.variableName string 一意の応答変数名。 この変数は、構文を使用して後続の要求で {$variable-name} 参照できます。
queryParameters 配列 エンドポイントに渡すクエリ文字列パラメーターの一覧。
queryParameters.key string クエリ文字列パラメーター名。
queryParameters.value string クエリ文字列パラメーター値。
requestType string 要求の種類。 サポートされる値は次のとおりですCURLURL
endpoint string テストするアプリケーション エンドポイントの URL。
headers 配列 アプリケーション エンドポイントに渡す HTTP ヘッダーの一覧。 各ヘッダーのキーと値のペアを指定します。
body string HTTP 要求の本文。 を使用 requestBodyFormat して、本文のコンテンツの形式を指定できます。
requestBodyFormat string 本文の内容の形式。 サポートされている値は、TextJSONJavaScriptHTMLXML です。
method string エンドポイントを呼び出す HTTP メソッド。 サポートされる値は、次POSTHEADOPTIONSPUTPATCHDELETEのとおりです。 GET
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 読み込みパターンの種類。 サポートされている値は次のとおりです。 linearstepspike
scenario string プロパティで指定された要求グループへの scenarios 参照。
virtualUsersPerEngine integer すべて テスト エンジン インスタンスあたりの仮想ユーザーの数。
durationInSeconds integer すべて ロード テストの合計期間 (秒単位)。
rampUpTimeInSeconds integer Linear、Step ターゲットの仮想ユーザー数まで上昇する時間 (秒単位)。
rampUpSteps integer ステップ ターゲットの仮想ユーザー数に到達するステップの数。
spikeMultiplier integer スパイク スパイク期間中にターゲット ユーザーの数を乗算する係数。
spikeHoldTimeInSeconds integer スパイク スパイクの負荷をメインするまでの合計時間 (秒)。