次の方法で共有


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 ベースのロード テスト
  • Locust:ローカストベースロードテスト
testPlan string テスト計画ファイルへの参照。
  • testType: JMX の場合: JMeter テスト スクリプトへの相対パス。
  • testType: Locust場合: 子テスト スクリプトへの相対パス。
  • testType: URL場合: 要求 JSON ファイルへの相対パス
engineInstances integer テスト計画を実行するための並列テスト エンジン インスタンスの数。 高スケールの負荷 構成する方法の詳細についてはを参照してください。
configurationFiles 文字列の配列 N テスト スクリプトに必要な外部ファイルの一覧。 たとえば、CSV データ ファイル、画像、その他のデータ ファイル。
Azure Load Testing は、すべてのファイルをテスト スクリプトと同じフォルダーにアップロードします。 JMeter スクリプトまたは子スクリプトでは、ファイル名を使用して外部ファイルのみを参照し、ファイル パス情報を削除します。
failureCriteria オブジェクト N ロード テストの失敗条件の一覧。 詳細については、 failureCriteria を参照してください。
autoStop 文字列またはオブジェクト N エラーの割合がある値を超えると、ロード テストを自動的に停止します。
指定できる値
- disable: ロード テストを自動的に停止しません。
- object: 詳細については、 autostop の構成を参照してください。
properties オブジェクト N
  • testType: JMX場合: JMeter ユーザー プロパティ ファイル参照。
  • testType: Locust場合: 子構成ファイル参照。
詳細については、 properties を参照してください。
zipArtifacts 文字列の配列 N zip 成果物ファイルの一覧を指定します。 JMeter ベースのテスト用の JMeter スクリプトおよびユーザー プロパティ以外のファイルの場合、また、50 MB を超えるファイル サイズの場合は、Zip ファイルに圧縮します。 ZIP ファイルのサイズが 50 MB 未満であることを確認します。 ZIP アーティファクトは 5 つしか許可されず、各ファイルに最大 1,000 個のファイルがあり、圧縮されていないサイズは 1 GB です。 testType: JMXtestType: 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 応答出力から値を抽出するメカニズム。 サポートされている値は、XPathExtractorJSONExtractor、および 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 本文の内容の形式。 サポートされている値は、TextJSONJavaScriptHTMLXML です。
method string エンドポイントを呼び出す HTTP メソッド。 サポートされる値は、 GETPOSTPUTDELETEPATCHHEAD、および OPTIONSです。
curlCommand string 実行する cURL コマンド。 requestTypeCURLされている必要があります。

次の 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 読み込みパターンの種類。 サポートされている値は、 linearstep、および 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 リージョンのエンジン インスタンスの数。

リージョンロード テストの構成サンプル

次のコード スニペットは、 eastuseastasia の 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