JMeter ロード テストのチュートリアル
JMeter ロード テストの概要
すべてのWebアプリケーションには最大負荷容量があり、それを超えると、速度低下、エラー、または全体的な効果が低下する可能性があります。 負荷テストは、Webアプリケーションのパフォーマンスを評価する上で非常に重要です。 このタイプのテストは、ソフトウェアとアプリケーションの開発ライフサイクルの重要な要素であり、特に大量のユーザートラフィックを処理することが予想されるWebアプリケーション、サイト、またはAPIを扱う場合です。 トラフィックのピーク時または持続的な高トラフィック条件下でアプリケーションを確実に実行できるようにするには、パフォーマンステストツールを採用することが不可欠です。 Apache JMeterはこの目的によく使われており、パフォーマンステストに不慣れな方は、JMeterとは何かと疑問に思われるかもしれません。 そして、JMeterはどのように機能しますか? JMeterと、JMeterをパフォーマンステストに使用する方法を見ていきます。
ロード テストとは
負荷テストは、パフォーマンス テストの一種で、通常の負荷状態とピーク負荷状態で Web アプリケーションがどのように動作するかを判断したり、限界点を見つけたりします。 これは、ソフトウェア、Webサイト、Webアプリケーション、API、またはシステムの実際の使用状況または負荷をシミュレートして、応答性、低下、スケーラビリティなどの要因を分析および特定するプラクティスです。
負荷テスト用のツール
負荷テストツールは、負荷テストのニーズを合理化し、デジタルパフォーマンスを向上させるために非常に重要です。 今日の市場では、さまざまな機能を備えたツールやプラットフォームの量と多様性に終わりはありません。 次のような負荷テストツールはたくさんあります。
-
- ビューを読み込む
- アパッチJメーター
- ウェブロード
- ロードランナー
- Tricentis NeoLoad
このガイドでは、JMeterの負荷テストを見ていきます。 JMeterとは何か、JMeterの負荷テストを行う方法、APIパフォーマンステストにJMeterを使用する方法などの質問に答えます。
JMeterとは何ですか?
Apache JMeterは、JMeterとも呼ばれ、機能動作の負荷テストを実施し、パフォーマンスを評価するための100%純粋なJavaアプリケーションとして設計された、広く使用されているオープンソースソフトウェアです。 これは、広範なドキュメント、強力なコミュニティサポート、および確立されたベストプラクティスにより、開発者やソフトウェア開発チームの間でパフォーマンステストに好まれるツールです。 さらに、無料でオープンソースであるため、費用対効果の高い選択肢になりますが、100%Javaであるため、チームがテストプロセスを開始するのに追加の時間とリソースが必要になる場合があります。
JMeter負荷テストは、機能動作の負荷テストを実施し、そのパフォーマンスを測定するように設計されています。 JMeterを使用して、Webアプリケーションまたはサービスのパフォーマンスを分析および測定できます。 収集したデータを分析してレポートを生成することで、アプリケーションの動作を観察し、パフォーマンスのボトルネックを特定して、アプリケーションの機能強化が必要な領域に関する貴重な洞察を得ることができます。
なぜJMeterを使うのか?
- オープンソース: JMeterは完全に無料で、開発者はソースコードを使用できます。
- プラットフォームに依存しない: JMeterは100%で、複数のプラットフォームで実行できます。
- マルチプロトコルのサポート: JMeterは、Webアプリケーションのテストとデータベースサービスのパフォーマンスの両方をサポートします。 HTTP、JDBC、LDAP、SOAP、JMS、FTPなどのすべての基本プロトコルをサポートしています。
- 記録と再生: JMeterを使用すると、シミュレートするブラウザ上のユーザーアクティビティを記録し、記録を再生できます。
- カスタマイズ可能なレポート: テスト結果を、グラフ、表、ツリー、ログファイルなどのさまざまな形式で視覚化します。
- コミュニティサポート: ヘルプ、ガイダンス、チュートリアルを備えた大規模なコミュニティがあります。
JMeter負荷テストの実行方法
負荷テストにJMeterを使用する方法と、基本的な負荷テストを構成する方法に関連するいくつかの手順を見てみましょう。
ステップ1:JMeterインストールのシステム互換性を確認する
JMeterのインストールを続行する前に、システムが要件を満たしていることを確認することが重要です。 JMeterはJavaベースであるため、システムにJava 8以降のバージョンがインストールされている必要があります。 オペレーティングシステムがJMeterと互換性があることを確認します。 JMeterは、Windows、Linux、macOSなどのさまざまなオペレーティングシステムで動作するように設計されています。
システムがこれらの基本要件を満たしていることを確認したら、JMeterのインストールを続行する準備が整います。 これにより、負荷テスト中のスムーズなセットアップと最適なパフォーマンスが保証されます。
ステップ2:システム用のJMeterのダウンロードとインストール
システムが必要な要件をすべて満たしていることを確認したら、最新のJMeterバージョンのダウンロードに進み、特定のニーズに基づいてバイナリまたはソースファイルのどちらかを選択します。コンパイル済みのJMeterバージョンで構成されるバイナリファイルはすぐに実行でき、ソースファイルは開発者やチームによる手動構成とコンパイルに柔軟性を提供します。通常、インストールを容易にするためにバイナリバージョンが推奨されます。.zip や .tgz など、さまざまなファイルダウンロードタイプを使用できます。
好みのバージョンを選択したら、システムにダウンロードします。 その後、ファイルを開いたり、指定した場所に移動したり、後でアクセスできるように新しいフォルダーを作成したりできます。 抽出プロセスを開始しますが、数分かかる場合があります。 インストール手順はオペレーティングシステムによって異なる場合がありますが、一度インストールすると、JMeterの機能は一貫しています。
手順 3: ロード テスト計画を作成する
JMeterユーザーは、ロードテスト計画を最初から作成することも、ファイルドロップダウンメニューからさまざまなテスト計画テンプレートから選択することもできます。 テンプレートには、SOAP Webサービス・テスト計画、基本および拡張Webテスト計画、FTP(ファイル転送プロトコル)テスト計画、機能テスト計画などが含まれます。 これらのテスト テンプレートには、ロード テスト計画の作成および構築に使用する、必要な特定の要素、セクション、およびフィールドがすべて含まれます。
テスト計画を作成するには、[ファイル] に移動して [新規] を選択するか、ツール バーから [新規] ボタンを選択します。 テスト計画を作成するには、JMeterをGUIモードで実行する必要があることに注意してください。 CLI (コマンド ライン インターフェイス) は、ロード テストの実行に使用されます。 次に、ロード テストのユーザー数 (スレッド グループとも呼ばれます) の指定について説明します。
ステップ4:JMeterでのスレッドグループの追加と設定
スレッド・グループを組み込むには、次の手順に従います。 「テスト計画」を右クリックし、「スレッド (ユーザー)」にカーソルを合わせて、「スレッド・グループ」をクリックします。
次のスレッドグループダイアログボックスでは、スレッド数(ユーザー)、ランプアップ期間(秒単位)、ループ数(テストイテレーション)など、さまざまなスレッドプロパティを編集できます。 さらに、遅延などのアクションを指定したり、テストの開始時刻と終了時刻を設定したり、Sampler エラーへの応答を定義したりします。 ねじのプロパティは次のとおりです。
-
- スレッド数: サーバーに接続している仮想ユーザーの数を表します。
- ランプアップ期間: JMeterが指定された数のスレッドを実行状態に移行するのにかかる時間を示します。
- ループ回数: 各スレッドがタスクを実行する回数を示します。
- Loop Count Infinite: 有効にすると、ループカウントが無視され、手動で停止するまで無限ループが発生します。
- 必要になるまでスレッド作成を遅らせる: 指定した値 (秒単位) に達するまでスレッドの作成を遅らせます。
- スケジューラ: アクティブ化すると、特定の時間にテストをスケジュールするためのスケジューラ構成が有効になります。
この手順により、ロード テスト パラメーターを詳細にカスタマイズできるため、ユーザーはコンカレンシー、期間、および特定のテスト条件を制御できます。
ステップ5:JMeterでサンプルを構成する
JMeterでは、サンプラーによりJMeterはさまざまなタイプのリクエストを送信できます。 たとえば、HTTPリクエスト(Webサイト、アプリケーション、またはAPI用)、FTPリクエスト、SMTPリクエスト、TCPリクエストなどです。 ここから、プロトコル (HTTP/S)、サーバー名または IP、パス (特定の Web ページの場合)、API ロード テストに使用できる要求の種類 (GET、POST、HEAD、PUT など) などの追加の詳細を入力します。
ステップ 6: リスナーの構成
JMeter で Sampler の結果を分析するには、次の手順でリスナーと呼ばれるものを設定します。 JMeterテスト計画ウィンドウでは、サマリーレポート、集計グラフ、結果ツリーの表示、表での結果の表示など、さまざまなリスナーから選択して、テスト結果を徹底的に検査および分析できます。 さらに、JMeterテスト計画に複数のリスナーを柔軟に追加できます。 これが完了すると、テスト計画の準備が整い、テストの実行に進むことができます。
手順 7: ロード テスト スクリプトの記録
広範な構成を行わずに基本的な HTTP またはプロトコル レベルのロード テストを実施することが目的である場合は、追加のセットアップは必要ありません。 ただし、ユーザーのアクションによく似たテストが必要な場合は、JMeter の HTTP(S) テスト スクリプト レコーダーを利用する必要があります。
スレッドグループには、記録コントローラーを追加する必要があります。 このコントローラーを使用すると、サイトまたはアプリケーションをナビゲートし、HTTP/S 要求を通じてアクションを記録できます。 また、ページごとに複数のレコーディング コントローラーを含めることもできるため、各リクエストを手動で追加する必要がないため、時間を節約できます。
これの欠点は、記録がHTTP/Sリクエストで行われ、ユーザーの視点から実際のブラウザ内で記録されないことです。 JMeterプロキシサーバーを使用してブラウザを記録することもできますが、これは面倒で難しいプロセスになる可能性があります。 より簡単で直感的なソリューションを探している場合は、EveryStep Web レコーダーを備えた LoadView を使用することを選択できます。 LoadView のレコーダーは、JMeter での複雑で時間のかかるセットアップなしで、実際のブラウザーを使用してポイント アンド クリック スクリプトを提供します。
手順 8: ロード テストの実行と実行
ロード テストの詳細と設定をすべて構成したら、テスト計画を保存します。 次に、ツールバーの[実行]ボタンを選択するだけで、テストが開始されます。 より良い結果を得るために、CLIモードでテストを実行することを忘れないでください。
手順 9: ロード テストの結果を表示する
テスト結果は表に表示されますが、これはリスナーによって異なる場合があります。 結果には、時間 (ミリ秒単位)、状態 (有効な応答とエラーを表示)、送信バイト数とバイト数、待機時間、接続時間などの追加のメトリックが含まれます。 これらの結果を調べることで、エラーの場所や読み込み時間が遅いインスタンスを特定できます。
JMeterでAPI負荷テストを実行する方法
前回は、JMeterを使用してWebサイトまたはアプリケーションでプロトコルベースのロードテストを設定する方法について、ステップバイステップの説明をしました。 ここからは、JMeter を使用した SOAP や REST API などのさまざまな API のテストについて説明します。 インストールとセットアップの手順は、前述の手順と一致しています。 ただし、APIテストの基本的な側面に焦点を当て、JMeterを使用してAPIテストを実施する際の重要な考慮事項について説明します。
JMeterによるREST APIテスト
RESTful API は Representational State Transfer API の略で、多様な Web サービスの開発において重要な役割を果たします。 SOAP APIとは対照的に、RESTはプロトコルではなく、URI(Uniform Resource Identifier)とHTTPプロトコルに依存するアーキテクチャスタイルです。
手順 1: ロード テスト計画を作成する
まずJMeterを開いてください。 新しいテスト計画ウィンドウが開きます。 既に JMeter を開いている場合は、メイン ツールバーから [新規] ボタンを選択して、新しいテスト計画を作成することもできます。
ステップ2:JMeterでのスレッドグループの追加と設定
前のセクションと同様に、「スレッド・グループ」ウィンドウでは、ユーザー数(スレッド)の追加、ランプアップ時間、テスト・イテレーション数(ループ数)の設定、その他多くのプロパティの編集を行うことができます。
ステップ 3: サンプラーの構成
次に、サンプラーを追加する必要があります。 JMeterで事前設定されたサンプラーから選択するか、独自のサンプラーから選択することができます。 この例では、事前設定されたオプションを使用します。
このプロセスを開始するには、スレッドグループを右クリックして、ドロップダウンウィンドウをトリガーします。 「追加」を選択し、「サンプラー」を選択します。 サンプラーオプションのリストが表示されます。 APIテストの場合は、HTTPリクエストを選択し、テストに名前を付けてREST APIテストのパラメータを設定できる設定ウィンドウを開きます。 HTTPリクエストウィンドウは、基本セクションと詳細セクションに分かれていることに言及する価値があります。 このテストでは、基本設定に焦点を当てます。 プロトコル、サーバー名またはIP、ポート番号、HTTPリクエスト(GET/POST/HEAD/PUT/DELETEなど)、パラメータなど、さまざまなフィールドを設定できます。
まず、[サーバー名または IP] フィールド (ドメイン名のみ) に API URL と適切なプロトコルを入力し、[パス] フィールドに API のパスを追加します。
これが GET 要求の場合は、[HTTP 要求] リストから [GET] を選択します。
特定のページなど、特定のパラメータがある場合は、[パラメータ] フィールドに URL のその部分を追加できます。
「パス」フィールドに含めることもできますが、「パラメーター」フィールドに追加することで、「URL エンコード」、「Content-Type」、「Include Equals?」
特定の要求では、要求ヘッダーを含める必要があります。 これを実現するには、[テスト計画] ウィンドウの [HTTP 要求] に移動します。 右クリックするとドロップダウンメニューが表示されます。[追加] を選択し、次に [設定要素] を選択します。 このアクションにより、使用可能なオプションが開きます。 この場合、HTTP ヘッダー マネージャーを選択します。 次の [HTTP Header Manager] ウィンドウでは、API ヘッダーを入力できます。 設定が完了したら、次の手順に進みます。
ステップ 4: リスナーを追加する
リスナーを含めるには、スレッドグループを右クリックして「追加」を選択し、「リスナー」を選択します。 このアクションにより、15 を超えるオプションから選択できるドロップダウン メニューが表示されます。 一般的な選択肢には、[結果ツリーの表示] や [結果をテーブルで表示] などがあります。 View Results Treeのようなグラフィカルな表現を提供するリスナーは、より多くのメモリとCPUを消費する可能性があることに注意することが重要です。 リスナーを追加したら、テスト計画を保存します。
手順 5: テストの実行と結果の表示
ロード テストの詳細と設定を構成して保存したら、ツール バーの [実行] ボタンをクリックしてテストを開始します。このウィンドウには Sampler の結果が表示され、REST API テストに関するさまざまな詳細、データ、およびメトリック (レイテンシー、応答コード、接続時間など) が表示されます。
JMeterによるSOAP APIテスト
SOAP(Simple Object Access Protocol)は、独自のプロトコルで動作するため、REST APIとは異なります。 SOAP API のロード テストでは、セキュリティとコンプライアンス、帯域幅の要件 (通常、SOAP API はより多くのリソースを必要とします)、再試行ロジックなどの機能的側面 (REST API にはない) など、特定の考慮事項が生じます。
手順 1: ロード テスト計画を作成する
JMeterは、メニューまたはメインツールバーのテンプレートアイコンからアクセスできるさまざまなテスト計画テンプレートを提供します。 使用可能なオプションの 1 つに、「SOAP WebService TestPlan の構築」があります。 このオプションを選択すると、対応するテスト計画が生成され、開きます。 これはテンプレートであるため、特定のフィールドには、関連するデータや情報を入力する必要があるプレースホルダー値が含まれます。
ステップ2:データの入力
REST API の構成で説明したのと同様に、SOAP API テストでは、ユーザー数 (スレッド)、ランプアップ期間、ループ (テスト イテレーション) を入力する必要があります。
メインのスレッドグループのサブグループ内では、前に説明したREST APIの設定と同様に、HTTPリクエスト設定にアクセスできます。 ただし、このセクションのレイアウトは異なり、デフォルトで SOAP API 要求本文が表示されます。 このセクションには、HTTP ヘッダー マネージャーと応答アサーションのサブセクションも含まれています。 REST API 構成と同様に、特定の承認の詳細を含める必要がある場合は、HTTP 承認マネージャーなどの追加の構成要素を組み込むことができます。
ステップ 3: HTTP リクエスト サンプラーを追加する
SOAP API ロード テストでは、HTTP 要求サンプラーを追加します。 このウィンドウでは、サーバー名またはIP、パス、HTTPリクエスト、ポート番号、SOAPリクエストの本文データなど、関連する詳細を入力する必要があります。
ステップ 4: リスナーを追加する
テスト計画を構成したら、テスト結果を表示するリスナーを追加する必要があります。 この場合も、SOAP API ロード テストに必要な数だけリスナーを追加できます。
ステップ 5: テストを実行する
テスト計画の構成と設定が完了したら、最後に SOAP API ロード テストを実行し、完了後に結果を確認できます。
結論
ここまでで、JMeterとは何か、JMeterの負荷テストを行う方法、JMeterを使用してAPIの負荷テストを実行する方法を学習したはずです。 ご覧のとおり、JMeterでロードテストを設定するには、さまざまな手順と構成オプションが付属しており、テストを実行するのではなく、テストを設定するのに多くの時間を費やすことになります。 JMeterはオープンソースで無料のソリューションですが、より優れた機能を提供し、ビジネスニーズに合った他の負荷テストツールを探す必要がある場合があります。
LoadView:JMeterの最良の代替手段
LoadView は、現在利用可能な最高の有料パフォーマンス テスト ソリューションの 1 つとして際立っており、一連の機能を提供します。 これらには、ポイントアンドクリックのスクリプトレコーダー、ロードインジェクタサーバーのグローバルネットワークへのアクセス、およびテストの柔軟性を高めるためのさまざまな負荷曲線シナリオを構成する機能が含まれます。 JMeter とは対照的に、LoadView ではすべてがシームレスに管理されるため、追加のインフラストラクチャや考慮事項は必要ありません。 プロトコル レベルのロード テストに限定されている JMeter とは異なり、LoadView は実際のブラウザーを採用しているため、重要なサイト、アプリケーション、API の実際のパフォーマンスを評価できます。 さらに、LoadView には、静的プロキシ IP のホワイトリスト登録やオンサイト エージェントの利用など、複数のオプションが用意されており、ファイアウォールの背後にあるアプリケーションのテストが可能になり、パフォーマンス テストの柔軟性が向上します。
LoadView は、ユーザー フレンドリーなパフォーマンス レポートとダッシュボードを提供し、最適でないパフォーマンスに寄与する要因に関する明確な分析情報を提供します。 さらに、WebページやWebアプリケーションのテスト用のリファレンスビデオが含まれており、レポートと直接比較してユーザーの視点を視覚化できます。 LoadView は、選択したプランに関係なく、すべての顧客に 24×7 のサポートを伴う柔軟な月次および年間プランを提供し、市場の他のツールと区別します。
次のレベル
無限のスケーラビリティで比類のない機能を体験できます。 クレジットカードなし、契約なし。