ヘッダーをスキップ

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

戻る | 次へ |

# 4 データバンクの使用

OpenScriptを使用すると、ユーザーはスクリプト・データ入力をパラメータ化し、データバンクを使用してデータ・ドリブンのテストを実行できます。ユーザーはスクリプトに任意のデータ入力を選択し、再生中に外部ファイルから入力を行う変数を置換できます。単一のスクリプトに複数のデータバンク・ファイルを添付することが可能で、ユーザーはスクリプトの再生中にOpenScriptがデータを割り当てる方法を指定できます。

## 4.1 データ駆動型テスティング（パラメータ化）の理解

データ駆動型テスティング（パラメータ化）を使用すると、自動化されたデータ駆動型テストを簡単かつ効率的に作成できます。

OpenScriptのモジュールは、Webアプリケーションの各ページで定義されたパラメータをスクリプトに記録します。データバンクを使用して無制限のサイズの入力データを保持し、スクリプトの実行時にWebアプリケーションにパラメータとして自動的に提供することができます。OpenScriptデータバンク機能を使用すると、スクリプト・パラメータの変数値を定義し、変数値をデータバンク・ファイルの値に置換することができます。

再生時には、Webページのパラメータにデータバンク・ファイルの値が挿入されます。データバンク・ファイルは、任意の単純なテキスト・エディタ、スプレッドシート、ワード・プロセッサまたはデータベース・アプリケーションを使用して、簡単に作成または変更できます。ユーザーは、高度な自動回帰テストを作成し、データバンク・ファイルの様々な入力データを使用してWebアプリケーションを徹底的にテストすることができます。

データ入力のパラメータ化: ユーザーは、記録されたスクリプト入力をパラメータ化し、スクリプトGUIビューまたはコード・ビューでデータ駆動型テスティングを実行することができます。この入力は、Webアプリケーションのフォーム・フィールド入力、あるいは他のタイプのパラメータ化可能なスクリプト入力です。パラメータ化可能な入力には次のタイプがあります。

- ユーザーが入力した任意の入力データ（検索フィールドに入力したデータをパラメータ化する場合）

- テスト・ケース値（再生時に様々な入力を使用して比較できるように、検証用のテキスト文字列をパラメータ化する場合）

- 記録されたナビゲーション（再生時に様々なホスト・サーバーに移動できるように、開始ナビゲーションをパラメータ化する場合）

- 記録された確認済のユーザー・アクション/オブジェクト（再生時に様々なリンクをクリックできるように、リンク・オブジェクト・パスをパラメータ化する場合）

データ入力ソース: ユーザーは、外部CSVファイルや、データベース（データベース・クエリーを使用してデータベース・テーブルから入力を抽出）などのその他の外部データソースから入力値を取得できます。

データ・パラメータ化GUIビュー: ユーザーは、パラメータ化する入力と入力の取得元となるデータソースを、変数置換GUIインタフェースを通じて設定できます。たとえば、次のツリー・ビュー内の「Page [4] Ticker List」のtickerクエリー・ストリング・パラメータは、変数値{{fmstocks_data.ticker,ter}}に設定されています。

変数{{fmstocks_data.ticker,ter}}において、fmstocks_dataはデータバンク・ファイル名、.tickerはデータバンク・ファイル内のフィールド名、terは記録された値です。

データ・パラメータ化コード・ビュー・コマンド: ユーザーは、パラメータ化する入力と入力の取得元となるデータソースを、コード・ビューでのデータ・パラメータ化を通じて指定できます。

たとえば、上のツリー・ビュー内の「Page [4] Ticker List」のtickerクエリー・ストリング・パラメータは、コード・ビューでは次のように`http.get`メソッド・コード内に`http.querystring(http.param("ticker", "{{fmstocks_data.ticker,ter}}")`として表示されます（わかりやすいように改行とスペースが追加されています）。

    beginStep("[4] Ticker List", 3422);

    {

       http.get(6, "http://testserver2/fmstocks/{{LINK_1_3,TickerList.asp}}",

            http.querystring(http.param("ticker", "{{fmstocks_data.ticker,ter}}"),

                 http.param("company", "")),  null, true, "ASCII", "ASCII");

    }

    endStep()

