Azure のロード テストとは
Azure Load Testing は、大規模な負荷を生成できるフル マネージドのロード テスト サービスです。 サービスは、アプリケーションがどこにホストされているかにかかわらず、そのトラフィックをシミュレートします。 開発者、テスト担当者、品質保証 (QA) エンジニアは、それを使って、アプリケーションのパフォーマンス、スケーラビリティ、または容量を最適化できます。
Web アプリケーションのロード テストは、URL を使用してすぐに作成できます。テスト ツールの事前の知識は必要ありません。 ロード テストを大規模に実行するための複雑さとインフラストラクチャは、Azure Load Testing によって抽象化されます。
より高度なロード テスト シナリオの場合、テスト スクリプトをアップロードしてロード テストを作成することもできます。 Azure Load Testing では、Apache JMeter ベースのテストまたはLocust ベースのテストの実行がサポートされています。 たとえば、テスト計画が複数のアプリケーション要求から成る可能性がある、HTTP 以外のエンドポイントを呼び出す必要がある、テストをより動的に行うために入力データとパラメーターを使用している、などの場合です。
アプリケーションが Azure でホストされている場合、Azure Load Testing は詳細なリソース メトリックを収集して、Azure アプリケーション コンポーネント全体のパフォーマンスのボトルネックの特定に役立ちます。
アプリケーションのパフォーマンス低下を早期に把握するには、継続的インテグレーションと継続的デプロイ (CI/CD) ワークフローにロード テストを追加します。 テストの不合格の条件を活用して、アプリケーションの品質要件を定義および検証します。
Azure Load Testing では、プライベート アプリケーション エンドポイントまたはオンプレミスでホストするアプリケーションをテストできます。 詳細については、「仮想ネットワークに Azure Load Testing をデプロイするシナリオ」を参照してください。
次の図は、Azure Load Testing のアーキテクチャの概要を示しています。
注意
概要の画像は、Azure Load Testing から Azure Monitor を使用して、アプリ コンポーネントのメトリックをキャプチャする方法を示しています。 サポートされている Azure リソースの種類の詳細について説明します。
Azure Load Testing の主要な概念の詳細について確認してください。
使用シナリオ
Azure Load Testing では Apache JMeter または Locust テスト フレームワークを使用でき、幅広いアプリケーションの種類と通信プロトコルがサポートされています。 サポートされているアプリケーションまたはエンドポイントの種類の例を次に示します。
- HTTP または HTTPS を使用する Web アプリケーション
- REST API
- JDBC を使用するデータベース
- TCP ベースのエンドポイント
JMeter の場合、テスト スクリプトで JMeter プラグインを使用することができ、より多くのアプリケーションの種類のロード テストを実行できます。
クイック テスト エクスペリエンスにより、単一の URL ベースの HTTP エンドポイントをテストできます。 JMeter スクリプトをアップロードすると、JMeter でサポートされているすべての通信プロトコルを使用できます。
現在、Azure Load Testing では Apache JMeter と Locust 以外のテスト フレームワークはサポートされていません。
大規模なロード テストを使ってパフォーマンスのボトルネックを特定する
多くの場合、パフォーマンスの問題は、アプリケーションに負荷がかかるまで検出されません。 Azure portal から大規模なロード テストを開始し、ストレス下でのアプリケーションの挙動を素早く知ることができます。 テストの実行中、Azure Load Testing ダッシュボードには、クライアントとサーバー側のメトリックのライブ更新が表示されます。
ロード テストが完了したら、ダッシュボードを使ってテスト結果を分析し、パフォーマンスのボトルネックを特定できます。 Azure でホストされるアプリケーションの場合、ダッシュボードには Azure アプリケーション コンポーネントの詳細なリソース メトリックが表示されます。 Azure でホストされるアプリケーションのパフォーマンスのボトルネックを特定するためのチュートリアルを開始します。
Azure Load Testing では、テストの実行履歴が保持されるので、視覚的に複数の実行を比較して時間の経過に伴うパフォーマンスの低下を検出できます。
サード パーティ製ツールで分析したテスト結果のダウンロードもできます。
自動ロード テストを有効にする
開発ライフサイクル中の有意の時点で、CI/CD パイプラインに Azure Load Testing を統合することができます。 たとえば、各スプリントの最後またはステージング環境でロード テストを自動的に実行して、リリース候補のビルドを検証できます。
最初に CI/CD ワークフローにロード テストを追加して、ロード中のアプリケーションのパフォーマンス低下をすばやく特定します。
テスト構成で、テストの失敗条件を指定して、開発サイクルの早い段階でアプリケーションのパフォーマンスや安定性の低下を検出します。 たとえば、平均応答時間またはエラーの数が特定のしきい値を超えたときにアラートを受け取ります。
Azure Load Testing では、特定のエラー状態に応じて自動ロード テストが自動的に停止します。 または、Apache JMeter スクリプトで AutoStop リスナーを使用することもできます。 自動的に停止することで、エンドポイント URL が正しく構成されていないなど、テストの失敗でさらにコストが発生することを防ぎます。 ロード テストの自動停止を構成する方法について学習してください。
Azure Load Testing は、Azure Pipelines または GitHub Actions ワークフローからトリガーするか、Azure CLI を使用して他の CI ツールと統合することができます。
Azure Load Testing の動作
Azure Load Testing では、ロード テストの実行に Apache JMeter または Locust が使用されます。 Apache JMeter プラグインを https://jmeter-plugins.org から使用することも、独自のプラグイン コードをアップロードすることもできます。 Azure Load Testing では、JMeter でサポートされるすべての通信プロトコルがサポートされています。 たとえば、Azure Load Testing を使用して、データベース接続やメッセージ キューのロード テストを実行します。 サポートされている Apache JMeter 機能の詳細を確認してください。
Azure Load Testing のテスト エンジンは、大規模なロード テストを実行するために必要なインフラストラクチャを抽象化します。 各テスト エンジン インスタンスは、テスト スクリプトを実行して、多数の仮想ユーザーによるアプリケーション エンドポイントへの同時アクセスをシミュレートします。 URL に基づいてロード テストを作成すると ("クイック テスト")、Azure Load Testing によってテスト スクリプトが自動的に生成されます。 ロード テストをスケールアウトするには、テスト エンジンの数を構成します。
負荷がかかっているアプリケーションを任意の場所 (Azure、オンプレミス、その他のクラウド) でホストできます。 パブリック エンドポイントのないサービスに対してロード テストを実行するには、仮想ネットワークに Azure Load Testing をデプロイします。
ロード テスト中に、Azure Load Testing は次のリソース メトリックを収集してダッシュボードに表示します。
クライアント側のメトリックでは、テスト エンジンによって報告された詳細が表示されます。 これらの詳細には、仮想ユーザーの数、要求の応答時間や、1 秒あたりの要求数が含まれます。
サーバー側のメトリックは、Azure アプリケーション コンポーネントに関する情報を表示します。 Azure Load Testing は、Application Insights やコンテナーの分析情報などの Azure Monitor と統合して、Azure サービスから詳細をキャプチャします。 サービスの種類に応じて、さまざまなメトリックを使用できます。 たとえば、データベースの読み取り数、HTTP 応答の種類や、コンテナー リソースの消費量に関するメトリックを指定できます。
Azure Load Testing には、テストが安全かつ確実に実行されるように Azure ネットワークのベスト プラクティスが自動的に取り入れられます。 アプリケーション エンドポイントまたは Azure コンポーネントが要求の調整を開始すると、ロード テストは自動的に停止します。
ロード テスト リソースに格納されているすべてのデータは、Microsoft が管理するキー (サービス マネージド キー) を使用して、サービスによって自動的に暗号化されます。 たとえば、このデータとしては、Apache JMeter または Locust スクリプトや構成ファイルなどがあります。 または、カスタマー マネージド キーを使用するようにサービスを構成することもできます。
リージョンのデータ所在地
Azure Load Testing では、サービス インスタンスをデプロイするリージョン以外で顧客データが格納や処理されることはありません。
関連するコンテンツ
Azure Load Testing の使用を開始します。