失敗条件と自動停止を定義する

完了

失敗条件を使用して、負荷がかかるアプリケーションのパフォーマンスと品質に対する期待値を定義できます。 Azure Load Testing では、エラー率や応答時間など、不合格の条件を定義するためのさまざまなクライアント メトリックをサポートしています。 自動停止条件を使用すると、エラー率が特定のしきい値を超えたときにロード テストを自動的に停止できます。

このユニットでは、ロード テストの失敗条件と自動停止条件を定義する方法について説明します。

ロード テストの不合格の条件

ロード テストの不合格の条件は、テストが満たす必要があるクライアント側メトリックの条件です。 テスト条件は、Azure Load Testing のロード テスト レベルで定義します。 ロード テストには、1 つ以上のテスト条件を設定できます。 テスト条件の少なくとも 1 つが true と評価されると、ロード テストは 失敗した 状態を取得します。

テスト条件は、2 つのレベルで定義できます。 ロード テストでは、さまざまなレベルで条件を組み合わせることができます。

  • ロード テスト レベル: たとえば、合計エラー率がしきい値を超えないようにします。
  • JMeter 要求レベル (JMeter サンプラー):たとえば、 getProducts 要求の応答時間しきい値を指定できますが、 サインイン 要求の応答時間は無視できます。

ロード テストには、最大 50 個のテスト条件を定義できます。 同じクライアント メトリックに対して複数の条件がある場合は、しきい値が最も低い条件が使われます。

不合格の条件の構造

Azure Load Testing の不合格条件の形式は、サポートされているメトリックの条件ステートメントの形式に従います。 たとえば、1 秒あたりの要求の平均数が 500 を超えていることを確認します。

不合格条件の構造は次のとおりです。

  • ロード テスト レベルでのテスト条件: Aggregate_function (client_metric) condition threshold
  • 特定の JMeter 要求に適用されるテスト条件: Request: Aggregate_function (client_metric) condition threshold

次の表で、各コンポーネントについて説明します。

パラメーター 説明
Client metric 必須。 条件を適用するクライアント メトリック。
Aggregate function 必須。 クライアント メトリックに適用される集計関数。
Condition 必須。 greater thanless than などの比較演算子。
Threshold 必須。 クライアント メトリックと比較する数値。
Request 省略可能。 条件が適用される JMeter スクリプトのサンプラーの名前。 要求名を指定しない場合、条件はスクリプト内のすべての要求の集計に適用されます。
JMeter スクリプトのサンプラー名に個人データを含めないでください。 サンプラー名は、Azure Load Testing 結果ダッシュボードに表示されます。

ロード テスト失敗条件の例

次の例では、3 つの不合格条件を定義しています。 最初の 2 つの条件はロード テスト全体に適用され、最後の条件は GetCustomerDetails 要求についての条件を指定しています。

テスト条件は、failureCriteria 設定に追加されます。

```yaml
version: v0.1
testId: SampleTestCICD
displayName: Sample test from CI/CD
testPlan: SampleTest.jmx
description: Load test website home page
engineInstances: 1
failureCriteria:
  - avg(response_time_ms) > 300
  - percentage(error) > 50
  - GetCustomerDetails: avg(latency) >200
```

特定の JMeter 要求についてのテスト条件を定義する際、要求名は JMX ファイル内の JMeter サンプラーの名前と一致している必要があります。

JMeter ユーザー インターフェイスのスクリーンショット。要求名が強調表示されています。

自動停止の構成

Azure Load Testing は、エラー率が特定の時間枠で指定されたしきい値を超えた場合、ロード テストを自動的に停止します。 自動的に停止することで、エンドポイント URL が正しく構成されていないなど、テストの失敗でさらにコストが発生することを防ぎます。

ロード テスト構成では、自動停止機能を有効または無効にし、エラー率のしきい値と時間枠を構成できます。 既定では、Azure Load Testing は、60 秒の時間枠内で少なくとも 90% のエラー率となったロード テストを自動的に停止します。

Azure Load Testing の自動停止機能は、JMeter スクリプトの AutoStop リスナー と組み合わせて使用できます。 ロード テストは、自動停止構成または JMeter AutoStop リスナーのいずれかの条件が満たされると、自動的に停止します。

GitHub Actions を使用した自動停止

GitHub Actions ワークフローでロード テストの自動停止を構成するには、autoStop 設定でロード テスト構成 YAML ファイルを更新し、errorPercentagetimeWindow を指定します。

次の例では、2 分の時間枠でエラー率が 80% を超えると、ロード テストが自動的に停止されます。

    ```yaml
    version: v0.1
    testId: SampleTestCICD
    displayName: Sample test from CI/CD
    testPlan: SampleTest.jmx
    description: Load test website home page
    engineInstances: 1
    autoStop:
      errorPercentage: 80
      timeWindow: 120
    ```
  • 自動停止を無効にするには、構成ファイルに autoStop: disable を追加します。

次の例では、ロード テストの自動停止を無効にします。

    ```yaml
    version: v0.1
    testId: SampleTestCICD
    displayName: Sample test from CI/CD
    testPlan: SampleTest.jmx
    description: Load test website home page
    engineInstances: 1
    autoStop: disable
    ```