次の方法で共有


クイック スタート: Visual Studio Code と GitHub Copilot を使用してロード テストを作成して実行する

Visual Studio Code 用の Azure Load Testing 拡張機能を活用し、Copilot を使って簡単に Locust の負荷テストを作成し、ローカルでの反復テストの実行や Azure でのスケーリングを効率的に行う方法について解説します。 一番新しいユーザーでも、パフォーマンス テストのエキスパートでも、Azure Load Testing 拡張機能を使用すると、VS Code 環境から直接、テストの作成、イテレーション、スケーリングを効率化できます。 Azure Load Testing は、クラウド規模でロード テストを実行できる管理サービスです。 Locust は、Python コードですべてのテストを記述できるオープンソースの負荷テストツールです。

このクイック スタートでは、現実的なロード テストの生成、調整、実行について説明します。 最終的には、 Postman コレクション不眠症コレクション、または .http ファイルから生成された完全に機能するロード テスト スクリプトが、Copilot を利用した機能強化によって強化され、 Azure Load Testing でスケーリングする準備が整いました。

前提条件

ヒント

VS Code の GitHub Copilot Chat には、複数の AI モデルが用意されています。 チャット入力フィールドのモデル ピッカーを使用してモデルを切り替えることができます。 どちらを使用すればよいかわからない場合は、GPT-4o をお勧めします。

チュートリアルを開く

作業を開始するには、VS Code でコマンド パレットを開き、ロード テスト: チュートリアルを開くを実行します。 このチュートリアルでは、拡張機能の重要なエントリ ポイントを示します。

ロード テスト プレフィックスを使用して、コマンド パレットから直接機能にアクセスすることもできます。 一般的に使用されるコマンドには、次のようなものがあります。

  • ロードテスト: Locust テストを作成する

  • ロード テスト: ロード テストを実行する (ローカル)

  • ロード テスト: ロード テストを実行する (Azure ロード テスト)

    Azure Load Testing VS Code 拡張機能の主要なエントリ ポイントを示すスクリーンショット。

Copilot でローカスト スクリプトを作成する

既存の Postman コレクション、Insomnia コレクション、または .http ファイルから、Locust スクリプトを生成できます。 ファイルに複数の要求が含まれている場合、Copilot はそれらをまとまりのあるシナリオにシーケンスしようとします。

  1. ウォークスルーで [ ロード テストの作成 ] ボタンをクリックするか、コマンド パレットから ロード テスト: Locust テストの作成 を実行します。

  2. Locustテストスクリプトを自動生成するためにソースを選択できます。

    • Postman コレクション不眠症コレクション、または .http ファイルを選択すると、Copilot は複数の API 操作を抽出し、データを要求し、認証の詳細を要求して、より完全で現実的なロード テストを作成できます。
    • [単一 URL] を選択すると、単一のエンドポイント URL を入力して、カスタマイズまたは展開できる簡単なスクリプトを生成できます。
  3. このチュートリアルでは[サンプルを試す: Pet Shop API] を選択できます。この API では、petstore-sample.http ファイルを使用してサンプルの Locust テスト スクリプトを生成します。

  4. Copilot は、選択したファイルを分析し 、リロートベースのロード テスト スクリプトを生成し、API 要求を自動的にシーケンス処理して、実際の使用状況をシミュレートし、認証を安全に処理します。

  5. スクリプトが生成されると、[ Copilot チャット ] ウィンドウには、 環境変数の定義など、他のセットアップ手順が提案されます。 Copilot が環境変数を提案する場合は、プロジェクトに .env ファイルを作成し、推奨値を追加します。

ロード テスト スクリプトをカスタマイズする

テストを実行する前に、Copilot を使用して調整できます。 たとえば、スクリプトを調べると、すべての要求で同じ要求ペイロードが送信されることがわかります。

payload = {
    "id": self.pet_id,
    "name": "Fluffy",
    "category": {"id": 1, "name": "Dogs"},
    "photoUrls": ["https://example.com/photo.jpg"],
    "tags": [{"id": 1, "name": "cute"}],
    "status": "available"
}