## 4.2 スクリプト・データバンクの使用

データバンクを使用して無制限のサイズの入力データを保持し、Webアプリケーションにパラメータとして自動的に提供することができます。再生時には、Webページのパラメータにデータバンク・ファイルの値が挿入されます。データバンクおよびスクリプト・パラメータのショートカット・メニュー・オプションを使用すると、スクリプトのパラメータをデータバンク・ファイルのフィールドに変数名としてマップできます。

データバンクを使用するようにスクリプトを設定する必要があります。「スクリプト」メニューの「スクリプト プロパティ」オプションを使用して、アセット・プロパティでスクリプトとともに使用するデータバンク・ファイルを指定します。スクリプトは、複数のデータバンク・ファイルを使用するように設定できます。

記録したスクリプトにパラメータを使用するナビゲーションが含まれている場合、「クエリー ストリング」ノードの下にパラメータ・ノードが表示されます。

コード・ビューでは、これらのパラメータは`http.querystring`パラメータの`http.param`パラメータの中に表示されます。

スクリプトとともに使用するデータバンクを設定すると、「次レコード取得 - データバンク名」ノードとJavaコードがスクリプトに追加されます。

データバンクにマップするスクリプト・パラメータ・ノードを選択し、右クリックのショートカット・メニューにある「変数の置換」オプションを使用して、パラメータにマップするデータバンク・フィールド名を選択します。データバンク・ファイルとフィールドの名称がスクリプト・ツリーのパラメータ・ノードに表示されます。

コード・ビューでは、この変数は`http.querystring`パラメータの`http.param`パラメータの中に表示されます。

データバンクのレコードを使用して再生するには、再生の反復を使用します。カスタム・コードを使用してデータバンク・レコードをループし、変数に値を割り当てることもできます。

## 4.3 データバンクの設定

スクリプトで使用するレコードをデータバンクから取得するには、スクリプトで使用するデータバンクを設定する必要があります。

スクリプトで使用するデータバンクを設定するには、次のようにします。

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

2. 「スクリプト」メニューから「スクリプト プロパティ」を選択します。

3. 「スクリプト アセット」タイプを選択します。詳細は、3.3.6項「スクリプト・アセットの追加」を参照してください。

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

5. 「追加」をクリックします。

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

7. 「CSV ファイル」または「データベース」を選択します。データバンクをCSVまたはデータベース（SQL）として定義すると、データバンクを他のタイプには変更できなくなります。

8. CSVファイルの場合:

   1. 「マイ リポジトリ」ツリーから「リポジトリ」を選択します。

   2. リポジトリでデータバンク・ファイルを選択します。

   3. 「タイプ」を「データバンク」（*.csv, *.txt）に設定します。

      タイプ: スクリプトに追加するデータバンク・ファイルのタイプ（*.csv、*.txt）を示します。

   4. 使用する「文字セット」を選択します。

      文字セット: データバンク・ファイルに使用されている文字セット・エンコードを示します。ここで示される、データバンク.csvファイルの文字セット・エンコードは、ユーザー・マシンのネイティブな文字セットです。米国のマシンの場合、示されるエンコードはcp1252です。東ヨーロッパのマシンの場合、示されるエンコードはcp1251です。UTF-8エンコードで保存し、データバンク・ファイルにUnicodeバイト・オーダー・マーク（BOM）が付加されている場合は、OpenScriptがBOMを検出し、エンコードをUTF-8に設定します。データバンク・ファイルに使用されている文字セットが、ユーザー・マシンの文字セットとも、BOMが付加されるUTF-8とも異なる場合は、文字セットを修正する必要があります。そうしないと、データバンクは正しく読み取られず、スクリプト・エラーが発生する可能性があります。「文字セット」リストで正しい文字セットを選択するか、またはフィールドに正しい文字セットを入力します。

      再生時に、エージェントが次の順番に従って、データバンク・ファイルを読み込む際の文字セットを判定します。

      - ファイルがBOM付きのUTF-8エンコードである場合は、そのエンコードが使用されます。

      - アセットの設定時に指定された文字セットが使用されます。

      - 文字セットの指定がない場合（9.1スクリプト）は、UTF-8エンコードが使用されます。

   5. データバンクに使用する別名を入力するか、デフォルトの別名のままにします。デフォルトの別名は、.CSVデータバンク・ファイルの名前です。

      別名: データバンクに使用する別名を示します。データバンク・ファイル名がデフォルトになります。データバンク別名は、データバンク・レコード取得ノードをスクリプト・ツリーに追加したときに表示される名称です。

   6. 相対パス・オプションを選択します。「現在のスクリプトの相対パス」オプションと「リポジトリの相対パス」オプションは、指定されたスクリプト・アセットを現在のスクリプトがどのように特定するかを指定します。「リポジトリの相対パス」オプションは、アセットがリポジトリから選択される場合、`[Repository: Default] Default!/WebTutor`などのリポジトリ・パスでスクリプト・アセットを特定します。「現在のスクリプトの相対パス」オプションは、`../WebTutor`などの相対パスでスクリプト・アセットを特定します。スクリプトを移動または共有すると、スクリプト相対パスはリポジトリ相対パスよりも位置情報が崩れやすいため、「現在のスクリプトの相対パス」オプションの選択はお薦めしません。

      スクリプト・アセットをチーム内または分散環境で使用する際は次のガイドラインに従ってください。

      - アセットを参照またはアセットを保存する際に絶対パスを使用しないでください。Oracle Load Testingでは絶対パスはサポートされていません。

      - OpenScript、Oracle Test Manager、Oracle Load Testingおよび全コマンドライン・エージェントではすべて、リポジトリの共有されている同じ名前およびパスを使用してください。

      - 別のリポジトリ内のアセットを相対パスで参照しないでください。

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

   8. 「OK」をクリックして、データバンク・ファイルを追加します。

