Apache JMeter の基本的な使い方に関して(その3)

前記事、前々記事に引き続き、JMeterの基本的な使い方に関してです。

これまでの記事は以下からどうぞ
Apache JMeter の基本的な使い方に関して(その1)
Apache JMeter の基本的な使い方に関して(その2)

今回は求めるシナリオにより近づけるための設定方法です。
主に「タイマ」と「ロジックコントローラ」を使ってみます。

時間を空けて処理を行う

「リクエスト1の処理の後に3秒待ってリクエスト2の処理を行う」というシナリオを作りたいとします。
そのような時に利用できるのがタイマです。

まず、何も設定しない場合の結果を見てみます。
(スレッドグループのスレッド数:2、Ramp-Up期間:10、ループ回数:1)

最初のスレッドの「HTTPリクエスト テスト1」の13ms後に「HTTPリクエスト テスト2」がスタートされているのが分かると思います。
約5秒後に次のスレッドが実行されていますが、リクエスト間がコンマ数秒ということは同じですね。

この間隔を3秒にするために「HTTPリクエスト テスト2」 に対して「追加」→「タイマ」→「定数タイマ」を設定します。
下記のように遅延時間はミリ秒で設定します。

その結果が下記になります。

今度は「HTTPリクエスト テスト1」の後に3秒間隔を開けた後に「HTTPリクエスト テスト2」がスタートしています。
その次のスレッドのスタートは最初のスレッドのスタートから5秒後であり、スレッドの実行頻度自体は変わっていないことが分かります。
タイマには他にも幾つか種類があるので、触ってみると面白いと思います。

確率による処理分岐を行う

特定の処理の中で、「◯%はこの操作を行う」という分岐を実現したいことが度々あります。
そのような場合に活用できるのがIFコントローラというものです。

IFコントローラはロジックコントローラの一つで、指定した条件式に該当した場合に処理を行うことを設定できます。
条件式には関数や変数を用いることができるため、関数を用いてランダムに値を生成し閾値判定をすることで、確率による条件分岐が可能になります。

「追加」→「ロジックコントローラ」→「IFコントローラ」を設定しましょう。

条件式には変数名もしくは関数名を指定することができ、${ }で括って使用できます。
今回はランダム関数で1~10の中から一つを選択し、その値が3以下かどうかを判定する条件式を書きました。

分かりやすく、スレッド数:10、Ramp-Up期間:10、ループ回数:1で実行してみました。

スレッド自体は10回実行されているのですが、リクエストは3回飛びました。
何回か試してみましたが1回もリクエスト送信しない事もあれば5回処理されたこともありました。
回数を重ねることで自然と確率は収束していくはずです。

+α:変数を扱う

前項で少しだけ述べた変数の使い方です。
変数は「追加」→「前処理」→「ユーザーパラメータ」を使用して変数宣言することで、
${hensuumei}のように使用できるようになります。

ユーザパラメータ設定

HTTPリクエスト設定

上記のように設定することでユーザーパラメータに設定した値をリクエストに使うことができます。
また、ユーザーパラメータの「ユーザー_1」、「ユーザー_2」というのは任意に追加でき、スレッドの数に連動してその値を変更することができます。
例えば上記の例の場合、スレッド1のリクエスト値は「value1」、スレッド2のリクエスト値は「value2」となります。

あとがき

全三回に渡るJMeter基本シリーズが終わりました!

本稿の内容はこれまでの記事も含め、調べたらいくらでも出てくることです。
学び始めの導入として参考にして頂き、少しでも皆様の苦手意識軽減に繋がってもらえれば嬉しいです。

それでは。

●この記事を書いた人