ヘッダーをスキップ

Oracle® Functional Testing OpenScriptユーザーズ・ガイド バージョン9.20 B62630-01 |
| 目次 | 索引

戻る | 次へ |

# 6 HTTPモジュールの使用

この章では、Openscript HTTPモジュールの設定および使用手順について説明します。このモジュールは、基礎となるHTTPプロトコル・トラフィックを自動化してWebベース・アプリケーションをテストします。

## 6.1 HTTPモジュールについて

OpenScript HTTPモジュールは、http（s）プロトコルで通信するWebベース・アプリケーションの負荷テストをサポートするアプリケーション/プロトコル・モジュールです。技術部門だけではなく非技術部門のテスターも簡単に使用できる柔軟性の高いスクリプト作成インタフェースを提供しています。コード・ビューおよび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スクリプトでは、このモードが使用されます。

### 6.1.1 HTTPモジュールの主な機能

HTTPモジュールでは、次の機能を使用できます。

- HTTPプロトコル・リクエストを記録し、再生を自動化します。リクエストは、Webブラウザ（IEなど）またはプラグイン（AJAX XMLHTTPなど）を通して収集できます。

- HTTPスクリプトを再生して機能が適切かどうかを検証します。再生は、OpenScriptユーザー・インタフェースでインタラクティブに実行されますが、Oracle Load Testingエージェント（Javaエージェント）でもサポートされています。

- 統合されたフル・スクリプト・コード・ビューが提供されており、HTTPモジュールのスクリプトを生成できます。コマンドの例として、GETリクエスト、POSTリクエスト、相関の置換、検証を生成するメソッドがあります。HTTPモジュールには、追加のAPIが含まれており、HTTPプロトコルのコード・スクリプト作成がサポートされています。

- ユーザーは、HTTPスクリプトへのユーザー入力をパラメータ化し、その入力データを外部データ・ファイル（データバンク）から取り込むことができます。

- 詳細設定インタフェースのHTTPカテゴリに含まれる特定のHTTPスクリプトに固有の追加オプション/設定項目が提供されています。

- HTTPスクリプトの再生結果を結果ビューおよびコンソール・ビューに表示します。

## 6.2 ナビゲーション編集（相関）

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();

### 6.2.1 相関の詳細設定

相関の詳細設定をするには、次のようにします。

1. OpenScriptを起動します。

2. 「ビュー」メニューから「OpenScript 詳細設定」を選択します。

3. 「OpenScript」ノード配下の「相関」カテゴリを開きます。

4. 「HTTP」を選択します。

5. 定義されたルールのチェック・ボックスを選択または選択解除します。

6. 「ライブラリの追加」、「ルールの追加」、または「ルールの編集」を選択して、カスタム相関ルールを定義します。

7. 「OK」をクリックします。

### 6.2.2 相関ルール・ライブラリの追加

「相関ルール」の詳細設定で「ライブラリの追加」を選択すると、「ライブラリの追加」ダイアログ・ボックスが開きます。このダイアログ・ボックスでは、記録されたスクリプトURLと関連パラメータ（ヘッダー、POSTデータなど）の動的データを、スクリプト再生エンジン（OpenScriptまたはOracle Load Testing）で認識される変数名にトランスフォーム処理するための新規相関ルール・ライブラリを指定できます。このダイアログ・ボックスには、次のオプションがあります。

名称: 相関ルール・ライブラリの名称を指定します。ライブラリを定義したら、「ルールの追加」ボタンを使用して、ライブラリに含めるルールを指定できます。名称は必須です。「ルールのコピー」を選択して、既存ライブラリから相関ルールをコピーすることもできます。

既存ライブラリからルールをコピー: 既存ライブラリから新規ライブラリに相関ルールをコピーできます。

- ルールのコピー: 選択すると、既存の相関ルール・ライブラリのリストが有効化され、コピーが可能になります。

- ライブラリ: コピーできる相関ルール・ライブラリが一覧表示されます。

### 6.2.3 相関ルールの追加および編集

「相関ルール」の詳細設定で「ルールの追加」または「ルールの編集」を選択すると、「ルールの追加」または「ルールの編集」ダイアログ・ボックスが開きます。このダイアログ・ボックスでは、記録されたスクリプトURLと関連パラメータ（ヘッダー、POSTデータなど）の動的データを、スクリプト再生エンジン（OpenScriptまたはOracle Load Testing）で認識される変数名にトランスフォーム処理するための相関ルールを指定または編集できます。このダイアログ・ボックスには、次のオプションがあります。

タイプ: 相関ルールのタイプを示します。「ソース」および「対象」の使用可能なオプションは、ルール・タイプによって変わります。次のルール・タイプがあります。

- クライアント Set Cookie : 動的データを持つWebページのCookieオブジェクトが自動的に変換されます。

- Cookie ヘッダーの相関: 動的データを持つWebページのCookieヘッダー・オブジェクトが自動的に変換されます。

- ヘッダーの相関: 動的データを持つWebページのヘッダー・オブジェクトが自動的に変換されます。

- Referer ヘッダーの相関 : 動的データを持つWebページのRefererヘッダー・オブジェクトが自動的に変換されます。

- DOM 相関: 動的データを持つWebページのドキュメント・オブジェクト・モデル（DOM）オブジェクトが自動的に変換されます。

- 関数/テキスト 置換: 特定のパラメータを置換するユーザー定義関数を指定できます。

- 記録日時の置換: 日時パラメータを検索して変数値に置換する正規表現パターンを指定できます。

- 変数置換: 特定のパラメータを検索して変数値に置換する正規表現パターンを指定できます。

名称: 相関ルールの名称を指定します。名称は必須です。

次の項では、ルールのタイプについて説明します。

#### 6.2.3.1 クライアント Set Cookie

「クライアント Set Cookie」を選択した場合、「ソース」と「対象」では次のオプションが示されます。

ソース: 常にCookieです。

対象: トランスフォームの対象位置として使用するドキュメント・オブジェクトを示します。

- すべてを置換する: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。

- 指定箇所のみ置換する: 選択すると、ロケーション条件に一致するオブジェクトにのみ相関ルールが適用されます。

- ロケーション: 正規表現を使用した相関ルールを適用するCookieパラメータを示します。（たとえば、後述の「「変数置換」ルール」を参照。）

#### 6.2.3.2 Cookie ヘッダーの相関

「Cookie ヘッダーの相関」を選択した場合、「ソース」と「対象」では次のオプションが示されます。

ソース: 常にCookieヘッダーです。

対象: トランスフォームの対象位置として使用するドキュメント・オブジェクトを示します。

- すべてを置換する: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。

- 指定箇所のみ置換する: 選択すると、ロケーション条件に一致するオブジェクトにのみ相関ルールが適用されます。

- ロケーション: 正規表現を使用した相関ルールを適用するCookieパラメータを示します。（たとえば、後述の「「変数置換」ルール」を参照。）

#### 6.2.3.3 ヘッダーの相関

「ヘッダーの相関」を選択した場合、「ソース」と「対象」では次のオプションが示されます。

ソース: 常にWebページ・ヘッダーです。

対象: トランスフォームの対象位置として使用するヘッダー・オブジェクトを示します。

- すべてを置換する: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。

- 指定箇所のみ置換する: 選択すると、ロケーション条件に一致するオブジェクトにのみ相関ルールが適用されます。

- ロケーション: 正規表現を使用した相関ルールを適用するヘッダー・パラメータを示します。（たとえば、後述の「「変数置換」ルール」を参照。）

#### 6.2.3.4 Referer ヘッダーの相関

「Referer ヘッダーの相関」を選択した場合、「ソース」と「対象」では次のオプションが示されます。

ソース: 常にWebページのRefererヘッダーです。

対象: トランスフォームの対象位置として使用するRefererヘッダー・オブジェクトを示します。

- すべてを置換する: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。

- 指定箇所のみ置換する: 選択すると、ロケーション条件に一致するオブジェクトにのみ相関ルールが適用されます。

