pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

Jmeterシナリオ作成

Jmeterのシナリオ作成の手順を記載する。
シナリオは、EC-CUBEにログインする操作で作成する。
 

ベースシナリオ作成

手順メモ

①スレッドグループ作成

 テスト計画->追加->Threads(Users)->スレッドグループ
 

②記録コントローラ作成

 スレッドグループ->追加->ロジックコントローラー->記録コントローラー
 

③HTTPプロキシサーバ作成

 テスト計画->追加->Non-Testエレメント->HTTPプロキシサーバ
 

④HTTPプロキシサーバ設定

 1) 記録コントローラの設定
  HTTPプロキシサーバ->TestPlanCreationタブ->対象となるコントローラ
  テスト計画→スレッドグループ→記録コントローラ
 2) HTTPプロキシサーバ->Requests Filteringタブ
  挿入するパターン

.*IPアドレス/FQDN.*

  除外するパターン

.*\.js.*
.*\.gif.*
.*\.svg.*
.*\.css.*
.*\.jpg.*
.*\.woff2.*
.*\.ico.*
.*\.png.*
.*\.woff.*
.*\.ttf.*

 

⑤HTTPプロキシサーバ開始

 テスト計画->HTTPプロキシサーバ->開始
 

FireFoxプロキシ & 証明書設定

 1) プロキシサーバ設定
  127.0.0.1:8888
 2) 証明書インポート
  オプション->プライバシーとセキュリティ->証明書->証明書を表示
  認証局証明書タブ→インポート
  jmeterのbinフォルダは以下の「crt」ファイルをインポート
  "この認証局によるこのウェブサイトの識別を信頼する"
 

FirefoxEC-CUBEページにアクセスし、ログイン操作を実施

 https://IPアドレス/eccube
 

⑧ログイン操作が記録されてることを確認し、名前変更

 f:id:pikesaku:20210822234740p:plain
 

⑨リスナー作成

 スレッドグループ->リスナー->結果をツリーで表示
 

⑨ベースシナリオ動作確認

 スレッドグループ->記録コントローラ-->開始(上部にある緑矢印)
 結果をツリーで表示->応答データタブ
 表示方法をTextからHTMLに変更すると画面表示で確認可能
 ★ログインができてない、Hidden、Cookieが設定できてないため★
 f:id:pikesaku:20210822234344p:plain
 

動的パラメタ対応

手順メモ

①シナリオ移動 & 記録コントローラ削除

 ※ベースシナリオ出来た為、記録コントローラは不要
 シナリオを全てと、結果をツリーで表示をクリックし、スレッドグループ直下にドラッグ & ドロップ
 記録コントローラを右クリックし削除
 

②ログインエラー検知

 ※正しくログインできた場合の条件を設定。このケースではログイン後、"ログアウト"が右上に表示される事を利用。
 スレッドグループ->ログイン実施操作(03_LOGIN_TOP)を右クリック->追加->アサーション->アサーション
 テストするレスポンスフィールド->テキストのレスポンス→パターンマッチルール->含む
 テストパターンフィールに値("ログアウト")を設定し、追加をクリック
 
 シナリオ実行し、ログインエラーが検知される事を確認
 f:id:pikesaku:20210823000817p:plain
 

③クッキー設定

 ブラウザの開発者ツールを使いCookieを使ってるかを確認する。
 次にCookieは記録しない設定である事を確認
 f:id:pikesaku:20210823001842p:plain
 Cookieの記録設定
 スレッドグループ->追加->設定エレメント->HTTPクッキーマネージャ
 繰り返し毎にクッキーを破棄しますか?にチェックを入れる。
 

④クッキー設定の確認

 シナリオ実行し、クッキーがセットされてる事を確認
 f:id:pikesaku:20210823002434p:plain
 

⑤Hiddenパラメタ設定

 ブラウザの開発者ツールを使いHiddenパラメタを使ってるかを確認する。
 次にログイン実行時のシナリオより、送信したHiddenパラメタを確認
 f:id:pikesaku:20210823002849p:plain
 
 次にHiddenパラメタの指定方法をログイン実施の前ページの結果より検索
 f:id:pikesaku:20210823010757p:plain
 
 次にログイン画面(02_LOGIN)で正規表現抽出を設定
 02_LOGIN->追加->後処理->正規表現抽出
 f:id:pikesaku:20210823011258p:plain
 
 ★ポイント★行頭からマッチ必要。以下みたいに書く。

