次の方法で共有


YAML でのロード テストを構成する

YAML を使用して Azure Load Testing でロード テストを構成する方法について説明します。 テスト構成 YAML ファイルを使用して、継続的インテグレーションと継続的デリバリー (CI/CD) ワークフローからロード テストを作成して実行します。

ロード テストの 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 テストの種類。 使用可能な値:
  • URL: URL ベースのロード テスト
  • JMX: JMeter ベースのロード テスト
  • Locust:ローカストベースロードテスト
testPlan 文字列 Y テスト 計画ファイルへの参照。
  • testType: JMX場合: JMeter テスト スクリプトへの相対パス。
  • testType: Locust場合: 子テスト スクリプトへの相対パス。
  • testType: URL場合: 要求 JSON ファイルへの相対パス
engineInstances 整数 Y テスト 計画を実行するための並列テスト エンジン インスタンスの数。 高スケールの負荷 構成する方法の詳細についてはを参照してください。
configurationFiles 文字列の配列 N テスト スクリプトに必要な外部ファイルの一覧。 たとえば、JMX フラグメント ファイル、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 ベースのテスト用のメイン テスト スクリプトおよびユーザー プロパティ以外のファイル、および、子ベースのテスト用の子スクリプトと構成ファイルの場合、ファイル サイズが 50 MB を超える場合は、ZIP ファイルに圧縮します。 ZIP ファイルのサイズが 50 MB 未満であることを確認します。 ZIP アーティファクトは 5 つしか許可されず、各ファイルに最大 1,000 個のファイルがあり、圧縮されていないサイズは 1 GB です。 testType: JMXtestType: Locustにのみ適用されます。
splitAllCSVs ブーリアン N いいえ 入力 CSV ファイルをすべてのテスト エンジン インスタンスに均等に分割します。 詳細については、 ロード テストのCSVファイルを読むを参照してください。
secrets オブジェクト N Apache JMeter または子スクリプトが参照するシークレットの一覧。 詳細については、 secrets を参照してください。
env オブジェクト N Apache JMeter スクリプトまたは子が参照する環境変数の一覧。 詳細については、 environment 変数 を参照してください。
certificates オブジェクト N JMeter または子スクリプトのアプリケーション エンドポイントで認証するためのクライアント証明書の一覧。 詳細については、 certificates を参照してください。
appComponents オブジェクト N ロード テスト中に監視するサーバー -side リソースの一覧。 詳細については、 appComponents を参照してください。
subnetId 文字列 N プライベートにホストされるエンドポイントをテストするための仮想ネットワーク サブネットのリソース ID。 このサブネットは、挿入されたテスト エンジン VM をホストします。 詳細については、 プライベートにホストされているエンドポイントをロード テストする方法に関する記事を参照してください。
publicIPDisabled ブーリアン N プライベート エンドポイントのテスト中に、パブリック IP アドレス、ロード バランサー、およびネットワーク セキュリティ グループのデプロイを無効にします。 詳細については、 プライベートにホストされているエンドポイントをロード テストする方法に関する記事を参照してください。
regionalLoadTestConfig オブジェクト N リージョン間で負荷を分散して、複数のリージョンからのユーザー トラフィックをシミュレートします。 詳細については、「 リージョンのロード テストの構成 を参照してください。
referenceIdentities オブジェクト N Azure Key Vault からシークレットにアクセスするためにテストで使用されるマネージド ID の一覧、サーバー側の障害条件のメトリック、エンドポイントの認証。 詳細については、 referenceIdentities を参照してください。

ロード テスト構成サンプル

次の 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'
  - 'testfragment.jmx'
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
  • 特定の要求に適用されるテスト条件: Request: Aggregate_function (client_metric) condition threshold

Azure Load Testing では、次のクライアント メトリックがサポートされています。

メトリック 集計関数 しきい値 条件 説明
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 整数値。 > (より大きい)
< (より小さい)
要求の合計数。

サーバー側のメトリック

サーバー側アプリ コンポーネントのサーバー側メトリックで失敗条件を定義できます。

次の表では、 serverMetrics: 構成のさまざまなフィールドについて説明します。

パラメーター 説明
resourceId 必須。 条件を適用するアプリ コンポーネントのリソース ID
metricNamespace 必須。 サーバー側のメトリック名前空間。
metricName 必須。 条件を適用するサーバー側のメトリック。
aggregation 必須。 サーバー側のメトリックに適用する集計。
condition 任意。 greater thanless than などの比較演算子。
value 必須。 メトリックと比較する数値。

