LoadRunnerパフォーマンステストシステム学習チュートリアル:スクリプトの関連機能の概要(7)

前号では、LoadRunnerパフォーマンステストスクリプト作成の相関技術についてお話しましたが、今号では、スクリプト作成の相関機能の紹介について学びます。

パート1

相関関数の紹介

LoadRunnerの最新バージョンでは

使用される相関関数は

web_reg_save_param_ex

以前のバージョンで使用されていた相関関数は

web_reg_save_param

ただし、2つの関数は本質的にそれほど違いはありません。この記事では、主に関連する関数web_reg_save_param_exを紹介します。

もちろん、関連する関数web_reg_save_paramは新しいバージョンでも引き続き使用できます。

テストプロセスでは、ステップを挿入することで関連する関数を挿入できます。ツリーモードで、ステップを挿入する必要のある位置を選択し、右クリックしてポップアップメニューの[前に挿入]メニューを選択すると、図に示すように[ステップの追加]ダイアログボックスがポップアップします。
LoadRunnerパフォーマンステストシステム学習チュートリアル:スクリプトの関連機能の概要(7)

在検索関数

ドロップダウンリストボックスに関連する機能を入力します

web_reg_save_param_ex

[OK]ボタンをクリックしてポップアップします

web_reg_save_param_ex

ダイアログボックスを図に示します。

LoadRunnerパフォーマンステストシステム学習チュートリアル:スクリプトの関連機能の概要(7)
関連する関数web_reg_save_param_exの形式は次のとおりです。

intweb_reg_save_param_ex(constchar ParamName、[constchar LB、] [constchar * RB、]、<検索フィルター>、LAST);

パラメータの説明:

ParamName:作成された変数の名前を示します。

LB:関連付けルールの左側の境界値。

RB:関連付けルールの正しい境界値。

属性のリスト:属性リスト。特定のコンテンツについては後で詳しく説明します。

検索フィルター:バッファーで検索する文字列を指定します。

LAST:終了パラメーターフラグ。

1.パラメータ名

変数名。バッファーで見つかったコンテンツをこの変数に保存することを意味します。

2.左の境界

検索バッファの内容の左側の境界値を設定します。左側の境界値が設定されていないか、null値に設定されている場合、左側の境界はデータの先頭から始まります。

例:「いつ、どこに旅行したいですか?」という文を検索する場合、関連する機能は次のとおりです。

web_reg_save_param_ex( "When_Txt"、 "LB = Where and"、 "RB = do"、LAST);左側の境界値は「Whereand」、右側の境界値は「do」、検索結果は「when」です。

3.右の境界

検索バッファコンテンツの右境界値を設定します。右境界値が設定されていないか、null値に設定されていない場合、右境界はデータの最後になります。

例:「いつ、どこに旅行したいですか?」という文を検索する場合、関連する機能は次のとおりです。

web_reg_save_param_ex( "When_Txt"、 "LB = Where and"、 "RB ="、LAST);左側の境界値は「Whereand」、右側の境界値はnull値で、検索結果は「いつ旅行しますか?」です。

図からわかるように、左境界値か右境界値かにかかわらず、大文字と小文字を区別するか、バイナリデータを検索するか、正規表現を使用するかという3つの設定があります。左の境界か右の境界かに関係なく、これら3つのオプションの設定は一貫しているため、統一された導入が行われます。

A.ケースを一致させる(ケースを一致させるかどうか)

このオプションを選択すると、検索プロセス中に左右の境界値の大文字と小文字が無視されます。つまり、大文字と小文字が区別されません。

例:次のリクエストでコンテンツを検索する必要がある場合。

関連する機能コードは次のとおりです。

web_reg_save_param_ex( "ParamName = test"、 "LB / IC = USERSession value ="、 "RB =>"、SEARCH_FILTERS、LAST);

関連付けの結果は次のとおりです。

108974.217253949fzAfDzVpDDDzDcpVzHi

その中で、「LB / IC」は、左側の境界値が大文字と小文字を区別しないこと、つまり左側の境界を意味します。

「USERSessionvalue =」与「userSessionvalue =」

一貫性があり、大文字と小文字が区別される場合、一致する値を見つけることができません。

B.バイナリデータ(バイナリデータ検索)

