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に結果が表示されます。