LoadRunnerにおけるweb_reg_save_paramとの相関関係の例

⚡ スマートサマリー

LoadRunnerの相関機能は、セッションIDなどの動的なサーバー値をキャプチャし、それを後続のリクエストにフィードバックすることで、記録されたVuGenスクリプトが古いデータによって失敗するのではなく、正常に再生されるようにします。

  • 🔘 定義: 相関関係は、サーバー応答を、それに依存する後続のすべてのリクエストに結び付けます。
  • ☑️ 症状: スクリプトがサーバーが認識しなくなった記録済みセッションIDを返すと、再生が失敗します。
  • 自動: VuGenのルールと自動検出機能は2つのリプレイを比較しますが、対象となるケースはごく一部に限られます。
  • 🧪 マニュアル: web_reg_save_param は、左境界と右境界の間にある値を保存します。
  • 🛠️ 配置: 登録関数は、応答として値を受け取るステップよりも上位に配置する必要があります。
  • 📊 精算: 相関関係のあるスクリプトは新しいデータで再生され、明らかにサイズが小さく保たれる。

LoadRunnerにおけるweb_reg_save_paramとの相関関係

相関とは何ですか?

相関とは、その名の通り、2つの変数または実体間の関係を定義する仕組みです。辞書では、「2つ以上の変数間の統計的な関係であり、一方の変数の値の系統的な変化に伴って他方の変数にも系統的な変化が生じる」と定義されています。

ブランドノート: このツールはHPとして出荷され、その後 Micro Focus LoadRunner、そして今 OpenText プロフェッショナルパフォーマンスエンジニアリング以下の相関関数はすべて変更されておらず、ベンダーがスクリプトジェネレーターを記述しています。 VuGen.

なぜ相関関係が必要なのでしょうか?

次のシナリオで相関関係を理解し​​てみましょう。

スクリプトを録音する場合を考えてみましょう LoadRunner.

録画中のクライアント・サーバー間の通信は以下の通りで行われ、図はその概要を示しています。

  1. Record処理中、クライアントはサーバーにセッション開始のリクエストを送信します。
  2. サーバーはリクエストを受信し、新しいセッション ID ABC を割り当てます。
  3. クライアントはセッション ID ABC をスクリプトに保存します。
  4. クライアントはID ABCでセッションを開始し、サーバーに記録を許可するようリクエストを送信します。
  5. サーバーは ID ABC を認識し、クライアントがスクリプトを記録できるようにします。

LoadRunnerスクリプトの記録中にクライアントとサーバーのセッションIDを交換する

それでは、以下の手順の後に示す、再生中のクライアントとサーバー間の通信について見ていきましょう。

  1. 再生中に、クライアントはセッションを開始するリクエストをサーバーに送信します。
  2. サーバーはリクエストを受信し、新しいセッション ID XYZ を割り当てます。
  3. クライアントは、以前に記録されたセッションID ABCを使用してセッションを開始し、サーバーに記録を許可するよう要求を送信します。
  4. サーバーは、割り当てられた ID XYZ を予期していたため、ID ABC を識別できず、セッションが失敗します。

相関関係が欠落している場合、再生中にセッションIDの不一致が発生します

実行時に送信される動的な値をキャプチャして解析し、その値をサーバーに返すことができるソリューションが必要です。このソリューションを用いた場合のクライアントとサーバー間の通信は、以下の図に示すようになります。

  1. 再生中に、クライアントはセッションを開始するリクエストをサーバーに送信します。
  2. サーバーはリクエストを受信し、新しいセッション ID ZZZ を割り当てます。
  3. クライアントは、リクエストからこの新しいセッション ID ZZZ を解析します。
  4. クライアントが ID ZZZ でセッションを開始するリクエストを送信します。
  5. サーバーは ID ZZZ を認識し、クライアントがスクリプトを再生できるようにします。

相関分析により新しいセッションIDを取得し、サーバーに返送する。

これはただです 相関.