- ロケーション: 正規表現を使用した相関ルールを適用するRefererヘッダー・パラメータを示します。（たとえば、後述の「「変数置換」ルール」を参照。）

#### 6.2.3.5 「DOM 相関」ルール

「DOM 相関」ルールを選択した場合、「ソース」と「対象」では次のオプションが示されます。

ソース: 動的データとして置換するドキュメント・オブジェクトを示します。

- Links: 選択すると、動的データを持つWebページ・リンク・オブジェクトが自動的に変数値にトランスフォーム処理されます。

- Action: 選択すると、動的データを持つWebページ・アクション・オブジェクトが自動的に変数値にトランスフォーム処理されます。

- Input: 選択すると、動的データを持つWebページ入力オブジェクトが自動的に変数値にトランスフォーム処理されます。

- TextArea: 選択すると、動的データを持つWebページTextAreaオブジェクトが自動的に変数値にトランスフォーム処理されます。

- JavaScript: 選択すると、動的データを持つWebページJavaScriptオブジェクトが自動的に変数値にトランスフォーム処理されます。

- Frame: 選択すると、動的データを持つWebページFrameオブジェクトが自動的に変数値に変換されます。

- Option: 選択すると、動的データを持つWebページOptionオブジェクトが自動的に変数値に変換されます。

- XML テスト: 選択すると、動的データを持つXMLページが自動的に変数値に変換されます。

対象: トランスフォームの対象位置として使用するRefererヘッダー・オブジェクトを示します。

- すべてを置換する: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。

- 指定箇所のみ置換する: 選択すると、ロケーション条件に一致するオブジェクトにのみ相関ルールが適用されます。

- ロケーション: 正規表現を使用した相関ルールを適用するWebページ・オブジェクト/パラメータを示します。（たとえば、後述の「「変数置換」ルール」を参照。）

#### 6.2.3.6 「関数/テキスト 置換」ルール

「関数/テキスト 置換」ルールを選択した場合、「ソース」と「対象」では次のオプションが示されます。

ソース: 動的データのかわりに使用する関数名またはテキストを示します。

