JMeterAtoZ

負荷テストツールの代表選手、JMeter。シナリオの作り方から実行方法までまとめて解説!

シナリオ作成テクニック

一意になる文字列を作成するする方法「カウンタ」

2016/10/15

新規に会員登録を行うシナリオを作成したとき、とある問題が発生しました。

メールアドレスの重複エラーがでるのです。会員登録では、利用者を一意に識別するためにメールアドレスなど重複を許さない場合がほとんどです。もし、重複している場合は入力チェックエラーが発生します。

JMeterで作成するシナリオでも同様のチェックが行われます。初回登録と同じメールアドレスの場合、当然入力チェックエラーです。

対策として、外部ファイルに一意になるメールアドレスを用意していました。そうすることで一意のメールアドレスを使って会員登録することができます。

この対策で、テスト自体は問題なくできるのですが、1点面倒なことがありました。シナリオを再実行する前にファイルの中身を書き換えて一意になるメールアドレスを用意する必要があるのです。

正直面倒くさい。そんな面倒から解放される方法はないのか?と考えた結果良い方法がありました。この記事では、一意になる文字列を作成する方法を3つ紹介します。

  • カウンタを利用する
  • 現在時刻を利用する
  • IPアドレスを利用する

カウンタを利用する

「カウンタ」を利用することで、連番を取得することができます。連番を利用するとシナリオ内では一意の数字を取得することが可能です。

「HTTPリクエスト > 追加 > 設定エレメント > カウンタ」を追加します。

カウンタ

カウンタ

カウンタ設定

カウンタ設定

項目 概要
開始 最初の数字
増分 数字の増える値
最大値 最大の値。最大を超えると開始に戻ります
NumberFormat フォーマット。Noを指定した場合は、No1、No2と出力されます
参照名 参照するための名前

現在時刻を利用する

カウンタを利用する場合は、そのテスト内では一意の値となりますが、2回目のテストで同じ情報を取得してしまいます。これを避けるために、時間を利用した一意の文字列を取得します。

時刻は、次のような関数で取得が可能です。

ユーザパラメータに定義します。

時刻設定

時刻設定

カウンタと連結させることで一意の文字列が取得が可能です。下の設定では「20161009-143645-2」のような情報の取得が可能です。

一意な情報

一意な情報

IPアドレスを利用する

現在時刻を利用することで、全シナリオで一意の文字列を取得することができました。しかしながら、スレーブを利用した場合、スレーブごとにカウントアップされるので、重複する可能性があります。

その場合は、IPアドレスを連携してあげるといいでしょう。

IPアドレスは次のような関数で取得が可能です。

ipアドレスでスレーブごとにも一意に

ipアドレスでスレーブごとにも一意に

先ほどまで利用していた現在時刻を使った方法にプラスして使ってみましょう。「192.168.10.10-20161009-143645-2」のような情報の取得が可能です。

-シナリオ作成テクニック