LoadRunner のパラメータ化、関数、トランザクション

⚡ スマートサマリー

パラメータ設定、トランザクション、および実行時設定の3つの機能強化により、単なるVuGenの記録が、実際のユーザーのように動作し、信頼できるタイミングを報告するスクリプトへと変化します。

  • 🔘 トランザクション: リクエストをlr_start_transactionとlr_end_transactionでラップして、実行時間を計測します。
  • ☑️ ステータス コード: LR_AUTO、LR_PASS、またはLR_FAILで取引を終了します。
  • 待ち合わせ場所: VUsersを集合場所に集めて、全員が同時にサーバーにアクセスできるようにします。
  • 🧪 パラメータ化: ハードコードされた日付、ID、ログイン情報を、反復処理ごとの値に置き換えてください。
  • 🛠️ 実行時設定: 実行ロジック、ペース配分、ログ記録、思考時間、帯域幅、ブラウザ、プロキシ。
  • 📊 繰り返し性: 設定の不一致は、再現性のない結果が生じる一般的な原因である。

LoadRunner VuGenにおけるパラメータ化、トランザクション、および関数

記録されたスクリプトは仮想ユーザーをシミュレートできますが、単なる記録だけでは実際のユーザーの行動を再現するには不十分な場合があります。

スクリプトを記録すると、対象アプリケーションにおける単一の直線的な操作フローのみが記録されます。しかし、実際のユーザーはログアウトする前に、同じプロセスを複数回繰り返す可能性があります。ボタンをクリックする間隔(思考時間)は人によって異なり、高速なインターネット接続でアプリケーションにアクセスするユーザーもいれば、そうでないユーザーもいます。そのため、エンドユーザーの実際の操作感を再現するには、スクリプトを改良して、実際のユーザーの動作に非常に近いものにする必要があります。

それは「性能試験しかし、VUser スクリプトにはそれ以上の要素があります。システム負荷テスト (SUL) 中に VUser が要した時間をどのように測定しますか?特定の時点で VUser が合格したか不合格だったか、バックエンド プロセスが失敗したか、サーバーのリソースが不足したかをどのように判断しますか?

上記のすべての質問に答えられるように、スクリプトを改善する必要があります。

ブランドノート: VuGenはHP、その後Micro Focusとして出荷され、現在は OpenText プロフェッショナルパフォーマンスエンジニアリング以下の機能と設定は変更されていません。

トランザクションの使用

トランザクションとは、あらゆる操作におけるサーバーの応答時間を計測するものです。簡単に言うと、「トランザクション」とは、システムが特定の要求を処理するのにかかる時間を計測するものです。これは、ボタンのクリックや、テキストボックスがフォーカスを失ったときに発生するAJAX呼び出しといった、ごく小さな操作でも構いません。

トランザクションの適用は簡単です。リクエストの前に1行のコードを記述し、リクエストが終了したらトランザクションを閉じます。LoadRunnerでは、トランザクション名として文字列のみが必要です。

トランザクションを開くには、次のコード行を使用します。

lr_start_transaction(“Transaction Name”);

トランザクションを終了するには、次のコード行を使用します。

lr_end_transaction(“Transaction Name”, <status>);

のこの特定のトランザクションが成功したか失敗したかを LoadRunner に伝えます。 考えられるパラメータは次のとおりです。

  • LR_AUTO
  • LR_PASS
  • LR_FAIL

例:

lr_end_transaction(“My_Login”, LR_AUTO);
lr_end_transaction(“001_Opening_Dashboard Name”, LR_PASS);
lr_end_transaction(“Business_Workflow_Transaction Name”, LR_FAIL);

Code 注意事項: 抜粋部分は、引用符を含め、公開されたとおりに再現されています。実際のVuGenスクリプトでは、ASCIIの二重引用符が必要なので、このコードをコピーする場合は、二重引用符を再入力してください。