- 関数/テキスト: ソース位置の検索に使用する関数の名称を示します。次の関数を使用できます。

  - `{{@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スクリプト変数です。変数名は、二重の`{{ }}`カッコで囲み、関数の丸カッコの中に入れる必要があります。次に例を示します。 `{{@len(``{{``myVariable``}}``)}}`

  - `{{@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ページ・オブジェクト/パラメータを示します。（たとえば、後述の「「変数置換」ルール」を参照。）

#### 6.2.3.7 記録日時の置換

「記録日時の置換」を選択した場合、「ソース」と「対象」では次のオプションが示されます。

ソース: 動的データのかわりに使用する属性を示します。

- 属性名: 内部使用のみを目的とし、valueにのみ設定します。

- 日付パターン: 日付パターンをM/dd/yyyyの形式で指定します。日付パターンは、標準のJava日付フォーマット文字列規則に準拠します。スクリプトの相関処理中に、ナビゲーションが記録された時間は指定された日付パターンを使用した日付に変換されます。現在の日付がリクエストにあった場合は、`{{@today(date_pattern)}}`に置換されます。

対象: トランスフォームの対象位置として使用するRefererヘッダー・オブジェクトを示します。

- すべてを置換する: 選択すると、ソース条件に一致するすべてのオブジェクトに相関ルールが適用されます。

- 指定箇所のみ置換する: 選択すると、ロケーション条件に一致するオブジェクトにのみ相関ルールが適用されます。

- ロケーション: 正規表現を使用した相関ルールを適用するRefererヘッダー・パラメータを示します。（たとえば、後述の「「変数置換」ルール」を参照。）

#### 6.2.3.8 「変数置換」ルール

「変数置換」ルールを選択した場合、「ソース」と「対象」では次のオプションが示されます。

ソース: 動的データのかわりに使用する属性を示します。

- 変数名: 動的データのかわりに使用する変数の名称を示します。

- パターン: 置換する動的データの検索に使用する正規表現を示します。

- エラー メッセージ: 再生時にソース・データが見つからない場合にレポートするエラー・メッセージ を示します。

- ソース: 置換する動的データの検索場所を示します。「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データ`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: 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}}`

## 6.3 スクリプトの記録

OpenScript HTTPモジュールは、Webアプリケーションの各ページで定義されたパラメータをスクリプトに記録します。この記録は、Webページのパラメータにデータバンク・ファイルからの値を代入して再生することができます。

HTTPモジュールは、Webブラウザで生成されたHTTPプロトコル・リクエストを記録することで、再生を自動化します。HTTPレコーダは、Webブラウザ・イベントを記録して再生の相関を可能にします。再生の相関により、ユーザーはナビゲーション（リンクxのクリックから生成された動的GETリクエスト）を生成したGUIイベントの知識に基づいて、動的HTTPリクエストを相互に関連付けることができます。HTTPモジュールには記録ツールバー・ボタンがあり、ユーザーはこれを使用してHTTPプロキシ・レコーダを開始し、Webページ・ナビゲーションをスクリプト・ビューに取得することができます。記録ツールバーには、記録の開始と停止のボタンがあります。

### 6.3.1 HTTP記録の詳細設定

HTTPスクリプトを記録する前に、hTTP記録の詳細を設定します。

1. OpenScriptを起動します。

2. 「ビュー」メニューから「OpenScript 詳細設定」を選択します。

3. 「OpenScript」ノードを開き、次に「記録」カテゴリを開きます。

4. 「HTTP」を選択します。

5. 「一般」タブをクリックし、次のように記録の一般詳細設定を設定します。

   セットアップ: プロキシ記録用のネットワーク設定を示します。

   - ネットワーク・インタフェース: プロキシ・サーバーのネットワークIPアドレスを入力または選択します。

   - 追加引数: プロキシ・サーバーの起動時に使用する追加のコマンドライン引数を指定します。

   - 最大ダウンロード サイズ（MB）: ファイル・ダウンロードの最大ファイル・サイズを指定します。

   - ローカル マシンから送信されるリクエストのみ記録する: 選択すると、ローカル・マシンからのリクエストのみがHTTPプロキシ・レコーダによって記録されます。選択を解除すると、OpenScriptマシンのIPアドレスを使用するようにInternet Explorerのプロキシを設定されている他のマシンまたはデバイス（電話、タブレットPCなど）から送信されるリクエストをOpenScriptで記録できます。

     たとえば、マシンAとマシンBの2つのマシンがある場合には、次のようにします。

     マシンAで、

     - OpenScriptを起動します。

     - HTTPスクリプトを作成します。

     - 「ローカル マシンから送信されるリクエストのみ記録する」の選択を解除します。

     - 記録を開始します。

     マシンBで、

     - Internet Explorerブラウザを起動します。

     - Internet ExplorerのプロキシをマシンAのIPアドレスに設定します。

     - ブラウザでWebサイトを開き、ページを移動します。

     OpenScriptがマシンBから送信されたHTTPリクエストを記録します。

   その他: プロキシ記録の各種設定を指定します。

   - 記録モード: 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スクリプトでは、このモードが使用されます。

   - SSL バージョン: プロキシ・サーバーに使用するSecure Socket Layerバージョンを指定します。ブラウザでセキュアなサイトを記録するとき、ユーザーにはセキュアなWebサイトの証明書ではなくプロキシ・レコーダの証明書が示されます。ブラウザ、プロキシ・レコーダ、Secure Serverはそれぞれ独自のプライベート・キーとパブリック・キーを持ち、それがデータの暗号化と復号化に使用されます。

     - SSL: プロキシ・サーバーでSecure Socket Layerプロトコルを使用します。OpenScriptは、Sun Java Secure Socket Extension（JSSE）を使用します。Sun JSSEは、デフォルトでSSLv2、ASSLv3、ASSL、ATLSv1、ATLS、SSL_TLSをサポートしています。

     - SSL (TLS なし): Transport Layer SecurityなしのSecure Socket Layerを使用します。場合によって、JSSEの問題のためにTLSプロトコル接続エラーが発生することがあります。「SSL」オプションを使用するとプロトコルの接続エラーが発生する場合には、このオプションを使用します。

   - IE 一時ファイル: Internet Explorerブラウザにキャッシュ・クリアのオプションを指定します。

     - 一時ファイルの削除を確認する: 選択すると、スクリプトの記録を開始するとき、Internet Explorerのブラウザ・キャッシュをクリアするかどうかを確認するプロンプトのダイアログ・ボックスが表示されます。

     - いつも一時ファイルを削除する: 選択すると、レコードを開始するとき常にInternet Explorerのブラウザ・キャッシュがクリアされます。

     - 一時ファイルを削除しない: 選択すると、レコードを開始するときInternet Explorerのブラウザ・キャッシュがクリアされません。

   - ブラウザ開始前に永続的 Cookie を削除する: 選択すると、スクリプトを記録するとき、ブラウザの開始前に永続的cookiesがすべてクリアされます。

   - 記録開始時にいつも新しいブラウザを起動する: 選択すると、記録を開始する際にブラウザが自動的に起動します。

   - 記録停止時にブラウザを閉じる: 選択すると、記録を停止した際にブラウザが自動的に閉じます。

   - 404 エラーを返すナビゲーションを記録する: 選択すると、サーバー・ステータス・コード「404: Not Found」を返すナビゲーションが記録されます。

   - スクリーン ショットの取得: 選択すると、記録中にページのスクリーンショットを取得します。スクリーンショットは、ツリー・ビューで「WaitForPage」ノードを選択してから「詳細」ビューで「スクリーン ショット」タブを選択すると表示できます。スクリーンショットを取得すると、zipファイルにエクスポートするときスクリプトのサイズが大きくなります。

6. 「プロキシ設定」タブを開き、次のようにデフォルトのプロキシ・レコーダ設定を設定します。

   チェーン プロキシ: OpenScriptプロキシが他のプロキシに連鎖しているかどうかを示します。

   - チェーン プロキシ: 選択すると、OpenScriptプロキシが他のプロキシに連鎖されます。

   - ブラウザに設定されているプロキシを使用: 選択すると、ブラウザで指定したプロキシ構成がHTTPレコーダで使用されます。

   - 使用するプロキシを設定: 選択すると、指定したプロキシがOpenScriptで使用されます。

     - プロキシ自動構成スクリプトを使用する: 選択すると、指定した構成スクリプトが使用されます。

     - アドレス: イントラネット環境用にシステム管理者から提供されたFindProxyForURL JavaScript関数を含むJavaScriptファイルにURLを指定します。

     - 使用するプロキシ・サーバーを指定する: 選択すると、指定したプロキシ・サーバーが使用されます。

     - アドレス: OpenScriptプロキシを連鎖させるプロキシ・サーバーのネットワークIPアドレスを指定します。

     - ポート: 連鎖したプロキシ・サーバーで使用するポートを指定します。

   プロキシ認証: 認証用のログイン情報を指定します。

   - ユーザー名: 認証に使用するユーザー名を指定します。

   - パスワード: 認証に使用するパスワードを指定します。

7. 「URL フィルター」タブをクリックし、新規のプロキシURLフィルタを作成するか、定義済のフィルタを選択します。

   定義済のフィルタを使用するには、リストでフィルタのチェック・ボックスを選択します。フィルタを無効にするにはチェック・ボックスの選択を解除します。

   新規のフィルタを作成または既存のフィルタを編集するには、次のようにします。

   - 「追加」または「編集」をクリックします。

   - フィルタ名を指定します。

   - マッチングに使用するURLフィルタのワイルドカードまたは正規表現パターンを指定します。ワイルドカード文字には、文字列を表すアスタリスク（*）と1文字を表す疑問符（?）があります。

   - 「一致」の値としてフィルタを適用する対象を選択します。

     - コンテンツ タイプ: 選択すると、ページのコンテンツ・タイプにフィルタが適用されます。

     - URL: 選択すると、ページのURLにフィルタが適用されます。

   - 「照合方法」の値としてフィルタリング方法のタイプを選択します。

     - ワイルドカード:選択すると、コンテンツのフィルタリングにワイルドカードが使用されます。

     - 正規表現: 選択すると、コンテンツのフィルタリングに正規表現が使用されます。

8. 「証明書」タブをクリックして、記録時に使用するクライアント・デジタル証明書の格納設定を次のように指定します。

   クライアント デジタル証明書ファイル (.PFX 形式) を格納する: .PFX形式のデジタル証明書情報を指定します。

   - 最後に格納された証明書: 証明書PFXファイルの名前を指定します。名前を入力するか、「証明書を格納」をクリックしてドライブおよびディレクトリからファイルを選択します。「証明書を格納」をクリックし、証明書がInternet Explorerからエクスポートされたときのクライアント証明書PFXファイルに定義されているファイル名とプライベート・キー・パスワードを入力します。

9. 完了後、「OK」をクリックします。

### 6.3.2 新規HTTPスクリプトの記録

新規HTTPスクリプトを作成するには、スクリプトを記録します。

1. OpenScriptを起動します。

2. まだ設定していない場合は、HTTP記録の詳細を設定します。

3. 「ファイル」メニューから「新規」を選択します。

4. 「負荷テスト (プロトコル自動化)」ノードを開き、「Web/HTTP」を選択します。

5. 「次へ」をクリックします。

6. リポジトリとワークスペースを選択します。

7. スクリプト名を入力します。

8. 「終了」をクリックします。新規スクリプト・ツリーがスクリプト・ビューに作成されます。

9. 「スクリプト」メニューから「記録」を選択するか、「記録」ツールバー・ボタンの矢印をクリックして、プロキシ レコーダを選択します。

10. HTTP記録の詳細設定でいつも新しいブラウザを起動するオプションを設定している場合、HTTPプロキシ・レコーダで記録を開始すると、ブラウザが自動的に開きます。いつも新しいブラウザを起動するオプションを設定していない場合、ブラウザを手動で開く必要があります。

11. 記録を開始するWebページをブラウザにロードします。

12. ページ・ナビゲーションを記録するWebサイトにアクセスします。ページ・ナビゲーションは、スクリプト・ツリーうち、「記録セクション指定」設定で指定したノード（デフォルトは「Run」ノード）に追加されます。

13. ページのナビゲーションが終了したら、「スクリプト」メニューから「停止」を選択するか、OpenScriptツールバーの「停止」ボタンをクリックしてスクリプトを停止します。

14. HTTP記録の詳細設定で「ブラウザの終了」オプションを設定している場合、記録を停止するとブラウザが自動的に閉じます。「ブラウザの終了」オプションを設定していない場合、ブラウザを手動で閉じる必要があります。

15. スクリプトのノードを開いて、スクリプト・ツリーのページ・ナビゲーション・ノードを表示します。

    特定のテスト要件実現のために、メニュー・オプションまたはコード・ビューを使用してスクリプトをカスタマイズすることができます。

    注意: 記録中またはスクリプトの再生中に、スクリプト・エディタ・ビューまたはスクリプト・プロジェクトを閉じないでください。閉じると、OpenScriptアプリケーションで予期しない動作が発生する場合があります。

## 6.4 スクリプトの再生

HTTPスクリプトを記録したら、再生して機能が適切かどうかを検証します。再生は、OpenScriptユーザー・インタフェースでインタラクティブに実行されますが、Oracle Load Testingでもサポートされています。

HTTPモジュールには再生ツールバー・ボタンと反復ツールバー・ボタンがあり、ユーザーはこれらを使用してHTTPスクリプトの再生を開始することができます。再生は、スクリプトを通じて一度のみ行うか、データバンク・ファイルのデータを使用して何度も反復することが可能です。HTTPスクリプトの再生結果は、「結果」ビューと「コンソール」ビューで確認できます。

### 6.4.1 HTTP再生の詳細設定

スクリプトを再生する前に、再生の詳細を設定する必要があります。

1. OpenScriptを起動します。

2. 「ビュー」メニューから「OpenScript 詳細設定」を選択します。

3. 「OpenScript」ノードを開き、次に「再生」カテゴリを開きます。

4. 「HTTP」を選択します。

5. 「プロキシ」グループを開き、次のように詳細を設定します。

   プロキシ ホスト: プロキシ・サーバーのホスト名を示します。

   プロキシ ポート: プロキシ・サーバーで使用するポートを指定します。

   ユーザー名: 認証に使用するユーザー名を指定します。

   パスワード: 認証に使用するパスワードを指定します。

   非プロキシ ホスト: 非プロキシ・サーバーのホスト名を指定します。

6. 「圧縮」グループを開き、次のように詳細を設定します。

   GZIP を有効にする: 選択されている場合、gzip圧縮のサポートが有効になります。ブラウザ・リクエストには、gzip圧縮したページのレスポンスを受け取ることを示す`Accept-Encoding: gzip`ヘッダーが含まれます。サーバーでgzip圧縮が使用される場合、gzip圧縮フォーマットでページを返すことを示す`Content-Encoding: gzip`ヘッダーがレスポンスに含まれます。ブラウザは、HTMLページをレンダリングする前に圧縮ファイルを解凍します。gzip圧縮は通常、ブラウザとサーバーの間で大きいHTMLページを高速で転送するときに使用します。

   DEFLATE を有効: 選択すると、deflate圧縮のサポートが有効になります。ブラウザ・リクエストには、deflate圧縮したページのレスポンスを受け取ることを示す`Accept-Encoding: deflate`ヘッダーが含まれます。サーバーでdeflate圧縮が使用される場合、deflate圧縮フォーマットでページを返すことを示す`Content-Encoding: deflate`ヘッダーがレスポンスに含まれます。ブラウザは、HTMLページをレンダリングする前に圧縮ファイルを解凍します。deflate圧縮は通常、ブラウザとサーバーの間で大きいHTMLページを高速で転送するときに使用します。

7. 「ヘッダー」グループを開き、次のように詳細を設定します。

   ブラウザ エミュレーション: スクリプト再生のためにエミュレーションするブラウザを指定します。デフォルトは記録されたブラウザです。

   言語: スクリプト再生に使用する言語を示します。デフォルトは英語です。

   HTTP バージョン: スクリプト再生に使用するHTTPバージョンを指定します。

   Accept 文字列: スクリプト再生のリクエスト・ヘッダーで使用する`Accept`文字列を指定します。どのメディアがリクエストへのレスポンスとして受入れ可能かを示します。

   グローバル ヘッダー: スクリプト再生のリクエスト・ヘッダーで使用するカスタムのグローバル・ヘッダー文字列を指定します。書式は、name1:value1;name2:value2;name3:value3の形式です。たとえば、x-oracle-slm-message-id: bcn=<beacon_name>; svc=<service_name>のようになります。

8. 「接続設定」グループを開き、次のように詳細を設定します。

   Keep Alive を有効: 選択すると、リクエストで永続的な接続の使用を指定する`Connection: Keep-Alive`ヘッダーが設定されます。「Keep-Alive」キーワードは、複数のリクエストに接続をオープンしたままにするリクエストを示します。HTTP/1.0の場合、クライアントまたはサーバーで接続が切断されるまでソケット接続がオープンのままになります。HTTP/1.1の場合、Connection: closeヘッダーが指定されるまで、すべての接続が有効なままになります。

   Keep Alive リクエストの最大数: Keep Alive接続を閉じるまでにKeep Alive接続で作成するリクエストの最大数を指定するか、無制限の数を表す「制限なし」を選択します。

   ユーザーごとの最大 HTTP 接続数: サーバーごとのプロセス当たりのサーバー接続の最大数を指定します。たとえば、各VUがイメージ用の追加リソースや追加のフレームをリクエストする複数の接続を作成することがあります。このオプションを設定すると、VUが作成できるサーバー接続の合計数を制限できます。デフォルト設定は「デフォルト」で、エージェント・マシンに設定されたデフォルトの接続制限が使用されることを意味します。（詳細は、Microsoftナレッジベースの記事Q183110を参照してください。）

9. 「SSL」グループを開いて、デフォルトのHTTP再生のSecure Sockets Layer（SSL）設定を次のように指定します。

   SSL バージョン: プロキシ・サーバーに使用するSecure Socket Layerバージョンを指定します。ブラウザでセキュアなサイトを記録するとき、ユーザーにはセキュアなWebサイトの証明書ではなくプロキシ・レコーダの証明書が示されます。ブラウザ、プロキシ・レコーダ、Secure Serverはそれぞれ独自のプライベート・キーとパブリック・キーを持ち、それがデータの暗号化と復号化に使用されます。

   - SSL: プロキシ・サーバーでSecure Socket Layerプロトコルを使用します。OpenScriptは、Sun Java Secure Socket Extension（JSSE）を使用します。Sun JSSEは、デフォルトでSSLv2、ASSLv3、ASSL、ATLSv1、ATLS、SSL_TLSをサポートしています。

   - SSL (TLS なし): Transport Layer SecurityなしのSecure Socket Layerを使用します。場合によって、JSSEの問題のためにTLSプロトコル接続エラーが発生することがあります。「SSL」オプションを使用するとプロトコルの接続エラーが発生する場合には、このオプションを使用します。

10. 「ダウンロード マネージャ」グループを開き、次のように詳細を設定します。

    ダウンロード マネージャを使用: 選択すると、ダウンロード・マネージャが再生中に有効になります。選択を解除すると、ダウンロード・マネージャは再生中に有効になりません。

    CSS リソース: 選択すると、<Link>タグのCSSリソースが再生中にダウンロードされます。選択を解除すると、再生中にダウンロードされません。

    イメージ リソース: 選択すると、タグのバックグラウンド属性の<Img>タグまたはbackground:urlパターンの<style>タグのイメージ・リソースが再生中にダウンロードされます。選択を解除すると、再生中にダウンロードされません。

    埋め込みオブジェクト リソース: 選択すると、<Embed>タグまたは<Object>タグのオブジェクト・リソースが再生中にダウンロードされます。選択を解除すると、再生中にダウンロードされません。

    スクリプト リソース: 選択すると、<Script>タグのスクリプト・リソースが再生中にダウンロードされます。選択を解除すると、再生中にダウンロードされません。

    Applet リソース: 選択すると、<Applet>タグのアプレット・リソースが再生中にダウンロードされます。選択を解除すると、再生中にダウンロードされません。

    ダウンロード・マネージャの設定の詳細は、2.4.5.6項「ダウンロード マネージャ」を参照してください。

11. 「その他」グループを開き、次のように詳細を設定します。

    次で終わる URL のリクエストを送信しない: URLが指定したパターンまたはファイル・タイプのいずれかで終わるときにリクエストされないURLを示します。終了パターンまたはファイル・タイプをカンマで区切って指定してください。

    正規表現に一致する URL を無視: 特定のリソースを無視する場合に使用する正規表現を指定します。たとえば、式`Login_Banner(.+?)`を使用すると、Login_Banner1.gifやLogin_Banner2.gifなどのリソースはダウンロードされません。複数の正規表現はカンマ（,）で区切って指定できます。

    キャッシュ エミュレーション: シミュレーションするユーザーのタイプを示します。これは、仮想ユーザーの様々なプロファイルをシミュレーションするのに便利です。ユーザーが初めてアクセスする場合、ページやイメージがキャッシュされていないために、Webサーバーにかかる負荷は大きくなります。ユーザーが繰り返しアクセスする場合、新しいページのみがリクエストされてWebサーバーから取得されるため、サーバーにかかる負荷は小さくなります。次の3つのオプションがあります。

    - キャッシュしない: キャッシュを使用しません。WinInetを使用する場合、キャッシュ・エミュレーション方法として「キャッシュしない」を選択すると、「初回のアクセス」を選択したときと同じ結果になります。ドキュメント・キャッシュは作成もクリアもされません。

    - 初回のアクセス: 仮想ユーザーは、反復のたびにWebサイトまたはアプリケーションを初めて使用するとみなされるため、キャッシュは使用されません。反復中はキャッシュが使用されます。

    - 繰り返しのアクセス: 仮想ユーザーは、以前にWebサイトまたはアプリケーションを訪問または使用したことがあるとみなされます。ページとイメージがキャッシュから取得されます。

    最大インメモリ キャッシュ サイズ: キャッシュされるドキュメント・コンテンツに割り当てるインメモリー記憶域の最大容量を指定します。各仮想ユーザーが独自のキャッシュ・ドキュメントを維持する場合でも、この設定はプロセスのすべての仮想ユーザーに適用されます。インメモリー・キャッシュが消費されると、ドキュメント・コンテンツはディスク上の<installDir>\agent\cacheの一時ファイルにキャッシュされます。キャッシュ・ドキュメントの格納に使用可能なディスク記憶域に上限はありません。ディスク・キャッシュは、エージェント・プロセスが開始するたびに消去されます。デフォルト値は16MBです。

    Cookie を有効: 選択すると、仮想ユーザー・プロファイルでCookieが使用されます。WebアプリケーションがCookieを使用してセッションその他のコンテキスト情報を管理する場合は、この設定を使用します。

    ローカル ファイルをダウンロード: 選択すると、リクエストされたローカル・ファイル・コンテンツをJavaエージェントが取得します。

    反復間で Cookie を保存: 「Run」セクションでブラウザに追加されたCookieを、「Run」セクションの連続する反復間で保存するか、自動的にクリアするために使用します。

    - 「Initialize」セクションでブラウザに追加されたCookieは、スクリプト・コードから明示的に削除しないかぎり、永久に保存されます。

    - 「Run」セクションのブラウザに追加されたCookieは、「Run」セクションと「Finish」セクションの最後の反復の間に必ず保存されます。

    反復間で接続セッションを保存: OpenScriptとブラウザの間の接続を、スクリプトの連続する反復間で保存するために使用します。選択すると、可能な場合にブラウザは反復間で、開いているブラウザ接続の再利用を試行します。各仮想ユーザーは、他の仮想ユーザーとは共有しない独自の接続セットを維持します。

    最大コンテンツ サイズ（KB）: 指定のリクエストに対してサーバーからダウンロードする最大KB数を指定します。このオプションのデフォルト値は「無制限」です。ただし、仮想ユーザー表示の最大サイズが1024KBに設定されていると、コンテンツ・サイズが仮想ユーザー表示サイズを超えた場合に、詳細ビューのコンテンツが切り捨てられる可能性があります。詳細設定の再生項目の「追加引数」フィールドで次の設定を追加して、仮想ユーザー表示の最大サイズを設定できます。

        -MAX_VUDATA_BYTES xxxxxxxx

    `xxxxxxxx`は、仮想ユーザー表示の最大サイズとして設定するKB単位のサイズです。次に例を示します。

        -MAX_VUDATA_BYTES 10000000

    その他の引数の指定の詳細は、「「再生」の「一般」詳細設定」を参照してください。

    ソケット タイムアウト: ソケット接続がタイムアウトするまで待機する最大秒数を指定します。

12. 完了後、「OK」をクリックします。

### 6.4.2 HTTPスクリプトの再生

HTTPスクリプトを記録したら、再生することができます。

1. OpenScriptを起動します。

2. 再生するHTTPスクリプトを開きます。

3. 「スクリプト」メニューから「再生」を選択するか、ツールバー・ボタンをクリックします。

4. コンソール・ビューでスクリプト再生の進捗状況を確認できます。結果ビューでスクリプト再生の結果を確認できます。

   詳細は「スクリプト再生結果の表示」を参照してください。

### 6.4.3 HTTPスクリプトを反復して再生

OpenScriptでは、スクリプトのナビゲーションを繰り返し再生できます。反復は、データバンクあり、またはデータバンクなしで実行可能です。

1. OpenScriptを起動します。

2. 再生するHTTPスクリプトを開きます。

3. 4.3項「データバンクの設定」の説明に従って、データバンクを使用するようにスクリプトを設定します。

4. 「スクリプト」メニューから「反復」を選択するか、ツールバー・ボタンをクリックします。

5. 「データバンクを使用」を選択します。

6. スクリプトに複数のデータベースが設定されている場合には、設定を指定するデータバンク・ファイルを選択します。

7. データバンク・ファイルの設定を指定します。

8. 再生を停止する反復数オプションを選択し、任意の再生の反復回数を指定します。反復設定の詳細は、4.5項「スクリプトを反復して再生」を参照してください。

9. 「OK」をクリックします。

   コンソール・ビューでスクリプト再生の進捗状況を確認できます。結果ビューでスクリプト再生の結果を確認できます。

### 6.4.4 スクリプト再生結果の表示

HTTPスクリプトの再生結果を表示するには、次のステップを実行します。

1. OpenScriptを起動します。

2. 再生するHTTPスクリプトを開きます。

3. 「スクリプト」メニューから「再生」を選択するか、ツールバー・ボタンをクリックします。

4. 再生が終了したら、「結果」ビューをクリックします。必要に応じて、「ビュー」メニューから「結果」を選択して結果ビューを表示します。

5. 「名称」列で、結果ノードを開いて結果を表示します。

6. 結果ビューでスクリプトの結果ノードを選択すると、詳細ビューで特定のナビゲーション結果が表示されます。必要に応じて、「ビュー」メニューから「詳細」を選択し、詳細ビューを開きます。

   詳細ビューには、ブラウザでレンダリングされたコンテンツ、HTMLソース、リクエストおよびレスポンス・ヘッダーを表示するタブと、コンテンツ、リクエストおよびレスポンス・ヘッダー、Cookie、リソースに関する再生詳細を比較する比較タブがあります。

7. 結果ビューでトップ・レベルのスクリプト結果をクリックすると、詳細ビューで「結果レポート」が表示されます。レポートを表示し、レポートのHTMLファイルをエクスポートすることができます。

### 6.4.5 エンコードのリセット

「エンコード リセット」メニュー・オプションでは、記録されたHTMLを表示する際に使用するキャラクタ・セットを変更できます。このオプションを使用すると、正しい文字エンコードが自動的に設定されない可能性のある英語以外のWebサイトのエンコードをリセットできます。

エンコードをリセットするには、次のステップを実行します。

1. OpenScriptを起動します。

2. HTTPスクリプトを開きます。

3. HTTPスクリプトを開いて、ナビゲーション・ノードを選択します。

4. ナビゲーション・ノードを右クリックして、ショートカット・メニューから「エンコード リセット」を選択します。

5. 記録されたHTMLページに使用するエンコード値を入力し、「OK」をクリックします。

### 6.4.6 記録された結果と再生結果の比較

HTTPスクリプトの再生結果を、記録されたナビゲーションと比較するには、次のステップを実行します。

1. OpenScriptを起動します。

2. 「テスター パースペクティブ」に切り替え、詳細ビューが開かれていることを確認します。開かれていない場合は、「ビュー」メニューから「詳細」を選択し、詳細ビューを開きます。

3. 再生するHTTPスクリプトを開きます。

4. 「スクリプト」メニューから「再生」を選択するか、ツールバー・ボタンをクリックします。

5. 再生が終了したら、結果を表示します。必要に応じて、「ビュー」メニューから「結果」を選択して結果ビューを開きます。

6. 「名称」列で、結果ノードを開いて結果を表示します。

7. 「名称」列で、ページのナビゲーション・ノードをクリックします。

8. 詳細ビューで「比較」タブをクリックします。

9. 「比較」タブで、「コンテンツ」、「リクエスト ヘッダー」または「レスポンス ヘッダー」を選択して、下部のペインに比較対象の記録されたテキストと再生テキストを表示します。

### 6.4.7 Oracle Load TestingでのHTTPスクリプトの再生

記録すると、Oracle Load TestingでHTTPスクリプトを再生できます。

OpenScriptとOracle Load Testingが同じマシン上にある場合

1. Oracle Load Testingを起動します。

2. OpenScriptが配置されているリポジトリとワークスペースを選択します。

3. 再生するスクリプトを選択します。

4. ユーザー・モードをJavaクライアントに設定します。

5. テストに必要なシナリオ・パラメータを設定します。

6. オートパイロット・モードでシナリオを実行します。

OpenScriptとOracle Load Testingが異なるマシン上にある場合

1. 「ファイル」メニューから「スクリプト エクスポート」を選択します。

2. Zipファイルにエクスポートする追加ファイルを選択し、「OK」をクリックします。

3. エクスポートしたZipファイルをOracle Load Testingのマシンにコピーします。

4. Oracle Load Testingを起動します。

5. 「ツール」メニューから「ファイルのアップロード」を選択します。

6. ファイル・タイプとしてOpenScript Zipを選択します。

7. エクスポートされたOpenScript Zipファイルの名前と場所を入力します。

8. OpenScriptスクリプトがアップロードされるリポジトリとワークスペースを選択します。

9. 「アップロード」をクリックして、ファイルをアップロードします。

10. 「シナリオの設定」タブで、再生するスクリプトを選択します。

11. ユーザー・モードをJavaクライアントに設定します。

12. テストに必要なシナリオ・パラメータを設定します。

13. オートパイロットでシナリオを実行します。

注意: データバンク・ファイルなどの外部ファイルは、Oracle Load Testingで使用可能である必要があります（スクリプト・ファイルで指定されたパスに配置します）。

### 6.4.8 バイナリまたはXMLファイル・データの転送

バイナリまたはXMLファイル・データを転送するには、次のステップを実行します。

1. 「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。

2. Javaコード・ビューを開きます。

3. 次のコードを使用して、データを転送するバイナリ・データ変数および`http.navigate()`メソッドを指定します。

4.     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ファイルをスクリプト内に格納する場合

1. 開発者パースペクティブに切り替えます。

2. ナビゲータ・ビューで、"resources"という名前のスクリプト・プロジェクト内にフォルダを作成します。

3. 新規の"resources"フォルダにjpgまたはXMLファイルを追加します。

4. 上記のコード・サンプルの最初の行を、次のように変更します。

5.     byte[] data = getScriptPackage().getResourceFile("resources/yourfile.jpg").getData();

   ファイルをスクリプトとともにローカルに保存すると、Oracle Load Testingを介してリモート・エージェント・マシンで実行されていても、エージェントはファイルを常に使用できます。

## 6.5 スクリプトの変更

スクリプトを作成あるい記録したら、テスト上の必要に応じてスクリプトに変更を加え、カスタマイズすることができます。

### 6.5.1 HTTPモジュールのスクリプト・ビューの理解

HTTPプロキシによって記録されたスクリプトのデフォルト表示は、スクリプト・ビューのツリー・ビューGUIです。HTTPレコーダは、OpenScriptで設定されたステップ・グループ詳細設定に基づいてツリー・ビューおよびコードを生成します。デフォルトのステップ・グループ設定では、HTTP Webアプリケーションのページ・ナビゲーションに基づいてステップ・グループが生成されます。

図6-1 スクリプト・ツリー・ビュー

「図6-1 スクリプト・ツリー・ビュー」の説明

各ナビゲーションの下には、クエリー・ストリングやフォーム・アクション入力などページ・ナビゲーションに関する追加情報のための子ノードがあります。右クリックのショートカット・メニューには、HTTPモジュールで生成されたスクリプトに固有の追加のスクリプト変更オプションが含まれます。ツリー・ビューは、コード・ビューの基礎コードをグラフィカルに表現したものです。たとえば、上のツリー・ビューの「Page [4] Ticker List」はステップ・グループとして表示されていますが、コード・ビューでは次のように`http.get method`メソッド・コードとして表示されます（わかりやすいように改行とスペースが追加されています）。

    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リクエスト、相関置換、検証などを生成するメソッドが含まれています（他のメソッドもあります）。

### 6.5.2 スクリプト変数の使用

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();

### 6.5.3 スクリプトへの変数の追加

次に、スクリプトに変数を追加する方法を示します。変数に設定する値を指定された場所で検索するために、正規表現を使用しています。

1. スクリプト・プロジェクトを開くか、作成します。

2. 変数を追加するスクリプト・ノードを選択します。

3. 「スクリプト」メニューを選択してから、「追加」サブメニューで「その他」を選択します。

4. 「変数」ノードを開いて、「変数を設定」を選択します。

5. 変数名を入力します。

6. 変数値を入力します。

7. 「OK」をクリックします。「Set variable = value」ノードがスクリプト・ツリーに追加されます。

8. Javaコード・ビューで、`getVariables().set("varName", "value");`メソッドがスクリプト・コードに追加されます。

### 6.5.4 スクリプトへのXPath解析の追加

スクリプトにSolveXpathを追加するには、次のようにします。

1. スクリプト・プロジェクトを開くか、作成します。

2. XPath値を追加するスクリプト・ノードを選択します。

3. 「スクリプト」メニューを選択してから、「追加」サブメニューで「その他」を選択します。

4. 「変数」ノードを開き、「XPath 解析」を選択します。

5. 変数名を入力します。

6. 変数の値の検索に使用するXPathを入力します。

7. 変数メソッドに使用する結果インデックスを入力します。

8. 「OK」をクリックします。「SolveXpath: name」ノードがスクリプト・ツリーに追加されます。

9. 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}}");

