ところがどっこい、そういうわけにはいかない。
JMeterでDWR通信を行う際に気をつけなければいけないことがある。
1.httpSessionId
2.scriptSessionId
3.URLパラメータ区切り文字
1.httpSessionId
2.scriptSessionId
JMeter自身が積んでるエンジンでJavascriptが実行できるが、
独自関数は実行できないため、Javascriptを実行して各idを取得することは
出来ない。
なので、これらはレスポンスから正規表現を駆使し、取得する必要がある。
3.が結構なはまりどころ。
JMeterには自身をプロキシサーバーにしたて、http通信を傍受し、テストケースを
作成する機能がある。
いかんせん便利すぎるこの機能の落とし穴。JMeterが取得したhttpリクエストは
各パラメータが半角スペースで区切られており、このままだとサーバーサイドで
パラメータを認識できず、下記のようなエラーが帰ってくる。
********************************************************************
throw 'allowScriptTagRemoting is false.';
//#DWR-REPLY
if (window.dwr) dwr.engine.remote.handleBatchException({ name:'java.lang.IllegalArgumentException', message:'Failed to find parameter: scriptSessionId' });
else if (window.parent.dwr) window.parent.dwr.engine.remote.handleBatchException({ name:'java.lang.IllegalArgumentException', message:'Failed to find parameter: scriptSessionId' });
********************************************************************
これを解決するには半角スペースを全て改行コードに置換してやる必要がある。
お勧めとしてはユーザー定義変数を作成意思、名前に【RN】、
値に【${__javaScript("\r\n",)}】と設定する。
その後、パラメータの空白部分に${RN}と設定すれば、通信パラメータが改行で区切られることになり、無事通信が走るようになる。
0 件のコメント:
コメントを投稿