JMeter シナリオの一部を一回だけ実行する
一連のテストシナリオを何十回、何百回と実行する負荷テストを実施する際、
この処理は最初の一回だけ実行したい
というケースに遭遇することがあるかと思います。
例えば、ログイン処理や初回アクセス時のみ表示されるキャンペーンのオーバーレイなどですね。
テストシナリオ次第ですが、一連のシナリオを実行回数分HTTPサンプラで登録することもできますが、何十回と同じ処理を登録するのは、作業工数を考えると避けたいところです。
ところがJMeterはそんな場合でも大丈夫、
この処理は一度だけ実行しなさい
という命令をすることが可能なのです。
本日は、一回だけ処理をさせる方法を紹介したいと思います。
説明にあたって
説明するにあたり、簡単なシナリオを用意しました。
ちょっと無理やりですが、
目当てのページに導線がないので、導線のあるトップページから目当てのページへ遷移させブラウザのブックマークに保存。以降は、ブックマークからアクセスする。
というケースで話を進めます。
冒頭で述べたとおり、実際にはECサイトなどで複数回購入するような場合に、「ログインは最初に購入する時だけにしたい」といったケースで必要になります。
ここではあくまで説明用としてご容赦いただければと思います。
設定方法
テストページの動作を確認しましょう。
penguinwebのトップページにアクセスし、左メニューからテストページ「シナリオの一部を一回だけ実行する」にアクセスします。
なお、リファラがない状態でテストページへアクセスすると以下の表示になります。
次に、JMeter 【基礎編】とJMeter ブラウザの動きを記憶させるを参考に上記テストシナリオを設定します。
なお、どの程度負荷をかけるかについてはお任せしますが、ここでは10秒に総アクセス数10で設定しています。
それでは、本日のメインに参りましょう。
特定のサンプラを1度だけ実行するには、ロジックコントローラにある「一度だけ実行されるコントローラ」を使います。そのまんまですね(笑)
スレッドグループ(画面キャプチャでは「2人が10秒に5回アクセス」)の上で右クリックをして、「追加 > ロジックコントローラ > 一度だけ実行されるコントローラ」を選択します。
すると、左メニューに「一度だけ実行されるコントローラ」が追加されるので、対象のHTTPサンプラー(トップページにアクセスするよう設定してあるもの)をドラッグ&ドロップで中に入れます。
JMeterは上から処理を行っていくため、テストページにアクセスするHTTPサンプラーを下に移動させます。
以下の並び順になったら完了です。負荷テストを実行してみましょう。
JMeter 設定したテストが意図した通りに動いているかを確認するを参考に、リスナーを設定し実行結果を確認すると、
画面キャプチャのとおり、トップページへのアクセスが1度だけになっていることがわかります。
ここで、2回目以降のテストページの結果を確認すると、
あらま、リファラがある状態でのアクセスになってしまっていますね。
ブックマークからのアクセスにはリファラはないため、意図通りの動作をしてくれていないので見直しが必要です。
初回のテストページへのアクセスにリファラは含まれたままで、それ以降のアクセスにリファラがないようにすれば良いで、
一度だけ処理が実行されるのをトップページだけではなく初回のテストページへのアクセスも含めてしまい、次回以降のテストページへのアクセスにリファラがない状態でアクセスさせる
これでOKですね。
早速設定しましょう。
せっかく、テストページにアクセスするHTTPサンプラーがあるのでこいつを複製(duplicate)します。
複製したHTTPサンプラーを「一度だけ実行されるコントローラ」の配下に移動させます。
元のテストページのHTTPサンプラーの「HTTPヘッダマネージャ」からリファラーの設定を削除します。
これで完璧です。負荷テストを実行すると、
以下の画面キャプチャのとおり、リファラーなしのアクセスが繰り返されていることが確認できます。
最後に
結構、簡単に説明できるかと思いましたが、ちょっと長くなってしまいました。。。
長くなったついでに、注意事項にも触れておきます。
今回紹介したような簡単なテストシナリオでは落ち着いて設定すれば特に問題ないかと思いますが、複雑なシナリオの場合、1回以上実行されてしまうバグがあるようです。
詳しくは、コチラのサイトで紹介されていますので、もし挙動がおかしいと感じた方は、そちらを参考にしてみてください。
なお、バグなので解決方法としては、テストシナリオを再検討するほかなさそうです。
コメント一覧
コメントはありません