### 6.5.5 スクリプト内の変数の検索

スクリプト内の変数を検索するには、次のステップを実行します。

1. スクリプトを開くか、作成します。

2. `{{ }}`構文を含むPOSTデータまたはクエリー・ストリング・パラメータを右クリックして、「変数ソースを検索」を選択します。

`{{ }}`で参照される変数が、スクリプト・ツリー・ノード内で選択されます。

指定のパラメータに複数の変数が存在する場合、OpenScriptによって、検索する変数を選択するダイアログ・ボックスが表示されます。

### 6.5.6 スクリプトからの変数の削除

ツリー・ビューから変数を削除すると、スクリプトに含まれる文字列内の`{{ }}`で示された変数への参照が、その記録された値に戻されます。Javaコード内の変数参照も元に戻されます。

スクリプトから変数を削除するには、次のステップを実行します。

1. スクリプトを開くか、作成します。

2. `{{ }}`構文を含むPOSTデータまたはクエリー・ストリング・パラメータを右クリックして、「削除」を選択します。

`{{ }}`構文で参照される変数は、その記録された値に戻されます。

スクリプトから類似した複数の変数を削除するには、次のステップを実行します。

1. スクリプトを開くか、作成します。

2. `{{ }}`構文を含むPOSTデータまたはクエリー・ストリング・パラメータを右クリックして、すべてのタイプ_変数を削除するを選択します。このメニュー・オプションは、名前に接頭辞とアンダースコア（_）の付いた変数に表示されます。

