jmeterで繰り返し作業
検索キーワードでjmeterからこのブログに来る人もあったので、間違いを修正。
WinRunnerで実施していた作業を訳あって、他のツールに乗り換える必要が発生しました。
その候補にJmeterがあったので調査したネタです。
ストーリー
CVSRead:一行ごとにスレッドを割り当てる。ループ処理では同じスレッドは同一データのまま。
CSV Data Set Config:一行ごとにスレッドはデータを読み込む
という違いがあるようです。
ファイル内のデータをランダムに読み込んで実行することが出来るようですが、今回は先頭からEOFまで
実施すれば良かったので素直にCVS Data Set Configの機能を使います。
正規表現抽出は通常のアサーションでも設定する内容だと思うのでパス。
結構ハマったのがBeanShell。まず、jmeterには付属していないので別途ダウンロードします。
私はJMETER_HOME/lib/extに入れておきました。
通常のアサーション検証後にBeanShell Listenerとして登録したのですが、
これがjavaの構文そのままでscriptとして動くので起動方法さえ分かれば楽チンでした。
アサーションや、正規表現抽出で取得した値もvarsという変数からアクセス出来るようになってます。
例えば、正規表現で取得した${name}を扱う場合には
scriptを確認したい場合には
java -cp bsh-X.X.jar bsh.Interpreter で
bsh% のプロンプトが出現、そのまま
java -jar bsh-X.X.jarで起動すればterminalが出現するので簡単に確認可能です。
ちなみに対象WEBアプリがShift_JISだったのですが、マルチバイト文字をリクエストする際のエンコードが
うまく行っていなかったのでここもBeanShellを利用して
パーセントエンコーディングは HTTPリクエストのContent encodingを指定することと、Encode?のチェックボックス
をチェックすることで問題なく対応できました。(追記)
こんな感じで解決できました。
(jmeterにcommons-codecが付属しているのでダウンロードは不要です)
WinRunnerで実施していた作業を訳あって、他のツールに乗り換える必要が発生しました。
その候補にJmeterがあったので調査したネタです。
ストーリー
- 繰り返し実施する作業のパラメータをCSVで保持
- 実施した結果画面の内容を一覧として別ファイル(CSV)に出力すること。
- CSV Data Set Config(パラーメータ読み込み)
- 正規表現抽出
- BeanShell(結果ファイル出力)
CVSRead:一行ごとにスレッドを割り当てる。ループ処理では同じスレッドは同一データのまま。
CSV Data Set Config:一行ごとにスレッドはデータを読み込む
という違いがあるようです。
ファイル内のデータをランダムに読み込んで実行することが出来るようですが、今回は先頭からEOFまで
実施すれば良かったので素直にCVS Data Set Configの機能を使います。
正規表現抽出は通常のアサーションでも設定する内容だと思うのでパス。
結構ハマったのがBeanShell。まず、jmeterには付属していないので別途ダウンロードします。
私はJMETER_HOME/lib/extに入れておきました。
通常のアサーション検証後にBeanShell Listenerとして登録したのですが、
これがjavaの構文そのままでscriptとして動くので起動方法さえ分かれば楽チンでした。
アサーションや、正規表現抽出で取得した値もvarsという変数からアクセス出来るようになってます。
例えば、正規表現で取得した${name}を扱う場合には
こんな感じで出力が可能です。System.out.println("val is " + vars.get("name"));
scriptを確認したい場合には
java -cp bsh-X.X.jar bsh.Interpreter で
bsh% のプロンプトが出現、そのまま
java -jar bsh-X.X.jarで起動すればterminalが出現するので簡単に確認可能です。
ちなみに対象WEBアプリがShift_JISだったのですが、
うまく行っていなかった
パーセントエンコーディングは HTTPリクエストのContent encodingを指定することと、Encode?のチェックボックス
をチェックすることで問題なく対応できました。(追記)
${__BeanShell(new org.apache.commons.codec.net.URLCodec("Shift_JIS").encode("${name}"))}
こんな感じで解決できました。
(jmeterにcommons-codecが付属しているのでダウンロードは不要です)
コメント