JMeterを使ったシナリオ作成方法について解説していきます。記事に対応した動画も用意しました。作成シナリオは簡易ですが、「一般的なECサイトの購入シナリオ」を作成できる程度の技術習得ができるように心掛けています。記事と動画を両方活用し、シナリオ作成の理解に役立ててもらえればうれしいです。
↓ 動画解説はこちら ↓
以下の流れで説明していき、具体的な内容について個別の詳細ページにて解説します。
- 作成シナリオ
- JMeterのインストールと初期設定
- HTTPプロキシサーバーを利用したベースシナリオの作成
- 動的パラメータを取り込み、エラーを解消させる
- リファクタリング実施
- 入力データを外部ファイルから読み込む
- 負荷テスト用の修正を実施
また、利用環境は次の通りです。
- JMeter 5.3
- EC-CUBE 4.0.3
作成シナリオ
今回作成するシナリオは下記の通りです。EC-CUBEのトップ画面表示から既存ユーザのログインまでを行います。
- トップ画面
- ログイン画面
- ログイン実施
最終的には、ログインユーザ情報をcsvファイルから読み込み、複数ユーザーが同時ログインを行うシナリオに仕上げます。
なお、EC-CUBE環境は、Dockerを使ってapache上で動作するPHP環境を作成する予定です。
JMeterのインストールと初期設定
シナリオ作成はJMeterのGUIから行います。
インストールがされていない場合は、公式サイトからダウンロードを行い、インストールを実施しましょう。Jmeterはjavaで動作しているので、jdkのインストールも必要です。Jmeterのインストールにあわせて、言語設定とデザインの設定も変更しておくとよいでしょう。
なお、JMeterはオープンソースとして公開されているので、追加の費用などは発生しません。
参考->第2回:JMeterのインストールと初期設定
参考->番外編:EC-CUBE4の環境構築方法
↓ 動画解説はこちら ↓
HTTPプロキシサーバーを利用したベースシナリオの作成
インストールが完了したら、シナリオを作成していきます。
JMeterでは、主にWEBシステムの負荷テストが可能です。手動で負荷テストシナリオを作成することも可能ですが、非常に手間がかかります。そこで、HTTPプロキシサーバを利用して、ベースのシナリオを作成していきます。
HTTPプロキシサーバを利用することで、ブラウザから行ったボタンを押すなどの画面操作をそのまま記録することが可能です。必要なアクセスパターンの基礎となる部分を、ブラウザベースで作成できるので大幅な効率アップが可能です。
参考->第3回:HTTPプロキシサーバーを利用したベースシナリオの作成
↓ 動画解説はこちら ↓
動的パラメータを取り込み、エラーを解消させる
ベースのシナリオ作成では、すべての値が固定値となります。そのため、動的に変更になるセッションのキー情報などの値の受け渡しができていません。そこで、動的に変化する部分について手動で修正していきます。
動的に変化する部分とは、主に次のようなものになります。
- クッキー
- セッション用トークン
JMeterで修正する内容は次の通りです。
- アサーション
- HTTP クッキーマネージャ
- 正規表現抽出
また、中にはJMeterで実装できない場合もあります。その場合は、アプリケーション担当者と相談をして、改修をお願いすることもあります。具体的には次のようなものが該当します。
- 決済のトークン認証
- CAPCHA認証
- 新規ユーザ登録時のメールでの仮登録URL通知
参考->第4回:動的パラメータを取り込み、エラーを解消させる
↓ 動画解説はこちら ↓
また、シナリオを作成していると、正しく画面遷移できない、昨日まで動いていたものが突然動かなくなった。というようなことが発生します。そのような場合はブラウザとJMeterを使い分けることが重要です。
↓ 動画解説はこちら ↓
リファクタリング実施
シナリオ作成時と、負荷テスト時でドメインが変更になる場合が良くあります。固定ではなく、動的に変更される可能性があるものについて、簡単に修正ができるよう一元管理しておくと後々対応がしやすくなります。
最低限の動作が確認できたら、シナリオを整えていきましょう。
- HTTP リクエスト初期値設定
- リファラ
- ユーザー定義変数
参考->第5回:リファクタリング実施
↓ 動画解説はこちら ↓
入力パラメータを外部ファイルから読み込む
入力パラメータを固定ではなく、スレッドごとに別々のものを利用する場合は、外部ファイルから読み込むことが可能です。外部ファイル化することで、シナリオを修正せずにパラメータの変更ができるので非常に便利な機能です。
ログインユーザの情報を次の書式で記載し、読み込む形へ変更します。
login_email,login_pass
hoge1@denet.co.jp,hogehoge1
hoge2@denet.co.jp,hogehoge2
hoge3@denet.co.jp,hogehoge3
- CSV Data Set Config
↓ 動画解説はこちら ↓
負荷テスト用の修正を実施
最後に負荷テストを実施するうえで必要な設定を追加していきます。
- スレッド数とRamp-Up期間、ループ回数
- スレッド数などの変数化
- タイマ
- サンプラーエラー後のアクション
- シンプルデータライタ
スレッド数は負荷の大きさを設定するパラメータです。変数化を行い、必要に応じて実行時に指定できるようにしておきましょう。また、Ramp-Up期間とタイマ設定は負荷テスト結果に大きく影響するパラメータです。設計段階でどのような値にしておくかを検討しておくとよいでしょう。エラー時の処理についても続行にしてしまうと、エラーが多発したさいに、結果が大きくぶれていってしまいます。
負荷テスト用に適切な設定を行い、より実践的な条件設定を行っていきましょう。
参考->第7回:負荷テスト用の修正を実施
↓ 動画解説はこちら ↓
まとめ
JMeterを使った、負荷テストシナリオの作成方法についてまとめてみました。すべてを1記事に記載すると量が膨大になりすぎてしまうので、詳細は別ページにまとめています。
短いシナリオでしたが、シナリオ作成に最低限必要な技術的要素は含まれていたと思います。本記事を参考に、実際にEC-CUBEのログインシナリオを作成し、独自のオリジナルシナリオの作成にチャレンジしてみてください。
~~~~~~~~~~~~~~~~~~~~~
~ JMeterの負荷テストシナリオ作成入門 ~
~~~~~~~~~~~~~~~~~~~~~
第1回:【負荷テスト】JMeterのシナリオ作成入門
第2回:JMeterのインストールと初期設定 ←次の記事
第3回:HTTPプロキシサーバーを利用したベースシナリオの作成
第4回:動的パラメータを取り込み、エラーを解消させる
第5回:リファクタリング実施
第6回:入力パラメータを外部ファイルから読み込む
第7回:負荷テスト用の修正を実施
番外編:EC-CUBE4の環境構築方法
番外編:シナリオが正しく動作しないときの調査方法