JMeterの使い方(背伸び編)

IFコントローラの使い方

実例を使ってIFコントローラの使い方を解説していきます。

題材:yahooのトップページ〜yahooのログイン画面


画面遷移のシナリオはこんな感じのシンプルなもの。
  1. yahooのトップ画面にアクセスする
  2. if 未ログイン then ログインする

step1 yahooのトップ画面にアクセスする





step2 未ログインorログイン済みの判定を行う

違いを見つける


今回は「個人ツール」の右側に表示される文字列で判定してみます。
  • 「ログイン」の文字列がある→未ログイン
  • 「ログアウト」の文字列がある→ログイン済み

未ログインの時のHTMLとログイン済みの時のHTMLを比較するとこんな違いが見つかります。

未ログイン
<a href="/r/l1">ログイン</a></small></td>

ログイン済み
<a href="/r/l2">ログアウト</a></small></td>

正規表現抽出を使って文字列を切り出す。

今回は未ログインor notをIFコントローラで作りたいので、こんな感じにしてみました。

トップページのレスポンスHTML内から
<a href="/r/l1">ログイン</a></small></td>
という部分を切り出せたら、それは未ログインの状態。
切り出せない(該当部分が無い)場合はログイン済みの状態。

1回目のレスポンスHTMLから値を抽出するので、1回目のHTTPサンプラーの子として正規表現抽出をぶら下げます。


  • 正規表現抽出の設定値
    • 参照名:loginURL
    • 正規表現:<a href="(.*)">ログイン</a></small></td>
    • テンプレート:$1$
    • 一致番号:<空>
    • 初期値:is_not_Exist

それから、正しく値を抽出できたか否かを判定する方法として、1つ下にデバッグ用のHTTPサンンプラーを追加し、抽出した値をパラメータのところに書きます。


実際に動かしてみる

抽出に成功すれば、「/r/l1」という文字が、
抽出に失敗すれば、「is_not_Exist」という文字列が次のサンプラーのパラメータとして送信され、それが結果のツリー表示のところで確認できます。



無事「/r/l1」という文字列が抽出できてました。

では早速、もとのシナリオに組み込んでみます。





IFコントローラを使って分岐を作る。


文字列としての比較を行う場合は、値の方も変数の方も"(ダブル)でくくらないとダメみたいです。数値としての評価(大小比較等)なら"(ダブル)でくくらなくて良いみたいです。





無事通過しました。


でここで問題が残ってます。
本当にこのIFコントローラが働いてIFの子供であるstep2のサンプラーが実行されたのか?それともIFコントローラが常にスルーしてしまってるのでは?
という疑問点です。

ということで、抽出に失敗するよう正規表現抽出の正規表現をいじってしまいます。

IFが成り立たない場合の検証

正規表現の欄をこのように改悪してみます。
<a href="(.*)">ロアウト</a></small></td>

実行結果

わかりやすくするために、else if に相当するIFコントローラを追加してみました。







よくある注意メモ


文字列比較をするときに変数側も""で囲わないとうまくいかないみたいです。数値の時は" "なしでいいみたい(私の今の記憶だと)。
" "で括ることでString型にキャストしてくれてるのかな?(Javaっぽいですね)

誤: ${変数名} == "shop"
正: ”${変数名}” == "shop"

このページへのコメント

御世話になっております。Jmeterで負荷テストをおこなおうとしております。もしログオンに失敗した場合や、途中で画面遷移ができなかった場合は、結果表にカウントされるのでしょうか?それとも結果表にある「Error%」に表示されるのでしょうか?

0
Posted by yoshino 2015年01月09日(金) 12:09:08 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

フリーエリア

メンバーのみ編集できます