要求ペイロードをランダム化してテストをより動的にするには:

  1. [Copilot チャット] パネルを開きます。
  2. 入力: Randomize request payloads し、Enter キーを押します。
  3. Copilot は、ランダム化を導入するために推奨される変更を生成します。
  4. [Copilot チャット] ウィンドウで生成されたコード スニペットの上に表示される [ エディターで適用 ] をクリックします。
  5. 変更を確認したら、[ 保持 ] をクリックして、スクリプトを受け入れて更新します。
  6. ファイルを保存する

これで、各要求により、より現実的なユーザー操作がシミュレートされます。 コードは次のスニペットのようになります。

payload = {
    "id": self.pet_id,
    "name": f"Pet{random.randint(1, 1000)}",
    "category": {"id": random.randint(1, 10), "name": random.choice(["Dogs", "Cats", "Birds"])},
    "photoUrls": [f"https://example.com/photo{random.randint(1, 100)}.jpg"],
    "tags": [{"id": random.randint(1, 10), "name": random.choice(["cute", "friendly", "playful"])}],
    "status": random.choice(["available", "pending", "sold"])
}

ロード テストを実行する

ロード テストは、次の 2 つの方法で実行できます。

  • ローカルで実行して迅速な検証を行う
  • Azure Load Testing で実行して、大規模な複数リージョンの読み込みを行う

ローカルで実行して迅速な検証を行う

テストをすばやく検証するには、Visual Studio CodeからLocustを使用してローカルで実行します。

  1. コマンド パレットを開き、ロード テスト: ロード テスト (ローカル) を実行します。

  2. Locust Web UI はブラウザーで自動的に起動されます。 Locust サーバの準備が整い、ブラウザーが開くのに数秒かかる場合があります。

  3. [ 新しいロード テストの開始 ] ページで、入力フィールドを確認し、[ 開始] をクリックします。 ローカストは、要求を送信し、障害を記録し、パフォーマンス統計を追跡し始めます。

    ロード テストをローカルで実行する、LLocot Web UI を示すスクリーンショット。

  4. Locust UI を探索して、応答時間、エラー率、リクエストの処理量を分析します。

    LocustのWeb UIを使用して、テスト結果をローカルで表示および分析するためのスクリーンショット。

ヒント

ローカストがRetrieve PetおよびUpdate Pet要求のエラーを報告する場合、それはPet Store APIが要求を処理する方法に原因がある可能性があります。 "run_scenarioの要求間にランダムな遅延を追加する" よう Copilot に依頼してみてください。 スクリプト自体に問題があると思われる場合は、 DEBUG_MODE=True を環境変数として設定し、テストを再実行して、より詳細なデバッグ情報を取得します。

VS Code ターミナルからテストを実行する場合:

  1. VS Code でターミナルを開きます。

  2. 次のコマンドを実行します。

    locust -f path/to/locustfile.py -u 10 -r 2 --run-time 1m
    
    • -f path/to/locustfile.py: ローカストテストスクリプトを指定します。
    • -u 10: 最大 10 人の仮想ユーザーをシミュレートします。
    • -r 2: 1 秒あたり 2 人の仮想ユーザーを増やします。
    • --run-time 1m: テストを 1 分間実行します。
  3. ブラウザを開いて http://0.0.0.0:8089 にアクセスし、LocustのWeb UIを表示します。

Azure Load Testing でのスケールアップ

複数のリージョンで数千人の同時仮想ユーザーをシミュレートする必要がある高負荷のシナリオでは、 Azure Load Testing でテストを実行できます。

