TOP>製品/サービス>カテゴリから探す>品質強化対策>OpenText Professional Performance Engineering>技術情報>自動リロードが発生するWebアプリケーションへの対応方法

OpenTextTM Professional Performance Engineering(旧 LoadRunner)

自動リロードが発生するWebアプリケーションへの対応方法

対応方法

OpenText Professional Performance Engineering(旧LoadRunner)の機能であるコンテンツの中身をチェックする関数“web_reg_find”関数を使用して自動リロードが発生するWebアプリケーションの仕様に対応させます。

本機能を使用することで、高負荷状態のアプリケーションの動きを考慮した信頼性のある負荷テストを行なうことが可能になります。

詳細

web_reg_find 関数は、レスポンスデータの中身から特定の文字列を検索し、出現回数を変数に保持することができます。この機能を利用します。

レポート作成中は、「レポート実行中です」という文字列が表示される為、「レポート実行中です」という文字列が出る間はリクエストを何度も投げ続けるようなサンプルを紹介いたします。ロジック箇所はそのままお使いいただけます。

※ ループ処理はdo..while ステートメントを使用します。

(サンプルスクリプト)

Action()
{
//必ずAction部分の先頭で変数"x"及び"loop"を宣言します。
int x;
int loop=0;

~~中略~~
//もしエラーコードを返すリクエストを何度も発生させたい場合は
//直前で以下の関数を有効化します。※
//lr_continue_on_error(1);//エラーでも実行を続行させる設定です。
do{
//"レポート実行中です"という文字列を検索し変数"Num"に検索数を返します。
web_reg_find("Search=Body","SaveCount=Num","Text=レポート実行中です",LAST);
//何度も発生させたいリクエストを設定します。
//必ず上記で設定した文字列検索を返すリクエストを設定します。
web_url("report",
"URL=http://localhost/report.asp",
"Resource=0",
"RecContentType=text/html; charset=utf-8",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
EXTRARES,
"Url=/report/report.gif", "Referer=http://localhost/report/",
ENDITEM,
LAST);
//ループ回数を加算させます。
loop++;
//上記web_reg_find関数で取得した文字列の検索結果を変数"x"に代入します。
x=atoi(lr_eval_string("{Num}"));
}while(x!=0);
//検索結果数が"0"(つまり「レポート実行中」テキストがなくなるまで)になるまでループを継続させます。


~~後略~~



※考慮すべき事項※

その1

繰り返し実行したいリクエスト内で相関値が適用されている場合、繰り返しリクエストが実行されることでうまく正しい相関値を拾えずにエラーとなる場合があります。
例えば、時間が経過することでループの外で取得した相関値が古くなってしまいセッションが切れてしまう場合があります。
その場合、do..While文中のリクエスト発行箇所の後に、既出のweb_reg_save_param関数をコピーすることで対応が可能です

例:リクエスト内に相関値{wcsparamdiff_7}が設定されている場合、ループ内のリクエスト直後に相関値{wcsparamdiff_7}を取得するweb_reg_save_param関数をスクリプト内の別箇所より見つけてコピーします

尚、ループを抜ける段階では、web_reg_save_param関数は失敗するので(返ってくるページが異なる為)以下のように、もしレポートが生成されたらループを途中で抜けるロジックも考慮する必要があります。

do{
~中略~

//相関値が組み込まれたリクエスト箇所
web_submit_data("cognosisapi.dll_3", ...

//直後にテキストチェックの戻り値を検索するロジック(if文)を挿入しもしレポートが生成できていたらループを途中で抜けます
loop++;
x=atoi(lr_eval_string("{Num}"));
if (x==0) {
break;
}

//ループされる場合は新しい相関値{wcsparamdiff_7}を取得
web_reg_save_param("wcsparamdiff_7", ...
}while(x!=0);


その2

アプリケーションによって、サーバ側の設定でリロードする間隔が決まっています。
必ずアプリケーション側のリロード間隔で正常にスクリプトが実行されているかを確認してください。
例えばサーバ設定でリロード間隔が“15秒”である場合、スクリプト内でも“15秒”間隔でリクエストを投げる動作をする必要があります。
仮想ユーザジェネレータにて作成スクリプトを実行してみてテスト結果画面にてリクエストの再実行間隔の時間を確認してください。



ページの先頭へ戻る