以下の短い動画では、同じ録画・再生の問題について解説しています。

詳しくはこちら こちら ビデオにアクセスできない場合

VuGenの場合、相関関係とは、応答とそれ以前の要求との間の拘束関係のことです。

リクエストが、セッションIDやサーバーから取得したサーバーの日時など、サーバーから以前に受信したレスポンスに基づいて実行される状況は様々です。これらの値は、アプリケーションを実行したりスクリプトを記録したりするたびに異なります。スクリプトの実行がサーバーから返される値に依存する場合、サーバーからのレスポンスを「キャッチ」して、サーバーが期待するリクエストに添付できる仕組みを見つける必要があります。これは一般的に、LoadRunnerでは相関関係と呼ばれます。

簡単に言うと、相関関係を使用した解決策は次のとおりです。

  1. ステップからの出力値のキャプチャ
  2. 上記で取得した値を後続のすべてのステップへの入力として使用します

VuGen/LoadRunnerでは、相関関係は2つのカテゴリに分類されます。

  • 自動相関
  • 手動相関

自動相関

LoadRunner は、相関関係を自動的に簡単に実行するメカニズムを提供します。

VuGenでは、サーバー応答における様々な値を内部的に比較するために、記録したスクリプトを少なくとも2回実行する必要があります。

自動相関は 3 つのカテゴリに分類できます。

  • 相関関係の自動検出
  • ルールベースの相関関係
  • すべてのステートメントを相関させる
ルール名 いつ使用するか
相関関係の自動検出 LoadRunnerがサポートするアプリケーションサーバーの動的データを検出および相関分析する
ルールベース コンテキストがわかっている、サポートされていないアプリケーション サーバーを操作する場合に使用されます。
すべてを関連付ける すべての動的データをブラインド方式で相関付けるのに役立ちます。

自動相関は簡単に見えますが、エラーが発生しやすく、機能するケースは 5% にすぎません。 常に手動相関を使用することをお勧めします。

記録時の自動相関を設定するには、スクリプトを記録した後、記録時間設定で以下の設定を行ってください。

下のメニューに表示される「録画」=>「録画オプション」(または「Ctrl + F7」)をクリックします。

VuGenの録画メニューで「録画オプション」が選択されている。

以下のウィンドウが開きます。

VuGenの録画オプションウィンドウに録画構成ノードの一覧が表示されます。

「相関」=>「構成」をクリックすると、以下のウィンドウが開きます。

相関構成ペインには、ASPNETなどのアプリケーションルールセットが一覧表示されます。

ここで、対象アプリケーションで使用されるすべてのアプリケーション (ASPNET) などに対してチェックマークを付ける必要があります。 右側には、_VIEWSTATE などの相関関係の候補を検出するルールが表示されます。 [新しいルール] ボタンをクリックして、さらにアプリケーションやカスタム ルールを追加することもできます。

「ルール」をクリックすることもできます。以下のように表示されます。

ルールスキャンオプションが利用可能な相関ルールペイン

自動相関機能を使用するには、「ルールスキャン」にチェックが入っていることを確認する必要があります。「検出された値を自動的に相関させる」をクリックすると、相関候補が見つかった際にVuGenは選択肢を提示せず、自動的に相関処理を実行します。

相関関係に使用される API については後ほど説明します。ただし、テキスト比較ではなく HTML 比較を使用することをお勧めします。

ルールを選択したら、「OK」ボタンをクリックしてウィンドウを閉じます。

ここに表示されているツールバーボタンをクリックしてください 記録されたスクリプトを再生成するために使用されるVuGenツールバーボタン メニューから選択すると、VuGen は(記録することなく)新しい設定でスクリプトを再生成します。VuGen は相関処理に必要なコードを自動的に追加します。サンプルについては、「手動相関」でさらに詳しく見ていきます。

相関関係を手動で実行する場合、または自動相関関係を使用する場合、コード部分にはまったく同じ構文と機能が含まれることに注意してください。