`{{ }}`構文で参照されるタイプ_のすべての変数は記録された値に戻されます。

### 6.5.7 スクリプトへの認証の追加

スクリプトはBasic、NTLMおよびDigestの認証をサポートしています。HTTPスクリプトに認証を追加するには、次のステップを実行します。

1. 「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。

2. 「Run」ノードを選択します。

3. 「スクリプト」メニューを選択してから、「追加」サブメニューで「その他」を選択します。

4. 「認証」ノードを選択して、「OK」をクリックします。

5. 認証のためにアクセスするURLを入力します。

6. ユーザー名を入力します。

7. ユーザーのパスワードを入力します。パスワードは、Base-64暗号化アルゴリズムによって暗号化されます。

8. 「OK」をクリックし、「認証」ノードをスクリプト・ツリーに追加します。

9. Javaコード・ビューでは、認証は、`http.addAuthentication`プロシージャで実行されるコードから構成されます。

       http.addAuthentication("http://testserver2", "username", decrypt("KRT|J|xJPDP"));

### 6.5.8 スクリプトへのテキスト・マッチング・テストの追加

テキスト・マッチング・テストを使用すると、HTTPリクエストがテキスト・マッチング・テストの条件に一致しない場合に、エラーの報告またはスクリプトの中止（あるいはその両方）を実行できます。

