Apache Jmeter
Jmeterとは
- オープンソース性能テストツール
- 目的: ウェブアプリケーションやサービスの性能と耐久性を評価
Jmeterの特徴
- 性能テスト: 負荷試験やストレステストを実施
- プロトコルのサポート: HTTP、HTTPS、FTP、JMS、LDAP、JDBC など
- 柔軟なテスト計画: シナリオに基づいたアクションやリクエストの定義
テストの設定
リクエストの設定
- ヘッダーマネージャー
- リクエスト(GET、POST、PUT、。。。)
- データコンフィグ(csvファイルなど)
テスト結果設定
- グラフィカルなレポート
- 応答時間のグラフ
- スループットの可視化
- エラーレートの推移
- テーブル形式の結果
- 各リクエストの詳細なデータ
- 応答時間、スループット、エラー率など
- HTMLレポート
- グラフや数値の詳細な表示
- 共有やドキュメンテーションに便利
- ログファイル
- 実行時の詳細な情報
- エラーのトラッキングとデバッグ
集計グラフ
グラフ結果
負荷テスト
スレッドグループ(ThreadGroup)に主な設定が必要です。
- Number of Threads(users):ユーザー数
- 同時に実行されるユーザー(スレッド)の数を指定します。
- 例えば、「10ユーザー」ならば、同時に10のスレッドが動作します。
- Ramp-Up Period: ランプアップ時間(スレッドグループ内の各スレッドの開始時間の間隔を指定する)
- スレッドグループの中の各スレッドが開始されるまでの時間です。
- 例えば、「5秒」ならば、全体のスレッド数が5秒かけて起動されます。
- Loop Count: 反復
- 各ユーザーがテスト計画を何回繰り返すかを指定します。
- 回数設定または無限
シナリオテスト
複数なAPIの合わせてテストができます。
例えば、下記に2つリクエストが有り、リクエスト2のインプットはリクエスト1のレスポンスを使用する
(実際はログインしてjwt_tokenを取得しつぎのリクエストするケースなどと同様)
・リクエスト1
- Input: x, y
- Response: x + y
↓
・リクエスト2
- Input: x + y
- Response: (x+y)²
※csvファイルにリクエスト1のインプットとリクエスト2のレスポンス
例:
x,y,(x+y)²
1,2,9
2,3,25
3,4,49
...
コマンドラインモード+HTMLレポート
jmeter -n -t ./sample_test.jmx -l ./result/results.jtl -e -o ./result/html/
HTMLレポート
サマリー
メリット
-
使いやすいユーザーインターフェース
- グラフィカルな設定: 直感的な操作でテストプランを構築
- 柔軟性: 異なるユースケースに対応可能
-
テスト結果の分析
- リアルタイムレポート: テスト実行後に詳細な結果を取得
- グラフ表示: パフォーマンスメトリクスの視覚的な分析
-
サポートとコミュニティ
- 無料: オープンソースで誰でも利用可能
- 広範なコミュニティ: サポートと改善のための豊富なリソース
デメリット
- 機能が多いので
- 単純テストしてもいろな設定が必要
(フロントエンドの監視が不要の場合loadtest
のツールで負荷テストが早いかもしれない )