検索するコンテンツが非ASCII形式、バイナリ形式、または16進数形式である場合、通常の左右の境界線の方法で検索しても、必要なコンテンツが見つからないため、バイナリデータを選択する必要があります。バイナリモードで検索するコンテンツを照合するオプション。通常、\ x37などの識別には「\ x」を使用します。

例:たとえば、チェックするバイナリコンテンツ\ xAC \ xED \ x00 \ x05 \ x00。

相関関数は次のとおりです。

web_reg_save_param_ex( "ParamName = test4"、 "LB / BIN = \ xAC \ xED \ x00"、 "RB / BIN ="、SEARCH_FILTERS、LAST);

C.通常式(通常式マッチング)

正規表現とは、特定の構文規則に準拠する一連の文字列を記述または照合するために使用される単一の文字列を指します。パフォーマンステストの過程で、照合する値が正確ではなくファジークエリである場合、この時点で照合には正規の式を使用する必要があります。

LoadRunnerで一般的に使用される通常の式と一致するメタ文字を表に示します。

メタキャラクターの意味僦

メタキャラクターの意味

[正規表現の始まりの識別

]正規表現フラグの終わり

()含まれているコンテンツは、コンテンツのセットと見なされます

^一致は特定の文字で始まります。たとえば、^ abcはabcで始まる文字列を見つけることを意味します。

$一致は特定の文字で終わります。たとえば、abc $は、abcで終わる文字列を見つけることを意味します。

。文字に一致します。文字は任意の文字にすることができます

?前の文字または文字のグループと一致します。一致する数は0または1です。たとえば、「ab?c」は「abc」と「ac」に一致し、「A(123)?B」は「AB」と「A123B」に一致します。

+前のキャラクターまたはキャラクターのグループと一致し、一致時間は1回以上です。たとえば、「ab?c」は「abbbc」と「ac」に一致し、「A(123)?B」は「AB」と「A123123B」に一致します。

*前の文字または文字のグループと一致します。一致する回数が0回以上です。

\エスケープキャラクター

|「|」の前後の文字に一致します。たとえば、「(ABC)|(123)」は「ABC」または「123」に一致します。

4.DFE

DFE(Data Format Extensions)ファイル拡張子フォーマット。VuGenジェネレーターでは、さまざまな種類のデータレコードがサポートされています。ファイル形式の継続的な増加に伴い、VuGenジェネレーターはこれらの形式をサポートする必要があります。一部の形式は独自仕様でカスタムシリアル化を使用しますが、バイナリコードと一部のフォーマットされていないデータは理解が難しいため、VuGenが発生します。データフォーマット拡張機能(DFE)がデバイスに追加され、これらのフォーマットのデータを変換できるため、データをよりよく理解でき、データをパラメーターとして関連付けることもできます。

LoadRunnerでサポートされているデータ拡張フォーマットは次のとおりです。

4つの形式:Base64拡張機能、URL Encodin拡張機能、JSON拡張機能、およびXML検証機能拡張機能

詳細については、表を参照してください。

テーブルデータ拡張フォーマット

データ拡張の説明

Base64拡張機能はBase64エンコーディングをデコードします(Base64エンコーディングはネットワーク伝送で最も一般的に使用される8ビットバイトコードエンコーディング方法の1つです)

URL Encodin ExtensionはURLエンコーディングを解釈します(URLエンコーディングは、ブラウザがフォーム入力をパッケージ化するために使用する形式です)

