JMeterでログインするユーザを複数指定する方法
前回は、JMeterを使ってログインが必要なWebシステムの性能テストを行う場合の作り方を紹介しました。
ただ、1つのユーザでしかログインをしていませんでした。複数スレッド立てて負荷をかけても、ログインするユーザはすべて同じユーザでした。
本来のWebシステムでは別々のユーザがログインするため、このままではリアリティの低いテストシナリオと言わざるを得ません。
また、同一ユーザが同時にログインできない仕様のシステムだと、負荷テストにならないと思います。
そこで、今回は前回作ったログインシナリオを複数ユーザでログインするシナリオに改良します。
前回のシナリオをベースに改良しますので、前回分をご覧になっていない方は先にご覧ください。
ユーザパラメータを使う
ユーザパラメータをスレッドグループに追加
前回は、ユーザ定義変数を使いましたが、今回のユーザIDとパスワードのような変数のセットでスレッド単位で切り替えるものはユーザーパラメータを使います。
では、ユーザ定義変数にセットしたユーザIDとパスワードをユーザパラメータにセットし直しましょう。
スレッドグループを右クリックして、ユーザパラメータを追加します。
ユーザ定義変数にセットされているログイン情報を確認します。USERIDとPASSWORDが対になっていますので、これをユーザパラメータに登録します。
ユーザパラメータにユーザIDとパスワードをセット
ユーザパラメータは表形式になっており、縦軸が変数、横軸が変数の値となっています。
今回のユーザIDとパスワードの例の場合は、このように定義することでユーザIDとパスワードが対になって入力することができます。
①変数の追加で変数名を追加できます。今回の場合は、USERIDとPASSWORDを追加しました。次に②ユーザの追加で必要なユーザ分ログイン情報を追加します。
③と④でそれぞれの項目を削除することができます。
この例では3人しかユーザを作っていませんが、たくさん作成することができますので、利用するユーザ分登録しましょう。
ユーザの切り替えはどこで指定するの?
ユーザの切り替えは意識する必要はありません。ユーザパラメータで指定したユーザIDとパスワードはJMeterのスレッド単位で呼び分けられます。
この例では、スレッドを10に設定していますので、ユーザパラメータユーザ1~10を使ってシナリオを実行します。
え? ユーザは3人分しか作ってないよ、、どうなるの?
ユーザパラメータでセットしたユーザ数より指定したスレッド数が大きい場合は、ユーザパラメータの値を繰り返し利用します。今回の例ですと、ユーザパラメータに3ユーザ数分しか登録していないので、10スレッドで実行すると、1~3を3回繰り返して最後1人目でログインして終わります。
きちんとスレッドごとに別々のユーザでログインできているか、レスポンスの中身で確認しましょう。
ユーザパラメータの方を使う時は、ユーザ定義変数はシナリオから削除するか無効にしてしてください。
利用想定ユーザが1,000人いた場合、全員分作るの?
ユーザパラメータで1,000人分作るのは骨が折れます。先に書いたとおり、登録したユーザパラメータを繰り返し利用してくれるので、検証したいパターンを網羅できるユーザ数分あれば全員分登録する必要はありません。
それでも全員ログインするテストシナリオを作らないと正しい検証ができない場合もあると思います。そんな時は、次に紹介するCSVファイルからユーザパラメータを読み込む方法を使ってみてください。
CSVファイルかログイン情報を読み込む
CSV Data Set Configを追加
シナリオ実行時にCSVファイルから情報を読み込む場合は、CSV Data Set Configをシナリオに追加します。
データCSVを作成する
まずはユーザ名とパスワードのデータを作り、CSV形式で保存します。
User00001,Password00001 User00002,Password00002 User00003,Password00003 ︙
データは大量に作ることになると思います。まさか手書きなんかしないですよね?
パワーシェルを使えば簡単な大量レコードを作成できますし、エクセルより圧倒的に速いのでおすすめです。やり方はこちらを参考にしてみてください。
CSVファイルの読み込み設定
データのCSVファイルができたら、CSV Data Set Configで読み込み設定をします。
①で作成したCSVファイルのパスを指定します。
②でCSVファイルの文字コードを指定します。
③CSVの各項目を変数にマッピングします。今回は変数USERIDとPASSWORDにそれぞれセットするので次のようにセットします。
USERID,PASSWORD
④CSVファイルのデータ区切り文字を指定します。CSVなので通常はカンマ(,)ですね。
CSV Data Set Configの方を使う時は、ユーザ定義変数とユーザパラメータはシナリオから削除するか無効にしてしてください。
まとめ
- JMeterを使ってログイン・ログアウトが必要なWebシステムのテストシナリオは作れる
- ユーザパラメータを使えば、ログインするユーザを簡単に切り替えることができる
- ユーザ情報は全ユーザ分登録は不要。最小限登録してスレッド数で自動繰り返しが可能
- CSVファイルでユーザIDとパスワードを読み込んでテストすることもできる
コメント