JMeterメモ
■jmeterのインストール
参考:https://qiita.com/shotets/items/d553d7be0d407a9a9a53
①javaランタイムが必要になりますので、以下のページから
https://www.java.com/ja/download/manual.jsp
Windows用のやつをダウンロードしてきます。
②jre-8u361-windows-x64.exe がダウンロードされたので、
これを実行します。
③jmeterをダウンロードします。
以下のページから
https://jmeter.apache.org/download_jmeter.cgi
apache-jmeter-5.5.zip を ダウンロードしてきます。
④jmeterはインストール不要で、適当な位置に配置します。
自分の場合はc:¥jmeterをディレクトリ作成して
C:¥jmeter¥apache-jmeter-5.5に展開しました。
⑤あと、さまよっていた夢の中でプラグインマネージャーなるものをインストールしたけど
なんの役に立っているのかわかんない。
https://jmeter-plugins.org/install/Install/
から
plugins-manager.jarをダウンロードして、
C:¥jmeter¥apache-jmeter-5.5¥lib¥extへ追加
■基本的使い方
参考:https://tech-blog.rakus.co.jp/entry/2017/08/24/111332
①起動
binの中の jmeter.bat を起動するとよい。
②スレッドグループを追加
TestPlanを右クリック→Add→Threads→ThreadGroup
ThreadPropertyの所がポイント
Number of Threads(users):単純に何ユーザーが同時に実行しているのか?10人なら10と入れておく
Rump-up period(second):指定された秒数でNumber of Threadが実行される
Loop Count:上記のセットの乗数
10人のユーザーがいて、その10人が10秒でそれぞれ1回づつアクセスするとした場合、
10と10と指定しておくと約1秒に1回アクセスされる。
Loopは繰り返し数ではなくて、上記のセットを何倍にして実行するかです。
例えば、同じように10人10秒としてLoopを10にした場合、
1秒間に10アクセスになり、合計では10秒間で100アクセスとなります。
③httpリクエストの追加
Thread-group→Add→Samplar→HTTP Request
④HTTP Requestの設定
Server Name : www.yahoo.co.jp
Path : /
下のほうのパラメーターは今回使わないが、addで追加可能
⑤リスナーの追加
TestPlan→Add→Listner→View Result in Table
⑥実行
View Result in Tableをクリックしておいて
上の三角をクリック
ThreadNameに表示されるThreadGroup1-1の部分初めの1は1固定ですね。
二つ目のはuserです。
Loopの数を大きくすると同じセットのがたくさん出るようになります。
■CLIモード
(NON GUI モード)
jmeterで試験を行う場合はGUIでやると、メモリが足りなくなったり、パソコンが死んだりするそうなので、
GUIでの実行を書いておきます。
c:
cd ¥jmeter
apache-jmeter-5.5¥bin¥jmeter -n -t test.jmx -l log.jtl -H my.proxy.server -P 8000
apache-jmeter-5.5¥bin¥jmeter -n -t test.jmx -l log.jtl
実行例...
C:¥jmeter>apache-jmeter-5.5¥bin¥jmeter -n -t Plan.jmx -l log.jtl
Creating summariser <summary>
Created the tree successfully using Plan.jmx
Starting standalone test @ April 15, 2023 10:31:24 AM JST (1681522284500)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary + 6 in 00:00:05 = 1.1/s Avg: 321 Min: 126 Max: 974 Err: 0 (0.00%) Active: 1 Started: 6 Finished: 5
summary + 4 in 00:00:04 = 1.0/s Avg: 241 Min: 180 Max: 290 Err: 0 (0.00%) Active: 0 Started: 10 Finished: 10
summary = 10 in 00:00:09 = 1.1/s Avg: 289 Min: 126 Max: 974 Err: 0 (0.00%)
Tidying up ... @ April 15, 2023 10:31:34 AM JST (1681522294096)
... end of run
C:¥jmeter>
■実行結果の見方
GUIの場合は自動的に画面に表示されるので良いんですが、CLIで実行した場合には読み込まねばならぬ。
というわけです。
view result in tableにてfile nameを指定するところありますが、この右側にbrowseボタンを押して
ファイルを指定して読み込みます。
なぜかRequestのほかにRequest-0とRequest-1が追加されているのは何?リクエストが3倍になっているぞ。
なんで?
これは課題ですかね。
■実行結果の見方(統計情報)
TestPlan→Add→Listner→SummaryReport
追加したら、SummaryReportが表示されるので、
上の実行結果と同じでfile nameを指定するところありますが、この右側にbrowseボタンを押して
ファイルを指定して読み込みます。
すると統計情報として平均バイト数、最少、最大、エラー率等が表示されます。
上の実行結果と同じで謎のRequest-0とRequest-1が追加がLabel追加されていて、全体として3倍になりますね。
■テストシナリオの記録
普通にブラウザーから操作して、その時に発出されるhttpまたはhttpsでのやり取りを記録する事ができる。
その仕掛けとしては、jmeterがproxyとして動作して、webサーバーとやり取りしたデータを全部記録する方法が取られる。
本来の流れ
chrome→webサーバ
chrome←webサーバ
jmeterのproxyが間に入ると、
chrome→jmeter(proxy)→webサーバ
chrome←jmeter(proxy)←webサーバ
となり、間の通信を記録する事が可能になる。
こうする事で記録した通信を再生することで、実際のブラウザーの操作を同じになるって訳ですね。
なんだけど、末端のブラウザーとhttpsで通信する場合にサーバの証明書がちゃんとしてないとブラウザ側でエラーにしたりとかするので、
jmeterで使う証明書を入れとく必要があるんですね。
■証明書をインストールする。
参考:https://blackbird-blog.com/jmeter-https-scenario
jmeterで使える証明書をインストールしないとなので、
bin配下の ApacheJMeterTemporaryRootCA.crt をダブルクリックして証明書をインストールします。
証明書をインストール→現在のユーザー→信頼されたルート証明機関と選択しつつ次へ次へはいOKと肯定して進む。
証明書は1週間しか使えないらしいが、だめになったらもう一回やればいいらしい。
■テストシナリオ作成
参考:https://blackbird-blog.com/jmeter-02
上のほうで説明したThreadGroupを作成することろまでは同じ。
①シンプルコントローラーを追加(これに記録される)
ThreadGroup→Add→LogicController→SimpleController
②HTTPプロキシサーバーを追加
TestPlan→NonTest Elements→HTTP(S) Test Script Recorder
③HTTP(S) Test Script Recorderの設定。
TargetControllerの設定で上記で追加したSimpleControllerを指定する。
④Proxyの起動。
HTTP(S) Test Script Recorderの画面からstartをクリック
⑤ブラウザー
ブラウザーのproxy設定を変更
chromeであれば、右上の点三つから設定→システム→パソコンのプロキシ設定を開く
手動プロキシセットアップ
オン
プロキシIPアドレスに127.0.0.1
ポートに8888
保存
⑥シナリオ操作
例としてyahooで天気を見る操作を実施してみたが、
SimpleControllerの中に沢山のhttpRequestが自動で作成されていた。
⑦Proxyの停止。
HTTP(S) Test Script Recorderの画面からstopをクリック
⑧ブラウザーのproxy設定を戻しておく。
でないとインターネット見れないので。戻しておく。
⑨記録された中で余計なものを削除。
パソコン全体のhttp(s)の通信の記録をとっているので、
目的以外のページへのアクセスもされているので、
SimpleControllerのHTTPRequestで不要なものを削除する。
⑩テストシナリオ実行
上記と同じ手順でテーブル形式表示のリスナーを追加して
TestPlan→Add→Listner→View Result in Table
上の三角で実行すると
View Result in Tableに結果が表示されます。