LoadRunnerトランザクション、テキストと画像チェック、コメントとランデブポイント
VuGen Scriptの基本的な機能強化の概要:
この完全なLoadRunnerトレーニングチュートリアルの前のチュートリアルで、LoadRunnerの相関を詳細に検討しました。
最後の二つのチュートリアルでは、VuGenスクリプトでのデータの処理(相関とパラメータ化)に取り組んでいました。
このLoadRunnerチュートリアルでは、スクリプトに必要なその他の基本的な拡張機能(以下にリストされています)が表示されます:
- Transactions–ユーザーアクションのレートと応答時間を測定します。
- テキストと画像のチェック–返された応答が正しいことを確認します。
- ランデブポイント–Vusersが同時にタスクを実行するようにします。
=> LoadRunnerチュートリアルの完全なシリーズはこちらをクリック
トランザクション、テキストと画像のチェック、コメントとランデブ パフォーマンススクリプトの最終目標は、負荷を注入し、アプリケーションでのユーザーアクションの速度と応答時間を測定することです。
たとえば、100人のユーザーがアプリケーションにいるときに製品検索にかかった時間、たとえば15分の時間で生成されたレポートの数などです。 これらを測定するには、vugenスクリプトにトランザクションを挿入する必要があります(テスト後、これらのトランザクションのレートと応答時間を結果
‘トランザクションは、アプリケーション上のユーザーアクション(またはユーザーアクションのグループ)のエンドツーエンドの測定です’。
トランザクションは二つの方法で挿入することができます:
- 録音中
- 録音後(スクリプトにトランザクション関数を手動で挿入します)
私たちは私たちの”Webツアー”アプリケーション上の”ログイン”ユーザーアクションのためのトラン
最初のチュートリアルでは、ユーザーのアクションを記録する方法を見ました。 録音中、ログインページに”ユーザー名”と”パスワード”を入力した後、”ログイン”ボタンをクリックする直前に、フローティング録音バーの”トランザクション開始”アイコンを
VuGenはトランザクション名の入力を求めます。 意味のある名前を入力します。 ここでは’Login’を指定しましたが、このような規則(トランザクション番号、シナリオ名、ユーザーアクションなど)に従うことをお勧めします。):01_webtours_launch02_webtours_login(というように).
の入力を求められ、ログインボタンをクリックします。
をクリックして、ホームページ(メインページ)に到達したら、フローティング記録バーの”終了トランザクションの挿入”アイコンをクリッ
終了したいトランザクションを選択します(ここでは’Login’トランザクション)。
を終了したい’Login’トランザクション記録を停止し、生成されたスクリプトを参照してください。 トランザクション開始関数とトランザクション終了関数がスクリプトに挿入され(黄色で強調表示されています)、’Login’ユーザーアクションに対応するすべての要求がこれらの関数の間に囲まれていることがわかります。
lr_start_transaction("Login");web_submit_data("login.pl","Action=http://127.0.0.1:1080/cgi-bin/login.pl","Method=POST","TargetFrame=","RecContentType=text/html","Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home","Snapshot=t3.inf","Mode=HTML",ITEMDATA,"Name=userSession", "Value=123530.624949372zDftVAzpfcAiDDDDDiVctpzDQVcf", ENDITEM,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=login.x", "Value=69", ENDITEM,"Name=login.y", "Value=8", ENDITEM,LAST);lr_end_transaction("Login",LR_AUTO);
‘transaction start’関数と’transaction end’関数の構文は非常に簡単です。 どちらも最初の引数としてトランザクション名を持ちます。 ‘End transaction’関数にはもう1つの属性’LR_AUTO’があり、これはvugenにトランザクションを自動的に合格または不合格にするように指示します(合否の条件を明示的に指定するのではなく)。
ロードランナーがトランザクション内で要求を実行する際にエラーが発生した場合、それ以外の場合はトランザクションを渡します。
VuGen Script
でのテキストとイメージのチェックテキストチェックは、要求に対して返された応答が正しいかどうかを確認するために使用されます。 ‘Correlation’チュートリアルでは、VuGenがエラーを表示しないことがありますが、返された応答が正しいものではない可能性があることがわかりました。 そのため、応答が正しいことを確認するために、テキストチェックを使用します。
たとえば、web Toursアプリケーションにログインすると、ホームページに移動します。 ログイン時に正しい応答(ホームページ)を取得しているかどうかをスクリプトで確認しましょう。
これを行うには、応答が正しいかどうかを言うことができる応答(ここではホームページ)内のテキストを識別する必要があります。 ‘Welcome’はそのようなテキストの一つです。
テキストチェックには、リクエストの直前に’web_reg_find’関数を使用します。
この関数の構文は次のとおりです:
web_reg_find("Text=","SaveCount=","Fail=",LAST);
ここには3つの属性があります(属性の完全なリストを取得するにはVuGenヘルプを参照してください):
‘Text’-検索するテキストを指定するために使用されます。
‘SaveCount’–指定したテキストの出現回数を指定したパラメータに保存します。
‘Fail’–’Found’と’NotFound’のいずれかの値を取り、それに応じてスクリプトを失敗させます。
したがって、関数web_reg_find(“Text=Welcome”,”SaveCount=WelcomeCount”,”Fail=NotFound”,LAST)は、応答内のテキスト’Welcome’を検索し、出現回数をパラメータ’Welcome’に保存します(テキストが見つからない場合はスクリプト
スクリプトは次のようになります:
web_reg_find("Text=Welcome","SaveCount=WelcomeCount","Fail=NotFound",LAST);web_submit_data("login.pl","Action=http://127.0.0.1:1080/cgi-bin/login.pl","Method=POST","TargetFrame=body","RecContentType=text/html","Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home","Snapshot=t2.inf","Mode=HTML",ITEMDATA,"Name=userSession", "Value=123531.149939247zDftVDDpfcfDiVctpiAVVf", ENDITEM,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=login.x", "Value=66", ENDITEM,"Name=login.y", "Value=12", ENDITEM,LAST);
スクリプトを再生すると、vugenが指定したテキストを応答で見つけられなかったため、ログイン要求のエラーが発生します(リレーログを参照)。 これは、正しいホームページを取得できなかったためです(’ランタイムビューア’に示されているように)。
のエラーが表示されます。それでは、スクリプトを修正して(userSessionを相関させて)スクリプトを再度再生しましょう。
web_reg_find("Text=Welcome","SaveCount=WelcomeCount","Fail=NotFound",LAST);web_submit_data("login.pl", "Action=http://127.0.0.1:1080/cgi-bin/login.pl", "Method=POST", "TargetFrame=body", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home", "Snapshot=t2.inf", "Mode=HTML", ITEMDATA, "Name=userSession", "Value={corUserSession}", ENDITEM, "Name=username", "Value=jojo", ENDITEM, "Name=password", "Value=bean", ENDITEM, "Name=JSFormSubmit", "Value=off", ENDITEM, "Name=login.x", "Value=66", ENDITEM, "Name=login.y", "Value=12", ENDITEM, LAST);
今回はリプレイログにエラーは表示されませんが、テキストチェックが成功したというメッセージが表示されます。 そのため、今回は正しい応答を得ました(’runtime viewer’によって裏付けられているため)。
テキストチェックとトランザクションを組み合わせて、テキストチェックが成功した場合はVuGenにトランザクションを渡し、テキストチェックが失敗した場合はトランザクションを失敗させることができます。
これは以下の通りです:
lr_start_transaction("Login");web_reg_find("Text=Welcome","SaveCount=WelcomeCount",LAST);web_submit_data("login.pl", "Action=http://127.0.0.1:1080/cgi-bin/login.pl", "Method=POST", "TargetFrame=body", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home", "Snapshot=t2.inf", "Mode=HTML", ITEMDATA, "Name=userSession", "Value={corUserSession}", ENDITEM, "Name=username", "Value=jojo", ENDITEM, "Name=password", "Value=bean", ENDITEM, "Name=JSFormSubmit", "Value=off", ENDITEM, "Name=login.x", "Value=66", ENDITEM, "Name=login.y", "Value=12", ENDITEM, LAST);if(atoi(lr_eval_string("{WelcomeCount}"))>0){lr_end_transaction("Login",LR_PASS);}else{lr_end_transaction("Login",LR_FAIL);}
ここでは’SaveCount’属性で’if文’を使用しました。 ‘WelcomeCount’パラメータ(テキストの出現回数を保存します)は、トランザクションを合格/不合格にするための条件として使用されます。 トランザクション関数の’LR_PASS’属性と’LR_FAIL’属性は、トランザクションを明示的に渡すために使用されます(それぞれ)。
注:ここでは、’atoi’と’lr_eval_string’という2つの新しい関数を使用しました。 これらの機能については後で説明します。
‘web_reg_find’関数属性の組み合わせに関するいくつかの詳細情報:
#1) ‘Text’属性のみが使用されている場合–
例: web_reg_find(“Text=Welcome”,LAST)–
VuGenはテキストを検索し、検索が失敗した場合はスクリプトを失敗させます。
#2)’Text’と’SaveCount’属性のみが使用されている場合–
例:web_reg_find(“Text=Welcome”,”SaveCount=Welcome”,LAST)–vugenはテキストを検索し、指定されたパラメータに出現回数(ゼロであっても)を保存します(検索が失敗した場合、スクリプトは失敗しません)。
#3)’Text’と’Fail’属性のみが使用されている場合–
例: web_reg_find(“Text=Welcome”,”Fail=NotFound”,LAST)–VuGenはテキストを検索し、テキストが見つかった/見つからなかった場合にスクリプトを失敗させます。
フローティング録音バーの”テキストチェックの挿入”アイコンを使用して、録音中にテキストチェックを挿入することもできます。 これにより、同じ’web_reg_find’関数がスクリプトに挿入されます。
しかし、主に属性をよりよく制御できるので、この関数を手動で挿入する方が良いです。
テキストチェックをはっきりと理解しましたので、今度は画像チェックに行きましょう。
イメージチェックは、応答に指定されたイメージが存在することを確認するために使用されます。 画像チェックには’web_image_check’関数が使用されます。 この関数は、要求の後に(画像を期待している応答で)配置する必要があります。
この関数の例:
web_image_check("Image","Src=/WebTours/images/flights.gif",LAST)
ここで、最初の属性は意味のある名前であり、2番目の属性(’Src’)は画像名/リンクです(属性の完全なリストを取得するにはVuGenヘルプを参照してください)。
VuGenスクリプト内のコメント
VuGenスクリプト内のコメントは、記録中に入力することも、スクリプトが記録された後に手動で入力することもできます。
録音中に、フローティング録音バーの”コメントを挿入”アイコンをクリックします。
コメントを入力します(ここでは’Login’と言います)。
録音後、以下に示すようにスクリプト内のコメントを見ることができます。
/* Login */web_submit_data("login.pl", "Action=http://127.0.0.1:1080/cgi-bin/login.pl", "Method=POST", "TargetFrame=body", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home", "Snapshot=t6.inf", "Mode=HTML",
VuGenでは、以下に示すように行の前に’//’を置くだけで、単一の行をコメントすることができます:
// web_add_cookie("SRCHD=AF=IESS3N; DOMAIN=www.bing.com");web_add_cookie("SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com");web_add_cookie("SRCHUSR=DOB=20180312; DOMAIN=www.bing.com");
と複数の行を接続するには、先頭に’/*’を、末尾に’*/’を指定します(以下に示すように)
/* web_add_cookie("SRCHD=AF=IESS3N; DOMAIN=www.bing.com");web_add_cookie("SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com");web_add_cookie("SRCHUSR=DOB=20180312; DOMAIN=www.bing.com"); */
注:上記の例では、cookie関数(web_add_cookie)をコメントしました。 クッキー関数については、このチュートリアルシリーズの後半で説明します。
スクリプト内のリクエストをアプリケーションのユーザーアクションに関連付けるのに役立つため、記録中に各ステップにコメントを挿入することをお勧めします。
VuGenスクリプトのランデブポイント
より多くのユーザーがアプリケーション上で同時にアクションを実行するシナリオがあり、パフォーマンステストで同じ
‘ランデブスポイント’は、vugenスクリプト内の単一の単純な関数であり、ロードランナー(複数のユーザーとのテスト中)に、すべてのVusers(スクリプトを実行している)がそのステップに来るまで、スクリプト内の指定されたステップで待機するように指示し、後続の要求を同時に実行できるようにする。
ランデブ関数の構文は次のとおりです:
lr_rendezvous("MeaningfulName");
この機能は、記録中に挿入することも、スクリプトが記録された後に手動で挿入することができます。
“Web Tours”アプリケーションの支払いステップに同時負荷をかけたいとします。 そのステップでの録音中(支払い詳細を送信する前)、フローティング録音バーの”ランデブーを挿入”アイコンをクリックします。
とランデブーポイント名(任意の意味のある名前)を入力します。
を入力して記録した後、このようなスクリプトでランデブ機能を見ることができます。
lr_rendezvous("Payment");web_submit_data("reservations.pl_3","Action=http://127.0.0.1:1080/cgi-bin/reservations.pl","Method=POST","TargetFrame=","RecContentType=text/html","Referer=http://127.0.0.1:1080/cgi-bin/reservations.pl","Snapshot=t13.inf","Mode=HTML",ITEMDATA,"Name=firstName", "Value=Jojo", ENDITEM,"Name=lastName", "Value=Bean", ENDITEM,"Name=address1", "Value=1st Lane, Down Street", ENDITEM,"Name=address2", "Value=567123", ENDITEM,"Name=pass1", "Value=Jojo Bean", ENDITEM,"Name=creditCard", "Value=123456789101", ENDITEM,"Name=expDate", "Value=0520", ENDITEM,"Name=oldCCOption", "Value=", ENDITEM,"Name=numPassengers", "Value=1", ENDITEM,"Name=seatType", "Value=Coach", ENDITEM,"Name=seatPref", "Value=None", ENDITEM,"Name=outboundFlight", "Value=020;338;05/03/2018", ENDITEM,"Name=advanceDiscount", "Value=0", ENDITEM,"Name=returnFlight", "Value=", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=.cgifields", "Value=saveCC", ENDITEM,"Name=buyFlights.x", "Value=63", ENDITEM,"Name=buyFlights.y", "Value=12", ENDITEM,LAST);
Controllerで複数のユーザーでこのスクリプトを実行すると、スクリプトはvusersによって独立して実行されますが、Vusersはすべての(またはランデブポリシーで定義されたVusersの一部)がこのステップに到達するまで、この”支払い”ステップで待機し、その後同時にこのステップを実行します。
コントローラチュートリアルでランデブポリシー(オプション)の詳細を確認します。
結論
これまで、前のチュートリアルとトランザクション、テキスト/イメージチェック、コメント、ランデブポイントで相関とパラメータ化について説明してきました。このチュートリアルでは、最も重要なスクリプト拡張方法についても説明しました。
次のチュートリアルでは、スクリプトの課題とその処理方法について説明します。
=> LoadRunnerチュートリアルの完全なシリーズについてはこちらをご覧ください
前のチュートリアル|次のチュートリアル
Leave a Reply