公開日:2024年3月18日最終更新日:
負荷テスト(ロードテスト)はシステムリリース前に問題を早期発見し、対策を取るための重要な開発工程です。また、機能追加や拡張などシステム改修の頻度が増え、思わぬところで性能低下が発生する可能性があります。
しかし、負荷テストの実施には技術者の動員や綿密な計画が必要とされ、原因の追究にも慎重な対応が必要です。Azure Load Testingは負荷テストの統合的な支援サービスで、テスト計画から分析までのワークフローを管理します。
本記事では、Azure Load Testingの特徴と使い方を解説していきます。
目次 <Contents>
Azure Load Testingとは

Azure Load Testingは負荷テストのワークフローを統合的に支援するサービスです。負荷テストではシステムの性能評価を目的に、テストの計画から実行、その後のデータ分析が行われます。テストの各プロセスを自動化し、開発サイクルに組み込むことで、迅速なフィードバックによるリリースの高速化を実現します。
Azureの負荷テストマネージドサービス
負荷テストは、想定外の過負荷への耐久性を測るテスト工程で、要求される品質に基づいて実施されます。過負荷がシステムに与える影響は平時には観測できませんが、意図的にスパイクを発生させることで、疑似的なピークを再現して計測します。
負荷テストでは集中的なアクセスやそのパターンを再現するために詳細なテスト計画が必要ですが、Azure Load Testingが提供するリソースはそれらのタスクを支援します。同時並列にアクセスするエンジン、パフォーマンス測定、ログ分析などのリソースを備えています。
Azure Load Testingの役割
Azure Load Testingは、Azure上に展開されるマネージドサービスというメリットがあります。他のAzureサービスを併用している場合、パフォーマンス測定値を集約できるため相性が良く、パフォーマンス低下の原因となっているボトルネックの特定がしやすいです。
また、Azure Load TestingはオープンソースのJMeterをベースにしたクラウドサービスで、負荷テストツールの代替ソリューションといえます。大量アクセスを行うクライアント、パフォーマンス異常の検出、テスト失敗の検知など負荷テストをサポートするための多くのサービスをクラウド上に提供します。
Azure Load Testingの特徴
Azure Load Testingが持つ3つの特徴を紹介します。複雑な条件下のシステムや開発環境に応じて柔軟に対応できる機能を備えています。
なじみのあるJMeterスクリプトに対応
エンドポイントに対する単純なアクセスであれば、Azureの画面上からテスト計画の作成が可能です。より詳細なテストには、JMeterスクリプトで作成したテスト計画を使用できます。
Apache JMeterは古くから使われてきたオープンソースの負荷テストツールで、XMLベースの構成ファイルによる高度なテスト計画を作成可能です。例えば、下記のような条件が必要なテストにはJMeterスクリプトの利用が適しています。
- 複数ページの一括テスト
- HTTP以外のエンドポイントのテスト
- 認証が必要なエンドポイントのテスト
JMeterで作成したJMXファイルをアップロードして使用できるため、既存のテスト計画の再利用や移行がしやすいメリットもあります。
CI/CDパイプラインに組み込める
負荷テストはシステムの開発途中やリリース前など、さまざまな場面で繰り返し行われます。CI/CDはシステムの迅速なリリースを実現するために、ビルド、テスト、デプロイなどの開発プロセスを自動化する施策で、開発とテストのサイクルを円滑にする効果があります。Azure PipelinesはCI/CDを簡単に構築できるサービスで、そこにAzure Load Testingを組み込むことが可能です。自動化された負荷テストを開発サイクルに組み込むことで、異常発生時にも素早く漏れなく対応が可能です。
プライベートな環境の負荷テストが可能
システムによっては外部からのアクセスを遮断したり、厳重なセキュリティ下におかれたりしており、テストが困難なケースもあります。Azure ExpressRouteを利用することで、Azureとプライベート環境をセキュアに接続できるため、オンプレミスやプライベートクラウドに対する負荷テストが実現可能です。また、クライアント証明書やシークレット情報などの認証が要求される環境にも対応できるため、バックエンドのシステムに対しても有効です。
Azure Load Testingの料金計算からわかる適切なケース
Azure Load Testingの利用には、月額基本料金と使用した分の変動料金が発生します。変動料金は、仮想ユーザー時間(VUH)と呼ばれるテスト稼働量に基づいて計算されます。
- 基本料金:1,476円/月
- 変動料金
- 9,960VUH未満:22円/VUH
- 9,960VUH以上:11円/VUH
VUHは、アクセスするユーザー数とテスト実行時間を掛け合わせた数値です。一定値を超えると単価が下がるため、時間が長くなるほどコストパフォーマンスが良いです。最低でも毎月の基本料金が発生するため、無駄なコストがかからないように稼働時期を絞ったほうが良いでしょう。なお、テスト時はエンドポイントへの頻繁なアクセスが発生するため、Azureや他クラウドサービスのテストには使用量に応じた料金が別途発生します。
Azure Load Testingの使い方
実際にAzure Load Testingを使ってみましょう。Azureポータルの操作だけでテスト作成から実行まで行えます。ここでは、テスト対象としてAzure App Serviceを使用し、パブリックIPを持つWebアプリケーションを予め用意しておきます。なお、前章の料金計算で述べたように、Azure Load Testingでは定額の基本料金が発生するため注意しましょう。
下記の順番で進めていきます。
- テストリソースを作成
- テストを作成
- テストを実行
- テスト結果の検証
まずは土台となるテストリソースを作成しましょう。「DevOps」のカテゴリにある「Azure Load Testing」を選択します。

次に「作成」を選びます。

テストリソース作成画面に移るので、下記を入力しましょう。リソースグループ:既存のリソースグループを選ぶか、新規作成します。

テストの作成方法は次の2通りで、それぞれの使い方を紹介していきます。
- Azureポータルから登録する
- JMeterスクリプトをアップロードする
Azureポータルから作成
作成したテストリソースの画面で「テスト」に進み、「作成」から「URLベースのテスト作成」を選びましょう。

下記の項目を入力します。
- テスト名:適当な名称を入力
- 作成後にテストを実行する:すぐに実行する場合はチェック
- テストURL:アプリケーションのエンドポイントを入力
- 仮想ユーザーの数:スレッド数を入力
- テスト期間:テストの実行期間(分)を入力
- 増加時間:仮想ユーザー数に到達するまでの時間(分)

テストが完了すると、実行結果の数値(メトリック)が表示されるようになります。

また、設定を行うとエンドポイント(今回はAzure App Service)側のメトリックも表示できます。

JMeterスクリプトから作成
JMeterスクリプトを使用する場合は、テストリソースの「テスト」画面で「作成」から「JMeterスクリプトのアップロード」を選びましょう。

まずはテスト作成画面でテスト名を入力し、「次へ」をクリックします。

「ファイルの選択」でJMeterスクリプトを指定しましょう。今回はGitHubにあるAzure-Sampesのスクリプトを使用します。

「確認および作成」をクリックしてテストを作成します。テスト作成が完了したら実行してみましょう。テストが完了すると、実行結果のメトリックが表示されるようになります。

まとめ
本記事では、Azure Load Testingの特徴や負荷テストにおける役割を紹介しました。
Azure Load Testingは負荷テストの実施に対して、計画されたアクセス、パフォーマンスログの収集、グラフィカルな分析ツールを提供する統合支援サービスです。専門のツールを使用せずに、負荷テストの計画から実行、分析までワンストップで行えるため、熟練した担当者でなくても扱いやすいです。テスト工数が大きくなりがちな、大規模システムやミッションクリティカルなサービスにも有用でしょう。