注意点:

  • 忘れないでください。「C」は大文字と小文字を区別する言語です。
  • トランザクション名にはピリオド(.)は使用できませんが、スペースやアンダースコアは使用できます。
  • コードを適切に分岐させ、サーバーからの応答を確認するためのチェックポイントを追加している場合は、LR_PASS や LR_FAIL などのカスタムエラー処理を使用できます。そうでない場合は、LR_AUTO を使用すると、LoadRunner がサーバーエラー (HTTP 500、400 など) を自動的に処理します。
  • 取引を適用する際は、思考時間に関する記述が間に挟まれていないことを確認してください。そうでない場合、取引には常にその期間が含まれてしまいます。
  • LoadRunnerではトランザクション名として定数文字列が必要となるため、トランザクション適用時によくある問題として、文字列の不一致が挙げられます。トランザクションの開始時と終了時に異なる名前を指定すると、少なくとも2つのエラーが発生します。まず、開始したトランザクションは終了していないためLoadRunnerはエラーを返し、終了しようとしているトランザクションは開始していないため2つ目のエラーが発生します。
  • どちらのエラーもリプレイログに表示されるため、どちらかのエラーが報告された場合は、まず開始明細書と終了明細書に記載されている取引名を確認してください。
  • LoadRunnerはリクエストとレスポンスの同期を自動的に処理するため、トランザクションを適用する際にレスポンスについて心配する必要はありません。

待ち合わせ場所、コメント、スクリプト機能

3つの小さな機能強化により、スクリプトは本番コードのように動作し、読みやすくなります。それは、ランデブーポイント、コメント、そしてVuGenに組み込まれた関数ブラウザです。

ランデブーポイント

ランデブーポイントとは「待ち合わせ場所」のことです。これは、LoadRunnerに並行処理を導入するように指示する単一のステートメントです。サーバーに大量のユーザー負荷がかかる状況をシミュレートするために、VUserスクリプトにランデブーポイントを挿入します。

ランデブーポイントは、複数のVUserが特定の地点に到着するまで実行中に待機するようVUserに指示し、VUserが同時にタスクを実行できるようにします。たとえば、銀行サーバーのピーク負荷をシミュレートするには、100人のVUserに同時に現金を預け入れるよう指示するランデブーポイントを挿入します。

ランデブーポイントが正しく設定されていない場合、同じスクリプトであっても、仮想ユーザーはアプリケーションの異なる部分にアクセスしてしまう可能性があります。これは、各仮想ユーザーの応答時間が異なるため、一部のユーザーが処理に遅れが生じるためです。

構文:

lr_rendezvous(“Logical Name”);

訂正注記: 公開されたページにはこう綴られています lr_rendesvous正しい関数名は lr_ランデブースペルミスのある形式ではコンパイルできません。

ベストプラクティス:

  • コードを読みやすくするために、ランデブー ポイントの先頭に「rdv_」を付けます。 例:「rdv_Login」
  • すぐ隣にある思考時間に関する記述をすべて削除してください。
  • スクリプトビューで、記録後にランデブーポイントを適用します。

以下のスクリプトビューは、記録されたアクションに挿入された待ち合わせステートメントを示しています。

スクリプトビューで記録されたVuGenアクションに挿入されたランデブーステートメント

コメント

アクティビティ、コードの一部、またはコード行を説明するためにコメントを追加してください。コメントは、将来コードを参照する人が理解しやすくするのに役立ちます。特定の操作に関する情報を提供したり、2つのセクションを区別するために使用したりできます。

コメントを追加できます

  • (ツールを使って)録画しながら
  • 録音後(コードを直接記述する)

ベストプラクティス:各スクリプトファイルの先頭にコメントを記載してください。

メニューから機能を挿入する

簡単なコードを直接記述することもできますが、関数を思い出すにはヒントが必要になる場合があります。また、ステップツールボックス(バージョン12以前は「関数の挿入」と呼ばれていました)を使用して、任意の関数をスクリプトに直接検索して挿入することもできます。

ステップツールボックスは、以下に示すように、[表示] → [ステップツールボックス] からアクセスできます。

ステップツールボックスコマンドがハイライト表示されたVuGenのビューメニュー

これにより、サイドウィンドウが開きます。スクリーンショットをご覧ください。

ステップツールボックスのサイドパネルには、挿入可能なVuGen関数の一覧が表示されます。

パラメータ化とは何ですか?

VuGenにおけるパラメータとは、様々なユーザー向けに置き換えられる記録値を保持するコンテナのことです。

スクリプトの実行中 (VuGen または コントローラー)外部ソース(.txtファイル、XML、データベースなど)からの値が、パラメーターの以前の値を置き換えます。

パラメータ化は、動的な(または一意の)値をサーバーに送信する際に役立ちます。例えば、ビジネスプロセスにおいて、毎回一意のユーザー名を選択しながら10回の反復処理を実行する必要がある場合などが挙げられます。

また、対象システムに対する実際の動作をシミュレートするのにも役立ちます。以下の例をご覧ください。