スクリプトを自動相関させる手順は次のとおりです。

  1. スクリプトを記録する
  2. リプレイスクリプト
  3. 相関させる値を特定する
  4. 値を選択し、自動相関ボタンをクリックします。
  5. スクリプトを再度実行して検証します。 実行が成功したということは、相関が成功したことを意味します。

ヒント:

  • 相関は、異なる値を使用してスクリプトを実行するのに役立ちます
  • 相関によりスクリプトのサイズも削減されます

手動相関

手動相関とは、絶えず変化する値に対応するコードをスクリプトに直接記述することです。 以下のステップに分割できます。

  1. キャプチャする値を決定する
  2. キャプチャする値の左右のテキスト境界を見つける (WEB)
  3. どのテキスト境界を使用する必要があるかを検索します
  4. web_reg_save_param 関数をスクリプトの、キャプチャする値を持つページを要求するコード部分の上に追加します。
  5. パラメータ名、左境界、右境界、およびオカレンスを関数に追加します。
  6. 動的値が発生するたびにスクリプト内でパラメータ化します。
  7. 正しい実行を検証する
web_reg_save_param (" OracleAppJSESSIONID3",
	"LB/IC=JSESSIONID=",
	"RB/IC=;",
	"Ord=l",
	"Search=headers",
	"RelFrameId=l",
	LAST);

web_reg_save_param("Siebel_Analytic_ViewState2",
	"LB/IC=ViewState\" value=\"",
	"RB/IC=\"",
	"Ord=1",
	"Search=Body",
	"RelFrameId=l",
	LAST);

Code 注意事項: どちらの抜粋も、公開されたとおりに表示されています。序数に注目してください。 順序=l (NAIST) と RelFrameId=l 小文字の「l」を使用してください。VuGenは数字の「1」を想定しています。

手動相関は、VUser Comparison によって実行できます。 相関関係の VUser 比較方法のステップは、次のように分割できます。

  1. 相関させる必要がある動的値を特定する
  2. 動的値を含むサーバー応答を見つける
  3. パラメータの動的値をキャプチャします。
  4. 出現するすべての動的値をパラメータに置き換えます。
  5. 変更の確認

web_reg_save_param関数の理解

VuGenは、候補を関連付けるための複数の機能またはAPIを提供します。これには以下が含まれます。

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

バージョンノート: 現在のVuGenリリースでは web_reg_save_param_ex 元の機能の後継として、 web_reg_save_param_regexp 境界線自体が変化する際の選択肢として。元の例も引き続き動作します。

ここでは簡単な紹介をしますが、関数とそのパラメータを詳しく理解するには、VuGen を開き、関数を記述し(または Steps Toolbox を使用し)、カーソルを関数に移動して F1 をクリックしてください。 VuGenのヘルプ そして、それを習慣にしましょう。この業界で働くなら、そういったことに頻繁に対処しなければなりません。

関数の詳細は次のとおりです。

web_reg_save_param(パラメータ名 , 左境界 , 右境界 )

属性のリスト

以下の表は、関数が受け入れるすべての属性、それが必須かどうか、およびそれが制御する内容をまとめたものです。