テキスト・マッチング・テストをHTTPスクリプトに追加するには、次のステップを実行します。

1. 「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。

2. 「Run」ノードを開きます。

3. テキスト・マッチング・テストを追加するHTTPナビゲーション・ノードを選択します。

4. 「スクリプト」メニューを選択してから、「追加」メニューで「テキスト マッチング テスト」を選択します。

5. テストの名前を入力します。

6. マッチングするテキスト文字列または正規表現を入力するか、「変数の置換」アイコンをクリックして、ソースで検索するデータバンクまたはスクリプト変数を選択します。

   注意: 番号記号（`#`）および二重中カッコ（`{{`および `}}`）を含む文字シーケンスを、テキスト・マッチング・テストでリテラル文字列として使用する場合（OpenScriptデータバンクやスクリプト変数を指定する文字列でない場合）、直前に番号記号（`#`）を付けてエスケープする必要があります。たとえば、番号記号は二重（`##`）にして使用し、二重中カッコの直前には番号記号を付ける（`#{{`および`#}}`）必要があります。

7. マッチング・テキストを検索する場所を選択します。

   - HTML 表示コンテンツ: ブラウザでレンダリングされたページのテキストを検索します。

   - HTML ソース: ページのHTMLソースを検索します。

   - レスポンス ヘッダー: ページのレスポンス・ヘッダーを検索します。