9. データベースの場合、データバンク・データベース・アセット・ダイアログ・ボックスが表示されます。このダイアログ・ボックスでは、データバンクとして使用するデータベースとクエリーを指定できます。データベース管理者に連絡して、使用するデータベースに適した設定にしてください。次のオプションが使用できます。

   1. 「データベース ドライバ」を指定します。

      Oracle Thin: このドライバ・オプションは、Oracleデータベースに適用されます。

      - ホスト名:データベースを実行しているマシンのホスト名を指定します。JDBC:ODBCまたはカスタム・ドライバ設定の場合には、このオプションを指定する必要はありません。

      - ポート: 選択したドライバのポートを指定します。たとえば、Oracle Thin JDBCドライバのデフォルトのポートが1521の場合は、必要に応じてポート番号を変更してください。JDBC:ODBCまたはカスタム・ドライバ設定の場合は、このオプションの指定は必要ありません。

      - SID: データベースまたはサーバーのIDを指定します。

      - サービス名: Oracleデータベースに使用されるサービス名を入力します。

      ODBC: このドライバ・オプションは、SQLデータベース、Oracleデータベース、およびJDBC:ODBCブリッジ・ドライバの接続先データベースのオプションとして使用できます。

      - データ ソース: ODBCドライバのデータソースを指定します。

   2. URL、ユーザー名、パスワード、問合せ文字列、およびデータベース別名を指定します。

      - URL: データベースに接続するためのURLを指定します。

      - ユーザー名: データベースに接続する際のユーザー名を入力します（認証に必要な場合）。

      - パスワード: データベースに接続する際のパスワードを入力します（認証に必要な場合）。

      - クエリー: データバンク値として必要なすべての行を返す単一のSQLクエリーを指定します。SQLクエリーにはPL/SQLコードもSQL*Plusコードも含めることができません。通常のSQLのみ指定可能です。スクリプトで処理可能なカラム名（データバンクのフィールド）が返されるように、クエリーを指定する必要があります。

        データベース型のデータバンクのサイズが大きくても、テストではレコードの一部分しか使用しない場合は、データベースから取得するレコードの件数を減らすために、SQLクエリーでWhere句を使用してください。たとえば、データベースのレコード件数が20万件で、レコード201から順番に201から301まで100件だけ取得する必要がある場合は、`Select * From LargeTable Where id > 200 AND id < 302`などのクエリーを使用します。開始レコードは1になり、範囲設定はありません。このため、データバンクの準備時間が短縮され、データベースから取得されるレコード件数が最小限に抑えられます。

        データベースから返される結果が意図した順番になるように、クエリーにOrder By句を使用してください。たとえば、カラムの`id`、`firstName`、`lastName`が次のようなデータになっているデータベース・テーブルがある場合です。

            1, John, Smith
            2, Jane, Doe
            [...]
            400, Maria, Sanchez
            [...]
            200000, Sachin, Rajaram

        `Select * From users`というクエリーを使用すると、クエリーの結果が順番に並ばないため、データバンクの最初のレコードは、「1, John, Smith」ではなく、「400, Maria」になります。`Select * From users Order By id`というクエリーを使用すれば、意図したとおりに、最初のデータバンク・レコードは「1, John, Smith」になります。

      - 別名: データバンクに使用する別名を指定します。データバンクの別名は、データバンク・レコード取得ノードをスクリプト・ツリーに追加するときに表示される名称です。

   3. 「テスト」をクリックしてデータベースへの接続を検証します。

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

   5. 「OK」をクリックしてデータバンク・ファイルを追加します。データバンクとしてデータベースを使用する場合は、テストを開始する前にすべてのデータのコピーが取得され、インデックス化されます。データはテスト中にライブでは読み込まれません。データバンクを使用するスクリプトの再生については、4.5項「スクリプトを反復して再生」を参照してください。