エラー条件の構成サンプル

次のコード スニペットは、ロード テストの失敗条件が 3 つのロード テスト構成を示しています。

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
failureCriteria:
  clientMetrics:
    - avg(responseTimeMs) > 300
    - percentage(error) > 50
    - getCustomerDetails: avg(latency) > 200
  serverMetrics:
    - resourceId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Compute/virtualMachines/sample-vm
      metricNamespace: Microsoft.Compute/virtualMachines
      metricName: Percentage CPU
      aggregation: Average
      condition: GreaterThan
      value: 80
    - resourceId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Compute/virtualMachines/sample-vm
      metricNamespace: Microsoft.Compute/virtualMachines
      metricName: Available Memory
      aggregation: Average
      condition: LessThan
      value: 20

appComponents 構成

ロード テスト中にサーバー側のリソースを監視できます。 サーバー側リソースの監視について詳しくは、こちらをご覧ください。 Azure でホストされるアプリケーションのロード テストを実行すると、Azure Load Testing によって、アプリケーション コンポーネントのリソース メトリックが収集され、負荷テスト ダッシュボードに表示されます。

次の表では、 appComponents: 構成のさまざまなフィールドについて説明します。

パラメーター 説明
resourceId 必須。 条件を適用する必要があるアプリ コンポーネントのリソース ID。
resourceName 任意。 監視するリソースの名前。
kind 任意。 監視するリソースの種類。
metrics 必須。 アプリ コンポーネントの監視対象となるメトリックの一覧。 これには、メトリックの名前、名前空間、および集計が含まれます。

アプリ コンポーネントの構成サンプル

次のコード スニペットは、2 つのアプリ コンポーネントを含むロード テスト構成を示しています。

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
appComponents:
  - resourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/samplerg/providers/microsoft.insights/components/appComponentResource"
    resourceName: appComponentResource #Optional
    kind: web # Optional
    metrics:
      - name: "requests/duration"
        namespace: microsoft.insights/components 
        aggregation: "Average"
      - name: "requests/count"
        aggregation: "Total"
        namespace: microsoft.insights/components   
  - resourceId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/samplerg/providers/microsoft.insights/components/appComponentResource"
    resourceName: appComponentResource #Optional
    kind: web # Optional
    metrics:
      - name: "requests/duration"
        aggregation: "Average"
        namespace: microsoft.insights/components
      - name: "requests/count"
        aggregation: "Total"
        namespace: microsoft.insights/components

autoStop 構成

ロード テストの自動停止機能を使用すると、特定の時間枠内にエラーの割合が特定のしきい値を超えたときに、ロード テストを自動的に停止できます。 自動停止のテスト機能の 読み込みの詳細については

タイプ 既定値 説明
errorPercentage 整数 90 timeWindow中のエラー率のしきい値。 特定の時間枠中にエラーの割合がこの割合を超えると、テストの実行は自動的に停止します。
timeWindow 整数 六十 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 ユーザー プロパティの使用 の詳細

タイプ 既定値 説明
userPropertyFile 文字列 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 でのシークレットの使用 の詳細

タイプ 既定値 説明
name 文字列 シークレットの名前。 この名前は、テスト 計画要求で使用するシークレット名と一致する必要があります。
value 文字列 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 を使用した環境変数の使用 の詳細

タイプ 既定値 説明
name 文字列 環境変数の名前。 この名前は、テスト 計画要求で使用する変数名と一致する必要があります。
value 文字列 環境変数の値。

環境変数の構成サンプル

次のコード スニペットは、環境変数の 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 を使用したクライアント証明書の使用 の詳細

タイプ 既定値 説明
name 文字列 証明書の名前。
value 文字列 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

referenceIdentities 構成

ロード テストでは、さまざまなシナリオでマネージド ID を使用できます。 マネージド ID は、Azure Key Vault からシークレットまたは証明書にアクセスし、サーバー側の障害条件とエンドポイントの認証のメトリックをフェッチするために、テストで使用できます。

次の表では、 referenceIdentities: 構成のさまざまなフィールドについて説明します。