8. 「成功条件」設定を選択します。

   - 選択文字列が存在する: 選択したソースに「テストする文字列」の文字列が見つかった場合は合格とします。

   - 選択文字列が存在しない: 選択したソースに「テストする文字列」の文字列が見つからない場合は合格とします。

9. 「一致」タイプを選択します。

   - 完全: 「テストする文字列」の文字列と完全にマッチングします。

   - 正規表現: 「テストする文字列」で指定された正規表現を使用してマッチングします。

   - ワイルドカード: 「テストする文字列」で指定されたワイルドカード文字を使用してマッチングします。

10. 「検証のみ (失敗なし)」オプションを設定します。

11. 「OK」をクリックします。「テキスト マッチング テスト」ノードがスクリプト・ツリーに追加されます。

    「検証のみ (失敗なし)」オプションが選択されていない場合、Javaコード・ビューで、`http.assertText`メソッドがスクリプト・コードに追加されます。

        http.assertText("MyTextMatchTest", "Home", TextPresence.PassIfPresent, MatchOption.Exact)

    「検証のみ (失敗なし)」オプションが選択されている場合、Javaコード・ビューで、`http.verifyText`メソッドがスクリプト・コードに追加されます。

        http.verifyText("MyTextMatchTest", "Home", TextPresence.PassIfPresent, MatchOption.Exact)

### 6.5.9 スクリプトへのサーバー・レスポンス・テストの追加

サーバー・レスポンス・テストを使用すると、HTTPリクエストのレスポンスが指定の時間内にクライアントに返されない場合に、エラーの報告またはスクリプトの中止（あるいはその両方）を実行できます。

サーバー・レスポンス・テストをHTTPスクリプトに追加するには、次のステップを実行します。

1. 「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。

2. 「Run」ノードを開きます。

3. サーバー・レスポンス・テストを追加するHTTPナビゲーション・ノードを選択します。

4. 「スクリプト」メニューを選択してから、「追加」サブメニューで「その他」を選択します。

5. 「検証」グループの「サーバー レスポンス テスト」を選択します。

6. テストの名前を入力します。

7. 時間の最小値と最大値を入力します。

8. テストが失敗した場合に記録するエラー・メッセージ・テキストを入力します。

9. 「失敗時に反復を停止する」オプションを設定します。

10. 「OK」をクリックして、サーバー・レスポンス・ノードをスクリプト・ツリーに追加します。

### 6.5.10 データバンク変数の置換

再生の際、Webページのパラメータにはデータバンク・ファイルの値が代入されますが、データバンク変数をHTTPスクリプトのクエリー・ストリング・パラメータに置換することもできます。

1. 「新規HTTPスクリプトの記録」の説明に従って、クエリー・ストリング・パラメータを持つHTTPスクリプトを記録します。

2. 「Run」ノードを開きます。

3. クエリー・ストリング・パラメータを含むノードを開きます。

4. クエリー・ストリング・パラメータ・ノードを右クリックして、ショートカット・メニューから「変数の置換」を選択します。

5. - スクリプトに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);

### 6.5.11 POSTデータ変数の置換

HTTPスクリプトのPOSTデータ・パラメータと変数を置換するには、次のステップを実行します。

1. POSTデータ・パラメータのあるHTTPスクリプトを記録します。

2. 「Run」ノードを開きます。

3. POSTデータ・パラメータを含むノードを開きます。

4. POSTデータ・パラメータ・ノードを右クリックして、ショートカット・メニューから「変数の置換」を選択します。

5. - スクリプト内でカスタム変数をすでに定義済の場合、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);

### 6.5.12 スクリプトへのCookieの追加

スクリプトにCookieを追加するには、次のようにします。

1. スクリプト・プロジェクトを開くか、作成します。

2. Cookieを追加するスクリプト・ノードを選択します。

3. 「スクリプト」メニューを選択してから、「追加」サブメニューで「その他」を選択します。

4. 「Cookie」ノードを開いて「Cookie の追加」を選択します。

   このダイアログ・ボックスでは、スクリプトにCookieを追加できます。

5. 有効なCookie文字列を入力します。

   - Cookie文字列: 追加するCookie文字列を指定します。

   - Cookie文字列文字コード: Cookie文字列に使用する文字コードを指定します。

6. 「OK」をクリックします。スクリプト・ツリーに「Cookie」ノードが追加されます。

7. 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());

          }

### 6.5.13 スクリプトからのCookieの削除

スクリプトからCookieを削除するには、次のようにします。

1. スクリプト・プロジェクトを開くか、作成します。

2. 「Cookieの削除」ノードを配置するスクリプト・ノードを選択します。

3. 「スクリプト」メニューを選択してから、「追加」サブメニューで「その他」を選択します。

4. 「Cookie」ノードを開いて、「Cookieの削除」を選択します。

5. 削除するCookie文字列を入力します。

6. 「OK」をクリックします。スクリプト・ツリーに「Cookie の削除」ノードが追加されます。

7. Javaコード・ビューでは、`http.removeCookie`メソッドがスクリプト・コードに追加されます。

       http.removeCookie("cookieString");

### 6.5.14 スクリプトへのユーザー・エージェントの追加

ユーザー・エージェントをスクリプトに追加するには、次のステップを実行します。

1. スクリプト・プロジェクトを開くか、作成します。

2. ユーザー・エージェントを追加するスクリプト・ノードを選択します。

3. 「スクリプト」メニューを選択してから、「追加」サブメニューで「その他」を選択します。

4. 「HTTP」ノードを開いて、ユーザー・エージェントの設定を選択します。

5. ユーザー・エージェントの詳細を入力します。

6. 「OK」をクリックします。ユーザー・エージェント・ノードがスクリプト・ツリーに追加されます。

7. 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)");

## 6.6 ナビゲーションの追加

HTTPモジュールを使用すると、ユーザーは記録されたナビゲーションと関連パラメータ（ヘッダー、POSTデータなど）のすべてをスクリプトGUIツリー・ビューまたはコード・ビューで表示および編集できます。また、動的ナビゲーションのデフォルト相関/パラメータ化を表示および編集したり、動的ナビゲーションを処理する独自の相関を適用することもできます。

### 6.6.1 ナビゲーション編集（相関）の理解

