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 用の Azure Load Testing 拡張機能。 ダウンロードしてインストールします。
- GitHub Copilot。 VS Code で Copilot を設定 して、テスト スクリプトを生成および調整します。 サブスクリプションをお持ちでない場合は、無料試用版をアクティブ化できます。
- Python と Locust。 VS Code からローカルで Locust テストスクリプトを実行して検証することが必要です。 こちらでLocustをインストールしてください。
- アクティブなサブスクリプションを持つ Azure アカウント。 Azure Load Testing で大規模なロード テストを実行するために必要です。 無料でアカウントを作成できます。
ヒント
VS Code の GitHub Copilot Chat には、複数の AI モデルが用意されています。 チャット入力フィールドのモデル ピッカーを使用してモデルを切り替えることができます。 どちらを使用すればよいかわからない場合は、GPT-4o をお勧めします。
チュートリアルを開く
作業を開始するには、VS Code でコマンド パレットを開き、ロード テスト: チュートリアルを開くを実行します。 このチュートリアルでは、拡張機能の重要なエントリ ポイントを示します。
ロード テスト プレフィックスを使用して、コマンド パレットから直接機能にアクセスすることもできます。 一般的に使用されるコマンドには、次のようなものがあります。
Copilot でローカスト スクリプトを作成する
既存の Postman コレクション、Insomnia コレクション、または .http ファイルから、Locust スクリプトを生成できます。 ファイルに複数の要求が含まれている場合、Copilot はそれらをまとまりのあるシナリオにシーケンスしようとします。
ウォークスルーで [ ロード テストの作成 ] ボタンをクリックするか、コマンド パレットから ロード テスト: Locust テストの作成 を実行します。
Locustテストスクリプトを自動生成するためにソースを選択できます。
- Postman コレクション、不眠症コレクション、または .http ファイルを選択すると、Copilot は複数の API 操作を抽出し、データを要求し、認証の詳細を要求して、より完全で現実的なロード テストを作成できます。
- [単一 URL] を選択すると、単一のエンドポイント URL を入力して、カスタマイズまたは展開できる簡単なスクリプトを生成できます。
このチュートリアルでは、[サンプルを試す: Pet Shop API] を選択できます。この API では、
petstore-sample.http
ファイルを使用してサンプルの Locust テスト スクリプトを生成します。Copilot は、選択したファイルを分析し 、リロートベースのロード テスト スクリプトを生成し、API 要求を自動的にシーケンス処理して、実際の使用状況をシミュレートし、認証を安全に処理します。
スクリプトが生成されると、[ 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"
}
要求ペイロードをランダム化してテストをより動的にするには:
- [Copilot チャット] パネルを開きます。
- 入力:
Randomize request payloads
し、Enter キーを押します。 - Copilot は、ランダム化を導入するために推奨される変更を生成します。
- [Copilot チャット] ウィンドウで生成されたコード スニペットの上に表示される [ エディターで適用 ] をクリックします。
- 変更を確認したら、[ 保持 ] をクリックして、スクリプトを受け入れて更新します。
- ファイルを保存する
これで、各要求により、より現実的なユーザー操作がシミュレートされます。 コードは次のスニペットのようになります。
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を使用してローカルで実行します。
コマンド パレットを開き、ロード テスト: ロード テスト (ローカル) を実行します。
Locust Web UI はブラウザーで自動的に起動されます。 Locust サーバの準備が整い、ブラウザーが開くのに数秒かかる場合があります。
[ 新しいロード テストの開始 ] ページで、入力フィールドを確認し、[ 開始] をクリックします。 ローカストは、要求を送信し、障害を記録し、パフォーマンス統計を追跡し始めます。
Locust UI を探索して、応答時間、エラー率、リクエストの処理量を分析します。
ヒント
ローカストがRetrieve Pet
およびUpdate Pet
要求のエラーを報告する場合、それはPet Store APIが要求を処理する方法に原因がある可能性があります。 "run_scenarioの要求間にランダムな遅延を追加する" よう Copilot に依頼してみてください。 スクリプト自体に問題があると思われる場合は、 DEBUG_MODE=True
を環境変数として設定し、テストを再実行して、より詳細なデバッグ情報を取得します。
VS Code ターミナルからテストを実行する場合:
VS Code でターミナルを開きます。
次のコマンドを実行します。
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 分間実行します。
ブラウザを開いて
http://0.0.0.0:8089
にアクセスし、LocustのWeb UIを表示します。
Azure Load Testing でのスケールアップ
複数のリージョンで数千人の同時仮想ユーザーをシミュレートする必要がある高負荷のシナリオでは、 Azure Load Testing でテストを実行できます。
大規模なテストを実行するには:
コマンド パレットを開き、ロード テスト: ロード テストの実行 (Azure Load Testing) を実行します。
[ 構成ファイルの作成...] を選択します。
ガイド付きセットアップに従います。これには次のものが含まれます。
Azure にサインインし、サブスクリプションを選択します。
新しい Azure Load Testing リソースの作成または既存のリソースの選択。
トラフィックをグローバルに分散するためのロード テスト リージョンの選択。
セットアップが完了すると、YAML 構成ファイル (
loadtest.config.yaml
など) が生成され、ワークスペースのルート フォルダーに追加されます。このファイルは、子スクリプト、読み込みパラメーター、環境変数、領域、およびその他のファイル (CSV データセットなど) を定義します。
既定値は、選択した各リージョンで 120 秒間実行されている 200 人の仮想ユーザーです。
このファイルをリポジトリにコミットして、将来のロード テストの実行を再利用して自動化します。
Copilot は、実行前に構成を検証します。 チャット ウィンドウに表示される指示に従います。 それ以外の場合、すべてがチェックアウトされると、テスト スクリプトとその関連成果物が Azure Load Testing にアップロードされ、実行用に準備されます。 このプロセスには最大 1 分かかる場合があり、[ 出力 ] パネルに進行状況が表示されます。
テストが開始されると、通知 (トースト メッセージ) が VS Code の右下隅に表示されます。 [Azure Portal で開く] ボタンをクリックして、テストの実行をリアルタイムで監視します。
テストが開始されると、右下隅に通知 (トースト メッセージ) が表示されます。 [Azure Portal で開く] ボタンをクリックして、テストの実行をリアルタイムで監視します。
ヒント
以前の実行のテスト結果にすばやくアクセスするには、「 ロード テスト: ロード テストの実行を表示する」コマンドを使用します。
このクイック スタートでは、 API_KEY
などの機密性の高い変数が .env
ファイルに格納され、クラウド サービスにアップロードされました。 ただし、ベスト プラクティスとして、シークレットは Azure Key Vault で安全に管理する必要があります。 拡張機能では、この設定に関するガイダンスが提供されます。
このクイック スタートでは、これまで、 API_KEY
などの機密性の高い変数が .env
ファイルに格納され、クラウド サービスにアップロードされていました。 ただし、ベスト プラクティスとして、シークレットは Azure Key Vault で安全に管理する必要があります。 拡張機能では、この設定に関するガイダンスが提供されます。
[Copilot チャット] ウィンドウを開き、「
@testing /setupLoadTestSecretsInAzure
」と入力して Enter キーを押します。Copilot では、次の手順について説明します。
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) ワークフローの一部としてロード テストを統合することもできます。
関連コンテンツ
- アプリケーションのサーバー側メトリックを監視する方法を確認します。
- CI/CD を使用して自動パフォーマンス テストを構成する方法について説明します。