データバンクCSVファイルはカンマ区切り値ファイルです。フィールド名は、ファイルの先頭行にカンマ区切り（スペースなし）で指定します。フィールド・データは、2行目以降にカンマ区切り（1行に1レコード、カンマ前後のスペースはなし）で指定します。次に例を示します。

`FirstName,LastName,Mail,Phone`

`John,Smith,JohnS@company.com,x993`

`Mary,Ellen,MaryE@company.com,x742`

データ値にカンマが含まれている場合は、次のように値を引用符で囲みます。

`John,Smith,"Anytown, MA","(603) 993-0000"`

次に示すように、新しい行を引用符で囲むこともできます。

`"field1","field2 contains two lines: Line one.`

`Line two.","field3"`

空の行は除外され、無視されます。

CSVファイルの文字エンコードは、ファイルの先頭の（オプションの）バイト・オーダー・マークで判断されます。メモ帳などのプログラムでは、ユーザーがUTF-8などの特定のエンコード文字セットを指定してテキスト・ドキュメントを保存すると、このバイト・オーダー・マークが設定されます。バイト・オーダー・マークの設定がない場合は、ファイルの読込み時に、現行プラットフォームのデフォルトの文字セット（たとえば、ほとんどのWindowsの英語版インストール環境ではcp1252）が使用されます。

## 4.4 データバンク・レコードの取得

スクリプトで使用するデータバンク・レコードを取得するには、次のようにします。

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

2. スクリプト・アセット・プロパティのスクリプトで使用するデータバンクを設定します。

3. データバンク・レコードを使用するスクリプト・ノードを選択します。

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

5. 「一般」ノードを開いて、「データバンク 次レコード取得」を選択します。

6. データバンクを選択するか、または「新規」をクリックして、新しいデータバンクを追加します。

7. レコードを選択します。

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

9. データバンクの別名を選択して、レコードの取得元となるデータバンク・ファイルを指定します。

10. 「OK」をクリックします。「GetNextDatabankRecord: databank alias」ノードがスクリプトに追加されます。

    選択したレコードのタイプに応じて、次の`getDatabank("``databank alias``").``method` `();`が、Javaコード・ビューのスクリプト・コードに追加されます。

        getDatabank("customer").getNextDatabankRecord();
        getDatabank("customer").getFirstRecord();
        getDatabank("customer").getLastRecord();
        getDatabank("customer").getRecord(5);

11. データバンク変数と置換するスクリプト・ツリーのパラメータ・ノードを右クリックして、「変数の置換」を選択します。

12. 必要に応じて「データバンク」ノードを開き、入力パラメータ・データとして使用するデータバンク・フィールドを選択します。

13. 「終了」をクリックします。