ナビゲーション編集GUIビューを使用すると、パラメータ化するナビゲーションと適用する相関ルールを設定できます。このGUIでは、様々なタイプのナビゲーション（Web/HTTPアプリケーションと非Web/HTTPアプリケーションの両方）とデータ入力を表示および編集できます。

記録されたナビゲーションの表示および編集ビューには、記録されたナビゲーションとヘッダーなどのナビゲーション・パラメータが表示されます。また、ユーザーが動的パラメータのソース/対象を含むナビゲーションを編集/追加/削除するためのメカニズムが用意されています。

図6-2 記録されたナビゲーションの表示および編集ビュー

「図6-2 記録されたナビゲーションの表示および編集ビュー」の説明

相関ルール・ライブラリの表示および編集ビューには、モジュールに含まれるすべてのデフォルト相関ルールのリストがアプリケーション・タイプ別に表示されます。また、ユーザーが相関ルールを追加、編集、削除するためのメカニズムも用意されています。

図6-3 相関ルール・ライブラリの表示および編集ビュー

「図6-3 相関ルール・ライブラリの表示および編集ビュー」の説明

パラメータ化するナビゲーションと入力の取得元となるデータソースを、コマンド・ビューのナビゲーション編集コマンドを通じて指定できます。このコマンドは、ナビゲーション編集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();

### 6.6.2 HTTP GETナビゲーションの追加

HTTP GETナビゲーションをHTTPスクリプトに追加するには、次のステップを実行します。

1. 「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。

2. 「Run」ノードを選択します。

3. 「スクリプト」メニューを選択して、「追加」サブメニューから「HTTP GET ナビゲーション」を選択します。

4. 「ベース URL」タブで、次の内容を指定します。

   パス: ナビゲーションに使用するベースURLパスを指定します。

   リクエスト文字セット: リクエストに使用する文字セットを指定します。

   レスポンス文字セット: レスポンスに使用する文字セットを指定します。

   文字列をエンコード: 選択すると、文字列内の制御文字および特殊文字が文字エンティティ参照にエンコードされます。選択を解除すると、文字列内の制御文字および特殊文字はエンコードされません。

5. 「クエリー ストリング」タブの「追加」ボタンを使用して、リクエストされた名前/値のペアを「ベース URL」に追加します。「上へ」と「下へ」のボタンを使用すると、選択したクエリー・ストリング・パラメータの検索順序を上下に移動できます。

6. 「ヘッダー」タブで、「追加」ボタンを使用して、名前と値のペア、およびアクションを「ベース URL」に追加します。

7. 「OK」をクリックし、スクリプト・ツリーにHTTP GETナビゲーション・ノードを追加します。

8. 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");

### 6.6.3 HTTP POSTナビゲーションの追加

HTTP POSTナビゲーションをHTTPスクリプトに追加するには、次のステップを実行します。

1. 「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。

2. 「Run」ノードを選択します。

3. 「スクリプト」メニューを選択してから、「追加」サブメニューで「その他」を選択します。

4. 「HTTP POST ナビゲーション」ノードを選択し、「OK」をクリックします。

5. 「ベース URL」タブで、次の内容を指定します。

   パス: ナビゲーションに使用するベースURLパスを指定します。

   リクエスト文字セット: リクエストに使用する文字セットを指定します。

   文字列をエンコード: 選択すると、文字列内の制御文字および特殊文字が文字エンティティ参照にエンコードされます。選択を解除すると、文字列内の制御文字および特殊文字はエンコードされません。

6. 「クエリー ストリング」タブの「追加」ボタンを使用して、リクエストされた名前/値のペアを「ベース URL」に追加します。「上へ」と「下へ」のボタンを使用すると、選択したクエリー・ストリング・パラメータの検索順序を上下に移動できます。

7. 「POST データ」タブで、「追加」ボタンを使用し、名前と値のペアを「ベース URL」に追加します。

8. 「ヘッダー」タブで、「追加」ボタンを使用して、名前と値のペア、およびアクションを「ベース URL」に追加します。

9. 「OK」をクリックして、HTTP POSTナビゲーション・ノードをスクリプト・ツリーに追加します。

10. 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");

### 6.6.4 HTTPマルチパートPOSTナビゲーションの追加

HTTPマルチパートPOSTナビゲーションをHTTPスクリプトに追加するには、次のステップを実行します。

1. 「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。

2. 「Run」ノードを選択します。

3. 「スクリプト」メニューを選択してから、「追加」サブメニューで「その他」を選択します。

4. HTTPマルチパート・ナビゲーションノードを開いて、「マルチパート POST ナビゲーション」ノードを選択し、「OK」をクリックします。

5. 「ベース URL」タブで、次の内容を入力します。

   パス: ナビゲーションに使用するベースURLパスを指定します。

   バウンダリー: マルチパートのフォーム入力ナビゲーション（ファイル・ナビゲーション）の各部分の識別に使用するバウンダリを指定します。このバウンダリは、ユーザー・エージェントが送信するContent-Type: multipart/form-data; boundary=""レスポンスの中で使用されます。指定するバウンダリは、どのファイル・データにも出現しないものであることが必要です。

   リクエスト文字セット: リクエストに使用する文字セットを指定します。

   レスポンス文字セット: レスポンスに使用する文字セットを指定します。

   文字列をエンコード: このオプションを選択すると、文字列内の制御文字および特殊文字が文字エンティティ参照にエンコードされます。選択を解除すると、文字列内の制御文字および特殊文字はエンコードされません。

6. 「クエリー ストリング」タブで、「追加」ボタンを使用し、ベースURLに名前と値のペアを追加します。

7. 「POST データ」タブで、「追加」ボタンを使用して、POSTデータを「ベース URL」に追加します。標準のPOSTデータの名前と値のペア、またはPOSTデータ・ファイルを指定できます。「ファイル」を選択した場合、各POSTデータ・ファイル・パラメータのパス、ファイル名、およびコンテンツ・タイプを指定します。

8. 「ヘッダー」タブで、「追加」ボタンを使用して、名前と値のペア、およびアクションを「ベース URL」に追加します。

9. 「OK」をクリックして、HTTPマルチパートPOSTナビゲーション・ノードをスクリプト・ツリーに追加します。

10. 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");

### 6.6.5 HTTP XML POSTナビゲーションの追加

HTTP XML POSTナビゲーションをHTTPスクリプトに追加するには、次のステップを実行します。

1. 「新規HTTPスクリプトの記録」の説明に従ってHTTPスクリプトを記録します。

2. 「Run」ノードを選択します。

3. 「スクリプト」メニューを選択してから、「追加」サブメニューで「その他」を選択します。

4. 「XML POST ナビゲーション」ノードを開いて、「XML POST ナビゲーション」ノードを選択し、「OK」をクリックします。

5. 「ベース URL」タブで、次の内容を指定します。

   パス: ナビゲーションに使用するベースURLパスを指定します。

   リクエスト文字セット: リクエストに使用する文字セットを指定します。

   レスポンス文字セット: レスポンスに使用する文字セットを指定します。

   文字列をエンコード: 選択すると、文字列内の制御文字および特殊文字が文字エンティティ参照にエンコードされます。選択を解除すると、文字列内の制御文字および特殊文字はエンコードされません。

6. 「クエリー ストリング」タブの「追加」ボタンを使用して、リクエストされた名前/値のペアを「ベース URL」に追加します。「上へ」と「下へ」のボタンを使用すると、選択したクエリー・ストリング・パラメータの検索順序を上下に移動できます。

7. 「POST データ」タブで、「ベース URL」に追加するXML POSTデータを入力します。

8. 「ヘッダー」タブで、「追加」ボタンを使用して、名前と値のペア、およびアクションを「ベース URL」に追加します。

9. 「OK」をクリックして、HTTP XMLPOSTナビゲーション・ノードをスクリプト・ツリーに追加します。

10. 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");

### 6.6.6 HTTPモジュールAPIの使用

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リファレンスを参照してください。