この章では、OpenScript HTTPモジュールの設定および使用手順について説明します。このモジュールは、基礎となるHTTPプロトコル・トラフィックを自動化してWebベース・アプリケーションをテストします。
OpenScript HTTPモジュールは、http(s)プロトコルで通信するWebベース・アプリケーションの負荷テストをサポートするアプリケーション/プロトコル・モジュールです。OpenScriptでは、技術部門だけではなく非技術部門のテスターも簡単に使用できる柔軟性の高いスクリプティング・インタフェースを提供しています。コード・ビューおよびGUIビューの両方のインタフェースでスクリプトを作成できます。
HTTPモジュールは、HTTPプロキシの記録および再生機能を備えた、OpenScriptプラットフォームの拡張モジュールです。プロキシ・レコーダは、Webページのナビゲーションを自動的に取得し、ツリー・ビュー・ノードとして(コード・ビューの基礎となるコードとともに)スクリプトに記録します。また、HTTPナビゲーション用に追加のGUIスクリプト修正オプションも提供されています。
HTTPモジュールには2つの記録モードがあり、HTTP記録の詳細設定で指定できます。
Web: 選択すると、リクエストのWebモードのHTTPスクリプトJavaコードがスクリプト・レコーダで生成されます。このJavaコードは、HTTPモードより冗長ではなく、スクリプトのJavaコーディングが簡略化されます。HTTPモードと比較したWebモードの利点は、Webブラウザ・アプリケーションをテストする際に、スクリプトの作成が簡略化され、スクリプトが読み取りやすくなることです。Webモードは、HTTP経由で通信する任意のWebブラウザ・アプリケーションで使用できます。
HTTP: 選択すると、詳細なGETおよびPOSTリクエストを含む冗長なHTTPスクリプトJavaコードがスクリプト・レコーダで生成されます。これは、Webブラウザ・アプリケーションやHTTP経由で通信するその他のアプリケーションなどの、任意のHTTPアプリケーションで使用できます。バージョン9.20より前のOpenScriptのHTTPスクリプトでは、このモードが使用されます。
HTTPモジュールには、次の機能があります。
HTTPプロトコル・リクエストを記録し、再生を自動化します。リクエストは、Webブラウザ(IEなど)またはプラグイン(AJAX XMLHTTPなど)を通して収集できます。
HTTPスクリプトを再生して機能が適切かどうかを検証します。再生は、OpenScriptユーザー・インタフェースでインタラクティブに実行され、Oracle Load Testingエージェント(Javaエージェント)でもサポートされます。
統合されたフル・スクリプト・コード・ビューが提供されており、HTTPモジュールのスクリプトを生成できます。コマンドの例として、GETリクエスト、POSTリクエスト、相関の置換、検証を生成するメソッドがあります。HTTPモジュールには、追加のAPIが含まれており、HTTPプロトコルのコード・スクリプト作成がサポートされています。
ユーザーは、HTTPスクリプトへのユーザー入力をパラメータ化し、その入力データを外部データ・ファイル(データバンク)から取り込むことができます。
詳細設定インタフェースのHTTPカテゴリに含まれる特定のHTTPスクリプトに固有の追加オプション/設定項目が提供されています。
HTTPスクリプトの再生結果を結果ビューおよびコンソール・ビューに表示します。
HTTPモジュールを使用すると、ユーザーは記録されたナビゲーションと関連パラメータ(ヘッダー、POSTデータなど)のすべてをスクリプトGUIツリー・ビューまたはコード・ビューで表示および編集できます。また、動的ナビゲーションのデフォルト相関/パラメータ化を表示および編集したり、動的ナビゲーションを処理する独自の相関を適用することもできます。
ナビゲーション編集GUIビュー: パラメータ化するナビゲーションと適用する相関ルールを、ナビゲーション編集GUIビュー・インタフェースを通じて設定します。このGUIでは、様々なタイプのナビゲーション(Web/HTTPアプリケーションと非Web/HTTPアプリケーションの両方)とデータ入力を表示および編集できます。このGUIビューでは次のことが可能です。
記録されたナビゲーションの表示および編集: 記録されたナビゲーションとヘッダーなどのナビゲーション・パラメータが表示されます。また、ユーザーが動的パラメータのソース/ターゲットを含むナビゲーションを編集/追加/削除するためのメカニズムが用意されています。
相関ルール・ライブラリの表示および編集: モジュールに含まれるすべてのデフォルト相関ルールのリスト(アプリケーション・タイプ別)が表示されます。また、ユーザーが相関ルールを追加/編集/削除するためのメカニズムが用意されています。
ナビゲーション編集コード・ビュー・コマンド: ユーザーは、パラメータ化するナビゲーションと入力の取得元となるデータソースを、コード・ビューのナビゲーション編集コマンドを通じて指定できます。このコマンドは、ナビゲーション編集GUIビューにマップされます。
beginStep("[2] Home", 3266); { http.post(4, "http://testserver2/fmstocks/{{FORMACTION_0,default.asp}}", null, http.postdata(http.param("login", "{{INPUT_0,ta616}}"), http.param("password", "{{INPUT_1,ta}}"), http.param("LoginButton", "{{INPUT_2,Login}}")), null, true, "ASCII", "ASCII"); { http.solveXpath("LINK_1_3", ".//A[text()='research a company'] /@href", "TickerList.asp", 0); http.solveXpath("LINK_1_2", ".//A[text()='Logout'] /@href", "logout.asp", 0); } } endStep();
相関の詳細設定をするには:
OpenScriptを起動します。
「ビュー」メニューから「OpenScript 詳細設定」を選択します。
「OpenScript」ノード配下の相関および検証カテゴリを開きます。
「HTTP」を選択します。
定義されたルールのチェック・ボックスを選択または選択解除します。
「ライブラリの追加」、「ルールの追加」または「ルールの編集」を選択してカスタム相関ルールを定義します。
「OK」をクリックします。
「相関ルール」の詳細設定で「ライブラリの追加」を選択すると、「ライブラリの追加」ダイアログ・ボックスが開きます。このダイアログ・ボックスでは、記録されたスクリプトURLと関連パラメータ(ヘッダー、POSTデータなど)の動的データを、スクリプト再生エンジン(OpenScriptまたはOracle Load Testing)で認識される変数名に変換するための新規相関ライブラリを指定できます。このダイアログ・ボックスには次のオプションがあります。
名前: 相関ライブラリの名前を指定します。ライブラリを定義したら、「ルールの追加」ボタンを使用して、ライブラリに含めるルールを指定できます。名前は必須です。「ルールのコピー」を選択して、既存ライブラリから相関ルールをコピーすることもできます。
既存のライブラリからルールをコピー: 既存ライブラリから新規ライブラリに相関ルールをコピーできます。
ルールのコピー: 選択すると、既存の相関ルール・ライブラリのリストが有効化され、コピーが可能になります。
ライブラリ: コピーできる相関ルール・ライブラリが一覧表示されます。
「相関ルール」の詳細設定で「ルールの追加」または「ルールの編集」を選択すると、「ルールの追加」または「ルールの編集」ダイアログ・ボックスが開きます。このダイアログ・ボックスでは、記録されたスクリプトURLと関連パラメータ(ヘッダー、POSTデータなど)の動的データを、スクリプト再生エンジン(OpenScriptまたはOracle Load Testing)で認識される変数名に変換するための相関ルールを指定または編集できます。このダイアログ・ボックスには次のオプションがあります。
タイプ: 相関ルールのタイプを指定します。「ソース」および「対象」の使用可能なオプションは、ルール・タイプによって変わります。次のルール・タイプがあります。
クライアント Set Cookie: 動的データを持つWebページのCookieオブジェクトが自動的に変換されます。
Cookie ヘッダーの相関: 動的データを持つWebページのCookieヘッダー・オブジェクトが自動的に変換されます。
ヘッダーの相関: 動的データを持つWebページのヘッダー・オブジェクトが自動的に変換されます。
Referer ヘッダーの相関: 動的データを持つWebページのRefererヘッダー・オブジェクトが自動的に変換されます。
DOM 相関: 動的データを持つWebページのドキュメント・オブジェクト・モデル (DOM)オブジェクトが自動的に変換されます。
関数/テキスト 置換: 特定のパラメータを置換するユーザー定義関数を指定できます。
JavaセッションID: JavaセッションIDオブジェクトが自動的に変換され、IDを変数値に置換します。
記録日時の置換: 日時パラメータを検索して変数値に置換する正規表現パターンを指定できます。
タイトル検証: 各ページに追加するタイトル検証テストのタイプを指定できます。
変数置換: 特定のパラメータを検索して変数値に置換する正規表現パターンを指定できます。
名前: 相関ルールの名前を指定します。名前は必須です。
次の項では、ルールのタイプについて説明します。
「クライアント Set Cookie」を選択した場合、「ソース」と「対象」では次のオプションが示されます。
ソース: 常にCookieです。
対象: 変換の対象位置として使用するドキュメント・オブジェクトを示します。
すべての場所の置換: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。
指定した場所の置換: 選択すると、「場所」条件に一致するオブジェクトにのみ相関ルールが適用されます。
場所: 正規表現を使用した相関ルールを適用するCookieパラメータを示します。(たとえば、後述の「「変数置換」ルール」を参照。)
「Cookie ヘッダーの相関」を選択した場合、「ソース」と「対象」では次のオプションが示されます。
ソース: 常にCookieヘッダーです。
対象: 変換の対象位置として使用するドキュメント・オブジェクトを示します。
すべての場所の置換: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。
指定した場所の置換: 選択すると、「場所」条件に一致するオブジェクトにのみ相関ルールが適用されます。
場所: 正規表現を使用した相関ルールを適用するCookieパラメータを示します。(たとえば、後述の「「変数置換」ルール」を参照。)
「ヘッダーの相関」を選択した場合、「ソース」と「対象」では次のオプションが示されます。
ソース: 常にWebページ・ヘッダーです。
対象: 変換の対象位置として使用するヘッダー・オブジェクトを示します。
すべての場所の置換: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。
指定した場所の置換: 選択すると、「場所」条件に一致するオブジェクトにのみ相関ルールが適用されます。
場所: 正規表現を使用した相関ルールを適用するヘッダー・パラメータを示します。(たとえば、後述の「「変数置換」ルール」を参照。)
「Referer ヘッダーの相関」を選択した場合、「ソース」と「対象」では次のオプションが示されます。
ソース: 常にWebページのRefererヘッダーです。
対象: 変換の対象位置として使用するRefererヘッダー・オブジェクトを示します。
すべての場所の置換: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。
指定した場所の置換: 選択すると、「場所」条件に一致するオブジェクトにのみ相関ルールが適用されます。
場所: 正規表現を使用した相関ルールを適用するRefererヘッダー・パラメータを示します。(たとえば、後述の「「変数置換」ルール」を参照。)
「DOM 相関」ルールを選択した場合、「ソース」と「対象」では次のオプションが示されます。
ソース: 動的データとして置換するドキュメント・オブジェクトを示します。
Links: 選択すると、動的データを持つWebページ・リンク・オブジェクトが自動的に変数値に変換されます。
Action: 選択すると、動的データを持つWebページ・アクション・オブジェクトが自動的に変数値に変換されます。
Input: 選択すると、動的データを持つWebページ入力オブジェクトが自動的に変数値に変換されます。
TextArea: 選択すると、動的データを持つWebページTextAreaオブジェクトが自動的に変数値に変換されます。
JavaScript: 選択すると、動的データを持つWebページJavaScriptオブジェクトが自動的に変数値に変換されます。
Frame: 選択すると、動的データを持つWebページFrameオブジェクトが自動的に変数値に変換されます。
Option: 選択すると、動的データを持つWebページOptionオブジェクトが自動的に変数値に変換されます。
XMLテキスト: 選択すると、動的データを持つXMLページが自動的に変数値に変換されます。
対象: 変換の対象位置として使用するRefererヘッダー・オブジェクトを示します。
すべての場所の置換: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。
指定した場所の置換: 選択すると、「場所」条件に一致するオブジェクトにのみ相関ルールが適用されます。
場所: 正規表現を使用した相関ルールを適用するWebページ・オブジェクト/パラメータを示します。(たとえば、後述の「「変数置換」ルール」を参照。)
「関数/テキスト 置換」ルールを選択した場合、「ソース」と「対象」では次のオプションが示されます。
ソース: 動的データのかわりに使用する関数名またはテキストを示します。
関数/テキスト: ソース位置の検索に使用する関数の名称を示します。次の関数を使用できます。
{{@decode({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@decode({{myVariable}})}}
に置換します。値は、対象正規表現で指定されているエンコードされたテキスト文字列です。
{{@decrypt({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@decrypt({{myVariable}})}}
に置換します。値は、対象正規表現で指定されている暗号化されたテキスト文字列です。
{{@deobfuscate({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@deobfuscate({{myVariable}})}}
に置換します。値は、対象正規表現で指定されている隠されたテキスト文字列です。
{{@encode({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@encode({{myVariable}})}}
に置換します。値は、対象正規表現で指定されているテキスト文字列です。
{{@encrypt({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@encrypt({{myVariable}})}}
に置換します。値は、対象正規表現で指定されているテキスト文字列です。
{{@file({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@file({{myVariable}})}}
に置換します。値は、myVariableで指定されたファイルに格納されているテキスト文字列、または{{@file(c:\\OpenScript_Sample.txt)}}
などのハードコードされたパスです。
{{@getAndIncrement({{myVariable}},delta)}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@getAndIncrement({{myVariable}},
delta
)}}
に置換します。値は、対象正規表現で指定されている数値です。delta
は、値が毎回増分される量です。
{{@hostip}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@hostip}}
に置換します。値は、ホストIPアドレスです。
{{@hostname}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@hostname}}
に置換します。値は、ホスト名です。
{{@iterationnum}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@iterationnum}}
に置換します。値は、スクリプト再生反復数です。
{{@jstr({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@jstr({{myVariable}})}}
に置換します。値は、16進表記の長さ値を表すシリアライズされたJava文字列に、myVariable
に格納された文字列を続けたもので、¥00¥09var_value
の形式を取ります。
{{@len({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@len({{myVariable}})}}
に置換します。値は、myVariable
に格納されている文字列の長さです。
注意: jstr 関数、@file 関数、@len 関数の場合、myVariable はhttp.solve メソッドまたはhttp.solveXpath メソッドを使用して定義されたOpenScriptスクリプト変数です。変数名は、二重の{{ }} カッコで囲み、関数の丸カッコの中に入れる必要があります。次に例を示します。
|
{{@obfuscate({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@obfuscate({{myVariable}})}}
に置換します。値は、対象正規表現で指定されているテキスト文字列です。
{{@random(max)}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@random(
max
)}}
に置換します。値は、対象正規表現で指定されている数値です。デフォルトの最小値は0です。max
は、ランダム数値の最大値制限です。生成されるランダム数値は、均一に分散された0 (以上)とmax (未満)値の間の疑似ランダム整数値で、このランダム数値ジェネレータのシーケンスから得られます。たとえば、{{@random(2)}}
では、0(以上)と2(未満)の間の数値が返されます。ランダム値は、式randomValue = min + m_random.nextInt(max - min)
から得られる整数です。m_random.nextInt
ではjava.util.Random.nextInt
メソッドが使用されます。
{{@random(min,max)}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@random(
min
,
max
)}}
に置換します。値は、対象正規表現で指定されている数値です。min
は、ランダム数値の最小値制限です。max
は、ランダム数値の最大値制限です。生成されるランダム数値は、均一に分散されたmin
(以上)値とmax
(未満)値の間の疑似ランダム整数値で、このランダム数値ジェネレータのシーケンスから得られます。たとえば、{{@random(1,4)}}
では、1(以上)と4(未満)の間の数値が返されます。ランダム値は、式randomValue = min + m_random.nextInt(max - min)
から得られる整数です。m_random.nextInt
ではjava.util.Random.nextInt
メソッドが使用されます。
{{@sessionname}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@sessionname}}
に置換します。値は、スクリプト再生セッション番号です。
{{@timestamp}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@timestamp}}
に置換します。タイムスタンプ値は、現在の時刻と1970年1月1日午前0時(UTC)との差であり、単位はミリ秒です。
{{@timestampsecs}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@timestampsecs}}
に置換します。値は、ミリ秒ではなく秒単位の現在のタイムスタンプです。
{{@today(MM/dd/yyyy)}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@today(MM/dd/yyyy)}}
に置換します。値は、月/日/年の形式で表した現在の日付です。
{{@topLevelStepName}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@topLevelStepName}}
に置換します。値は、トップ・レベルのステップ・グループ名です。
{{@urlEncode({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@urlEncode({{myVariable}})}}
に置換します。値は、対象正規表現で指定されているテキスト文字列です。たとえば、'the file "abc" is in ¥root¥etc'という文字列は、「the+file+%22abc%22+is+in+%5Croot%5Cetc」のようにエンコードされます。
{{@vuid}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@vuid}}
に置換します。値は、対象正規表現で指定されている仮想ユーザーIDです。
{{@xmlDecode({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@xmlDecode({{myVariable}})}}
に置換します。値は、対象正規表現で指定されているエンコードされたテキスト文字列です。
{{@xmlEncode({{myVariable}})}}
: 指定された対象正規表現を使用してソースを検索し、データをスクリプト変数{{@xmlEncode({{myVariable}})}}
に置換します。値は、対象正規表現で指定されているテキスト文字列です。
対象: 変換の対象位置として使用するRefererヘッダー・オブジェクトを示します。
すべての場所の置換: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。
指定した場所の置換: 選択すると、「場所」条件に一致するオブジェクトにのみ相関ルールが適用されます。
場所: 正規表現を使用した相関ルールを適用するWebページ・オブジェクト/パラメータを示します。(たとえば、後述の「「変数置換」ルール」を参照。)
JavaセッションIDを選択した場合、「ソース」と「ターゲット」では次のオプションが示されます。
ソース: JavaセッションIDの置換として使用する属性を指定します。
変数名: 動的データのかわりに使用する変数の名称を示します。
パターン: 置き換える動的データを検出するのに使用する正規表現を指定します。JavaセッションIDの正規表現パターンjsessionid=(.+?)(?:"|&)
のHTMLソースを検索し、変数名http.jsessionid
と置き換えます。
結果索引: 「パターン」で複数の結果が返された場合、取得する特定の結果を定義する0ベースのインデックス値を指定します。
エラー・メッセージ: 再生時にソース・データが見つからない場合にレポートするエラー・メッセージを示します。
ソース: 置換する動的データの検索場所を示します。「HTML 表示コンテンツ」、「HTML ソース」または「レスポンス ヘッダー」です。
エンコーディング: 検索およびタイプにエンコードを使用するかどうかを示します。
対象: 変換の対象位置として使用するオブジェクトを指定します。
すべての場所の置換: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。
指定した場所の置換: 選択すると、「場所」条件に一致するオブジェクトにのみ相関ルールが適用されます。
場所: 正規表現を使用した相関ルールを適用するWebページ・オブジェクト/パラメータを示します。(たとえば、後述の「「変数置換」ルール」を参照。)
「記録日時の置換」を選択した場合、「ソース」と「対象」では次のオプションが示されます。
ソース: 動的データのかわりに使用する属性を示します。
属性名: 内部使用のみを目的とし、valueにのみ設定します。
日付パターン: 日付パターンをM/dd/yyyyの形式で指定します。日付パターンは、標準のJava日付フォーマット文字列規則に準拠します。スクリプトの相関処理中に、ナビゲーションが記録された時間は指定された日付パターンを使用した日付に変換されます。現在の日付がリクエストにあった場合は、{{@today(date_pattern)}}
に置換されます。
対象: 変換の対象位置として使用するドキュメント・オブジェクトを示します。
すべての場所の置換: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。
指定した場所の置換: 選択すると、「場所」条件に一致するオブジェクトにのみ相関ルールが適用されます。
場所: 正規表現を使用した相関ルールを適用するRefererヘッダー・パラメータを示します。(たとえば、後述の「「変数置換」ルール」を参照。)
「タイトル検証」を選択した場合、「ソース」と「ターゲット」では次のオプションが示されます。
ソース: 各ページに追加するタイトル検証テストのタイプを指定します。「検証のみ、失敗なし」を選択した場合、タイトル検証テストでは、検証のみを行い、テストが失敗すると警告をレポートするタイトル検証テストは失敗しません。「検証のみ、失敗なし」を選択解除した場合、タイトル検証テストは、テストが失敗すると失敗をレポートするタイトル検証テストになります。
対象: 変換の対象位置として使用するドキュメント・オブジェクトを示します。
すべての場所の置換: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。
指定した場所の置換: 選択すると、「場所」条件に一致するオブジェクトにのみ相関ルールが適用されます。
場所: 正規表現を使用した相関ルールを適用するRefererヘッダー・パラメータを示します。(たとえば、後述の「「変数置換」ルール」を参照。)
「変数置換」ルールを選択した場合、「ソース」と「対象」では次のオプションが示されます。
ソース: 動的データのかわりに使用する属性を示します。
変数名: 動的データのかわりに使用する変数の名称を示します。
パターン: 置き換える動的データを検出するのに使用する正規表現を指定します。
エラー・メッセージ: 再生時にソース・データが見つからない場合にレポートするエラー・メッセージを示します。
ソース: 置換する動的データの検索場所を示します。「HTML 表示コンテンツ」、「HTML ソース」または「レスポンス ヘッダー」です。
エンコーディング: 検索およびタイプにエンコードを使用するかどうかを示します。
対象: 変換の対象位置として使用するRefererヘッダー・オブジェクトを示します。
すべての場所の置換: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。
指定した場所の置換: 選択すると、「場所」条件に一致するオブジェクトにのみ相関ルールが適用されます。
場所: 正規表現を使用した相関ルールを適用するWebページ・オブジェクト/パラメータを示します。正規表現を指定して、相関処理される変数に置換できる対象リクエストの部分を絞り込みます。URL、問合せ文字列またはPOSTデータ全体またはその一部を置換できます。((.+?))
を使用して、変数を置換する必要がある箇所を示します。
式は、特定の名前と値のペアに変数を代入する際に使用できます。たとえば、セッションIDをPOSTデータPost Data: sessionId=123456&color=blue
に代入するには、次のようにします。
sessionId=((.+?))
式を指定します。
相関ルールの変数がページにあり、その値が123456と一致する場合、前述の式を使用します。これにより、POSTデータはsessionId={{correlationRuleVariableName,123456}}&color=blue
のようになります。
名前と値のペアがURLエンコードされてPOSTデータまたは問合せ文字列に表示されている場合、式をURLエンコードしないでください。たとえば、"file/folder"パラメータをPOSTデータPost Data: file%2Ffolder=folderXYZ%2FfileABC&session=ABC%2FDEF
に代入するには、次のようにします。
file/folder=((.+?))
式を指定します。
変数をURLエンコードされていないPOSTデータまたは問合せ文字列に代入する場合、式はURLエンコードしないでください。たとえば、エンコードされていないXML POSTデータPost Data: <xml><session id="12345"/></xml>
の"id"値を代入するには、次のようにします。
<session id="((.+?))"/>
式を指定します。
相関ルールの変数がページにあり、その値が12345と一致する場合、前述の式を使用します。これにより、POSTデータ全体は<xml><session id="{{correlationRuleVariableName,12345}}"/></xml>
のようになります。
URLエンコードされたName=Valueのペアに変数を代入する場合、式をURLエンコードします。たとえば、URLエンコードされた問合せ文字列データQuery String: file=root%2Fdata.txt&sessionId=123%2Fxyz&color=blue
の最初のパラメータ以外すべてを1つの値と置換するには、次のようにします。
file=root%2Fdata.txt((.+?))
式を指定します。
相関ルールの変数がページにあり、その値が"&sessionId=123%2Fxyz&color=blue"
と一致する場合、前述の式を使用します。これにより、問合せ文字列全体は次のようになります。
file=root%2Fdata.txt{{correlationRuleVariableName,&sessionId=123%2Fxyz&color=blue}}
OpenScript HTTPモジュールは、Webアプリケーションの各ページで定義されたパラメータをスクリプトに記録します。この記録は、Webページのパラメータにデータバンク・ファイルからの値を代入して再生することができます。
HTTPモジュールは、Webブラウザで生成されたHTTPプロトコル・リクエストを記録することで、再生を自動化します。HTTPレコーダは、Webブラウザ・イベントを記録して再生の相関を可能にします。再生の相関により、ユーザーはナビゲーション(リンクxのクリックから生成された動的GETリクエスト)を生成したGUIイベントの知識に基づいて、動的HTTPリクエストを相互に関連付けることができます。HTTPモジュールには記録ツールバー・ボタンがあり、ユーザーはこれを使用してHTTPプロキシ・レコーダを開始し、Webページ・ナビゲーションをスクリプト・ビューに取得することができます。記録ツールバーには、記録の開始と停止のボタンがあります。
HTTPスクリプトを記録する前に、HTTP記録の詳細を設定します。
OpenScriptを起動します。
「ビュー」メニューから「OpenScript 詳細設定」を選択します。
「OpenScript」ノードを開き、次に「記録」カテゴリを開きます。
「HTTP」を選択します。
タブをクリックして、詳細を設定します。記録詳細設定の説明は、2.5.2項「HTTPの詳細設定」を参照してください。
完了後、「OK」をクリックします。
新規HTTPスクリプトを作成する場合は、基本的にスクリプトを記録します。
OpenScriptを起動します。
まだ設定していない場合は、HTTPの記録詳細設定を設定します。
「ファイル」メニューから「新規」を選択します。
「負荷テスト (プロトコル自動化)」ノードを開き、「Web/HTTP」を選択します。
「次へ」をクリックします。
リポジトリとワークスペースを選択します。
スクリプト名を入力します。
「終了」をクリックします。新規スクリプト・ツリーがスクリプト・ビューに作成されます。
「スクリプト」メニューから「記録」を選択するか、「記録」ツールバー・ボタンの矢印をクリックして「プロキシ・レコーダ」を選択します。
HTTP記録の詳細設定でいつも新しいブラウザを起動するオプションを設定している場合、HTTPプロキシ・レコーダで記録を開始すると、ブラウザが自動的に開きます。いつも新しいブラウザを起動するオプションを設定していない場合、ブラウザを手動で開く必要があります。
記録を開始するWebページをブラウザにロードします。
ページ・ナビゲーションを記録するWebサイトにアクセスします。ページ・ナビゲーションは、「記録セクション指定」設定で指定したスクリプト・ツリーのノード(デフォルトは「Run」ノード)に追加されます。
ページのナビゲーションが終了したら、「スクリプト」メニューから「停止」を選択するか、OpenScriptツールバーで「停止」ボタンをクリックしてスクリプトを停止します。
HTTPの記録詳細設定で「記録停止時にブラウザを閉じる」オプションを設定している場合、記録を停止するとブラウザが自動的に閉じます。「記録停止時にブラウザを閉じる」オプションを設定していない場合、ブラウザを手動で閉じる必要があります。
スクリプトのノードを開いて、スクリプト・ツリーのページ・ナビゲーション・ノードを表示します。
特定のテスト要件実現のために、メニュー・オプションまたはコード・ビューを使用してスクリプトをカスタマイズすることができます。
注意: 記録中またはスクリプトの再生中に、スクリプト・エディタ・ビューまたはスクリプト・プロジェクトを閉じないでください。閉じると、OpenScriptアプリケーションで予期しない動作が発生する場合があります。
HTTPスクリプトを記録したら、再生して機能が適切かどうかを検証します。再生は、OpenScriptユーザー・インタフェースでインタラクティブに実行され、Oracle Load Testingでもサポートされます。
HTTPモジュールには再生ツールバー・ボタンと反復ツールバー・ボタンがあり、ユーザーはこれらを使用してHTTPスクリプトの再生を開始することができます。再生は、スクリプトを通じて一度のみ行うか、データバンク・ファイルのデータを使用して何度も反復することが可能です。HTTPスクリプトの再生結果は、「結果」ビューと「コンソール」ビューで確認できます。
スクリプトを再生する前に、再生の詳細を設定する必要があります。
OpenScriptを起動します。
「ビュー」メニューから「OpenScript 詳細設定」を選択します。
「OpenScript」ノードを開き、「再生」カテゴリを選択します。
「HTTP」を選択します。
グループを開いて、詳細を設定します。再生詳細設定の説明は、2.4.5項「HTTPの詳細設定」を参照してください。
完了後、「OK」をクリックします。
HTTPスクリプトを記録したら、再生できるようになります。
OpenScriptを起動します。
再生するHTTPスクリプトを開きます。
「スクリプト」メニューの「再生」を選択するか、ツールバーのボタンをクリックします。
コンソール・ビューでスクリプト再生の進捗状況を確認できます。結果ビューでスクリプト再生の結果を確認できます。
詳細は「スクリプト再生結果の表示」を参照してください。
OpenScriptでは、スクリプトのナビゲーションを繰り返し再生できます。反復は、データバンクの有無にかかわらず実行可能です。
OpenScriptを起動します。
再生するHTTPスクリプトを開きます。
4.2.1項「データバンクの設定」の説明に従って、データバンクを使用するようにスクリプトを設定します。
「データバンクの使用」を選択します。
スクリプトに複数のデータベースが設定されている場合には、設定を指定するデータバンク・ファイルを選択します。
データバンク・ファイルの設定を指定します。
再生を停止する反復数のオプションを選択し、任意の再生の反復回数を指定します。反復設定の詳細は、4.2.4項「スクリプトの反復再生」を参照してください。
「OK」をクリックします。
コンソール・ビューでスクリプト再生の進捗状況を確認できます。結果ビューでスクリプト再生の結果を確認できます。
HTTPスクリプトの再生結果を表示するには、次のステップを実行します。
OpenScriptを起動します。
再生するHTTPスクリプトを開きます。
「スクリプト」メニューの「再生」を選択するか、ツールバーのボタンをクリックします。
再生が終了したら、結果ビューをクリックします。必要に応じて、「ビュー」メニューから「結果」を選択して結果ビューを表示します。
「名称」列で、結果ノードを開いて結果を表示します。
結果ビューでスクリプトの結果ノードを選択すると、詳細ビューで特定のナビゲーション結果が表示されます。必要に応じて、「ビュー」メニューから「詳細」を選択し、詳細ビューを開きます。
詳細ビューには、ブラウザでレンダリングされたコンテンツ、HTMLソース、リクエストおよびレスポンス・ヘッダーを表示するタブと、コンテンツ、リクエストおよびレスポンス・ヘッダー、Cookie、リソースに関する再生詳細を比較する比較タブがあります。
結果ビューでトップ・レベルのスクリプト結果をクリックすると、詳細ビューで「結果レポート」が表示されます。レポートを表示し、レポートのHTMLファイルをエクスポートすることができます。
「エンコーディングのリセット」メニュー・オプションでは、記録されたHTMLの表示に使用する文字セットを変更できます。このオプションを使用して、英語以外のWebサイトで正しい文字エンコードが自動的に設定されない場合にエンコードをリセットします。
エンコードをリセットするには、次のようにします。
OpenScriptを起動します。
HTTPスクリプトを開きます。
HTTPスクリプトを開いて、ナビゲーション・ノードを選択します。
ナビゲーション・ノードを右クリックし、ショートカット・メニューから「エンコーディングのリセット」を選択します。
記録されたHTMLページのエンコーディング値を入力し、「OK」をクリックします。
HTTPスクリプトの再生結果を、記録されたナビゲーションと比較するには、次のようにします。
OpenScriptを起動します。
テスター・パースペクティブに切り替えて、詳細ビューが開かれていることを確認します。開かれていない場合は、「ビュー」メニューから「詳細」を選択し、詳細ビューを開きます。
再生するHTTPスクリプトを開きます。
「スクリプト」メニューの「再生」を選択するか、ツールバーのボタンをクリックします。
再生が終了したら、結果を表示します。必要に応じて、「ビュー」メニューから「結果」を選択して結果ビューを表示します。
「名称」列で、結果ノードを開いて結果を表示します。
「名称」列で、ページのナビゲーション・ノードをクリックします。
詳細ビューで「比較」タブをクリックします。
「比較」タブで、コンテンツ、リクエスト・ヘッダーまたはレスポンス・ヘッダーを選択して、下部のペインに比較対象の記録されたテキストと再生テキストを表示します。
記録すると、Oracle Load TestingでHTTPスクリプトを再生できます。
OpenScriptとOracle Load Testingが同じマシン上にある場合:
Oracle Load Testingを起動します。
OpenScriptスクリプトが配置されているリポジトリとワークスペースを選択します。
再生するスクリプトを選択します。
「ユーザー モード」を「Java クライアント」に設定します。
テストに必要なシナリオ・パラメータを設定します。
オートパイロット・モードでシナリオを実行します。
OpenScriptとOracle Load Testingが別のマシン上にある場合:
「ファイル」メニューから「スクリプトのエクスポート」を選択します。
Zipファイルにエクスポートする追加ファイルを選択し、「OK」をクリックします。
エクスポートしたZipファイルをOracle Load Testingのマシンにコピーします。
Oracle Load Testingを起動します。
「ツール」メニューから「ファイルのアップロード」を選択します。
「OpenScript ZIP」をファイル・タイプとして選択します。
エクスポートされたOpenScript Zipファイルの名前と場所を入力します。
OpenScriptスクリプトがアップロードされるリポジトリとワークスペースを選択します。
「アップロード」をクリックして、ファイルをアップロードします。
「シナリオの作成」タブで、再生するスクリプトを選択します。
「ユーザー モード」を「Java クライアント」に設定します。
テストに必要なシナリオ・パラメータを設定します。
オートパイロットでシナリオを実行します。
注意: データバンク・ファイルなどの外部ファイルは、Oracle Load Testingで使用可能である必要があります(スクリプト・ファイルで指定されたパスに配置します)。
バイナリまたはXMLファイル・データを転送するには、次のようにします。
「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。
Javaコード・ビューを開きます。
次のコードを使用して、データを転送するバイナリ・データ変数およびhttp.navigate()
メソッドを指定します。
byte[] data = oracle.oats.utilities.FileUtil.readBytesFromFile("c:\\image.jpg"); http.navigate(0, "http://www.mysite.com/", null, data, null, true);
XMLファイルについても、同様に実行できます。
byte[] data = oracle.oats.utilities.FileUtil.readBytesFromFile("c:\\file.xml"); http.navigate(0, "http://www.mysite.com/", null, data, null, true);
バイナリまたはXMLファイルをスクリプト内に格納する場合:
開発者パースペクティブに切り替えます。
ナビゲータ・ビューで、"resources"という名前のスクリプト・プロジェクト内にフォルダを作成します。
新規の"resources"フォルダにjpgまたはXMLファイルを追加します。
上記のコード・サンプルの最初の行を、次のように変更します。
byte[] data = getScriptPackage().getResourceFile("resources/yourfile.jpg").getData();
ファイルをスクリプトとともにローカルに保存すると、Oracle Load Testingを介してリモート・エージェント・マシンで実行されていても、エージェントはファイルを常に使用できます。
スクリプトを作成あるいは記録したら、テスト上の必要に応じてスクリプトに変更を加え、カスタマイズすることができます。
HTTPプロキシによって記録されたスクリプトのデフォルト表示は、スクリプト・ビューのツリー・ビューGUIです。HTTPレコーダは、OpenScriptで設定されたステップ・グループ詳細設定に基づいてツリー・ビューおよびコードを生成します。デフォルトのステップ・グループ設定では、HTTP Webアプリケーションのページ・ナビゲーションに基づいてステップ・グループが生成されます。
各ナビゲーションの下には、問合せストリングやフォーム・アクション入力などページ・ナビゲーションに関する追加情報のための子ノードがあります。右クリックのショートカット・メニューには、HTTPモジュールで生成されたスクリプトに固有の追加のスクリプト変更オプションが含まれます。ツリー・ビューは、コード・ビューの基礎コードをグラフィカルに表現したものです。たとえば、上のツリー・ビューの「Page [4] Ticker List」はステップ・グループとして表示されていますが、コード・ビューでは次のようにhttp.get
メソッド・コードとして表示されます(わかりやすいように改行とスペースが追加されています)。
beginStep("[4] Ticker List", 3422); { http.get(6, "http://testserver2/fmstocks/{{LINK_1_3,TickerList.asp}}", http.querystring(http.param("ticker", "ter"), http.param("company", "")), null, true, "ASCII", "ASCII"); } endStep();
ツリー・ビューで行われた変更は、コード・ビューで自動的に更新されます。コード・ビューで行われた変更は、ツリー・ビューで自動的に更新されます。HTTPモジュールには、HTTPプロトコル固有のメソッドを持つAPIが組み込まれています。コマンドには、GETリクエスト、POSTリクエスト、相関置換、検証などを生成するメソッドが含まれています(他のメソッドもあります)。
OpenScriptスクリプトでは、ナビゲーション間の動的データの受渡しに変数が使用されます。ナビゲーションは、ステップ・グループまたは別のコード・シーケンスに含まれます。ツリー・ビューと「スクリプト」メニュー・オプションを使用してカスタム変数をスクリプトに追加するか、コード・ビューを使用してカスタム変数を手動でコーディングすることができます。記録時には、HTTPプロキシ・レコーダでも変数が定義されます。次の例は、HTTPプロキシ・レコーダのデフォルト設定によって、フォーム入力とリンクのステップ・グループ、ナビゲーションおよび変数がどのように記録されるかを示しています。
スクリプトは3つのページからなるスクリプトです。最初のページはログイン・ページです。2番目のページはログイン後に返されるページで、他のページへのリンクが含まれています。スクリプト内のページは、リンクをクリックしたときに返されるページです。
ステップ・グループ1 (beginStep("[1] Stocks", 0);
)では、ページ・ナビゲーションとフォーム入力パラメータが取得されます。http.solveXpath
メソッドは、XPath (たとえば".//INPUT[@name='login']/@value"
)を使用して入力値をスクリプト変数に割り当て、ページ・ソース内の入力値を検索します。
beginStep("[1] Stocks", 0); { http.get(2, "http://testserver2/fmstocks/", null, null, true, "ASCII", "ASCII"); { http.solveXpath("FORMACTION_0", ".//FORM[@name='loginform']/@action", "default.asp", 0); http.solveXpath("INPUT_0", ".//INPUT[@name='login']/@value", "ta496", 0); http.solveXpath("INPUT_1", ".//INPUT[@name='password']/@value", "ta", 0); http.solveXpath("INPUT_2", ".//INPUT[@name='LoginButton']/@value", "Login", 0); } } endStep(); beginStep("[2] Home", 3246); { http.post(4, "http://testserver2/fmstocks/{{FORMACTION_0,default.asp}}", null, http.postdata(http.param("login", "{{INPUT_0,ta496}}"), http.param("password", "{{INPUT_1,ta}}"), http.param("LoginButton", "{{INPUT_2,Login}}")), null, true, "ASCII", "ASCII"); { http.solveXpath("LINK_1_3", ".//A[text()='research a company']/@href", "TickerList.asp", 0); } } endStep(); beginStep("[3] Ticker List", 1703); { http.get(13, "http://testserver2/fmstocks/{{LINK_1_3,TickerList.asp}}", null, null, true, "ASCII", "ASCII"); } endStep();
ステップ・グループ2 (beginStep("[2] Home", 3264);
)では、ページ・ナビゲーションがステップ・グループ1で定義された変数を使用して、データ値をパラメータとしてhttp.post
メソッドに渡します。http.solveXpath
メソッドは、XPathを使用してリンクのHREF値を変数に割り当てます。
beginStep("[1] Stocks", 0); { http.get(2, "http://testserver2/fmstocks/", null, null, true, "ASCII", "ASCII"); { http.solveXpath("FORMACTION_0", ".//FORM[@name='loginform']/@action", "default.asp", 0); http.solveXpath("INPUT_0", ".//INPUT[@name='login']/@value", "ta496", 0); http.solveXpath("INPUT_1", ".//INPUT[@name='password']/@value", "ta", 0); http.solveXpath("INPUT_2", ".//INPUT[@name='LoginButton']/@value", "Login", 0); } } endStep(); beginStep("[2] Home", 3246); { http.post(4, "http://testserver2/fmstocks/{{FORMACTION_0,default.asp}}", null, http.postdata(http.param("login", "{{INPUT_0,ta496}}"), http.param("password", "{{INPUT_1,ta}}"), http.param("LoginButton", "{{INPUT_2,Login}}")), null, true, "ASCII", "ASCII"); { http.solveXpath("LINK_1_3", ".//A[text()='research a company']/@href", "TickerList.asp", 0); } } endStep(); beginStep("[3] Ticker List", 1703); { http.get(13, "http://testserver2/fmstocks/{{LINK_1_3,TickerList.asp}}", null, null, true, "ASCII", "ASCII"); } endStep();
ステップ・グループ3 (beginStep("[3] Ticker List", 1703);
)では、ページ・ナビゲーションがステップ・グループ2で定義された変数を使用して、データ値をパラメータとしてhttp.get
メソッドに渡します。
beginStep("[1] Stocks", 0); { http.get(2, "http://testserver2/fmstocks/", null, null, true, "ASCII", "ASCII"); { http.solveXpath("FORMACTION_0", ".//FORM[@name='loginform']/@action", "default.asp", 0); http.solveXpath("INPUT_0", ".//INPUT[@name='login']/@value", "ta496", 0); http.solveXpath("INPUT_1", ".//INPUT[@name='password']/@value", "ta", 0); http.solveXpath("INPUT_2", ".//INPUT[@name='LoginButton']/@value", "Login", 0); } } endStep(); beginStep("[2] Home", 3246); { http.post(4, "http://testserver2/fmstocks/{{FORMACTION_0,default.asp}}", null, http.postdata(http.param("login", "{{INPUT_0,ta496}}"), http.param("password", "{{INPUT_1,ta}}"), http.param("LoginButton", "{{INPUT_2,Login}}")), null, true, "ASCII", "ASCII"); { http.solveXpath("LINK_1_3", ".//A[text()='research a company']/@href", "TickerList.asp", 0); } } endStep(); beginStep("[3] Ticker List", 1703); { http.get(13, "http://testserver2/fmstocks/{{LINK_1_3,TickerList.asp}}", null, null, true, "ASCII", "ASCII"); } endStep();
次に、スクリプトに変数を追加する方法を示します。変数に設定する値を指定された場所で検索するために、正規表現を使用しています。
スクリプト・プロジェクトを開くか、作成します。
変数を追加するスクリプト・ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
「変数」ノードを開いて、「変数を設定」を選択します。
変数名を入力します。
変数値を入力します。
「OK」をクリックします。「Set: variableName = value」ノードがスクリプト・ツリーに追加されます。
Javaコード・ビューでは、getVariables().set("varName", "value");
メソッドがスクリプト・コードに追加されます。
スクリプトにSolveXpathを追加するには、次のようにします。
スクリプト・プロジェクトを開くか、作成します。
XPath値を追加するスクリプト・ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
「変数」ノードを開いて、「XPathの解決」を選択します。
変数名を入力します。
変数の値の検索に使用するXPathを入力します。
変数メソッドに使用する結果索引を入力します。
「OK」をクリックします。「SolveXpath: name」ノードがスクリプト・ツリーに追加されます。
Javaコード・ビューでは、http.solveXpath();
メソッドがスクリプト・コードに追加されます。
http.solveXpath("var_MyDomVar", ".//INPUT[@name='login']/@value", "ta610", 0); Example: http.solveXpath("FORMACTION_0", ".//FORM[@name='loginform']/@action", "default.asp", 0); getLogger().info("Form Name: {{FORMACTION_0}}");
スクリプト内の変数を検索するには、次のようにします。
スクリプトを開くか、作成します。
{{ }}
構文を含むPOSTデータまたは問合せストリング・パラメータを右クリックして、「変数ソースの検索」を選択します。
{{ }}
で参照される変数が、スクリプト・ツリー・ノード内で選択されます。
指定のパラメータに複数の変数が存在する場合、OpenScriptによって、検索する変数を選択するダイアログ・ボックスが表示されます。
ツリー・ビューから変数を削除すると、スクリプトに含まれる文字列内の{{ }}
で示された変数への参照が、その記録された値に戻されます。Javaコード内の変数参照も元に戻されます。
スクリプトから変数を削除するには、次のようにします。
スクリプトを開くか、作成します。
{{ }}
構文を含むPOSTデータまたは問合せストリング・パラメータを右クリックして、「削除」を選択します。
{{ }}
構文で参照される変数は、その記録された値に戻されます。
スクリプトから類似した変数を削除するには、次のようにします。
スクリプトを開くか、作成します。
{{ }}
構文を含むPOSTデータまたは問合せストリング・パラメータを右クリックして、すべてのタイプ_変数を削除するを選択します。このメニュー・オプションは、名前に接頭辞とアンダースコア(_)の付いた変数に表示されます。
{{ }}
構文で参照されるタイプ_のすべての変数は、その記録された値に戻されます。
スクリプトはBasic、NTLMおよびDigestの認証をサポートしています。HTTPスクリプトに認証を追加するには、次のようにします。
「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。
「Run」ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
「認証」ノードを選択し、「OK」をクリックします。
認証のためにアクセスするURLを入力します。
ユーザー名を入力します。
ユーザーのパスワードを入力します。パスワードは、Base-64暗号化アルゴリズムによって暗号化されます。
「OK」をクリックし、「認証」ノードをスクリプト・ツリーに追加します。
Javaコード・ビューでは、認証は、http.addAuthentication
プロシージャで実行されるコードから構成されます。
http.addAuthentication("http://testserver2", "username", decrypt("KRT|J|xJPDP"));
テキスト・マッチング・テストを使用すると、HTTPリクエストがテキスト・マッチング・テストの条件に一致しない場合に、エラーの報告またはスクリプトの中止(あるいはその両方)を実行できます。
テキスト・マッチング・テストをHTTPスクリプトに追加するには、次のようにします。
「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。
「Run」ノードを開きます。
テキスト・マッチング・テストを追加するHTTPナビゲーション・ノードを選択します。
「追加」メニューから「スクリプト」メニューを選択し、「テキスト マッチング テスト」を選択します。
テストの名前を入力します。
マッチングするテキスト文字列または正規表現を入力するか、「変数の置換」アイコンをクリックして、ソースで検索するデータバンクまたはスクリプト変数を選択します。
注意: 番号記号(# )および二重中カッコ({{ and }} )を含む文字シーケンスを、テキスト・マッチング・テストでリテラル文字列として使用する場合(OpenScriptデータバンクやスクリプト変数を指定する文字列でない場合)、直前に番号記号(# )を付けてエスケープする必要があります。たとえば、番号記号は二重(## )にして使用し、二重中カッコの直前には番号記号を付ける(#{{ および#}} )必要があります。 |
一致するテキストを検索するソースの場所を選択します。
HTML 表示コンテンツ: ブラウザでレンダリングされたページのテキストを検索します。
HTML ソース: ページのHTMLソースを検索します。
レスポンス ヘッダー: ページのレスポンス・ヘッダーを検索します。
「合格条件」設定を選択します。
選択したテキストが存在します: 選択したソースに「照合するテキスト」の文字列が見つかった場合は合格とします。
選択したテキストが存在しません: 選択したソースに「照合するテキスト」の文字列が見つからない場合は合格とします。
「一致」タイプを選択します。
完全: 「照合するテキスト」の文字列と完全にマッチングします。
正規表現: 「照合するテキスト」で指定された正規表現を使用してマッチングします。
ワイルドカード: 「照合するテキスト」で指定されたワイルドカード文字を使用してマッチングします。
「検証のみ、失敗なし」オプションを設定します。
「OK」をクリックします。「テキスト マッチング テスト」ノードがスクリプト・ツリーに追加されます。
「検証のみ、失敗なし」オプションを選択していない場合、Javaコード・ビューでは、http.assertText
メソッドがスクリプト・コードに追加されます。
http.assertText("MyTextMatchTest", "Home", TextPresence.PassIfPresent, MatchOption.Exact)
「検証のみ、失敗なし」オプションを選択している場合、Javaコード・ビューでは、http.verifyText
メソッドがスクリプト・コードに追加されます。
http.verifyText("MyTextMatchTest", "Home", TextPresence.PassIfPresent, MatchOption.Exact)
サーバー・レスポンス・テストを使用して、指定の時間範囲内に1つのHTTPリクエストがクライアントに返されない場合に、エラーのレポートまたはスクリプト再生の中止(あるいはその両方)を行うことができます。
サーバー・レスポンス・テストをHTTPスクリプトに追加するには、次のようにします。
「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。
「Run」ノードを開きます。
サーバー・レスポンス・テストを追加するHTTPナビゲーション・ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
「検証」グループから「サーバー レスポンス テスト」を選択します。
テストの名前を入力します。
時間の最小値と最大値を入力します。
テストが失敗した場合に記録するエラー・メッセージ・テキストを入力します。
「失敗時に反復を停止」オプションを設定します。
「OK」をクリックして、サーバー・レスポンス・ノードをスクリプト・ツリーに追加します。
再生時には、Webページのパラメータにデータバンク・ファイルの値が挿入されます。データバンク変数をHTTPスクリプトの問合せストリング・パラメータに置換することもできます。
「新規HTTPスクリプトの記録」の説明に従って、問合せストリング・パラメータを持つHTTPスクリプトを記録します。
「Run」ノードを開きます。
問合せ文字列パラメータを含むノードを開きます。
問合せ文字列パラメータ・ノードを右クリックして、ショートカット・メニューから「変数を置換」を選択します。
スクリプトに1つ以上のデータバンクを設定している場合、使用するデータバンク・ファイルから、問合せ文字列パラメータと置換されるデータバンク・フィールドを選択し、「OK」をクリックします。
スクリプトにまだデータバンクを設定していない場合、「新規データバンクの追加」を選択して「次へ」をクリックします。
「参照」ボタンをクリックして、使用するデータバンク・ファイルを選択します。
問合せ文字列パラメータと置換される列(フィールド名)を選択して、「完了」をクリックします。
ツリー・ビューでは、データバンク変数が、記録された値のかわりに{{databankFileName.field,recordedValue}}として表示されます。
HTTP記録モードを使用して記録されたスクリプトの場合、Javaコード・ビューでは、データバンク変数が、http.get
メソッドのhttp.querystring(http.param()
パラメータの{{databankFileName
.field
,recordedValue
}}として表示されます。
http.get(6, "http://testserver2/fmstocks/TickerList.asp", http.querystring(http.param("ticker", "{{db.fmstocks_data.ticker,orcl}}"), http.param("company", "")), null, true, "ASCII", "ASCII");
あるいは、Web記録モードを使用して記録されたスクリプトの場合、http.form().submit()
mメソッドのhttp.postdata(http.param()
パラメータで表示されます。
http.form(27,"window[@index='0']//form[@action='{{web.link.researchacompany ,http://testserver2/fmstocks/TickerList.asp}}']") .submit(http.querystring(http.param("ticker", "{{db.fmstocks_data.ticker,orcl}}")), null, null, true, null, null, null, null, null);
HTTPスクリプトのPOSTデータ・パラメータと変数を置換するには、次のようにします。
POSTデータ・パラメータのあるHTTPスクリプトを記録します。
「Run」ノードを開きます。
POSTデータ・パラメータを含むノードを開きます。
POSTデータ・パラメータ・ノードを右クリックし、ショートカット・メニューから「変数の置換」を選択します。
スクリプト内でカスタム変数をすでに定義済の場合、POSTデータ・パラメータと置換する変数名を選択して、「終了」をクリックします。
スクリプト内でカスタム変数をまだ定義していない場合、新規スクリプト変数を作成を選択して、「次」をクリックします。
「値の検索」パネルにPOSTデータ値を含むナビゲーションがリストされます。POSTデータ値を含むナビゲーションが複数ある場合、変数を置換するナビゲーションを選択します。ナビゲーションを選択すると、そのナビゲーションのデータが、ハイライトされた特定のソースおよび推奨される正規表現とともに下に表示されます。
POSTデータ・パラメータと置換する変数に使用する正規表現を指定し、「次」をクリックします。
「テスト」をクリックして、置換される正しいデータ値が正規表現によって検出されることを確認します。
正規表現によって、置換される正しいデータ値が検出されたら、「次へ」をクリックして次に進みます。正規表現によって正しいデータ値が返されない場合、正規表現を修正し、テストします。想定したデータ値が検出されたら、「次へ」をクリックして次に進みます。
置換変数の名前を入力します。
変数を相関ライブラリの変数ルールとして追加する場合、「ライブラリに追加」をクリックし、ルール情報を指定します。それ以外の場合は、「終了」をクリックして、置換スクリプト変数をスクリプトに挿入します。
ツリー・ビューでは、スクリプト変数が、記録された値のかわりに{{variableName,recordedValue}}として表示されます。
Javaコード・ビューでは、スクリプト変数が、http.solve
メソッドのvariableName
,Regular Expression
パラメータとして表示されます。
http.solve("MY_VAR", "<INPUT id=login name=login value=\"(.+?)\">", null, false, Source.Html, 0);
スクリプトにCookieを追加するには、次のようにします。
スクリプト・プロジェクトを開くか、作成します。
Cookieを追加するスクリプト・ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
「Cookie」ノードを開いて、「Cookieの追加」を選択します。
このダイアログ・ボックスでは、Cookieをスクリプトに追加できます。
有効なCookie文字列を入力します。
Cookie文字列: 追加するCookie文字列を指定します。
Cookie文字列の文字セット: Cookie文字列に使用する文字コードを指定します。
「OK」をクリックします。「Cookie」ノードがスクリプト・ツリーに追加されます。
Javaコード・ビューでは、http.addCookie
メソッドがスクリプト・コードに追加されます。
http.addCookie("cookieString", "charset"); Example: http.addCookie("username=testCookie", "ASCII"); java.util.List <Cookie> cookies = http.getBrowser().getCookieJar().getAllCookies(); for (Cookie cookie : cookies) { info(cookie.getUrl()); info(cookie.getCookieString()); }
スクリプトからCookieを削除するには、次のようにします。
スクリプト・プロジェクトを開くか、作成します。
「Cookieの削除」ノードを配置するスクリプト・ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
「Cookie」ノードを開いて、「Cookieの削除」を選択します。
削除するCookie文字列を入力します。
「OK」をクリックします。「Cookieの削除」ノードがスクリプト・ツリーに追加されます。
Javaコード・ビューでは、http.removeCookie
メソッドがスクリプト・コードに追加されます。
http.removeCookie("cookieString");
ユーザー・エージェントをスクリプトに追加するには、次のステップを実行します。
スクリプト・プロジェクトを開くか、作成します。
ユーザー・エージェントを追加するスクリプト・ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
「HTTP」ノードを開いて、「User-Agentの設定」を選択します。
ユーザー・エージェントの詳細を入力します。
「OK」をクリックします。ユーザー・エージェント・ノードがスクリプト・ツリーに追加されます。
Javaコード・ビューでは、http.setUserAgent("agent");
メソッドがスクリプト・コードに追加されます。
http.setUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)");
HTTPモジュールを使用すると、ユーザーは記録されたナビゲーションと関連パラメータ(ヘッダー、POSTデータなど)のすべてをスクリプトGUIツリー・ビューまたはコード・ビューで表示および編集できます。また、動的ナビゲーションのデフォルト相関/パラメータ化を表示および編集したり、動的ナビゲーションを処理する独自の相関を適用することもできます。
ナビゲーション編集GUIビューを使用すると、パラメータ化するナビゲーションと適用する相関ルールを設定できます。このGUIでは、様々なタイプのナビゲーション(Web/HTTPアプリケーションと非Web/HTTPアプリケーションの両方)とデータ入力を表示および編集できます。
記録されたナビゲーションの表示および編集ビューには、記録されたナビゲーションとヘッダーなどのナビゲーション・パラメータが表示されます。また、ユーザーが動的パラメータのソース/ターゲットを含むナビゲーションを編集/追加/削除するためのメカニズムが用意されています。
相関ルール・ライブラリの表示および編集ビューには、モジュールに含まれるすべてのデフォルト相関ルールのリストがアプリケーション・タイプ別に表示されます。また、ユーザーが相関ルールを追加、編集または削除するためのメカニズムも用意されています。
パラメータ化するナビゲーションと入力の取得元となるデータソースを、コード・ビューのナビゲーション編集コマンドを通じて指定できます。このコマンドは、ナビゲーション編集GUIビューにマップされます。
beginStep("[2] Home", 3266); { http.post(4, "http://testserver2/fmstocks/{{FORMACTION_0,default.asp}}", null, http.postdata(http.param("login", "{{INPUT_0,ta616}}"), http.param("password", "{{INPUT_1,ta}}"), http.param("LoginButton", "{{INPUT_2,Login}}")), null, true, "ASCII", "ASCII"); { http.solveXpath("LINK_1_3", ".//A[text()='research a company']/@href", "TickerList.asp", 0); http.solveXpath("LINK_1_2", ".//A[text()='Logout']/@href", "logout.asp", 0); } } endStep();
HTTP GETナビゲーションをHTTPスクリプトに追加するには、次のようにします。
「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。
「Run」ノードを選択します。
「追加」サブ・メニューから「スクリプト」メニューを選択し、「HTTP GETナビゲーション」を選択します。
「ベースURL」タブで、次の内容を指定します。
パス: ナビゲーションに使用するベースURLパス。
リクエスト文字セット: リクエストに使用する文字セット。
レスポンス文字セット: レスポンスに使用する文字セット。
文字列のエンコード: 選択すると、文字列内の制御文字および特殊文字が文字エンティティ参照にエンコードされます。選択を解除すると、文字列内の制御文字および特殊文字はエンコードされません。
「問合せ文字列」タブの「追加」ボタンを使用して、リクエストされた名前/値のペアをベースURLに追加します。「上へ」と「下へ」のボタンを使用すると、選択した問合せ文字列パラメータの検索順序を上下に移動できます。
「ヘッダー」タブの「追加」ボタンを使用して、名前/値のペアとアクションをベースURLに追加します。
「OK」をクリックしてHTTP GETナビゲーション・ノードをスクリプト・ツリーに追加します。
Javaコード・ビューでは、HTTP GETナビゲーションは、http.Get
メソッドで実行されるコードから構成されます(わかりやすいように改行とスペースが追加されています)。
http.Get(1, "http://testserver2", http.querystring(http.param("QueryString1", "QueryValue1"), http.param("QueryString2", "QueryValue2"), http.param("QueryString3", "QueryValue3")), http.headers(http.header("HeaderString1", "HeaderValue1NoActions", Header.HeaderAction.Add), http.header("HeaderString2", "HeaderValue2SetifNotSet", Header.HeaderAction.SetIfNotSet), http.header("HeaderString3", "HeaderValue3ApplytoAll", Header.HeaderAction.GlobalAdd), http.header("HeaderString4", "HeaderValue4BothActions", Header.HeaderAction.GlobalSetIfNotSet)), false, "ASCII", "ASCII");
HTTP POSTナビゲーションをHTTPスクリプトに追加するには、次のようにします。
「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。
「Run」ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
「HTTP POSTナビゲーション」ノードを選択し、「OK」をクリックします。
「ベースURL」タブで、次の内容を指定します。
パス: ナビゲーションに使用するベースURLパス。
リクエスト文字セット: リクエストに使用する文字セット。
文字列のエンコード: 選択すると、文字列内の制御文字および特殊文字が文字エンティティ参照にエンコードされます。選択を解除すると、文字列内の制御文字および特殊文字はエンコードされません。
「問合せ文字列」タブの「追加」ボタンを使用して、リクエストされた名前/値のペアをベースURLに追加します。「上へ」と「下へ」のボタンを使用すると、選択した問合せ文字列パラメータの検索順序を上下に移動できます。
「ポスト・データ」タブの「追加」ボタンを使用して、名前/値のペアをベースURLに追加します。
「ヘッダー」タブの「追加」ボタンを使用して、名前/値のペアとアクションをベースURLに追加します。
「OK」をクリックしてHTTP POSTナビゲーション・ノードをスクリプト・ツリーに追加します。
Javaコード・ビューでは、HTTP POSTナビゲーションは、http.Post
メソッドで実行されるコードから構成されます(わかりやすいように改行とスペースが追加されています)。
http.Post(12, "http://testserver2", http.querystring(http.param("QueryString1", "QueryValue1"), http.param("QueryString2", "QueryValue2"), http.param("QueryString3", "QueryValue3")), http.postdata(param("PostString1", "PostValue1"), http.param("PostString2", "PostValue2"), http.param("PostString3", "PostValue3")), http.headers(http.header("HeaderString1", "HeaderValue1NoActions", Header.HeaderAction.Add), http.header("HeaderString2", "HeaderValue2SetifNotSet", Header.HeaderAction.SetIfNotSet), http.header("HeaderString3", "HeaderValue3ApplytoAll", Header.HeaderAction.GlobalAdd), http.header("HeaderString4", "HeaderValue4BothActions", Header.HeaderAction.GlobalSetIfNotSet)), true, "ASCII", "ASCII");
HTTPマルチパートPOSTナビゲーションをHTTPスクリプトに追加するには、次のようにします。
「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。
「Run」ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
HTTPマルチパート・ナビゲーション・ノードを開いて、「マルチパート・ポスト・ナビゲーション」ノードを選択し、「OK」をクリックします。
「ベースURL」タブで、次の内容を入力します。
パス: ナビゲーションに使用するベースURLパス。
バウンダリ: マルチパートのフォーム入力ナビゲーション(ファイル・ナビゲーション)の各部分の識別に使用するバウンダリを指定します。このバウンダリは、ユーザー・エージェントが送信するContent-Type: multipart/form-data; boundary=""レスポンスの中で使用されます。指定するバウンダリは、どのファイル・データにも出現しないものであることが必要です。
リクエスト文字セット: リクエストに使用する文字セット。
レスポンス文字セット: レスポンスに使用する文字セット。
文字列のエンコード: このオプションを選択すると、文字列内の制御文字および特殊文字が文字エンティティ参照にエンコードされます。選択を解除すると、文字列内の制御文字および特殊文字はエンコードされません。
「問合せ文字列」タブの「追加」ボタンを使用して、名前/値のペアをベースURLに追加します。
「ポスト・データ」タブの「追加」ボタンを使用して、POSTデータをベースURLに追加します。標準のPOSTデータの名前と値のペア、またはPOSTデータ・ファイルを指定できます。「ファイル」を選択した場合、各POSTデータ・ファイル・パラメータのパス、ファイル名、およびコンテンツ・タイプを指定します。
「ヘッダー」タブの「追加」ボタンを使用して、名前/値のペアとアクションをベースURLに追加します。
「OK」をクリックして、HTTPマルチパートPOSTナビゲーション・ノードをスクリプト・ツリーに追加します。
Javaコード・ビューでは、HTTPマルチパートPOSTナビゲーションは、http.multipartPost
メソッドで実行されるコードから構成されます(わかりやすいように改行とスペースが追加されています)。
http.multipartPost(13, "http://testserver2", http.querystring(http.param("QueryString1", "QueryValue1"), http.param("QueryString2", "QueryValue2"), http.param("QueryString3", "QueryValue3")), http.postdata(http.param("PostDataString1", "PostDataValue1Standard"), http.param("PostDataString2", "PostDataValue2FilePath", "PostDataValue2FileName", "ASCII"), http.param("PostDataString3", "C:\\Oracle\\OFT\\DataBank\\fmstocks_data.csv", "C:\\Oracle\\OFT\\DataBank\\fmstocks_data.csv", "CSV")), http.headers(http.header("HeaderString1", "HeaderValue1NoActions", Header.HeaderAction.Add), http.header("HeaderString2", "HeaderValue2IfNotSet", Header.HeaderAction.SetIfNotSet), http.header("HeaderString3", "HeaderValue3ApplytoAll", Header.HeaderAction.GlobalAdd), http.header("HeaderString4", "HeaderValue4Both", Header.HeaderAction.GlobalSetIfNotSet)), "boundary", false, "ASCII", "ASCII");
HTTP XML POSTナビゲーションをHTTPスクリプトに追加するには、次のようにします。
「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。
「Run」ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
「XMLポスト・ナビゲーション」ノードを開いて、「XMLポスト・ナビゲーション」ノードを選択し、「OK」をクリックします。
「ベースURL」タブで、次の内容を指定します。
パス: ナビゲーションに使用するベースURLパス。
リクエスト文字セット: リクエストに使用する文字セット。
レスポンス文字セット: レスポンスに使用する文字セット。
文字列のエンコード: 選択すると、文字列内の制御文字および特殊文字が文字エンティティ参照にエンコードされます。選択を解除すると、文字列内の制御文字および特殊文字はエンコードされません。
「問合せ文字列」タブの「追加」ボタンを使用して、リクエストされた名前/値のペアをベースURLに追加します。「上へ」と「下へ」のボタンを使用すると、選択した問合せ文字列パラメータの検索順序を上下に移動できます。
「ポスト・データ」タブで、ベースURLに追加するXML POSTデータを入力します。
「ヘッダー」タブの「追加」ボタンを使用して、名前/値のペアとアクションをベースURLに追加します。
「OK」をクリックしてHTTP XML POSTナビゲーション・ノードをスクリプト・ツリーに追加します。
Javaコード・ビューでは、HTTP XML POSTナビゲーションは、http.xmlPost
メソッドで実行されるコードから構成されます(わかりやすいように改行とスペースが追加されています)。
http.xmlPost(0, "http://xmltest2", http.querystring(http.param("xmlQueryString1", "xmlQueryValue1"), http.param("xmlQueryString2", "xmlQueryValue2"), http.param("xmlQueryString3", "xmlQueryValue3")), "xmlPostDataString", http.headers(http.header("xmlHeaderString1", "xmlHeaderValue1NoAction", Header.HeaderAction.Add), http.header("xmlHeaderString2", "xmlHeaderValue2IfNotSet", Header.HeaderAction.SetIfNotSet), http.header("xmlHeaderString3", "xmlHeaderValue3ApplytoAll", Header.HeaderAction.GlobalAdd), http.header("xmlHeaderString4", "xmlHeaderValue4Both", Header.HeaderAction.GlobalSetIfNotSet)), false, "ASCII", "ASCII");
Web機能モジュールには、Web HTTPプロトコル・テスト固有のスクリプトApplication Program Interface (API)が含まれます。HTTPモジュール・レコーダでは、理解しやすい関数名を使用してツリー・ビューに対応するJavaコードが作成され、Javaコード・ビューにHTTPコマンドが表示されます。Javaコード・ビューのコマンドはツリー・ビューに対応しているため、どちらのビューでもスクリプトを修正できます。
HTTP APIを使用して記録されたスクリプトを拡張し、テスト機能を追加できます。HTTPモジュール固有のコマンドは、httpクラスの一部です。また、その他の有効なクラス(サービス)の他のコマンドや汎用Javaコマンドも、スクリプトで利用できます。
HTTPモジュールAPIの一部は次のとおりです。
認証の追加
Cookieの追加および削除
HTTPナビゲーション(GETおよびPOST)の追加
HTTPマルチパートPOSTナビゲーションの追加
HTTPマルチパート名前と値のペアの追加
名前と値のペアの追加
XML POSTナビゲーションの追加
ユーザー・エージェントの設定
HTTPモジュールのツリー・ビューを使用して、多数のAPIメソッドを追加できます。Javaコード・ビューを使用してさらにメソッドを追加することができます。使用できるプロシージャおよびサンプル・コード一覧のインテリジェンス・ウィンドウを開くには、[Ctrl]キーを押しながら[Space]キーを押します。その他のプログラミング情報の詳細は、OpenScriptヘルプのAPIリファレンスを参照してください。