問題の例:

  • ビジネスプロセスはサーバーから取得した現在の日付のみに基づいて動作するため、ハードコードされたリクエストとして渡すことはできません。
  • クライアントアプリケーションは、単一ユーザーであっても処理を継続するために、サーバーに一意のID(例えばsession_id)を渡す場合があります。このような場合、パラメータ化が有効です。
  • クライアントアプリケーションは、サーバーとの間で送受信されるデータのキャッシュを保持することがよくあります。そのため、サーバーは実際のユーザー動作(検索条件に応じて異なるアルゴリズムを実行する動作)を受信できません。VUserスクリプトは正常に実行されますが、得られるパフォーマンス統計は意味をなさないものとなります。パラメータ化によって異なるデータを使用することで、ストアドプロシージャなどのサーバー側の処理をエミュレートし、システムを効果的にテストできます。
  • 記録時にVUserにハードコードされた日付は、その日付が過ぎると無効になる可能性があります。日付をパラメータ化することで、ハードコードされた日付を置き換え、VUserの実行を成功させることができます。このようなフィールドやリクエストは、パラメータ化に適した対象です。

スクリプトビューで記録された値を右クリックし、「パラメーターに置き換える」を選択することで作成できます。すると、VuGenは値を提供する型を尋ねてきます。

パラメータタイプ 価値を提供する
File .datファイル内の列から読み取られた値。
行と列が一度にまとまったブロック。
日付/時刻 選択した形式での現在の日時。
乱数 設定した範囲内の数値。
シングルナンバー 開始値とブロックサイズに基づいて、VUserごとに固有の数値が割り当てられます。
反復回数 現在の反復回数。
Vuser ID リプレイ時に割り当てられた識別子。
グループ/ロード Generator 名前 VUserグループまたはジェネレーターマシン。
XML XMLデータセットからの抜粋。
ユーザー定義関数 ご自身のライブラリ関数によって返される値。

さらに2つのオプションによって、反復処理全体を通してデータがどのように消費されるかが決まります。

オプション 選択肢 制御するもの
次の行を選択してください シーケンシャル、ランダム、ユニーク VUserが次に読み込む行。
値を更新する 各反復、各発生、1回 値が更新されたとき。

以下のチュートリアルでは、記録されたスクリプトにパラメータ化を適用する方法を示します。

詳しくはこちら こちら 動画にアクセスできない場合。

実行時設定とVUserシミュレーションへの影響

実行時設定は、VuGenスクリプトと同じくらい重要です。設定が異なると、全く異なるテスト設計になってしまうため、実行時設定の不整合が再現性のない結果の原因となることがよくあります。それでは、各属性について一つずつ見ていきましょう。

実行ロジック

実行ロジックは、vuser_init と vuser_end を除くすべてのアクションが実行される回数を定義します。

これにより、LoadRunner が keep を推奨する理由がより明確になると思われます。ping ログインコードはすべてvuser_init内に、ログアウト部分はvuser_end内にそれぞれ独立して記述する。

サインイン、画面を開く、レンタル料金の計算、資金の送金、残高の確認、ログアウトなど、複数のアクションを作成した場合、各VUserに対して以下のシナリオが発生します。

すべての仮想ユーザーはログインし、「画面を開く」、「レンタル料金を計算する」、「資金を送信する」、「残高を確認する」を実行し、その後再び「画面を開く」、「レンタル料金を計算する」などを実行し、これを10回繰り返した後、ログアウトします(1回)。

VuGenランタイム設定の実行ロジックペインに反復回数を表示

これは、スクリプトを実際のユーザーのように動作させるための強力な設定です。実際のユーザーは毎回ログインとログアウトを繰り返すのではなく、通常は同じ手順を繰り返すことを覚えておいてください。

メールをチェックする際に、ログアウトするまでに「受信トレイ」を何回クリックしますか?

ペーシング

これは重要な点です。多くの人は、ペース配分と思考時間の違いを理解できていません。唯一の違いは、ペース配分は反復処理間の遅延を指すのに対し、思考時間は任意の2つのステップ間の遅延を指すということです。

推奨設定はテスト設計によって異なります。ただし、負荷を積極的にかけたい場合は、以下に示すように「前回の反復処理が終了したらすぐに」を選択することを検討してください。

実行時設定のペーシングペイン(反復遅延オプション付き)

歳入録

一般的に理解されているように、ログとはLoadRunnerの実行中に発生したすべてのイベントの記録です。ログを有効にすることで、アプリケーションとサーバー間で何が起こっているかを把握できます。