14. スクリプト・ノードの名前/値ペアが、データバンクの別名、フィールド名および変数値として記録された値を示すために変更されます。たとえば、次のようになります。

        login = {{db.customer,login,ta906}}

    Javaコード・ビューで、パラメータ・コードが、データバンクの別名、フィールド名、および変数値として記録された値を示すために変更されます。たとえば、次のようになります。

        http.postdata(http.param("login", "{{db.customer,login,ta906}}")

15. 一度スクリプトを再生して正しく再生されることを確認するには、「再生」ツールバー・ボタンをクリックします。

### 4.4.1APIを使用したデータバンク・レコードの取得

Javaコード・ビューでは、`getDatabank("``databank alias``")`が使用可能なその他のAPIメソッドを使用して、データバンクから特定のレコードを取得できます。この項では、使用可能なメソッドの例について説明します。

#### 4.4.1.1データバンクAPIを使用する際の注意事項

これらのAPIメソッドは、データバンクの反復設定「ランダム」またはレコードのシャッフルと競合します。「ランダム」またはレコードのシャッフル反復設定を指定した状態でメソッドを使用すると、「incompatible with db setting」というデータバンク例外がスローされます。

これらのAPIコールを使用して取得したレコードは、全レコードの使用件数の中にカウントされません。「レコード終了時」反復設定が「ユーザーを停止」に設定されている場合は、スクリプトが無限ループになる可能性がありますが、これらのAPIコールを使用してレコードを読み込めるのは、スクリプトのみです。

#### 4.4.1.2レコード件数の取得

次の例では、`getDatabankRecordCount()`メソッドを使用して、customerデータバンクのレコード件数を取得し、結果ビューに値を表示します。

    int recordCount = getDatabank("customer").getDatabankRecordCount();
    String count = Integer.toString(recordCount);
    info("Record Count = " + count );

#### 4.4.1.3特定レコードの取得

次の例では、`getRecord(``n``)`メソッドを使用して、customerデータバンクの特定レコードを取得し、結果ビューに値を出力します。

    getDatabank("customer").getRecord(5);

次の例では、`For`構文を使用して、データバンクの全レコードを1件ずつ取得します。

    int recordCoun1 = getDatabank("customer").getDatabankRecordCount();
    for (int i=1; i<=recordCount; i++) {
       info("Record count = " +
          Integer.toString(i) +
          " of " +
          Integer.toString(recordCount));
       getDatabank("fmstocks_data").getRecord(i);
    }

#### 4.4.1.4 最初のレコードの取得

次の例では、`getFirstRecord()`メソッドを使用して、customerデータバンクの最初のレコードを取得します。

    getDatabank("customer").getFirstRecord();

#### 4.4.1.5 最後のレコードの取得

次の例では、`getLastRecord()`メソッドを使用して、customerデータバンクの最後のレコードを取得します。

    getDatabank("customer").getLastRecord();

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

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

1. OpenScriptを起動します。

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

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

4. 「スクリプト」メニューから「反復」を選択するか、ツールバー・ボタンをクリックします。表示されるダイアログ・ボックスには次のオプションがあります。

   データバンクを使用する: 選択すると、スクリプトの再生にデータバンクが使用されます。スクリプトにデータバンクが設定されると、次の設定が表示されます。

   - 名称: データバンク・ファイルの別名が一覧表示されます。

   - レンジ: スクリプトの再生に使用するデータバンク・レコードの範囲がリストされます。このリストは、各データバンク・ファイルに選択された「レンジ」オプションに対応しています。

   - 開始: スクリプトの再生に使用するデータバンク・レコードの開始がリストされます。このリストは、各データバンク・ファイルに指定された「開始レコード」オプションに対応しています。

   - レコード選択: スクリプトの再生用のデータバンク・レコードの選択状況がリストされます。このリストは、各データバンク・ファイルに選択された「次レコード選択」設定に対応しています。

   - レコード終了時: スクリプトの再生中にデータバンク・ファイルがレコード外になったとき実行するアクションがリストされます。このリストは、各データバンク・ファイルに選択された「レコード終了時」設定に対応しています。

   - データ: 各データバンク・ファイルの「開始レコード」にあるデータがリストされます。

   データバンク ソース: このセクションには、選択したデータバンクについて次の情報が表示されます。

   - 別名: 選択したデータバンク・ファイルの別名と行数を示します。

   - Type: 選択されているデータバンク・ファイルのタイプが表示されます。データバンクは、CVSテキスト・ファイルかデータベースです。

   - ソース: CSVテキスト・ファイルのパスおよびファイル名、またはデータベース・データバンクに使用するまたはデータベース・クエリーを示します。ファイル・サイズの上限はありませんが、推奨する最大サイズは200MBです。インデックスの生成時間のみ制限があります。データバンクは、デフォルトでは、30秒以内にインデックスの生成が可能でなければなりません。この設定は、「一般」詳細設定の「データバンク セットアップ タイムアウト」設定で行います。

   データバンク設定: このセクションで、選択したデータバンクに使用する設定を示します。

   - 次レコードへ移動: スクリプト再生時に、仮想ユーザーが次のデータバンク・レコードに移動するタイミングを指定します。再生されるマスター・スクリプトは常に、反復が発生するときに起動されるスクリプトです。次のオプションを使用できます。

     - スクリプトがレコードを要求時: データバンク・レコードは、スクリプトの再生中にスクリプトが明示的にレコードを要求するたびに移動します。レコード・リクエストは、`getDatabank(``alias``).getNextRecord()`メソッドを呼び出すスクリプトJavaコードに対応しています。これがデフォルトの動作です。

     - スクリプトが特定の列を要求時: スクリプトがそのスクリプトのデータバンク列（データバンク・フィールド）を参照するとき、データバンク・レコードが移動します。レコード・リクエストは、`{{db.fmstocks_data.ticker}}`のようにパラメータ化された値を評価するスクリプトJavaコードに対応しています。すべての列が次のレコードに移動するように指定することも、特定のデータバンク列だけが次のレコードに移動するように指定することもできます。たとえば、`firstName`フィールドを持つ従業員データバンクがあり、`firstName`列が「カラム」値として指定されている場合、データバンク・レコードはスクリプトJavaコードの`{{db.employees.firstName}}`値がスクリプト再生時に評価されるときにのみ移動します。データバンクのフィールド名を「カラム」値として選択するか、すべてのフィールドでデータバンク・レコードを移動できるように「ANY」を選択します。

     - スクリプトの各反復: データバンク・レコードは、データバンクを含んでいるスクリプトが次の反復再生を開始する前に移動します。

   - 次レコード選択: データバンク・レコードが移動するときにデータバンクから新しいレコードを選択する方法を指定します。次のオプションを使用できます。

     - 連続: データバンク・レコードは、指定範囲の開始から連続して1つずつ増分されます。複数の仮想ユーザーが実行されているときは、すべての仮想ユーザー間でレコードが連続的に配分されます。

     - ランダム: データバンクからランダムにデータバンク・レコードが選択されます。すべてのレコードを使い切らずに、同じレコードを複数回使用することができます。ランダムにレコードを選択できるのは、インデックス化が可能なデータバンクのみです。データバンクを設定するとき、データバンク・ファイルが大きすぎてインデックス化できない場合、「ランダム」またはシャッフル・レコード・オプションは使用できません。「ランダム」を選択した場合、「レコード終了時」設定は適用されません。

     - シャッフル: データバンク・レコードは、データバンクからランダムに選択され、いったん選択されたレコードが再び選択されることはありません。この設定は、カードがなくなるまでトランプの中からカードをランダムに抜くことに似ています。シャッフル・モードは、データバンクのレコード件数が200,000件より少ない場合にのみサポートされています。データバンクのレコード件数が200,000件を超える場合は、実際のデータ・ファイルの値をシャッフルするか、「ランダム」モードを使用する必要があります。

     - 乱数シードの使用: 「ランダム」またはシャッフル・モードで使用する乱数シードを指定します。複数のテストで同じシードを使用すると、すべてのテストで同じ順序の乱数が生成されます。0を指定するか何も指定しない場合、シードは現在の時刻に基づいて自動的に生成されます。

   - レコード終了時: 指定された範囲のデータバンク・レコードがすべて使用されて新しいレコードがリクエストされた場合に、仮想ユーザーがとるアクションを指定します。次のオプションを使用できます。

     - 範囲内で繰り返し: 指定された範囲のレコードがすべて使用されると範囲内の最初のレコードに戻り、レコードの分配を続行します。 仮想ユーザーが永久に実行されないようにするには、「最大反復数」設定を使用します。

     - 同じレコードを保持: 範囲内のレコードがすべて使用された後でリクエストされた最後のレコードが使い続けられます。それ以上のレコードはデータバンクからリクエストされません。すべてのレコードが使用された後では、Javaコードでの`getNextDatabankRecord()`の呼出しは無視されます。仮想ユーザーが`getRecord(``n``)`、`getLastRecord()`、または`getFirstRecord()`を使用して個々のレコードをリクエストできるようにするには、カスタムのJavaコードを使用します。

     - ユーザーを停止: 範囲内のレコードがすべて使用された後で、次にデータバンクからレコードがリクエストされたとき、仮想ユーザーはただちに実行を停止されます。 「最大反復数」設定で反復が何回に指定されていても、仮想ユーザーは停止します。

   - レンジ: 使用するレコードの範囲を指定します。次のオプションを使用できます。

     - すべてのレコード: 選択すると、仮想ユーザーはデータバンクのすべてのレコードを使用します。最初のレコードは1です。

     - 指定レコード: 選択すると、仮想ユーザーはデータバンクのレコードのサブセットを使用します。使用する範囲の最初と最後のレコードを選択してください。最初と最後のレコードも指定した範囲に含まれます。

   - 開始レコード: 最初に使用するデータバンク・レコードを指定します。データバンクの最初のレコードは1です。開始レコードは、指定したレコード範囲内になければなりません。たとえば、「指定レコード」を選択して範囲を「5:10」に設定した場合、開始レコードは5以上10以下にする必要があります。

   最大反復数: このセクションでは、メイン・スクリプトの`run()`セクションを反復して完了する最大回数を指定します。

   - 再生を停止する反復数: 反復の最大回数を指定します。データバンクですべてのレコードが消費される場合、「レコード終了時」で「ユーザーを停止」を指定すると、指定した回数の反復が完了しないうちでも、仮想ユーザーは常に実行を停止します。

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

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

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

8. 再生を停止する反復数のオプションを選択し、任意の再生の反復回数を指定します。

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

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

### 4.5.1注意事項および制限事項

一部の設定は組み合せることができません。一部の設定を組み合せると、スクリプトの実行時に例外が発生する可能性があります。反復オプションを使用するときに注意が必要なケースは次のとおりです。

1. 「次レコード選択」が「ランダム」に設定されている場合は、「レコード終了時」オプションを使用できません。ランダムが選択されていると、ランダムなレコードが無制限に発生します。

2. 全レコードを使い切った後でも、「レコード終了時」が「同じレコードを保持」に設定されていれば、仮想ユーザーは`getRecord(``n``)`を使用して特定のレコードをリクエストすることは可能です。

3. `getRecord(``n``)`、`getFirstRecord()`および`getLastRecord()` Javaコード・メソッドを使用しても、`getNextDatabankRecord()`で使用されているレコード・カーソルは移動されません。したがって、次のような結果になります。

       getNextDatabankRecord();// returns 1
       getRecord(7);// returns 7
       getNextDatabankRecord();//returns 2, not 7

4. 「次レコード選択」がレコードのシャッフルまたは「ランダム」に設定されている場合は、`getRecord(``n``)`、`getFirstRecord()`および`getLastRecord()` Javaコード・メソッドを起動すると、例外がスローされます。

5. データバンクのインデックスが生成されていない状態で、`getRecord(``n``)`、`getFirstRecord()`および`getLastRecord()` Javaコード・メソッドを起動した場合は、例外がスローされます。

6. 「乱数シードの使用」は、「次レコード選択」がレコードのシャッフルまたは「ランダム」に設定されている場合のみ利用できます。

7. データバンクのインデックスが生成不可能な場合は、特定のデータバンクの範囲および開始インデックスが設定されないことがあります。

8. 次レコード選択: レコードのシャッフルおよび「ランダム」オプションは、データバンクのインデックスが生成可能な場合にのみ設定できます。

9. 「次レコード選択」のレコードのシャッフルは、データバンクのインデックスが生成可能な場合、およびレコード件数が200,000件よりも少ない場合にのみ設定できます。