JSON拡張機能はJSONデータを変換します(JSON(JavaScript Object Notation))は、軽量のデータ交換形式です。JavaScriptのサブセットに基づいています(標準ECMA-262第3版-1999年12月)。JSONは完全に言語に依存しないテキストを使用します。フォーマットしますが、C言語ファミリー(C、C ++、C#、Java、JavaScript、Perl、Pythonなどを含む)と同様の習慣を使用してXMLフォーマットに変換します

XML Validator Extensionはデータを受け入れ、データがXML構文に準拠しているかどうかを確認します。これにより、VuGenジェネレーターがxpathクエリを相互に関連付け、そのスナップショットをxmlビューに表示できます。

次の例のように:

iRetVal = web_reg_save_param_ex( "ParamName = newParam"、 "LB / IC = ll"、 "RB / BIN / RE = RR"、 "Ordinal = all"、 "SaveLen = -1"、 "DFEs = UrlEncoding"、SEARCH_FILTERS、 " Scope = body "、LAST); lr_output_message("戻り値=%d(%s)。 "、iRetVal、iRetVal == LR_PASS?" LR_PASS ":" LR_FAIL ");

注:DFE拡張データ機能を使用する必要がある場合は、[ランタイム設定]ダイアログボックスで[データ形式拡張を有効にする]チェックボックスを使用できるように設定する必要があります。

5.序数

Ordinalは、一致したコンテンツが表示される位置を示します。デフォルト値は1(一致するコンテンツを最初に見つけることを参照)です。このアイテムの値がAllに設定されている場合、キャッシュ内の検索が左右の境界を満たすことができることを意味します。見つかった結果をデータに保存します。1に設定されている場合、見つかった結果は変数に保存されます。

たとえば、検索するページのコンテンツは次のとおりです。

ブルースカイエア0008am $ 0ブルースカイエア0011pm $ 0ブルースカイエア0025pm $ 0ブルースカイエア00311pm $ 0

相関関数は次のとおりです。

web_reg_save_param_ex( "ParamName = WCSParam_Text1"、 "LB = outboundFlight value =" "、" RB =; "、" Ordinal = All "、SEARCH_FILTERS、LAST);

再生の結果を図に示します。

LoadRunnerパフォーマンステストシステム学習チュートリアル:スクリプトの関連機能の概要(7)
6.オフセットを保存

Save Offsetはオフセットを指します。左右の境界値を使用して適切な文字列の内容と一致させる場合、インターセプトする文字数を設定できます。デフォルト値は0、つまり最初の位置から始まります。たとえば、一致した文字列が「ソフトテスト」の場合、[オフセットの保存]が0に設定されていると、最初の桁からインターセプトされます。2に設定されていると、3番目の桁からインターセプトされます。つまり、一致した結果は「ft」として返されます。テスト」。

例:HTMLに「Astraon the TESTSERVER」という文字列があり、関連する関数は次のとおりです。

web_reg_save_param_ex( "ParamName = WCSParam_Text1"、 "LB = outboundFlight value =" "、" RB =; "、" Ordinal = 1 "、" SaveOffset = 2 "SEARCH_FILTERS、LAST);尽配的結果是「the」。

7.長さを保存

Save Lengthは、インターセプトされた文字列の長さを設定することを意味します。10に設定されている場合、一致した文字から10文字をインターセプトすることを意味します。デフォルト値は-1で、文字列の末尾に一致します。通常の状況では、SaveLengthプロパティはSaveOffsetプロパティと組み合わせて使用​​されます。

例:HTMLに「Astraon the TESTSERVER」という文字列があり、関連する関数は次のとおりです。

web_reg_save_param_ex( "ParamName = WCSParam_Text1"、 "LB = outboundFlight value =" "、" RB =; "、" Ordinal = 1 "、" SaveOffset = 0 "" SaveLen = 2 "、SEARCH_FILTERS、LAST);オン"。

8.フレームID

ページに複数のフレームがある場合、フレーム内のデータを一致させる必要がある場合は、特定のフレームを指定する必要があります。そうしないと、照会する必要のある値を正しく一致させることができません。フレームID番号を使用して、異なるフレームにアクセスするように指定でき、フレームIDが最も多くなります。次の例に示すように、7桁のみで構成できます。

テーブルフレームID

パラメータ説明

10.0.0.0.0.0.1

1.10.0.0.0.0.1.1

1.20.0.0.0.0.1.2

1.1.10.0.0.0.1.1.1

パート2

関連技術の古典的な使用

相関関数のパラメータについては、上記で詳しく説明します。本質的に、相関関数は検索関数です。端的に言えば、HTMLファイルの内容から必要な値を見つけて、変数または配列に保存することです。別の見方をすれば、実際、相関関数は、いくつかの変化する値に一致するだけでなく、いくつかの固定コンテンツに一致し、その後のビジネスで使用するためにデータグループに保存することもできます。これは、ビジネス処理でよく使用される相関関数の使用を拡張することです。

例:飛行機予約システムを例にとると、このようなビジネスを実現するために、出発都市と到着都市を選択した後、フライトを選択するときに、図に示すように最も安いフライトを選択する必要があるとします。
LoadRunnerパフォーマンステストシステム学習チュートリアル:スクリプトの関連機能の概要(7)

実装のアイデア:最初に関連する関数を使用してHTMLコードのチケット価格とフライト番号を読み取り、データの2つの部分を異なる配列に保存します。次に、チケット価格を比較し、配列内の最低運賃要素を見つけることを選択します。 、つまり、最も安いチケットが配置されているデータの下で、最後に、最も安いフライトである添え字の値に対応するフライト番号を読み取ります。

相関関数を使用して運賃とフライト番号を関連付ける前に、まず運賃とフライト番号の左右の境界値を分析する必要があります。フライト情報のHTMLソースコードは次のとおりです。

ブルースカイエア1008am $ 386ブルースカイエア1011pm $ 343ブルースカイエア1025pm $ 365ブルースカイエア10311pm $ 315

上記のソースコードを分析すると、運賃とフライト番号の左右の境界値を見つけることができます。運賃の左右の境界値は「center> $」と「」であり、フライトの左右の境界値は「outboundFlightvalue」です。 = "および"; "。

関連する関数のコードは次のとおりです

(関連付けにはweb_reg_save_paramまたはweb_reg_save_param_ex関数を使用できます):

web_reg_save_param関数を使用して関連付けます。関連付けられている運賃の関数のソースコードは次のとおりです。

web_reg_save_param( "WCSParam_Text1"、 "LB = center> $"、 "RB = </ TD>"、 "Ord = All"、 "RelFrameId = 1"、 "Search = Body"、 "IgnoreRedirections = Yes"、LAST);

フライト関連機能のソースコードは次のとおりです。

web_reg_save_param( "WCSParam_Text2"、 "LB = outboundFlight value ="、 "RB =;"、 "Ord = All"、 "RelFrameId = 1"、 "Search = Body"、 "IgnoreRedirections = Yes"、LAST);

web_reg_save_param_ex関数を使用して関連付けます。関連付けられている運賃の関数のソースコードは、次のとおりです。

web_reg_save_param_ex( "ParamName = fligthcost"、 "LB = center> $"、 "RB = </ TD>"、 "Ordinal = All"、SEARCH_FILTERS、LAST);

フライト関連機能のソースコードは次のとおりです。

web_reg_save_param_ex( "ParamName = fligthno"、 "LB = OutboundFlight value ="、 "RB =;"、 "Ordinal = All"、SEARCH_FILTERS、LAST);

注:すべての値を照合して配列に格納できるように、関連付けるときはOrdinalのプロパティを「All」に設定する必要があります。

左右の境界値を決めた後、全便の中で最も安い便を探す必要があります。全部で4便あるので、この4便の中から一番安い便を選ぶ必要があります。実現のアイデアは、運賃を想定してフラグを立てることです。保存されたデータグループの最後の要素の値が最大(フラグをフラグとして設定)になると、配列内の他の要素がフラグフラグと順番に比較されます。他の要素がフラグの値よりも小さい場合、フラグの値は現在の値に設定されます。配列インデックスに対応する値。実装されたコードは次のとおりです。

//最も高価なチケットを初期化し、最初のフライトチケットを最も高価な初期化されたチケットに設定しますmax = atoi(lr_eval_string( "{WCSParam_Text1_1}")); //フラグを初期化します。デフォルト設定は1flagno = 1; / / forループすべてのチケットfor(i = 2; i <= atoi(lr_eval_string( "{WCSParam_Text1_count}")); i ++){sprintf(cost、 "{WCSParam Text1%d}"、i); //最初のフライトを比較するチケットがmaxの値より大きいかどうか、maxの値が大きい場合は、maxを再割り当てしますif(atoi(lr_eval_string(cost))> max){max = atoi(lr_eval_string(cost)); flagno = i;}}

最も簡単なチケットを見つけたら、配列の添え字を取得できます。この配列の添え字に対応するフライトが最も安いフライトです。フライト番号を取得するためのコードは次のとおりです。

//フラグを使用してフライトsprintf(flightelem、 "{WCSParam Text2%d}"、flagno)を決定します; lr_save_string(lr_eval_string(flightelem)、 "flightno");

最も安い運賃とフライトを取得した後、送信された情報に2つの情報を入れて、クライアントリクエストとして送信します。具体的なコードは次のとおりです。

web_submit_data( "reservations.pl_3"、 "Action = http://127.0.0.1:1080/WebTours/reservations.pl","Method=POST","RecContentType=text/html","Referer=http://127.0 .0.1:1080 / WebTours / reserveds.pl "、" Snapshot = t24.inf "、" Mode = HTTP "、ITEMDATA、" Name = outboundFlight "、" Value = {flightno}; {flightnocost}; 2011年10月26日"、ENDITEM、" Name = numPassengers "、" Value = 1 "、ENDITEM、" Name = AdvanceDiscount "、" Value = 0 "、ENDITEM、" Name = sheetType "、" Value = Coach "、ENDITEM、" Name = SeatPref "、" Value = None "、ENDITEM、" Name = reservedFlights.x "、" Value = 57 "、ENDITEM、" Name = reservedFlights.y "、" Value = 13 "、ENDITEM、LAST); web_submit_data(" reservations。 pl_4 "、"Action = http://127.0.0.1:1080/WebTours/reservations.pl "、" Method = POST "、" RecContentType = text / html "、" Referer = http://127.0.0.1:1080 / WebTours / reservations。 pl "、" Snapshot = t25.inf "、" Mode = HTTP"、ITEMDATA、" Name = firstName "、" Value = test "、ENDITEM、" Name = lastName "、" Value = test "、ENDITEM、" Name = address1 "、" Value = "、ENDITEM、" Name = address2 " 、 "Value ="、ENDITEM、 "Name = pass1"、 "Value = test test"、ENDITEM、 "Name = creditCard"、 "Value ="、ENDITEM、 "Name = expDate"、 "Value ="、ENDITEM、 " Name = oldCCOption "、" Value = "、ENDITEM、" Name = numPassengers "、" Value = 1 "、ENDITEM、" Name = SeatType "、" Value = Coach "、ENDITEM、" Name = SeatPref "、" Value = None "、ENDITEM、" Name = outboundFlight "、" Value = {flightno}; {flightnocost}; 10/26/2011 "、ENDITEM、" Name = AdvanceDiscount "、" Value = 0 "、ENDITEM、" Name = returnFlight "、 "Value ="、ENDITEM、 "Name = JSFormSubmit"、 "Value = off"、ENDITEM、 "Name = .cgifields"、 "Value = saveCC"、ENDITEM、 "Name = buyFlights.x"、 "Value = 41"、ENDITEM、 "Name = BuyFlights.y "、" Value = 17 "、ENDITEM、LAST);

この例は、仕事で一般的に使用される可能性のある状況であり、相関関数は通常、ビジネスプロセスを改善するために使用されます。

PART3

関連付けとパラメーター化の違い

パラメータ化と相関の方法が詳細に紹介されていますが、多くの友人は2つの内容を混同しがちです。この記事では、2つの違いを詳しく紹介します。主な違いは次のとおりです。

1.データ処理のさまざまな方法

パラメータ化されたデータはクライアントからサーバーに送信され、アソシエーションはサーバーがクライアントに返すデータを取得する必要があります。パラメータ化中に、パラメータ化されたデータはweb_submit_dataを介してサーバーに送信されます。パラメータ化された戦略は、関連する設定オプションから取得されます。関連するデータは、サーバーからクライアントに返されます。これは、リクエストを送信するための検証情報のセットであるため、処理します。関連するデータは、サーバーから返された情報から取得する必要があります。

  1. 処理されたデータは確実ですか

パラメータ化されたデータはテストエンジニアによって認識されます。つまり、テストエンジニアは、ビジネスのニーズを満たすためにパラメータ化する必要のあるデータを知っています。パラメータ化に使用される特定のデータは、ビジネスのニーズと関連データの内容によって異なります。不明確であるため、左右の境界値でしか判断できません。パラメータ化されたデータは静的です。つまり、送信されたデータは静的に表すことができますが、関連するデータは動的です。つまり、それらの間の原則は完全に異なります。

おすすめ

転載: blog.51cto.com/14645850/2540939
おすすめ