LoadRunnerは、堅牢で拡張性に優れた強力なログ記録メカニズムを提供します。これにより、「標準ログ」のみを保持することも、詳細で設定可能な拡張ログを保持することも、ログ記録を完全に無効にすることも可能です。

標準ログは情報が豊富で理解しやすいものです。VUserスクリプトのトラブルシューティングに必要な情報が、適切な量だけ含まれています。

拡張ログの場合、標準ログ情報はすべてサブセットになります。さらに、パラメータ置換も可能です。これにより、LoadRunnerコンポーネントは、リクエストデータとレスポンスデータを含む、すべてのパラメータ(パラメータ化によるもの)に関する完全な情報を含めるようになります。

「サーバーから返されたデータ」を含めると、ログの長さが長くなります。HTML、タグ、リソース、およびリソース以外の情報がすべてログ内に含まれるためです。このオプションは、本格的なトラブルシューティングが必要な場合にのみ有効です。通常、このオプションを有効にするとログファイルが非常に大きくなり、内容を理解しにくくなります。

もうお分かりかと思いますが、「アドバンス」を選択すると、 Trace” ログファイルは膨大な量になります。ぜひ試してみてください。VuGen の処理時間も大幅に増加しますが、これは VuGen が報告するトランザクション応答時間には影響しません。これは非常に高度な情報であり、対象のアプリケーション、アプリケーションとハードウェア間のクライアント/サーバー通信、およびプロトコルレベルの詳細を理解している場合にのみ役立ちます。通常、この情報を読み解いてトラブルシューティングするには、多大な労力が必要です。

標準ログオプションと拡張ログオプションを備えた実行時設定のログペイン

ヒント:

  • ログを有効にした状態でVuGenがどれだけの時間を要しても、トランザクションの応答時間には影響しません。ログ記録のオーバーヘッドは計測時間から除外されます。
  • ログが必要ない場合は、ログを無効にしてください。
  • スクリプトの処理が完了したら、ログ記録を無効にしてください。ログ記録が有効になっているスクリプトを含めると、コントローラーの動作が遅くなり、煩わしいメッセージが表示されます。
  • ログを無効にすると、LoadRunner でシミュレートできるユーザーの最大数が増加します。
  • 「エラーが発生したときのみメッセージを送信する」設定の使用を検討してください。これにより、不要な情報メッセージがミュートされ、エラー関連のメッセージのみが報告されます。

考える時間

思考時間は、単純に XNUMX つのステップ間の遅延です。

思考時間は、実際のユーザーが機械のようにアプリケーションを使用できないため、ユーザーの行動を再現するのに役立ちます。VuGenは思考時間を自動的に生成しますが、思考時間を削除、増加、または変動させるなど、完全に制御できます。

より分かりやすく説明すると、ユーザーは画面を開き(応答に続いてリクエストが送信され)、ユーザー名とパスワードを入力してEnterキーを押す場合があります。アプリケーションとサーバー間の次のやり取りは、ユーザーが「サインイン」をクリックしたときに発生します。LoadRunnerでは、ユーザーがユーザー名とパスワードを入力するのにかかった時間が「思考時間」として記録されます。

再生時の思考時間オプションを含む、実行時設定の思考時間ペイン

アプリケーションに対する積極的な負荷をシミュレートしたい場合は、思考時間を完全に無効にすることを検討してください。

ただし、実際の行動をシミュレートするには、「ランダム思考時間を使用する」を選択し、必要に応じてパーセンテージを設定できます。

思考時間を適切な時間に制限するために、「思考時間制限」機能の使用を検討してください。通常、30秒で十分でしょう。

速度シミュレーション

速度シミュレーションとは、各クライアントマシンの帯域幅容量を指します。

LoadRunnerを使って数千もの仮想ユーザーをシミュレーションしているのですが、LoadRunnerがいかに帯域幅とネットワーク速度のシミュレーションを簡素化してくれたかは驚くべきことです。

顧客が128Kbpsを超える速度でアプリケーションにアクセスする場合、ここからその速度を制御できます。実際の動作をシミュレートできるため、適切なパフォーマンス統計を取得するのに役立ちます。

最大帯域幅または固定接続速度を提供する速度シミュレーションパネル

最適な設定は「最大帯域幅を使用する」です。これにより、ネットワーク関連のパフォーマンスボトルネックを無視し、アプリケーション内の潜在的な問題にまず焦点を当てることができます。さまざまな状況下での動作を確認するために、テストを複数回実行することも可能です。

ブラウザエミュレーション

