Apace JMeter入門
Apache JMeterとは
Apache JMeterは、Webアプリケーションやサーバーのパフォーマンス測定、および負荷テストを行うためのオープンソースソフトウェアです。The Apache Software Foundationによって開発されており、Javaで動作します。
主にシステムの動作確認(機能テスト)や、大量のアクセスがあった際の挙動確認(負荷テスト・ストレステスト)に使用されます。
主な特徴
多様なプロトコルに対応
HTTP/HTTPS(Webサイト、API)だけでなく、データベース(JDBC)、FTP、メール(SMTP/POP3/IMAP)、LDAP、TCPなど、幅広いプロトコルに対応しています。
Javaベースのクロスプラットフォーム
100% Javaで記述されているため、Windows、Linux、macOSなど、Javaが動作する環境であればどこでも動作します。
拡張性
プラグインを追加することで機能を拡張でき、レポート機能の強化や新しいプロトコルのサポートを追加することが可能です。
GUIとCUIのサポート
テスト計画の作成やデバッグは直感的なGUIで行えますが、実際の負荷テスト実行時にはリソース消費を抑えるためにCUI(コマンドライン)モードでの実行が推奨されます。
JMeterで実施できる主なテスト
1. ロードテスト(Load Testing)
通常想定されるアクセス負荷をシステムにかけ、応答時間やスループット(処理能力)を測定します。
2. ストレステスト(Stress Testing)
限界を超えるような高い負荷をかけ、システムがどのように停止するか、あるいはエラーハンドリングが適切に行われるかを確認します。
3. 分散テスト(Distributed Testing)
1台のPCでは生成しきれない大量の負荷をかけるために、複数のマシンを連携させてテストを実施できます。
基本的な構成要素(用語)
| 要素名 | 説明 |
|---|---|
| Test Plan(テスト計画) | テスト全体の設定をまとめた最上位のコンテナです。 |
| Thread Group(スレッドグループ) | ユーザー数(スレッド数)、リクエストを送る回数、送信間隔などを設定します。 「1スレッド=1ユーザー」としてシミュレートされます。 |
| Sampler(サンプラー) | 実際にサーバーへリクエストを送る部品です。(例:HTTPリクエスト、JDBCリクエストなど) |
| Listener(リスナー) | テスト結果を収集・表示する部品です。グラフ、表、ログなどで結果を確認できます。 (例:View Results Tree, Summary Report) |
| Assertion(アサーション) | 返ってきたレスポンスが期待通りか (正しい文字列が含まれているか、ステータスコードが200かなど)を検証します。 |
注意点
クライアント(JMeter実行マシン)の負荷
JMeter自体もJavaアプリケーションであり、大量のスレッドを生成すると実行マシン自体のメモリやCPUを消費します。正確なテスト結果を得るためには、実行マシンのリソース状況も監視する必要があります。
GUIモードの制限
GUIモードはリソースを多く消費するため、大規模な負荷テストの本番実行には向いていません。「Non-GUIモード(CLIモード)」での実行が推奨されます。