.*.*<INPUT value="(.*)" NAME="HOGE" TYPE="hidden">

 
 次にログイン実行画面(03_LOGIN_TOP)に、Hiddenパラメタの変数を設定
 f:id:pikesaku:20210823005109p:plain
 

⑥Hiddenパラメタ設定の確認

 シナリオ実行し、ログインが成功した事を確認
 

シナリオ最適化

手順メモ

①接続先情報の共通化

 プロトコル、IP/FQDN、ポート番号を共通化する。
 スレッドグループ->追加->設定エレメント->HTTPリクエスト初期値設定
 f:id:pikesaku:20210823012529p:plain
 
 シナリオ各ページから接続先情報を削除
 f:id:pikesaku:20210823012919p:plain
 

リファラ追加

 必須でないが、一応追加
 スレッドグループ->追加->後処理->正規表現抽出
 f:id:pikesaku:20210823013332p:plain
 
 スレッドグループ->追加->設定エレメント->HTTPヘッダマネージャ->追加
 f:id:pikesaku:20210823013633p:plain
 
 シナリオ各ページからReferer情報を削除 
 f:id:pikesaku:20210823013824p:plain
 
 トップページアクセス時のリファラに空文字を設定
 ※これしないと、Referer: ${ref}でリクエストしてしまう。
 01_TOP->HTTPヘッダマネージャ->追加
 f:id:pikesaku:20210823014256p:plain
 
 ログイン情報の変数化
 スレッドグループ->追加->設定エレメント->ユーザー定義変数->追加
 f:id:pikesaku:20210823014825p:plain
  
 ログイン情報を変数で設定
 f:id:pikesaku:20210823015041p:plain
 

外部ファイルの読み込み

今までのシナリオだと1ユーザーしか使えない。外部ファイル読み込みで複数ユーザーを利用可能。
ユーザー以外の入力用データの読み込みでも利用可能。この手順ではユーザー情報の読み込みで利用。
 

手順メモ

CSVファイル生成

 以下フォーマットのCSVファイルを作成
 ユーザー1,ユーザー1のパスワード
 ユーザー2,ユーザー2のパスワード
 ユーザー3,ユーザー3のパスワード
 

②ファイル読み込み設定

 スレッドグループ->追加->設定エレメント->CSV Data Set Config
 f:id:pikesaku:20210823021756p:plain
 

負荷テスト用パラメタ設定

 

手順メモ

①結果表確認リスナー追加

 スレッドグループ->追加->リスナー->結果を表で表示
 各シナリオの実行時間の情報が得られる。
 f:id:pikesaku:20210823025441p:plain
 

②タイマ設定

 スレッドグループ->追加->タイマ>一様乱数タイマ
 ※3~5秒の遅延
 f:id:pikesaku:20210823030336p:plain
 上記は全シナリオに統一で設定。各シナリオ別に設定する際は、スレッドグループでなく各シナリオに一様乱数タイマを追加する。
 図は参考サイトより引用

 f:id:pikesaku:20210823030008p:plain

③スレッドプロパティ設定

 スレッド、ループ、ランプアップの設定。
 変数定義する事で、CUIの場合に実行時にオプションで値変更が可能。GUIでは初期値で実行される。
 f:id:pikesaku:20210823031656p:plain
 

④エラー後のアクション設定

 f:id:pikesaku:20210823032956p:plain
  

⑤設定の保存

 テスト計画をクリックした状態で、保存をする。
 

コマンドライン実行

 CUIで動作しない為、リスナー無効化
 f:id:pikesaku:20210823033406p:plain
 
 以下コマンド実行

jmeter -n -t scenario.jmx -l result.jtl -Jthread=1 -Jrampup=1 -Jloop=1

 

トラブル調査

 

手順メモ

ログビューアの見方

 オプション->ログビューア