loadrunner transactions
例を含むUNIXのlsコマンド
VuGenスクリプトの基本的な拡張機能の概要:
探検しました LoadRunnerの相関 この前のチュートリアルで詳細に LoadRunnerトレーニングチュートリアルを完了する 。
最後の2つのチュートリアルでは、VuGenスクリプトでのデータの処理(相関とパラメーター化)に取り組みました。
このLoadRunnerチュートリアルでは、スクリプトに必要なその他の基本的な拡張機能(以下にリスト)を確認します。
- トランザクション –ユーザーアクションの速度と応答時間を測定します。
- テキストと画像のチェック –返された応答が正しいことを確認するため。
- コメント
- ランデブーポイント –仮想ユーザーにタスクを同時に実行させるため。
=> LoadRunnerチュートリアルの完全なシリーズについては、ここをクリックしてください
学習内容:
VuGenスクリプトでのトランザクション
パフォーマンススクリプトを再生するだけでは、アプリケーションに負荷がかかるだけで、何も測定されません。パフォーマンススクリプトの最終目標は、負荷を注入し、アプリケーションでのユーザーアクションの速度と応答時間を測定することです。
例えば 、100人のユーザーがアプリケーションを使用しているときに製品検索にかかった時間、たとえば15分の時間に生成されるレポートの数など。これらを測定するには、VuGenスクリプトにトランザクションを挿入する必要があります(テスト後、これらのトランザクションの速度と応答時間を結果で確認できます)。
「トランザクションは、アプリケーションでのユーザーアクション(またはユーザーアクションのグループ)のエンドツーエンドの測定です」。
トランザクションは、次の2つの方法で挿入できます。
- 録音中
- 記録後(スクリプトにトランザクション関数を手動で挿入します)
「WebTours」アプリケーションで「Login」ユーザーアクションのトランザクションを挿入しましょう。
最初のチュートリアルでは、ユーザーアクションを記録する方法を見ました。記録中、ログインページで「ユーザー名」と「パスワード」を入力した後、「ログイン」ボタンをクリックする直前に、フローティング記録バーの「トランザクション開始の挿入」アイコンをクリックします。
VuGenはトランザクション名の入力を求めます。意味のある名前を入力してください。ここでは「ログイン」を指定しましたが、次のような規則(トランザクション番号、シナリオ名、ユーザーアクションなど)に従うことをお勧めします:01_WebTours_Launch 02_WebTours_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 );
「トランザクション開始」関数と「トランザクション終了」関数の構文は非常に単純です。どちらも最初の引数としてトランザクション名を持っています。 「トランザクションの終了」関数には、もう1つの属性「LR_AUTO」があります。これは、トランザクションを自動的に成功または失敗するようにVuGenに指示します(成功または失敗の条件を明示的に指定する代わりに)。
ロードランナーがトランザクション内でリクエストを実行する際にエラーが発生した場合、トランザクションは失敗します。それ以外の場合、ロードランナーはトランザクションを渡します。
VuGenスクリプトでのテキストと画像のチェック
テキストチェックは、要求に対して返された応答が正しいかどうかを確認するために使用されます。 「相関」チュートリアルでは、VuGenでエラーが表示されない場合がありますが、返される応答が正しくない場合があります。したがって、応答が正しいことを確認するために、テキストチェックを使用します。
例えば、 Web Toursアプリケーションにログインすると、ホームページに移動します。ログイン時に正しい応答(ホームページ)が得られるかどうかをスクリプトで確認しましょう。
これを行うには、応答(ここのホームページ)で、応答が正しいかどうかを示すテキストを特定する必要があります。 「ようこそ」はそのようなテキストの1つです。
テキストチェックには、「 web_reg_find ’ リクエストの直前に機能します。
この関数の構文は次のとおりです。
web_reg_find(“Text=”,”SaveCount=”,”Fail=”,LAST);
ここに3つの属性があります(属性の完全なリストを取得するには、VuGenヘルプを参照してください)。
「テキスト」-検索するテキストを指定するために使用されます。
「SaveCount」–指定したテキストの出現回数を指定したパラメータに保存します。
「失敗」–「Found」と「NotFound」の2つの値のいずれかを取り、それに応じてスクリプトを失敗させます。
したがって、関数web_reg_find(“ Text = Welcome”、” SaveCount = WelcomeCount”、” Fail = NotFound”、LAST)は、応答内のテキスト「Welcome」を検索し、出現回数をパラメーター「WelcomeCount」に保存します(およびテキストが見つからない場合、スクリプトは失敗します)。
スクリプトは次のようになります。
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 );
今回は、再生ログにエラーは表示されませんが、テキストチェックが成功したというメッセージが表示されます。そのため、今回は正しい応答が得られました(「ランタイムビューア」によって裏付けられているため)。
テキストチェックをトランザクションと組み合わせて、テキストチェックが成功した場合は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」属性は、トランザクションを(それぞれ)明示的に受け渡しおよび失敗させるために使用されます。
注意: ここでは2つの新しい関数を使用しました– 「アトイ」 そして ‘lr_eval_string’ 。これらの機能については後で説明します。
「web_reg_find」関数属性の組み合わせに関する詳細情報:
#1)「テキスト」属性のみが使用されている場合 -
例: web_reg_find(“ Text = Welcome”、LAST)–
VuGenはテキストを検索し、検索が失敗した場合はスクリプトを失敗させます。
#2)「Text」属性と「SaveCount」属性のみが使用されている場合–
例: web_reg_find(“ Text = Welcome”、” SaveCount = WelcomeCount”、LAST)– VuGenはテキストを検索し、出現回数(ゼロであっても)を指定されたパラメーターに保存します(検索が失敗してもスクリプトは失敗しません) )。
#3)「テキスト」属性と「失敗」属性のみが使用されている場合–
例: 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 */ 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では、以下に示すように、行の前に「//」を付けるだけで1行にコメントを付けることができます。
// 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 )。このチュートリアルシリーズの後半で、Cookie関数について説明します。
スクリプト内の要求をアプリケーションでのユーザーアクションに関連付けるのに役立つため、記録中の各ステップにコメントを挿入することをお勧めします。
VuGenスクリプトのランデブーポイント
多数のユーザーがアプリケーションで同時にアクションを実行するシナリオ(結果の確認など)があり、パフォーマンステストで同じアクションをシミュレートする必要がある場合は、「ランデブーポイント」を使用できます。
「ランデブーポイント」は、VuGenスクリプト内の単一の単純な関数であり、ロードランナー(複数のユーザーを使用したテスト中)に、すべての仮想ユーザー(スクリプトの実行)がそのステップに到達するまで、スクリプトの指定されたステップで待機するように指示します。その後のリクエストは同時に実行できます。
ランデブー関数の構文は次のとおりです。
lr_rendezvous(“MeaningfulName”);
この関数は、記録中、およびスクリプトの記録後に手動で挿入できます。
「WebTours」アプリケーションの支払いステップに同時に負荷をかけたいとします。そのステップでの録音中(支払いの詳細を送信する前)に、フローティング録音バーの(ランデブーを挿入)アイコンをクリックします。
そして、ランデブーポイント名(意味のある名前)を入力します。
記録後、このようなスクリプトでランデブー機能を確認できます。
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 );
これで、コントローラーで複数のユーザーを使用してこのスクリプトを実行すると、スクリプトは仮想ユーザーによって個別に実行されますが、仮想ユーザーは、すべて(またはランデブーポリシーで定義された仮想ユーザーの一部)がこのステップに到達するまで、この「支払い」ステップで待機します。このステップを同時に。
ランデブーポリシー(オプション)については、コントローラーチュートリアルで詳しく説明します。
結論
これまで、前のチュートリアルで相関とパラメーター化、このチュートリアルでトランザクション、テキスト/画像チェック、コメント、ランデブーポイントについて説明してきましたが、最も重要なスクリプト拡張方法についても説明しました。
次のチュートリアルでは、スクリプトに関するいくつかの課題と、それらを処理する方法について説明します。
=> LoadRunnerチュートリアルの完全なシリーズについては、こちらをご覧ください
推奨読書
- HPLoadRunnerチュートリアルを使用した負荷テスト
- Micro Focus LoadRunnerの概要-LoadRunnerチュートリアル#1を使用した負荷テスト
- 相関関係-LoadRunnerを使用した負荷テスト
- 初心者向けのLoadRunnerチュートリアル(無料の8日間の詳細コース)
- テスト結果の分析とレポート-LoadRunnerを使用した負荷テスト
- LoadRunnerVuGenスクリプトを使用したWebサービスパフォーマンステスト
- LoadRunnerとPerformanceCenterの違い
- LoadRunnerVuGenスクリプトファイルとランタイム設定をセットアップする方法