ユーザーエクスペリエンスはエンドユーザーが使用するブラウザに依存しないため、これはパフォーマンス測定の範囲を大きく超えます。ただし、下のペインに示すように、エミュレートするブラウザを選択することは可能です。

ユーザーエージェントとキャッシュシミュレーションオプションを備えたブラウザエミュレーションペイン

この設定において、どのブラウザを選択するかが本当に重要になるのは具体的にどのような場合でしょうか?

対象アプリケーションが、ブラウザごとに異なる応答を返す Web アプリケーションである場合は、この構成を使用します。たとえば、Internet Explorer と で異なる画像やコンテンツが表示される場合があります。 Firefox.

もう一つ重要な設定は「ブラウザキャッシュのシミュレーション」です。キャッシュを有効にした状態での応答時間を測定したい場合は、このチェックボックスをオンにしてください。最悪のケースを想定している場合は、当然ながらこの設定は考慮する必要はありません。

「HTML以外のリソースをダウンロードする」を有効にすると、LoadRunnerはCSS、JS、その他のリッチメディアをダウンロードできるようになります。この設定はオンのままにしておくことをお勧めします。ただし、パフォーマンス テストの設計からこれらのリソースを削除したい場合は、チェックを外してください。

プロキシ

プロキシを完全に削除するのが最善です テスト環境 経路上にプロキシが存在すると、テスト結果の信頼性が低下します。しかし、プロキシの使用が避けられない状況に直面することもあるでしょう。そのような場合、LoadRunnerはプロキシ設定を提供します。

プロキシ設定は「なし」にする必要があります(または、そのように設定する必要があります)。この設定は、デフォルトのブラウザから取得できます。ただし、どのブラウザがデフォルトに設定されているか、またそのブラウザのプロキシ設定がどうなっているかを確認することを忘れないでください。

実行時設定のプロキシペインには、プロキシなしと手動プロキシの選択肢が表示されます。

プロキシを使用しており、認証(またはスクリプト)が必要な場合は、「認証」ボタンをクリックしてください。新しいウィンドウが開きます。下のスクリーンショットを参照してください。

プロキシ認証ウィンドウでユーザー名とパスワードの入力を求められます。

この画面でユーザー名とパスワードを入力し、プロキシサーバーで認証を受けてください。OKをクリックすると画面が閉じます。

おめでとうございます。VuGenスクリプトの設定が完了しました。すべてのVUserスクリプトについても設定を忘れずに行ってください。

次は 相関シナリオを実行する コントローラー、そして読書の結果は LoadRunner分析。 見る LoadRunnerのアーキテクチャ (NAIST) と 負荷テスト ガイド。

よくあるご質問

スクリプトビューで値を選択し、右クリックして「パラメーターに置換」を選択します。名前を付け、型を選択すると、VuGenが承認した一致する箇所をすべて置換します。

日付/時刻、乱数、一意の番号、反復回数、Vuser ID、グループ名、負荷 Generator 名前は再生時に生成されます。ファイル、テーブル、XMLパラメータのみ、データソースを指定する必要があります。

機械学習は相関関係の候補を提示し、アプリケーションの変更後に動作しなくなるスクリプトを特定し、現実的なテストデータを生成します。最近のVuGenリリースでは、AIによるスクリプト作成機能が提供されていますが、生成されたステートメントは依然としてレビューが必要です。

GitHubコパイロット VuGenスクリプトはC言語で記述されているため、C言語の足場処理(ループ、文字列処理、トランザクションラッパーなど)は適切に処理できます。ただし、プロトコル固有のWeb関数に関しては処理能力が劣るため、生成された呼び出しはすべて関数リファレンスと照合して確認してください。

これは、VUserに対して、1つのステップが失敗した後も、反復処理を終了するのではなく、残りのステップの実行を継続するように指示します。初期の探索的実行には役立ちますが、有効にしたままにしておくと、実際の失敗を隠してしまう可能性があります。

リクエストの前にコンテンツチェックを追加して、リプレイがレスポンス内に期待されるテキストがあるかどうかを確認するようにします。HTTPステータスが合格しただけでは何も証明になりません。エラーページは200を返す可能性があるからです。

いいえ。製品はHPからMicro Focusに移管され、現在は OpenText プロフェッショナルパフォーマンスエンジニアリングVuGenは、名前、関数ライブラリ、および実行時設定ペインを保持します。

lr_rendezvous ステートメントは、集合地点を示すだけです。何人の VUser が到着する必要があるか、また実行が待機する時間は、VuGen ではなく、コントローラーのランデブー オプションで設定されます。