大規模なテストを実行するには:

  1. コマンド パレットを開き、ロード テスト: ロード テストの実行 (Azure Load Testing) を実行します。

  2. [ 構成ファイルの作成...] を選択します。

  3. ガイド付きセットアップに従います。これには次のものが含まれます。

    • Azure にサインインし、サブスクリプションを選択します。

    • 新しい Azure Load Testing リソースの作成または既存のリソースの選択。

    • トラフィックをグローバルに分散するためのロード テスト リージョンの選択。

  4. セットアップが完了すると、YAML 構成ファイル ( loadtest.config.yaml など) が生成され、ワークスペースのルート フォルダーに追加されます。

    • このファイルは、子スクリプト、読み込みパラメーター、環境変数、領域、およびその他のファイル (CSV データセットなど) を定義します。

    • 既定値は、選択した各リージョンで 120 秒間実行されている 200 人の仮想ユーザーです。

    • このファイルをリポジトリにコミットして、将来のロード テストの実行を再利用して自動化します。

  5. Copilot は、実行前に構成を検証します。 チャット ウィンドウに表示される指示に従います。 それ以外の場合、すべてがチェックアウトされると、テスト スクリプトとその関連成果物が Azure Load Testing にアップロードされ、実行用に準備されます。 このプロセスには最大 1 分かかる場合があり、[ 出力 ] パネルに進行状況が表示されます。

    VS Code 出力コンソールでのロード テストの進行状況を示すスクリーンショット。

  6. テストが開始されると、通知 (トースト メッセージ) が VS Code の右下隅に表示されます。 [Azure Portal で開く] ボタンをクリックして、テストの実行をリアルタイムで監視します。

  7. テストが開始されると、右下隅に通知 (トースト メッセージ) が表示されます。 [Azure Portal で開く] ボタンをクリックして、テストの実行をリアルタイムで監視します。

    Azure Load Testing のロード テストの結果を示すスクリーンショット。

ヒント

以前の実行のテスト結果にすばやくアクセスするには、「 ロード テスト: ロード テストの実行を表示する」コマンドを使用します。

このクイック スタートでは、 API_KEY などの機密性の高い変数が .env ファイルに格納され、クラウド サービスにアップロードされました。 ただし、ベスト プラクティスとして、シークレットは Azure Key Vault で安全に管理する必要があります。 拡張機能では、この設定に関するガイダンスが提供されます。

このクイック スタートでは、これまで、 API_KEY などの機密性の高い変数が .env ファイルに格納され、クラウド サービスにアップロードされていました。 ただし、ベスト プラクティスとして、シークレットは Azure Key Vault で安全に管理する必要があります。 拡張機能では、この設定に関するガイダンスが提供されます。

  1. [Copilot チャット] ウィンドウを開き、「@testing /setupLoadTestSecretsInAzure」と入力して Enter キーを押します。

  2. Copilot では、次の手順について説明します。

  3. Copilot のガイドは次のとおりです。

    • Azure Key Vault の作成。
    • Azure Load Testing リソースへのマネージド ID の割り当て。
    • Azure Key Vault へのシークレットの追加。
    • .envの代わりに Key Vault シークレットを参照するように YAML ファイルを構成する。

子スクリプトまたは YAML 構成を変更するたびに、ロード テストの実行 (Azure Load Testing) を実行してテストを再実行できます。

概要

このクイックスタートでは、Visual Studio Code 用の Azure Load Testing 拡張機能を使用して、Copilot を活用し、Locust のロードテストを簡単に作成し、ローカル環境で反復処理を行い、Azure 上で効率的にスケールさせました。 VS Code 用の Azure Load Testing 拡張機能を使用すると、テスト シナリオに合わせて現実的なテスト スクリプトを作成するプロセスが簡略化されます。 Azure Load Testing は、アプリケーションの大規模なユーザー負荷をシミュレートするためのインフラストラクチャの設定の複雑さを抽象化します。

さらにロード テストを拡張して、負荷が発生しているアプリケーションのサーバー側メトリックを監視したり、アプリケーションが要件を満たしていない場合にアラートを受け取るテスト失敗メトリックを指定したりできます。 アプリケーションのパフォーマンスを維持するために、継続的インテグレーションと継続的配置 (CI/CD) ワークフローの一部としてロード テストを統合することもできます。