◆はじめに
負荷試験ツールにはいろいろなものがあるかと思いますが(といっても今回のJmeter以外使用したことがない。。。。)、
JMeterについて紹介したいと思います。
◆JMeterとは
- Apache が提供するオープンソースの負荷試験ツールで、javaで書かれています。
- HTTPリクエストを⾃動で⼤量に発⽣させることが可能です。
- JMeter Proxyを使用すると、ブラウザ操作を記録できます。
- 結果分析ツール(統計情報分析、各種グラフ描画)機能があります。
◆javaインストール
先に書きましたが、javaで書かれているのでjavaがインストールされていないと動作しません。
なのでjavaがインストールされていない場合はインストールしてください。
インストール方法については割愛しますが、こういうところなどを参考にしてください。
◆JMeter導入方法
公式サイトにアクセスしBinariesのところにあるzipファイルをダウンロードし任意の場所に解凍します。
binフォルダ内のjmeter.batをダブルクリックして起動します。
日本語化はこちらの日本語化のところを参考に設定してください。
◆シナリオ作成方法
「テスト計画」右クリックで「追加」 > 「Threads(Users)」 > 「スレッドグループ」を追加
「スレッドグループ」右クリックで「追加」 > 「ロジックコントローラ」 > 「記録コントローラ」を追加
「テスト計画」右クリックで「追加」 > 「Non-Testエレメント」 > 「HTTPプロキシサーバ」を追加
「HTTPプロキシサーバ」を選択し以下の設定を行う。
次にブラウザのアクセスをJMeterのプロキシ経由に変更する。※以下はFirefoxの例
開始をクリックします。
認証設定を行います。
JMeterインストールディレクトリのbinフォルダ内に「HTTPプロキシサーバ」起動時にcrtファイルが自動生成されます。
そのcrtファイルをインポートします。
実際にブラウザで操作を行うと、自動的にリクエストなどが記録されていきます。
記録が完了したら、不要なリクエスト(css、javascriptのリクエストなど)は削除します。
結果をツリーで表示を追加し緑三角ボタンをクリックするとシナリオを実行することができます。
◆JMeterの開発
変数と連番使用
待機処理
定数タイマを使います。下記例だとREQ-A実行後、10秒待機しREQ-Bを実行します。
また10秒待機しREQ-Cを実行します。
CSVファイルの読み込み
javascriptの使用
クッキーの持ち回り
クッキーを持ちまわる場合は、
「スレッドグループ」右クリック > 「追加」 > 「設定エレメント」 > 「HTTPクッキーマネージャ」
をスレッドグループ内の最上位箇所に追加します。
◆Jmeterスレッドの設定
スレッド数
プロパティ | 内容 |
---|---|
スレッド数 | 起動するスレッド数 |
Ramp-up期間(秒) | スレッド数を起動する期間 |
ループ回数 | シナリオの繰り返し数 |
持続時間 | 文字通り持続時間 |
スレッド数10、Ramp-up期間60秒の設定だと60秒かけてスレッドが10立ち上がり、それぞれのシナリオを実行していくことになると思います。
スレッド数10、Ramp-up期間1秒だと一気にスレッドが10立ち上がると思います。
実際は、瞬間的な負荷の場合、持続時間は設定せずループ回数を例えば10とかに設定しスレッド数を徐々に上げて、レスポンスタイムの境界値などを求めるような感じになると思います。
ある程度負荷がかかった状態で別で手操作確認などを行う場合は、ループ回数を設定せず持続時間を設定し、その持続時間の中で手操作を行います。
◆バッチ実行
jmeter-n.cmd.bat に作成したテスト計画ファイル(.jmx)をドロップするとコマンドプロンプトで実行され、終了したらプロンプトは閉じられます。
終了後に以下のファイルが出力されますので、そちらを使用し分析を行います。
拡張子jtlファイルから読み取る内容
バッチ実行後に出力される拡張子jtlのファイルをJMeterで開くには、テスト計画に統計レポートを作成しファイルを読み込みます。
レスポンスタイムの平均はAverageの合計行で確認します。
拡張子logファイルから読み取る内容
実行開始、終了日時などを確認します。