パラメーター 説明
kind 必須。 これにより、マネージド ID が使用されるシナリオが定義されます。 これは、KeyVaultまたはMetricsの次のEngineのいずれかになります。 種類 Engineには複数の項目が存在する場合があります。
type 必須。 ID の種類。 これは、 UserAssigned または SystemAssignedできます。
value 必須。 マネージド ID のリソース ID。 型が SystemAssigned場合は、これを指定する必要はありません。

参照 ID の構成サンプル

次のコード スニペットは、複数の ID のロード テスト構成を示しています。

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
failureCriteria:
  serverMetrics:
    - resourceId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Compute/virtualMachines/sample-vm
      metricNamespace: Microsoft.Compute/virtualMachines
      metricName: Percentage CPU
      aggregation: Average
      condition: GreaterThan
      value: 80
referenceIdentities:
  - kind: KeyVault
    type: UserAssigned
    value: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity
  - kind: Metrics
    type: SystemAssigned
  - kind: Engine
    type: UserAssigned
    value: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity
  - kind: Engine
    type: UserAssigned
    value: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity1

JSON ファイルを要求します

URL ベースのテストを使用する場合は、テスト スクリプトを使用する代わりに、JSON ファイルで HTTP 要求を指定できます。 テスト構成 YAML ファイルでtestTypeするようにURLを設定し、要求 JSON ファイルを参照してください。

HTTP 要求

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

プロパティ タイプ 説明
requestName 文字列 一意の要求名。 テストの失敗条件を構成 場合は、要求名を参照できます
responseVariables アレイ 応答変数の一覧。 応答変数を使用して要求から値を抽出し、後続の要求でそれを参照します。 応答変数の詳細についてはを参照してください。
responseVariables.extractorType 文字列 応答出力から値を抽出するメカニズム。 サポートされている値は、XPathExtractorJSONExtractor、および RegularExpression です。
responseVariables.expression 文字列 応答出力を取得する式。 式は、エクストラクターの型の値に依存します。
responseVariables.variableName 文字列 一意の応答変数名。 {$variable-name}構文を使用して、後続の要求でこの変数を参照できます。
queryParameters アレイ エンドポイントに渡すクエリ文字列パラメーターの一覧。
queryParameters.key 文字列 クエリ文字列パラメーター名。
queryParameters.value 文字列 クエリ文字列パラメーター値。
requestType 文字列 要求の種類。 サポートされる値は、 URL または CURLです。
endpoint 文字列 テストするアプリケーション エンドポイントの URL。
headers アレイ アプリケーション エンドポイントに渡す HTTP ヘッダーの一覧。 各ヘッダーのキーと値のペアを指定します。
body 文字列 HTTP 要求の本文。 requestBodyFormatを使用して、本文のコンテンツの形式を指定できます。
requestBodyFormat 文字列 本文の内容の形式。 サポートされている値は、TextJSONJavaScriptHTMLXML です。
method 文字列 エンドポイントを呼び出す HTTP メソッド。 サポートされる値は、 GETPOSTPUTDELETEPATCHHEAD、および OPTIONSです。
curlCommand 文字列 実行する 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 プロパティで読み込み構成を定義するために、次のプロパティを使用します。

プロパティ タイプ 負荷型 説明
loadType 文字列 読み込みパターンの種類。 サポートされている値: linearstepspike
scenario 文字列 scenarios プロパティで指定された要求グループへの参照。
virtualUsersPerEngine 整数 全て テスト エンジン インスタンスあたりの仮想ユーザーの数。
durationInSeconds 整数 全て ロード テストの合計期間 (秒単位)。
rampUpTimeInSeconds 整数 Linear、Step ターゲットの仮想ユーザー数まで上昇する時間 (秒単位)。
rampUpSteps 整数 ステップ ターゲットの仮想ユーザー数に到達するステップの数。
spikeMultiplier 整数 スパイク スパイク期間中にターゲット ユーザーの数を乗算する係数。
spikeHoldTimeInSeconds 整数 スパイク スパイクの負荷を維持するための合計時間 (秒)。

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

リージョン間で負荷を分散して、実際のトラフィック パターンをより適切にシミュレートできます。 負荷を生成するリージョンと、各リージョンからシミュレートする負荷の量を指定できます。 そのためには、リージョン名と、そのリージョンに必要なエンジン インスタンスの数を指定します。 複数のリージョンから負荷を する方法について説明します

タイプ 既定値 説明
region 文字列 Azure リージョンの名前。
engineInstances 整数 その 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