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