属性 必須? 何それがありません
変換 オプション HTML_TO_URL HTMLエンコードされたデータを変換します URLHTMLエンコードされたデータ形式。HTML_TO_TEXTは、HTMLエンコードされたデータをプレーンテキスト形式に変換します。
リダイレクトを無視する オプション、デフォルトは「リダイレクトを無視=いいえ」 「はい」に設定されていて、サーバーからの応答がリダイレクト情報(HTTPステータスコード300~303、307)である場合、その応答は検索対象になりません。GETリクエストはリダイレクト先の場所に送信され、そこからの応答に対して検索が実行されます。
LB 必須 パラメータまたは動的データの左境界。LB値を指定しない場合、データの先頭からすべての文字が境界として使用されます。境界パラメータは大文字と小文字を区別します。検索テキストをさらにカスタマイズするには、1つ以上のテキストフラグを使用します。
見つかりません オプション、デフォルトは「error」 境界が見つからず、空の文字列が生成された場合の処理​​。「Not found=error」はエラーを発生させます。「Not found=warning」(以前のバージョンでは「Not found=empty」)は、代わりにパラメータ数を0に設定して処理を続行します。これは、スクリプトを失敗させずに文字列が見つかったかどうかを確認したい場合に最適です。「Continue on Error」が有効になっている場合、スクリプトは「error」が発生しても続行されますが、拡張ログに記録されます。
ORD オプション、デフォルト値は1 一致した箇所の順序位置またはインスタンスを示します。「All」を指定すると、パラメータ値が配列に保存されます。下位互換性のために、ORDの代わりにInstanceを使用することもサポートされていますが、非推奨です。
RB 必須 パラメータまたは動的データの右端を指定します。RB値を指定しない場合、データの末尾までのすべての文字が境界として使用されます。境界パラメータは大文字と小文字を区別します。検索テキストをさらにカスタマイズするには、1つ以上のテキストフラグを使用します。
リリースフレームID オプション 要求されたHTMLページに対する階層レベル URL指定可能な値は「ALL」または数値です。RelFrameIDはGUIレベルのスクリプトではサポートされていません。
保存レン オプション、デフォルト値 -1 パラメータに保存する、検出された値の部分文字列の長さ(指定されたオフセットから)。デフォルトでは文字列の末尾までが保存されます。
オフセットの保存 オプション、デフォルト値は0 見つかった値の部分文字列のオフセット値。このオフセット値をパラメータに保存します。オフセット値は負の値であってはなりません。
検索 オプション、デフォルトはすべて 検索範囲 ― 区切り文字で区切られたデータを検索する範囲。指定可能な値は、Headers(ヘッダーのみを検索)、Body(ヘッダーではなく本文データのみを検索)、No resource(すべてのヘッダーとリソースを除外し、HTML本文のみを検索)、またはALL(本文、ヘッダー、リソースすべてを検索)です。

スクリプトが正常に再生されたら、追加します。 パラメータ化、トランザクション、および実行時設定から実行します コントローラー、そして結果を読みます 分析 より広範な 性能試験 (NAIST) と 負荷テスト.

よくあるご質問

拡張ログオンで2回実行し、応答を比較してください。サーバーが実行ごとに新たに発行する値(セッションID、トークン、タイムスタンプなど)はすべて候補となります。

web_reg_save_param は、固定された左端と右端の間で一致します。 web_reg_save_param_regexp 正規表現に一致するため、境界自体が変更された場合でも対応できます。

はい。機械学習は、2つのリプレイ応答を区別し、変更されたフィールドをランク​​付けできるため、手動によるスキャンよりもはるかに高速です。このランク付けは、人間が最終的に確認する候補リストとして扱ってください。

GitHubコパイロット コメントから関数呼び出しとその引数をドラフトします。サーバーの応答を見ることはできないため、提案するすべての境界は実際のトラフィックと照合して確認する必要があります。

これは登録機能です。VuGenが次に受信する応答に対して検索を登録します。リクエストの後に配置されると、スキャン対象がなくなるため、パラメータは空のままになります。

境界が一致しませんでした。よくある原因としては、大文字小文字の不一致、別のページにのみ存在する境界、または値がヘッダーにあるにもかかわらず本文を検索していることなどが挙げられます。

いいえ。パラメータ化は、データファイルから独自の入力データをスクリプトに渡す機能です。相関機能は、サーバーが実行時に生成する値をキャプチャして返します。ほとんどのスクリプトでは、両方が必要です。

はい、多くの場合、それ以上です。ベアラートークン、CSRFフィールド、JSON識別子はセッションごとに変化するため、RESTやシングルページトラフィックは、HTMLフォームがなくても候補で溢れています。