ヘッダーをスキップ

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

戻る | 次へ |

# 3 スクリプトの作成と変更

この章では、OpenScriptで基本的なスクリプトを作成および変更する手順について説明します。モジュールの各章では、各モジュールで提供される機能を使用したスクリプトの作成について詳細に説明します。

## 3.1 リポジトリとワークスペースの作成

リポジトリおよびワークスペースにはプロジェクト関連のスクリプト・ファイルと結果ログ・ファイルが格納されます。リポジトリおよびワークスペースを使用して、様々なテスト・プロジェクトを編成できます。OpenScriptでは、複数のワークスペースを生成できます。リポジトリを生成して、スクリプト・プロジェクトのストレージを編成できます。

注意: 関連するアセットとともにOracle Load Testingアプリケーションで実行するスクリプトは、リポジトリ/ワークスペースに格納する必要があります。

リポジトリは、ワークスペースを格納するディレクトリの場所です。ワークスペースは、リポジトリのユーザーが指定したサブディレクトリです。OpenScriptでは9.10以降のバージョンから、ディレクトリ名の末尾に感嘆符を使用することでディレクトリをワークスペース・ディレクトリとして識別しなくなります。指定したリポジトリの下にあるフォルダ（ディレクトリ）はワークスペース・フォルダとなることが可能です。

スクリプトを記録して保存すると、またはスクリプトを再生してログ・ファイルを保存すると、OpenScriptは指定されたワークスペースにスクリプトやログ・ファイルを格納します。

以前のインストール環境とは関係のないリポジトリが1つでもあれば、OpenScriptは新しいリポジトリを作成しません。現在のユーザーがこのマシンにOpenScriptをインストールしていない場合、OpenScriptは、<installDir>/OFT/OFTに「Default」というリポジトリを作成します。独自のリポジトリとワークスペースは、OpenScriptを使用して作成できます。

リポジトリは、スクリプトと関連アセット・ファイルを格納する場所を指定します。リポジトリを、OpenScriptとOracle Load Testingの間でファイルを共有する手段として利用することもできます。Oracle Load Testingでは、すべてのアセットが名前付きのリポジトリ内で有効でなければなりません。Oracle Load Testingはリポジトリ以外のローカル・ファイル・システムにあるアセットを検索できないためです。共有ディレクトリであればリポジトリとして使用できますが、Oracle Load Testing、Oracle Test Manager、OpenScript、およびチーム・メンバーの間で共有されるリポジトリはすべて同じリポジトリを共有できる必要があります。たとえば、チームのあるメンバーが共有リポジトリに`SharedRepo1`という名前を付け、別のメンバーが同じ共有リポジトリに`Shared_Repository_1`という名前を付けた場合には、チーム・メンバーがスクリプトを共有するとき、スクリプト・アセットの一部が見つからない可能性があります。

ローカル・リポジトリ名が競合する可能性を少なくするために、ユーザーにとって一意の名前で新しいローカル・リポジトリを作成することをお薦めします（machineName>.<windowsUserName>.MyRepositoryなど）。このフォルダには、チーム・メンバー間で共有されないスクリプトがすべて格納されます。

ベスト・プラクティス:

- スクリプトとアセット（データベース、.jarファイルなど）は常に、名前付きのリポジトリに格納します。

- スクリプトを保存するとき、OpenScriptで現在のスクリプトの相対パスに保存オプションは選択しないようにします。

- Oracle Load Testing、Oracle Test Manger、OpenScriptのすべてで、リポジトリに一貫した名前を付けるようにします。

- ローカル・スクリプトの格納には「Default」という名前のリポジトリを使用せず、「machineName.Default」を使うようにします。

### 3.1.1 リポジトリの生成

リポジトリを生成するには、次のようにします。

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

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

3. 「一般」ノードを開きます。

4. 「リポジトリ」ノードを選択します。

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

   このダイアログ・ボックスでは、スクリプト・ファイルの格納に使用するリポジトリの名称とロケーションを指定できます。

6. リポジトリ名を入力します。名前は必須です。

   名称: リポジトリを識別するための名称を入力します。

   注意: OpenScriptスクリプトをOracle Load Testingで使用する場合、指定するリポジトリ名は、Oracle Load Testingで指定されたリポジトリ名と一致させる（大/小文字の区別を含む）必要があります。

7. ドライブおよびディレクトリの場所を入力するか、「参照」をクリックして、リポジトリに使用する場所を選択します。

   ロケーション: リポジトリのドライブおよびディレクトリ・パスを入力するか、「参照」ボタンを使用してロケーションを選択します。ロケーションは有効なドライブおよびディレクトリ・パスである必要があります。

8. 「OK」をクリックして、リポジトリのリストに新規リポジトリを追加します。

9. 「OK」をクリックして、詳細設定を閉じます。

新しいスクリプト・プロジェクトを生成する際には、プロジェクトの格納に使用するリポジトリを選択できます。

### 3.1.2 リポジトリの管理

リポジトリを追加、編集または削除するには、次のようにします。

1. 「ツール」メニューから「リポジトリ管理」を選択します。

2. ワークスペースを作成するリポジトリを選択します。

3. 「追加」、「編集」または「削除」の各ボタンをクリックして、リポジトリを管理します。

4. 完了したら「閉じる」をクリックします。

### 3.1.3 フォルダ（ワークスペース）の管理

新しいテスト・プロジェクトを開始する際には、プロジェクト固有のワークスペース・フォルダを生成して関連ファイルを格納する必要があります。

ワークスペース・フォルダの生成、名称変更または削除を実行するには、次のようにします。

1. 「ツール」メニューから「フォルダ管理」を選択します。リポジトリのワークスペース・フォルダを管理するダイアログ・ボックスが開きます。

2. ツリーを開いて、管理するワークスペース・フォルダを選択します。

3. 「新規」、「名称変更」または「削除」ボタンをクリックして、ワークスペース・フォルダを管理します。

4. 完了したら「閉じる」をクリックします。

### 3.1.4 スクリプトの管理

スクリプトの名称変更または削除を実行するには、次のようにします。

1. 「ツール」メニューから「スクリプト管理」を選択します。

2. スクリプトを選択します。

3. 「名称変更」または「削除」ボタンをクリックして、スクリプト・ファイルを管理します。

4. 完了したら「閉じる」をクリックします。

## 3.2 スクリプト・プロジェクトの生成

カスタマイズ可能な基本構造を生成するには、スクリプト・プロジェクトを生成する必要があります。

スクリプト・プロジェクトを生成するには、次のようにします。

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

2. グループ・ノードを開き、作成するアセットまたはスクリプトのタイプを選択します。

   機能テスト (ブラウザ/GUI 自動化): 機能テスト・グループには、次のスクリプト・タイプが含まれます。

   - Adobe Flex: このオプションを使用すると、ブラウザ/GUIレベルでAdobe Flex Automation Frameworkを使用するWebアプリケーションの機能テストを自動で行うための新しいスクリプトを作成できます。結果のスクリプトには、Initialize、RunおよびFinishノードが含まれます。Runノードには、定義されたWeb機能テスト・ステップ・グループの詳細設定に基づいて記録されたWebナビゲーション、および記録中に実行されたWebナビゲーションとFlexアクションが含まれます。スクリプト・ツリーまたはJavaコードを編集して、スクリプトをカスタマイズできます。

   - Oracle EBS/Forms: このオプションを使用すると、Oracle E-Business Suite、およびブラウザ/GUIレベルでWebやOracle Formsコンポーネントを使用するその他のアプリケーションの機能テストを自動で行うための新しいスクリプトを作成できます。結果のスクリプトには、Initialize、RunおよびFinishノードが含まれます。Runノードには、定義されたステップ・グループの詳細設定に基づいて記録されたWebナビゲーション、および記録中に実行されたWebナビゲーションとFormsアクションが含まれます。スクリプト・ツリーまたはJavaコードを編集して、スクリプトをカスタマイズできます。

   - Oracle Fusion/ADF: このオプションを使用すると、Oracle Application Development Framework（ADF）ベースのアプリケーション、およびブラウザ/GUIレベルでWebおよびADFコンポーネントを使用するその他のアプリケーションの機能テストを自動で行うための新しいスクリプトを作成できます。結果のスクリプトには、Initialize、RunおよびFinishノードが含まれます。Runノードには、定義されたステップ・グループの詳細設定に基づいて記録されたWebナビゲーション、および記録中に実行されたWebナビゲーションとADFアクションが含まれます。スクリプト・ツリーまたはJavaコードを編集して、スクリプトをカスタマイズできます。

   - Siebel: このオプションを使用すると、ブラウザ/GUIレベルでSiebelの高い双方向性や標準の双方向性/Webコントロールを使用するSiebelアプリケーションの機能テストを自動で行うための新しいスクリプトを作成できます。結果のスクリプトには、Initialize、RunおよびFinishノードが含まれます。Runノードには、定義されたステップ・グループの詳細設定に基づいて記録されたWebナビゲーション、および記録中に実行されたWebナビゲーションが含まれます。スクリプト・ツリーまたはJavaコードを編集して、スクリプトをカスタマイズできます。

   - Web: このオプションを使用すると、ブラウザ/GUIレベルのWebアプリケーションの機能テストを自動で行うための新しいスクリプトを作成できます。結果のスクリプトには、Initialize、RunおよびFinishノードが含まれます。Runノードには、定義されたステップ・グループの詳細設定に基づいて記録されたWebナビゲーション、および記録中に実行されたWebナビゲーションが含まれます。スクリプト・ツリーまたはJavaコードを編集して、スクリプトをカスタマイズできます。

   一般: 一般グループには、次のスクリプト・タイプが含まれます。

   - データベース: このオプションを使用すると、SQL文を自動的にテストするためのデータベース・スクリプトの基本構造を作成して、Oracle Load Testingアプリケーションでデータベースをテストし、SQLを実行できます。基本的なスクリプトの構造には、Initialize、RunおよびFinishノードのみ含まれます。「ツール」メニューのデータベース・キャプチャ・ファイルのインポート・オプションを使用して、Oracle DBReplayキャプチャ・ファイルまたは通常のSQL文およぴPL/SQL文を含む.SQLスクリプト・ファイルをスクリプトにインポートできます。

   - Java コード スクリプト: このオプションを使用すると、OpenScript Eclipse IDEを介して独自のカスタムJavaコードを使用する新しい自動テスト・スクリプトを作成できます。基本スクリプト構造には、Initialize、RunおよびFinishノードのみが含まれます。スクリプト・ツリーまたはJavaコードを編集して、独自のカスタム・スクリプトを開発できます。

   - テンプレートからスクリプト: このオプションを使用すると、テンプレート・スクリプトとして以前に保存したスクリプトに基づいて新しいスクリプトを作成できます。このオプションを選択した場合は、新しいスクリプトの名前を指定する前に、以前に保存したテンプレート・スクリプトの一覧からスクリプトを選択します。選択したスクリプトには、Initialize、RunおよびFinishの各ノードと、テンプレート・スクリプトに追加したカスタム・コードが含まれます。スクリプトをカスタマイズする場合は、スクリプト・ツリーまたはJavaコードを編集します。

   - Web サービス: このオプションを使用すると、SOAP/HTTPプロトコル・レベルのWebサービスを自動的にテストする新しいスクリプトである、Webサービス・スクリプトの基本構造を作成できます。Webサービス・スクリプトの構造には、Initialize、RunおよびFinishノードのみが含まれます。WSDLファイルを追加するためのWSDLマネージャを使用し、スクリプト・ツリーまたはJavaコードを編集してスクリプトをカスタマイズできます。HTTP経由で通信するWebサービス・クライアント・アプリケーションがすでに作成されていて、そのアプリケーションがプロキシを介して通信する場合、OpenScript HTTPレコーダを使用してトラフィックを記録できます。

   負荷テスト (プロトコル自動化): 負荷テスト・グループには、次のスクリプト・タイプが含まれます。

   - Adobe Flex (AMF): このオプションを使用すると、プロトコル・レベルでHTTPプロトコルおよびAdobe Flex Action Message Format（AMF）プロトコルを使用するWebアプリケーションの負荷テスト用のスクリプトを新規作成できます。作成したスクリプトには、Initialize、RunおよびFinishの各ノードが含まれます。Runノードには、ステップ・グループの詳細設定の定義内容と、記録中に実行されたアクションのナビゲーションのプロトコルに基づいて記録されたFlex AMFとHTTPのプロトコル・ナビゲーションが含まれます。スクリプトをカスタマイズするために、スクリプト・ツリーまたはJavaコードを編集できます。

   - Oracle EBS/Forms: このオプションを使用すると、Oracle E-Business Suite、およびプロトコル・レベルでHTTPおよびOracle Forms（NCA）プロトコルを使用するその他のアプリケーションの負荷テストを行うための新しいスクリプトを作成できます。結果のスクリプトには、Initialize、RunおよびFinishノードが含まれます。Runノードには、定義されたステップ・グループの詳細設定に基づいて記録されたHTTPプロトコル・ナビゲーション、および記録中に実行されたアクションのナビゲーションとFormsプロトコルが含まれます。スクリプト・ツリーまたはJavaコードを編集して、スクリプトをカスタマイズできます。

   - Oracle Fusion/ADF: このオプションを使用すると、Oracle Application Development Framework（ADF）ベースのアプリケーション、およびプロトコル・レベルでHTTPおよびADFプロトコルを使用するその他のアプリケーションの負荷テストを行うための新しいスクリプトを作成できます。結果のスクリプトには、Initialize、RunおよびFinishノードが含まれます。Runノードには、定義されたステップ・グループの詳細設定に基づいて記録されたHTTPプロトコル・ナビゲーション、および記録中に実行されたアクションのナビゲーションとADFプロトコルが含まれます。スクリプト・ツリーまたはJavaコードを編集して、スクリプトをカスタマイズできます。

   - Siebel: このオプションを使用すると、新規OpenScriptスクリプト・プロジェクトのSiebelスクリプト構造を作成できます。Siebelスクリプトを使用すると、Siebelアプリケーションの負荷テストを行うためのブラウザを使用して、Siebel Webナビゲーションを記録できます。結果のスクリプトには、Initialize、RunおよびFinishノードが含まれます。Runノードには、定義されたステップ・グループの詳細設定に基づいて記録されたHTTPプロトコル・ナビゲーション、および記録中に実行されたWebナビゲーションとSiebelナビゲーションが含まれます。スクリプト・ツリーまたはJavaコードを編集して、スクリプトをカスタマイズできます。

   - Web/HTTP: このオプションを使用すると、HTTPプロトコル・レベルのWebアプリケーションの負荷テストを行うための新しいスクリプトを作成できます。結果のスクリプトには、Initialize、RunおよびFinishノードが含まれます。Runノードには、定義されたステップ・グループの詳細設定に基づいて記録されたWebナビゲーション、および記録中に実行されたWebナビゲーションが含まれます。スクリプト・ツリーまたはJavaコードを編集して、スクリプトをカスタマイズできます。このスクリプト・タイプにはWebとHTTPの2つの記録モードがあります。記録モードは、HTTPモジュール記録の詳細設定で指定します。この設定は、新しいスクリプトを記録する前に設定する必要があります。モードの設定と記録モードの詳細は、2.5.2項「「HTTP」詳細設定」を参照してください。

   スクリプト アセット: スクリプト・アセット・グループには、次のスクリプト・アセット・タイプが含まれます。

   - データバンク: このオプションを使用すると、新規のデータバンクを作成するか、既存のデータバンク・ファイルを開くことができます。新規アセット・ウィザードでは、既存のデータバンク・ファイルのファイルの場所へのナビゲートや、新規のデータバンク・ファイルの名前の入力ができます。ウィザードで「終了」をクリックすると、既存または新規のデータバンク・ファイルがテキスト・エディタ・ビューで開かれます。

   - オブジェクト ライブラリ: このオプションを使用すると、新規のオブジェクト・ライブラリを作成するか、既存のオブジェクト・ライブラリを開くことができます。新規アセット・ウィザードでは、既存のオブジェクト・ライブラリ・ファイルのファイルの場所へのナビゲートや、新規のオブジェクト・ライブラリ・ファイルの名前の入力ができます。ウィザードで「終了」をクリックすると、既存または新規のオブジェクト・ライブラリ・ファイルがオブジェクト・ライブラリ・エディタ・ビューで開かれます。

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

4. スクリプト・プロジェクトの保存先を選択します。スクリプトはリポジトリとワークスペースに保存できます。Oracle Load Testingで使用する目的で開発した負荷テスト・スクリプトは、リポジトリ/ワークスペースに保存する必要があります。

   - パス: 選択したリポジトリ/ワークスペースのファイル・パスが表示されます。

   - マイ リポジトリ: スクリプト・プロジェクトを保存するリポジトリを指定します。ツリーからリポジトリおよびワークスペースを選択します。リポジトリは「ツール」メニューの「リポジトリ管理」を使用して管理できます。

   - [ファイルの一覧]: 選択したリポジトリ/ワークスペースに存在する、ファイルまたはスクリプトの名称が一覧表示されます。

   - スクリプト: スクリプト・プロジェクトの名称を指定します。スクリプト名は必須であり、一意であることが必要です。

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

6. 「終了」をクリックします。Javaコード・スクリプトの場合は、スクリプト・ビューに基本のスクリプト・ツリーが作成されます。Javaコードはコード・ビューで編集できます。モジュール・スクリプトの場合は、スクリプト・ビューにスクリプト・ツリーが作成されます。スクリプトを記録すると、スクリプト・タイプに応じて、ツリー・ビューにナビゲーションおよびアクションが含まれます。

### 3.2.1 既存のスクリプトのオープン

スクリプト・アセット（スクリプト・プロパティ内）の導入によって、9.10より前のバージョンのスクリプトを現在のバージョン9.10以上のバージョンに移行することが必要になりました。この項では、OpenScriptスクリプトの下位互換性とOpenScriptスクリプトのアップグレードについて説明します。

旧バージョンのOpenScriptで作成されたスクリプトは、コマンドライン、Oracle Load TestingおよびOracle Test Managerから変更を行わなくても、常に新しいバージョンの製品で実行されます。

旧バージョンのOpenScriptスクリプトは、最初にアップグレードを行わないと、新バージョンのOpenScriptユーザー・インタフェースでオープンまたは再生ができない場合があります。

以前公開されたスクリプトAPI関数は最新のリリースでサポートされています。公開されたAPIには非推奨とマーク付けされているものもありますが、下位互換性を維持するため、新規のリリースでも同じように動作します。

#### 3.2.1.1 旧バージョンのスクリプトのOpenScriptでのオープン

OpenScriptユーザー・インタフェースでスクリプトを開くには、そのスクリプトを最新リリースにアップグレードする必要があります。スクリプトをOpenScriptユーザー・インタフェースで開かなければ、そのスクリプトを新バージョンにアップグレードする必要はありません。旧バージョンのOpenScriptスクリプトは、コマンドライン、Oracle Load TestingおよびOracle Test Managerから変更を行わなくても実行できます。ただし、バージョン9.0xのスクリプトの場合、リポジトリ/ワークスペースの構造を`repositoryLocation/workspace!/script`に維持する必要があります。9.0xのスクリプトをバージョン9.1+のリポジトリに直接コピーすることはできません。

注意: バージョン9.10以上のスクリプトは、前のバージョンのOpenScript、Oracle Load TestingおよびOracle Test Managerでは再生できません。9.10より前のバージョンのスクリプトを保持する場合は、そのスクリプトを9.10以上のバージョンで開いて保存する前にバックアップ・コピーを作成する必要があります。OpenScriptでは、9.10より前のバージョンのスクリプトがOpenScriptバージョン9.10以上で開かれて保存されると、そのスクリプトが自動的に移行されます。

旧バージョンのスクリプトをOpenScriptユーザー・インタフェースで開くと常に、スクリプトを現在のバージョンにアップグレードするように自動的に表示されます。旧バージョンのスクリプトを開く際は、スクリプトを開かないことも選択可能で、これを選択するとスクリプトはアップグレードされません。

スクリプトのアップグレードが求められたとき、そのスクリプトが子スクリプトまたは関数ライブラリに依存している場合は、子スクリプトまたは関数ライブラリも新バージョンにアップグレードするオプションが表示されます。

スクリプトが新バージョンにアップグレードされると、そのスクリプトを旧バージョンのOracle Application Testing Suite（OpenScript、Oracle Load TestingまたはOracle Test Manager）でオープンまたは実行することはできなくなります。

#### 3.2.1.2 旧バージョンのスクリプトのOpenScriptでの移行

スクリプトをOpenScriptで個々に開かずにアップグレードする場合は、「ツール」メニューの「スクリプト移行」アップグレード・オプションを使用できます。「スクリプト移行」ツールでは、スクリプトを個々に開かなくても、9.10より前のバージョンのスクリプトを現在のバージョンに移行できます。

「スクリプト移行」ツールには、トップレベル・スクリプトを移行し、依存するすべての子スクリプトを特定するためのオプションがあります。「スクリプト移行」ツールでは、現在のバージョンに移行するスクリプトを選択し、同時に移行が必要な子スクリプトも検索することができます。

バージョン9.10では、Oracle Load Testingで使用されるスクリプトのリポジトリまたはスクリプト・アセットに絶対パスを使用できません。しかし、バージョン9.0xのスクリプトでは絶対パスの使用が可能でした。バージョン9.0xのスクリプトが絶対パスを使用している場合、バージョン9.10のOracle Load Testingではそのバージョン9.0xのスクリプトを未変更のままで実行できます。9.0xのスクリプトをOpenScriptユーザー・インタフェースまたは「スクリプト移行」ツールで9.10にアップグレードするとすぐに、絶対パスを相対パスに変更しないかぎり、スクリプトをOracle Load Testingで再生できなくなります。「スクリプト移行」ツールは、絶対パスを相対パスまたはリポジトリ・パスには移行しません。絶対パスはスクリプトで変更する必要があります。

#### 3.2.1.3 バージョンが混在するスクリプトの実行

親スクリプトが子スクリプトまたは関数ライブラリを呼び出す場合に、バージョンが混在するジョブ・スクリプトを実行することはお薦めできません。これは、9.0xの子スクリプトまたは関数ライブラリを実行する、9.1xの親スクリプトが存在するときなどに発生します。この構成はテスト済でサポートもされていますが、バージョンが混在するスクリプトの組合せは、予期しない結果やどのスクリプトが最新バージョンなのかという混乱を招く場合があります。さらに、バージョンが混在するジョブ・スクリプトは、新バージョン9.10の次のような改良点を利用できない可能性があります。

- バージョン9.10には、子スクリプトを視覚的に検査して親スクリプトに追加するオプションがあります。子スクリプトが9.10にアップグレードされていない場合、OpenScriptではユーザー・インタフェース・オプションに使用可能な関数が表示されません。

- バージョン9.10では、子スクリプトの全データバンクを親スクリプトのデータバンクとして追加することが不要になりました。子スクリプトが9.10にアップグレードされていない場合、以前と同様に、子スクリプトのデータバンクを親スクリプトのデータバンクとして保持する必要があります。

#### 3.2.1.4 複数のユーザーによるスクリプトのオープン

既存のスクリプトについては、ファイルの同時実行が制御されるため、複数のユーザーが同じスクリプトを編集することはできません。他のユーザーが使用中のスクリプトを開こうとすると、スクリプト・コピー・ウィザードが開いて、スクリプトおよびその他のファイルのコピーを作成するかたずねられます。

### 3.2.2 スクリプトの移行

スクリプトを現在のバージョンに移行するには、次のようにします。

1. 「ツール」メニューから「スクリプト移行」を選択します。

   このダイアログ・ボックスでは、9.10より前のバージョンのOpenScriptスクリプトを現在のバージョンに移行できます。ダイアログ・ボックスの最上部にある「プロンプト」は、選択したスクリプトが現在のバージョンか移行対象のバージョンかを示し、適切なアクションを指示します。スクリプト移行マネージャには次のオプションがあります。

   - パス: 選択したリポジトリ/ワークスペースのファイル・パスが表示されます。

   - マイ リポジトリ: 移行または検索するスクリプトを選択するためのリポジトリを指定します。ツリーからリポジトリおよびワークスペースを選択します。

   - [ファイルの一覧]: 選択したリポジトリ/ワークスペースに存在する、ファイルまたはスクリプトの名称が一覧表示されます。

   - スクリプト: 移行または検索するスクリプトの名前を指定します。

   - 移行: 有効になっている場合、選択したスクリプトは9.10より前のバージョンのスクリプトで、現在のバージョンに移行できます。無効になっている場合、スクリプトはすでにバージョン9.10以上のスクリプトで、移行は必要ありません。

   - 子スクリプトの検索: 有効になっている場合、選択したスクリプトは9.10より前のバージョンのスクリプトで、現在のバージョンに移行できます。無効になっている場合、スクリプトはすでにバージョン9.10以上のスクリプトで、移行は必要ありません。

2. 「マイ リポジトリ」ツリーを開き、スクリプト・ファイルを含むワークスペース・フォルダに移動します。

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

   「移行」が有効になっている場合、スクリプトは9.10より前のバージョンのスクリプトで移行が可能です。「移行」が無効になっている場合、スクリプトはすでにバージョン9.10以上のスクリプトで、移行は必要ありません。

   子スクリプトの検索が有効になっている場合、スクリプトはすでにバージョン9.10以上のスクリプトで、子スクリプトの検索機能を使用することで、現在選択されているスクリプトのアセットである可能性が高い子スクリプトを検索できます。子スクリプトが見つかると、子スクリプトの移行オプションを使用して子スクリプトを移行するか、その他の子スクリプトをさらに検索できます。子スクリプトの検索が無効になっている場合、スクリプトは9.10より前のバージョンのスクリプトで、現在のバージョンに移行する必要があります。

4. 「移行」または子スクリプトの検索を、選択したスクリプト・ファイルに応じてクリックします。

5. 完了したら「閉じる」をクリックします。

### 3.2.3 テンプレートとしてスクリプトを保存する

既存のスクリプトをテンプレート・スクリプトとして保存できます。テンプレート・スクリプトは、スクリプトを新規作成するときの土台として使用できます。テンプレートに基づいて作成する新規スクリプトには、テンプレート・スクリプトと同じ構造とカスタム・コードが含まれます。

既存のスクリプトをテンプレートとして保存するには、次のようにします。

1. テンプレートとして保存するスクリプトを開くか、新しくスクリプトを作成します。

2. テンプレートに含めておく記録、オプションまたはカスタム・コードを設定して、スクリプトをカスタマイズします。

3. 「ファイル」メニューから「テンプレートとして保存」を選択します。

4. テンプレート用のファイル名を入力し、「OK」をクリックします。

テンプレートに名称を付けるときに、テンプレート名の一部に、スクリプトのタイプ（HTTP負荷、Web機能、Siebel負荷など）を指定するようにしてください。こうしておくと、テンプレートに基づいてスクリプトを新規作成する際に役に立ちます。

### 3.2.4 テンプレートに基づくスクリプトの新規作成

過去にテンプレート・スクリプトとして保存したスクリプトに基づいてスクリプトを新規作成できます。作成したスクリプトにはInitialize、RunおよびFinishノードが含まれ、テンプレート・スクリプトに追加したカスタム・コードがあれば、それも含まれます。

テンプレートに基づいてスクリプトを新規作成するには、次のようにします。

1. 「ファイル」メニューの「新規」を選択するか、ツールバー・ボタンをクリックします。

2. 「一般」セクションを開き、「テンプレートからスクリプト」を選択します。

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

   注意: テンプレートに基づいてスクリプトを新規作成できるように、過去に保存したスクリプトがなければなりません。

4. スクリプトの新規作成に使用するテンプレートを選択し、「次」をクリックします。

5. 新規スクリプトの名称を入力し、「終了」をクリックします。

### 3.2.5 スクリプト・プロパティの設定

スクリプト・プロパティは特定のスクリプトのプロパティ設定を指定します。スクリプト・プロパティは、スクリプトが開いているときはいつでも設定できます。スクリプト・プロパティには次のものがあります。

- データバンク、オブジェクト・ライブラリ、汎用JARファイル、および子スクリプトとして実行するその他のスクリプトなどを表すスクリプト・アセット。

- 負荷テスト（プロトコル自動化）タイプのスクリプトの相関プロパティ。

- スクリプトで含めるモジュール・サービスを指定するモジュール・プロパティ。

- 記録中のステップ・グループの作成方法を指定するステップ・グループ・プロパティ。

スクリプト・プロパティを設定するには、次のようにします。

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

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

3. 左ペインでプロパティ・タイプを選択します。

4. 右ペインのオプションを使用して特定のプロパティを設定します。

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

スクリプト・プロパティ・ペインについては、次の項で説明します。

#### 3.2.5.1 相関

このダイアログ・ボックスでは、負荷テスト（プロトコル自動化）タイプのスクリプトの相関プロパティを指定できます。「相関」ペインには次のオプションがあります。

- モジュール: スクリプトが相関ルールに使用するモジュール・タイプを指定します。

- 選択されたモジュールの設定: 現在のスクリプトの相関ルール・ライブラリおよびルールの設定を示します。選択したライブラリおよびルールを表示するにはツリー・ビューを展開します。

  - 編集: 指定したモジュール・タイプの相関プロパティ・ウィンドウを開きます。

#### 3.2.5.2 モジュール

このダイアログ・ボックスでは、スクリプトで含めるモジュール・サービスを指定できます。「モジュール」ペインには次のオプションがあります。

- モジュール: 現在のスクリプトで含まれるモジュール・サービスを示します。基本モジュールおよびユーティリティ・モジュールはすべてのスクリプト・タイプに共通です。共有データ・モジュールもすべてのスクリプト・タイプで使用できます。HTTPモジュールはすべての負荷テスト（プロトコル自動化）タイプのスクリプトに共通です。機能テスト・モジュールおよびWeb機能テスト・モジュールは機能テストタイプ・スクリプトに共通です。その他のモジュールは個々のスクリプト・タイプに固有です。

#### 3.2.5.3 スクリプト アセット

このダイアログ・ボックスでは、スクリプトにアセットを指定できます。「スクリプト アセット」ペインには次のオプションがあります。

- アセット: スクリプトに追加されたアセットをツリー・ビューでタイプ別に一覧表示します。スクリプト・アセットはデータバンク、オブジェクト・ライブラリ、汎用JARファイルまたはその他のスクリプトである場合があります。

- ファイル: 現在のスクリプトにアセットとして追加されたファイルを示します。ファイルを表示するには「アセット」列でツリー・ビューを展開します。

- 追加: アセットとして追加するファイルを選択するためのファイル選択ダイアログ・ボックスを開きます。ファイルが含まれるワークスペース・フォルダをナビゲートするには、「マイ リポジトリ」ツリーを展開します。

  注意: 関連するアセットとともにOracle Load Testingアプリケーションで実行するスクリプトは、Oracle Load Testingコントローラでアクセス可能なリポジトリ/ワークスペースに格納する必要があります。OpenScriptでリポジトリを新規作成する場合は、新規のリポジトリをOracle Load Testingで追加する必要もあります。

- 編集: アセットとして追加するファイルを変更するためのファイル選択ダイアログ・ボックスを開きます。

- 開く: 選択したアセット・ファイルを適切なエディタで開きます。

- 削除: 選択したアセット・ファイルを「アセット」ツリーから削除します。このファイルはリポジトリ/ワークスペースにはまだ存在しています。

#### 3.2.5.4 ステップ グループ

このダイアログ・ボックスでは、現在のスクリプトのステップ・グループ・プロパティを指定できます。「ステップ グループ」ペインには次のオプションがあります。

- モジュール: スクリプトがステップ・グループ・ルールに使用するモジュール・タイプを指定します。

- 選択されたモジュールの設定: 現在のスクリプトのステップ・グループ設定を示します。この設定はスクリプト・タイプに固有です。

  - 編集: 指定したモジュール・タイプのステップ・グループ・プロパティ・ウィンドウを開きます。

### 3.2.6 データベース・キャプチャ・ファイルのインポート

DBReplayキャプチャ・ファイル、または通常のSQL文およぴPL/SQL文を含む.SQLスクリプト・ファイルをインポートして、データベースに接続し、SQL文を実行するOpenScript負荷テスト・スクリプトを生成できます。

データベース詳細設定を設定するには、次のようにします。

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

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

3. 「一般」ノードを選択します。

4. 「日付フォーマット」を選択します。詳細は、第2章の「「一般」詳細設定」を参照してください。

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

データベース・キャプチャ・ファイルに基づいてスクリプトを作成するには、次のようにします。

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

2. 「一般」グループを開き、「データベース」スクリプト・タイプを選択します。

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

4. スクリプトを格納するリポジトリおよびワークスペースを選択します。

5. スクリプト名を入力して「終了」をクリックします。新規のベースとなるスクリプト・プロジェクトがスクリプト・ツリー内に作成されます。

6. 「ツール」メニューからデータベース・キャプチャ・ファイルのインポートを選択します。インポート対象のデータベース・キャプチャ・ファイルまたはSQL文ファイルのファイル・フォーマットのタイプ、ソース・ファイル、およびSQL文パラメータ化を指定するためのデータベース・キャプチャ・ファイルのインポート・ウィザードが開きます。

7. インポートするデータベースのファイル・フォーマットを選択します。

   - DBReplayキャプチャ・ファイル: 選択した場合は、Oracle DBReplayキャプチャ負荷ファイルをインポートできます。

   - SQL および PL/SQL 構文スクリプト: 選択すると、通常のSQL文およびPL/SQL文を含む.SQLスクリプト・ファイルをインポートできます。

8. インポートするアイテムの最大数を指定します。

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

10. DBReplayキャプチャ・ファイル（.recファイル拡張子）またはSQL文およびPL/SQL文ファイル（.sqlファイル拡張子）のファイル・パスと名前を指定するか、「参照」をクリックしてファイルを選択します。

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

12. 使用するデータベース接続の別名を指定するか、「新規」をクリックして新しい接続を指定します。「新規」を選択した場合は、データベース・ドライバ、URL、ユーザー名、パスワードおよぴ別名の情報を入力します。別名は、スクリプト内で、データベース接続を参照するために使用する名称です。「テスト」をクリックして接続を検証したら、「OK」をクリックして、新しい接続を使用できるようにします。

13. それぞれのSQL文を選択または選択解除してスクリプトに含めるSQL文を指定し、SQL文のパラメータ化を設定します。

    - 編集: 特定のSQLクエリーを編集するためのダイアログ・ボックスを開きます。SQLクエリーを編集するか、クエリーの特定の値をパラメータ化する編集オプションを使用します。

    - パラメータ化: 選択したSQLクエリーのすべてのリテラル・パラメータに対するSQLバインドを作成します。これを使用すると、データベースのSQL文の解釈が効率的になります。たとえば、次の3つのデータベース・クエリーを作成するアプリケーションがあるとします。

          BEGIN DBMS_OUTPUT.GET_LINES(1, 100); END;
          BEGIN DBMS_OUTPUT.GET_LINES(5, 100); END;
          BEGIN DBMS_OUTPUT.GET_LINES(7, 100); END;

      前述の文では、データベースがクエリー全体を3回、解釈する必要がありますが、クエリーの構造自体は変わっていません。データベースが解釈する際に、パラメータの引数をクエリーに渡す方が効率的です。次に例を示します。

          BEGIN DBMS_OUTPUT.GET_LINES(?, ?); END;
          BEGIN DBMS_OUTPUT.GET_LINES(?, ?); END;
          BEGIN DBMS_OUTPUT.GET_LINES(?, ?); END;

      前述のSQL文を実行するときに、アプリケーションは、データベースに入力するリテラル・パラメータ値（1、100、5、100、7、100）を個別に指定します。

      「編集」を使用して新規のSQLクエリーを手動で挿入する場合は、「パラメータ化」ボタンを使用すると、すべてのリテラルと指定したパラメータがパラメータ化されます。たとえば、次の文を挿入したとすると、

          BEGIN DBMS_OUTPUT.GET_LINES(5, :NUMLINES); END;

      次のようにパラメータ化されます。

          BEGIN DBMS_OUTPUT.GET_LINES(?, ?); END;

      特定の状況では、「パラメータ化」ボタンを使用したときに、不要なリテラルがパラメータ化されることがあります。たとえば、次のような文の場合です。

          SELECT 1 FROM EMPLOYEES

      次のようにパラメータ化されます。

          SELECT ? FROM EMPLOYEES

      前述の例で、1をパラメータ化したくない場合は、「元に戻す」を使用して、パラメータ化を手動で調整する必要があります。

      DBReplayファイル（.SQLファイル）をインポートする場合は、そのファイルの中ですでにパラメータ化されている文字列のみがパラメータ化されます。

    - 元に戻す: パラメータ化したSQLクエリーを元のインポート対象の文に戻します。

    - すべて選択: インポート対象のすべてのSQL文を選択します。

    - すべての選択を解除: インポート対象のすべてのSQL文からチェック・マークを外します。

    - 自動的に行数カウント テストを追加する: 選択すると、行数カウント・テストが、スクリプトに追加した各SQL文に自動的に挿入されます。

    - 選択項目をパラメータ化: 選択したすべての文のリテラル・パラメータすべてに対してSQLバインドを作成します。

    - 選択項目を元に戻す: 選択したすべての文を、元のインポート対象のSQL文に戻します。

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

データベース・キャプチャ・ファイルまたはSQLファイルのインポート・レコーダが、指定されている「パラメータ化」設定を使用してファイルを解釈し、OpenScriptスクリプトを生成します。スクリプトの生成にかかる時間は、キャプチャ・ファイルのサイズに応じて変ります。

生成されたスクリプトには、データベースとの接続、およびインポート・ウィザードで選択したSQLクエリーの実行に必要なJavaコードが含まれます。このスクリプトでは、SQL文の実行に、OpenScriptの`utilities.getSQLService()`メソッドが使用されます。

### 3.2.7 Oracle Real User Experience Insight（RUEI）セッション・ログのインポート

RUEIが取得したユーザー・セッション・ログ・ファイルをインポートして、HTTPベースのOpenScript負荷テスト・スクリプトを生成できます。RUEIユーザー・セッション・ログは、バージョン6以上のRUEIを使用して生成する必要があります。

RUEIユーザー・セッション・ログからスクリプトを作成するには、次のようにします。

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

2. 「負荷テスト (プロトコル自動化)」グループを開き、「Web/HTTP」のスクリプト・タイプを選択します。

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

4. スクリプトを格納するリポジトリおよびワークスペースを選択します。

5. スクリプト名を入力して「終了」をクリックします。新規のHTTPプロトコル・スクリプト・プロジェクトがスクリプト・ツリー内に作成されます。

6. 「ツール」メニューからOracle Real User Experience Insight（RUEI）セッション・ログのインポートを選択します。

7. RUEIユーザー・セッション・ログ（.tabファイル拡張子）のファイル・パスと名前を入力するか、「参照」をクリックしてファイルを選択します。

8. 「スクリプトを相関する」とステップ グループの作成オプションを設定します。

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

RUEIセッション・ログのインポート・レコーダはログ・ファイルを解析し、指定された「スクリプトを相関する」およびステップ グループの作成設定を使用してHTTPベースのOpenScriptスクリプトを生成します。スクリプト作成時間はログ・ファイルのサイズや、「スクリプトを相関する」およびステップ グループの作成設定が設定されているかどうかによって異なります。一般的に、「スクリプトを相関する」およびステップ グループの作成が設定されていると、スクリプト作成時間は増加します。

RUEIユーザー・セッション・ログには、次のファイルおよびフォルダがあります。

- data.tabファイル: このファイルにはURL、ホストおよびポート、メソッド、ポストデータなどが含まれています。

- version.txt: このファイルには、使用するOpenScript RUEIユーザー・セッション・ログ・インポータのバージョンを決定するエクスポート・バージョン番号が含まれています。

- コンテンツ・フォルダ: このフォルダには、data.tabファイル内のエントリに対応するテキスト・コンテンツが含まれています。

RUEIからエクスポートされる必要なファイルを取得するには、URL接頭辞マスキングを"Complete logging"に設定する必要があります。Complete loggingはRUEIでデフォルトではオンになっていません。また、RUEIからエクスポートされたセッションは、コレクタのデータ保存ポリシー設定で指定されたFull Session Replay（FSR）設定よりも新しいセッションであることが必要です。そうでない場合、使用できるデータはごく一部か全くない状態になります。URL接頭辞マスキングとコレクタのデータ保存ポリシー設定の詳細は、『Oracle Real User Experience Insightユーザーズ・ガイド』を参照してください。

### 3.2.8 スクリプト再生設定のエクスポート

プロパティ・ファイルにスクリプト再生設定をエクスポートできます。再生設定プロパティ・ファイルには、スクリプトに指定されているオプションと設定がすべて格納されます。`-propertiesPath`設定を使用すれば、プロパティ・ファイルを使用してスクリプトをコマンド・ラインから実行できます。`-propertiesPath`設定の使用に関する詳細は、付録A「コマンドライン・リファレンス」を参照してください。

スクリプト再生設定をエクスポートするには、次のようにします。

1. OpenScriptでスクリプトを開きます。

2. 「ツール」メニューの「再生設定 エクスポート」を選択します。

3. ディレクトリの場所を選択し、ファイル名を指定します。

4. 「保存」をクリックします。ファイル名は`filename``.properties`の値です。

## 3.3 スクリプトの変更

スクリプト・プロジェクトを作成したら、使用可能なメニュー・オプションを使用して、あるいは「Java コード」ビューで独自のコードを編集して、テスト目的に応じてスクリプトをカスタマイズすることができます。

### 3.3.1 スクリプトへのステップ・グループの追加

ステップ・グループは、複数の手順を単一のレポート・ステップにグループ化する手段を提供します。

スクリプトにステップ・グループを手動で追加するには、次のようにします。

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

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

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

   このダイアログ・ボックスでは、スクリプト・ツリーのステップ・グループ・ノードを指定または変更できます。

4. ステップ・グループの名前を入力します。

   タイトル: ステップ・グループのタイトル・テキストを指定します。タイトル・テキストはスクリプト・ツリーに表示されます。

5. ステップ・グループを追加する遅延時間を入力します。

   思考遅延時間: ステップ・グループの遅延時間をミリ秒単位で指定します。

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

詳細設定に基づいてスクリプトにステップ・グループを追加するには、次のようにします。

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

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

3. 「OpenScript」ノードを開きます。

4. 「記録」ノードを開きます。

5. 「ステップグループ」ノードを選択します。

6. ステップ・グループの詳細設定を指定し、「OK」をクリックします。

7. 「スクリプト」メニューからステップ グループの作成を選択します。ステップ・グループがスクリプト・ツリーに自動的に追加されます。

8. Javaコード・ビューにおいて、ステップ・グループには`beginStep`および`endStep`の間で実行されるコードが構成されます。

       beginStep("Step Group 1", 10);

       {

               /**

                * Add code to be executed for the step group.

                */
              info("Step Group 1");

       }

       endStep();

### 3.3.2 遅延のスクリプトへの追加

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

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

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

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

4. 「一般」ノードを開いて、「思考遅延時間」を選択します。

   このダイアログ・ボックスでは、遅延時間を秒単位で指定または変更できます。

5. 遅延時間として使用する有効な整数を秒単位で入力します。

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

7. Javaコード・ビューで、`think(``time`;`)`（timeは秒単位）文がスクリプト・コードに追加されます。

       think(10.0);

### 3.3.3 ログ・メッセージのスクリプトへの追加

スクリプトにログ・メッセージを追加するには、次のようにします。

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

2. ログ・メッセージを追加するスクリプト・ノードを選択します。

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

   このダイアログ・ボックスでは、スクリプト・ツリーのログ・メッセージを指定または変更できます。

4. メッセージ・テキストを入力します。

   メッセージ: ログ・メッセージのテキストを指定します。テキストはスクリプト再生のコンソール・ビューに表示されます。

5. 「OK」をクリックします。スクリプト・ツリーにログ・メッセージ・ノードが追加されます。

6. Javaコード・ビューで、スクリプト・コードに`type``("``log message`"`)`メソッドが追加されます。

       info("Message");

       warn("Message");

       fail("Message");

スクリプトが再生されると、コンソール・ビューにログ・メッセージ・テキストが表示されます。

### 3.3.4 For構文のスクリプトへの追加

スクリプトにForステートメントを追加するには、次のようにします。

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

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

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

4. 「制御ステートメント」ノードを開いて、「For」を選択します。

   このダイアログ・ボックスでは、For構文のループ回数を指定または変更できます。

5. ループ回数として使用する有効な整数を入力します。

   ループ回数: For構文中をループする回数を指定します。

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

7. Javaコード・ビューで、スクリプト・コードに`for (int i=0; i <` `loop count`; `i++)`ステートメントが追加されます。

       for (int i=0; i < 10; i++)

### 3.3.5 スクリプトへの関数の追加

スクリプトに独自のカスタム関数を追加して、関数に渡す引数を指定できます。カスタム関数は現在のスクリプトか、現在のスクリプトのスクリプト・アセット・プロパティに追加されている別のスクリプトに存在する場合があります。

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

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

2. 完全なスクリプトを記録します。

3. スクリプト・ツリーの「Run」ノードを選択します。

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

5. 「一般」ノードを開いて、「関数」を選択します。

   このダイアログ・ボックスでは、複数の引数を使用してカスタム関数の名前を指定できます。

   名称: カスタム関数の名前を指定します。引数の名前とデータ型を定義するには、「追加」をクリックします。

   詳細: カスタム関数についてユーザーが定義した説明を指定します。

   引数: カスタム関数に定義された関数の引数をリストします。

   タイプ: カスタム関数に定義された引数のデータ型をリストします。

   詳細: カスタム関数に定義された引数についてユーザーが定義した説明をリストします。

   追加: カスタム関数に新しい引数を定義するためのダイアログ・ボックスを開きます。

   編集: 選択した引数を編集するためのダイアログ・ボックスを開きます。

   削除: 選択した引数をリストから削除します。

   上へ: リストの1つ上の位置に、選択した引数を移動します。

   下へ: リストの1つ下の位置に、選択した引数を移動します。

6. 関数名を入力します。

7. 関数の説明を入力します。

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

   このダイアログ・ボックスでは、関数へのデータの受渡しに使用するカスタム関数の引数を指定できます。

   名称: カスタム関数の引数名を指定します。

   タイプ: 「String」、「Integer」、「double」、「long」または「Boolean」からデータ型を選択します。

   詳細: 引数の説明を指定します（説明にデータ型を含めて「変数の置換」リストで識別できるようにすることが可能です）。

9. 引数名を入力します。

10. 引数のデータ型を選択します。

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

12. 「追加」をクリックしてさらに引数を追加するか、「OK」をクリックしてスクリプトに関数を追加します。function nameノードがスクリプト・ツリーに追加されます。

13. Javaコード・ビューで、データ型が指定された引数が続く`public void` `function name`ステートメントが、スクリプト・コードに追加されます。

        /**

         * My custom Function

         * @param argString Description of argString

         * @param argInt Description of argInt

         * @param argDouble Description of argDouble

         * @param argLong Description of argLong

         * @param argBool Description of argBool

        */

        public void MyFunction(@Arg("argString") String argString,

              @Arg("argInt") int argInt,

              @Arg("argDouble") double argDouble,

              @Arg("argLong") long argLong,

              @Arg("argBool") boolean argBool)

           throws Exception {

14. 関数に項目を追加します。ツリー・ビューのドラッグ/ドロップまたは切取り/貼付け機能を使用して、ツリー・ビュー項目を関数に移動できます。関数に変数項目を追加するには、スクリプトの「追加」オプションを使用します。また、コード・ビューを使用して、関数にカスタム・コードを追加することもできます。

関数に引数を渡すには、次のようにします。

スクリプト内の関数コール文が記述される場所よりも前に、カスタム関数の引数に値を渡すために使用する変数を定義します。

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

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

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

   このダイアログ・ボックスでは、スクリプトの変数を定義できます。

4. 変数の名前と値を入力します。

   - 名称: 変数の名称を指定します。

   - 値: 変数に割り当てる値を指定します。

5. 値を入力するか、「変数の置換」アイコンをクリックして、変数に割り当てる変数値を選択します。

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

7. Javaコード・ビューで、各変数の変数名と値が続く`getVariables().set()`文が、スクリプト・コードに追加されます。

       getVariables().set("MyString", "String");

       getVariables().set("MyInt", "1");
       getVariables().set("MyDouble", "12.34");

       getVariables().set("MyLong", "1234560");

       getVariables().set("MyBool", "True");

   次に、データバンク値に設定された変数の例を示します。

       getVariables().set("MyString", "{{db.customer.FirstName,String}}");

8. スクリプト内の関数ノード（カスタム関数名）を選択します。

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

10. ツリーを開き、追加する項目を選択します。たとえば、「一般」ノードの下の「メッセージ」、または「変数」ノードの下の「変数を設定」などです。

11. 「変数の置換」アイコンをクリックして、カスタム変数または関数の引数を選択します。「変数の選択」ツリーには、定義済のすべての引数とともに、カスタム関数がリストされます。

12. カスタム関数の引数を選択します。

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

14. Javaコード・ビューで、各変数の変数名と値が続くメッセージ文（`info`、`warn`、または`fail`）あるいは`getVariables().set()`文が、スクリプト・コードに追加されます。

        public void MyFunction(@Arg("argString") String argString,

              @Arg("argInt") int argInt,

              @Arg("argDouble") double argDouble,

              @Arg("argLong") long argLong,

              @Arg("argBool") boolean argBool)

           throws Exception {

              info("{{arg.argString}}");

              getVariables().set("MyArgString", "{{arg.argString}}");

              getVariables().set("MyArgInt", "{{arg.argInt}}");

              getVariables().set("MyArgDouble", "{{arg.argDouble}}");

              getVariables().set("MyArgLong", "{{arg.argLong}}");

              getVariables().set("MyArgBool", "{{arg.argBool}}");

        }

スクリプトでカスタム関数をコールするには、次のようにします。

1. 関数をコールするスクリプト・ツリー内のノードを選択します。

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

3. スクリプト関数コール・ノードとカスタム関数が存在するサブノードを開きます。カスタム関数はローカル（現在開いている）スクリプトか、スクリプト・アセット・プロパティに追加されている別のスクリプトに存在する場合があります（他のスクリプトをスクリプト・アセット・プロパティに追加するには「スクリプト」メニューから「スクリプト プロパティ」を選択します）。

4. 呼び出す関数を選択し、「OK」をクリックします。

   このダイアログ・ボックスでは、コールするカスタム関数および引数の値を指定できます。

5. カスタム関数に渡す引数データを入力するか、「変数の置換」アイコンをクリックして、カスタム変数またはデータバンク変数を選択します。

   - 関数: カスタム関数の名前を選択します。このリストには、スクリプトに追加されたカスタム関数の名前が表示されます。

   - 引数: 選択した関数の各カスタム関数の引数用フィールドが表示されます。引数の値を入力するか、「変数の置換」アイコンをクリックして、カスタム変数またはデータバンク変数を選択します。

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

7. Javaコード・ビューで、関数名と引数が続く`callFunction`または`getScript().callFunction()`文がスクリプト・コードに文字列データ型として追加されます。関数が同じスクリプト内にある場合、`callFunction`文が追加されます。

       callFunction("MyFunction", "MyStringArg");

   文字列以外のデータ型を渡すには、{{`VarName`}}のように、定義済の変数名を二重中カッコで囲みます。

       callFunction("MyFunction", "{{MyString}}", "{{MyInt}}", "{{MyDouble}}", "{{MyLong}}", "{{MyBool}}");

   関数が子スクリプト（スクリプト・アセット・スクリプト）内にある場合は、`getScript().callFunction()`文が追加されます。

       getScript("myAlias").callFunction("MyFunction", "myString", "myInt", "myDouble", "myLong", "myBool");

### 3.3.6 スクリプト・アセットの追加

データバンク、汎用JARファイル、オブジェクト・ライブラリまたはその他のスクリプト（記録されたステップやカスタム関数を含む）などのアセットをスクリプトに追加できます。追加できるのはその時点で存在するアセットです。スクリプトを記録、またはデータバンクおよびオブジェクト・ライブラリを作成する場合は、「ファイル」メニューから「新規」を選択します。「スクリプト プロパティ」の「Add」オプションを使用して、データバンクおよびオブジェクト・ライブラリを作成することもできます。

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

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

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

3. プロパティ・タイプ・リストで「アセット」を選択します。「アセット」ペインには次のオプションがあります。

   - アセット: スクリプトに追加されたアセットをツリー・ビューでタイプ別に一覧表示します。アセットはデータバンク、オブジェクト・ライブラリ、汎用JARファイルまたはその他のスクリプトである場合があります。

   - ファイル: 現在のスクリプトにアセットとして追加されたファイルを示します。ファイルを表示するには「アセット」列でツリー・ビューを展開します。

   - 追加: アセットとして追加するファイルを選択するためのファイル選択ダイアログ・ボックスを開きます。ファイルが含まれるフォルダをナビゲートするには、「マイ リポジトリ」ツリーを展開します。

     注意: 関連するアセットとともにOracle Load Testingアプリケーションで実行するスクリプトは、Oracle Load Testingコントローラでアクセス可能なリポジトリ/ワークスペースに格納する必要があります。OpenScriptでリポジトリを新規作成する場合は、新規のリポジトリをOracle Load Testingで追加する必要もあります。

   - 編集: アセットとして追加するファイルを変更するためのファイル選択ダイアログ・ボックスを開きます。

   - 開く: 選択したアセット・ファイルを適切なエディタで開きます。

   - 削除: 選択したアセット・ファイルを「アセット」ツリーから削除します。このファイルはリポジトリ/ワークスペースにはまだ存在しています。

4. 追加するアセットのタイプを選択して「追加」をクリックします。

5. リポジトリから追加するアセットを選択します。

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

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

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

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

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

7. 「OK」をクリックしてアセットをスクリプト・プロパティに追加します。

8. スクリプト・アセットの追加が終了したら「OK」をクリックして、スクリプト・プロパティを閉じます。

スクリプト・アセット情報は、スクリプト・プロジェクト・ディレクトリにあるassets.xmlファイルに保存されます。

### 3.3.7 スクリプトから実行するスクリプトの追加

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

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

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

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

4. 「一般」ノードを開いて、「スクリプト再生」を選択します。

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

   このダイアログ・ボックスでは、別のスクリプト内から実行するスクリプトを指定できます。

   スクリプト: 実行するOpenScriptスクリプトを指定します。

   新規: 実行するスクリプト・アセットを選択するためのスクリプト・プロパティを開きます。

   スクリプト実行セクション: 再生中に実行するスクリプト・セクションを指定します。

   - Initialize セクション: 選択すると、実行する選択したスクリプトのInitializeセクションのコードが、再生中に実行されます。選択を解除すると、Initializeセクションのコードはスキップされます。

   - Run セクション: 選択すると、実行する選択したスクリプトのRunセクションのコードが、再生中に実行されます。選択を解除すると、Runセクションのコードはスキップされます。

   - Finish セクション: 選択すると、実行する選択したスクリプトのFinishセクションのコードが、再生中に実行されます。選択を解除すると、Finishセクションのコードはスキップされます。

   反復: 実行するスクリプトの反復回数を指定します。

6. 「スクリプト」フィールドの横の「新規」を使用してスクリプトを選択します。

7. 次に実行するスクリプトを、スクリプト・プロパティの使用可能なスクリプト・アセットから選択します。「追加」ボタンを使用して、スクリプトをスクリプト・アセット・プロパティに追加します。

8. 「スクリプト実行セクション」オプションを選択または選択解除します。

9. 反復回数を設定します。

10. 「OK」をクリックします。スクリプト・ツリーに実行する「スクリプト名」ノードが追加されます。

11. Javaコード・ビューで、`getScript().run();`文が以下のようにスクリプト・コードに追加されます。

        getScript(alias=String).run(interation count = int, initialize = true|false, run = true|false, finish = true|false);

    例

        getScript("Web1").run(1, true, true, true);

### 3.3.8 関数ライブラリの追加

関数ライブラリとして使用するスクリプトを作成できます。関数ライブラリには、別のスクリプトからのコールが可能なカスタム関数が収容されます。関数ライブラリを作成するときは、ライブラリ・スクリプトを汎用タイプのスクリプトとして作成するか、またはライブラリの関数をコールするスクリプトと同じタイプのスクリプト（Web、HTTP、Siebelなど）として作成する必要があります。

関数ライブラリを作成するには、次のようにします。

1. スクリプト・プロジェクト（myScriptFunctionsなど）を新規作成します。

2. カスタム関数に追加するスクリプト・ノード（Initialize、RunまたはFinish）を選択します。

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

4. 「スクリプト関数」ノードと「ローカル スクリプト」ノードを開きます。

5. 「新規関数」を選択し、「OK」をクリックします。

6. 関数の名称と説明を入力します。

7. 引数を関数に追加するために、「追加」をクリックします。

   - 引数の名称を入力し、データ型を指定してから、説明を入力します。

   - 「OK」をクリックして、引数を追加します。

8. 関数に追加する引数ごとにステップ7を繰り返します。

9. 「OK」をクリックして、スクリプトに関数を追加します。

10. カスタム・コードを関数に追加します。

    - スクリプト・レコーダを使用してステップを記録します。

    - Javaコード・ビューに切り替え、関数のコードを編集します。

11. ステップ3からステップ10までを繰り返して、ライブラリ・スクリプトに他の関数を追加します。

12. ライブラリ・スクリプトを保存します。

ライブラリ・スクリプトの関数をコールするには、次のようにします。

1. スクリプト・プロジェクト（masterScriptなど）を新規作成します。

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

3. 「スクリプト アセット」タイプ、「スクリプト」の順に選択します。

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

5. カスタム関数のライブラリを選択し、「OK」をクリックします。

6. 「OK」をクリックして、「スクリプト プロパティ」を閉じます。

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

8. 「スクリプト関数」ノードと「Script: scriptLibraryName」ノードを開きます。

9. ライブラリ・スクリプトの関数名を選択し、「OK」をクリックします。

10. 「関数コール」ダイアログ・ボックスが表示されたら、関数の引数を入力し、「OK」をクリックします。

    関数名が、スクリプト・ツリーに「scriptLibraryname.functionName(args, [...])」と表示されます。

    次に示すように、Javaコード・ビューで、文字列データ型として関数名と引数が続く`callFunction`文が、スクリプト・コードに追加されます。

        getScript("scriptLibraryNmae").callFunction("functionName", "args", "[...]")

11. マスター・スクリプトを保存し、再生してカスタム関数を実行します。関数に引数を渡す方法の詳細は、3.3.5項「スクリプトへの関数の追加」を参照してください。

注意: マスター・スクリプトからコールされる最初の関数にLaunch Browserコマンドがない場合は、マスター・スクリプトのInitializeセクションに追加するようにしてください。

### 3.3.9 スクリプトへの同期ポイントの追加

同期ポイントを使用すると、仮想ユーザーとして実行される複数のスクリプトがOracle Load Testingでアクションを同期し、テスト中のアプリケーションを操作できるようになります。現実の複数ユーザー環境が再現されるため、デッドロックのようなリソースの競合が発生することもあります。同期ポイントを指定した場合は、スクリプトを実行する複数の仮想ユーザーは、様々な要因（マシンの処理速度など）に応じた回数だけ同期ポイントに達します。

同期ポイントを使用する場合、各仮想ユーザーは、すべての仮想ユーザーが同期ポイントに達するまで待機します。各仮想ユーザーは同期ポイントに達すると、その旨をマスターに通知します。マスターは、すべての仮想ユーザーから通知を受けるまで待機し、それが終了すると、すべての仮想ユーザーにその同期ポイントの後の処理を継続するように指示を出します。

同期ポイントは、OpenScriptでスクリプト（親スクリプトまたは子スクリプト）を作成する際に、そのスクリプトに追加します。同期ポイントの実行パラメータは、Oracle Load Testingアプリケーションで定義します。

OpenScriptスクリプトに同期ポイントを追加するには、次のようにします。

1. OpenScriptでスクリプトを作成するか、または開きます。

2. 同期ポイントを追加するスクリプト・ノードを選択します。

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

4. Synchronization Point・ノードを選択し、「OK」をクリックします。

   このダイアログ・ボックスでは、同期ポイントに使用する名称を指定できます。

   「名称」: Oracle Load Testingアプリケーションの同期ポイントの参照に使用する名称を指定します。

5. 同期ポイントの名称を入力し、「OK」をクリックします。

6. Javaコード・ビューでは、`syncPointWait("``name``");`メソッドがスクリプト・コードに次のように追加されます。

       syncPointWait("MySyncPoint");

7. OpenScriptのスクリプトを保存します。

8. スクリプトをOracle Load Testingアプリケーションにロードし、負荷テストのシナリオに従って同期ポイントの実行パラメータを指定します。同期ポイントの実行パラメータの指定に関する詳細は、Oracle Load Testingのユーザーズ・ガイドを参照してください。

### 3.3.10 スクリプトへの設定変数の追加

変数の設定をスクリプトに追加するには、次のステップを実行します。

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

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

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

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

   このダイアログ・ボックスでは、スクリプトの変数値を設定できます。

5. 変数の名前と値を入力します。

   - 名称: 変数の名称を指定します。

   - 値: 変数に割り当てる値を指定します。

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

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

       getVariables().set("sVar_MyVar", "My_Value");

   Oracle変換変数の値（{{}}構文で囲まれた変数値）で変数を設定する場合は、次のようにgetVariables().setとともにTransforms.transformメソッドを使用します（HTTPモジュールが必要）。

       http.solve("varTitle", "<TITLE>(.+)</TITLE>", "Page Title Error", false, Source.Html, 0);

       getVariables().set("sVar_MyVar", Transforms.transform("{{varTitle}}", getVariables()));

#### 3.3.10.1 スコープ付き変数

Javaコードで`variables`メソッドを使用して、スコープ付きの変数の取得または設定を行うことができます。次に例を示します。

    variables.set(String name, String Value, Variables.Scope.scope)
    variables.get(String name, Variables.Scope.scope)

スクリプト変数は、個別のOracle Load Testing仮想ユーザーの範囲内にある、すべてのスクリプトおよび関数に対してグローバルです。

- 仮想ユーザーごとに専用のスクリプト変数のマップを保有しています。

- 仮想ユーザーは、別の仮想ユーザーのスクリプト変数に対する読込み/書込みができません。ただし、例外的に、子の仮想ユーザー（子スクリプトとしての仮想ユーザー）が、親の仮想ユーザー内にあるすべての変数にアクセスすることはできます。

- 仮想ユーザーが実行するスクリプトおよび関数はどれも、その仮想ユーザーのすべての変数に対する読込み/書込みアクセスが可能です。

- 機能テストでは、スクリプトは通常、単体の仮想ユーザーに相当し、スクリプト変数は通常、グローバル変数になります。

スコープには次の3つがあります。

- `Local`: 現在のスクリプトが明示的にローカル変数として定義しているすべての変数。

- `Parent`: 親（コール元）のスクリプトが自分自身のローカル変数として定義しているすべての変数。

- `Global`: 明示的なスコープ内に定義されていないその他の変数。スコープの指定がないときには、これがデフォルトのスコープです。Globalスコープは最上位のVUserの親スコープ（最上位のスクリプト）に相当します。したがって、最上位のスクリプトは、まったく同じ2つのスコープ（GlobalとParent）を持っていることになります。

  スコープを使用して混乱を避けることができます。子スクリプトの作者がGlobalスコープまたはParentスコープ内の変数を変更する場合は、スクリプトの作者は明示的に変更する必要があります。子スクリプトの作者がローカル変数を変更する場合は、`Local`スコープを使用する必要があります。

  子スクリプトは、親スクリプトの変数全体を継承します。これは変数のコピーではなく、同一の変数（`getParentVUSer().variables`）を参照します。

次の例は、変数スコープの使用例です。

    //local variable
    variables.set("user", "rich", Variables.Scope.Local);

    //global variable (same as set("myData", "globalData", Variables.Scope.Global);)
    variables.set("myData", "globalData");

    //parent variable
    variables.set("anotherData", "parentData", Variable.Scope.Parent);

    getScript("Script2").run();

    // "globalData" as parent and global scope for top-level script coincide.
    variables.get("myData", Variables.Scope.Parent)

### 3.3.11 スクリプト結果へのコメントの追加

スクリプト結果にコメントを追加するには、次のようにします。

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

2. 「コードを見る」タブをクリックします。

3. 次のコード例のいずれかを使用して、コメントまたは警告を追加します。

- ステップ・グループを使用

-     beginStep("Any comment string", 0);

      {

      //The comment string appears in the Name column of the Results view.

      }

      endStep();

- `getStepResult().addComment`メソッドを使用

-     //The comment string appears in the Summary column of the Results view

      getStepResult().addComment("Any comment string");

- `getStepResult().addWarning`メソッドを使用

-     //The warning string appears in the Summary column of the Results view.

      //addWarning overides addcomment.

      getStepResult().addWarning("Any warning string");

### 3.3.12 スクリプトへのエラー・リカバリの追加

スクリプトにエラー・リカバリを追加するには、次のようにします。

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

2. ログ・メッセージを追加するスクリプト・ノードを選択します。

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

4. 「一般」ノードを開いて、「エラー リカバリー アクション」を選択します。

   例外: 例外エラーのタイプを選択します。リストはスクリプトのタイプによって異なります。

   アクション: エラー・リカバリのアクションを「失敗」、「警告」、「無視」の中から選択します。

5. 「OK」をクリックします。スクリプト・ツリーにログ・メッセージ・ノードが追加されます。

6. Javaコード・ビューでは、`setErrorRecovery(``scriptType``.``constant``, ErrorRecoveryAction.``action``);`メソッドがスクリプト・コードに追加されます。

       setErrorRecovery(BasicErrorRecovery.ERR_VARIABLE_NOT_FOUND, ErrorRecoveryAction.Fail);

#### 3.3.12.1 スクリプト・タイプ

次に、Javaコード文の`scriptType`に使用可能な値を示します。

`BasicErrorRecovery`（基本モジュール）

`FormsErrorRecovery`（EBS/Forms機能モジュール）

`FTErrorRecovery`（汎用機能モジュール）

`HttpErrorRecovery`（HTTPモジュール）

`NcaErrorRecovery`（EBS/Forms負荷モジュール）

`UtilitiesErrorRecovery`（汎用ユーティリティ）

`WebErrorRecovery`（Web機能モジュール）

#### 3.3.12.2 定数

次に、Javaコード文の`constant`に使用可能な値を示します。

`BasicErrorRecovery`（基本モジュール）

    ERR_VARIABLE_NOT_FOUND

    ERR_CREATE_VARIABLE_ERRORCODE

    ERR_FILE_NOT_FOUND

    ERR_SEGMENT_PARSER_ERROR

    ERR_BINARY_DECODE

    ERR_ENCRYPTION_SERVICE_NOT_INITIALIZED

    ERR_GENERIC_ERROR_CODE

`FormsErrorRecovery`（EBS/Forms機能モジュール）

    ERR_FORMS_FT_ERROR
    STATUSBAR_TEST_ERROR

`FTErrorRecovery`（汎用機能モジュール）

    ERR_FT_MATCH_ERROR

    ERR_OBJECT_TEST_ERROR

    ERR_TABLE_TEST_ERROR

`HttpErrorRecovery`（HTTPモジュール）

    ERR_ZERO_LENGTH_DOWNLOAD

    ERR_MATCH_ERROR

    ERR_RESPONSE_TIME_ERROR

    ERR_SOLVE_ERROR

    ERR_HTML_PARSING_ERROR

    ERR_INTERNET_INVALID_URL

    ERR_INVALID_HTTP_RESPONSE_CODE

    ERR_KEYSTORE_LOAD_ERROR

`NcaErrorRecovery`（EBS/Forms負荷モジュール）

    CONNECT_ERROR

    MESSAGE_IO_ERROR

    CONTROL_INITIALIZE_ERROR

`UtilitiesErrorRecovery`（汎用ユーティリティ）

    ERR_SQL_EXECUTE_ERROR

    ERR_XML_PARSING_ERROR

    ERR_CSV_LOADING_ERROR

`WebErrorRecovery`（Web機能モジュール）

    ERR_RESPONSE_TIME_ERROR

    ERR_WEBDOM_SOLVE_ERROR

    ERR_WAIT_FOR_PAGE_TIMEOUT_ERROR

#### 3.3.12.3 アクション

次に、Javaコード文の`action`に使用可能な値を示します。

    Fail

    Ignore

    Warn

### 3.3.13 スクリプト・アクションの検証

スクリプト・アクションを検証することで、スクリプト・アクションの結果を確認し、アクションの結果に基づいてスクリプトの動作を調整できます。

スクリプト・アクション検証の基本プロセスは次のとおりです。

1. 結果コードを検証するスクリプト・ノードの前にエラー・リカバリ・アクションを追加します。エラー・リカバリ・アクションはスクリプトの「追加」サブメニューから、またはJavaコード・ビューで追加できます。エラー・リカバリ・アクションを「警告」または「無視」に設定すると、エラー確認ブロックが必ず実行されます。これによって、スクリプト実行ではエラーが発生したコードが通過され、スクリプト・コード内の次の文まで続行されます。

2. 結果コードを検証するスクリプト・ノードの後ろにエラー確認制御ステートメントを追加します。エラー確認制御ステートメントはスクリプトの「追加」サブメニューから、またはJavaコード・ビューで追加できます。`if(hasLastError())`ブロックは、結果コードを検証するスクリプト・ノードの後ろのスクリプト・コードに直接追加されます。

3. Javaコード・ビューでカスタム・コードを`if(hasLastError())`ブロックに追加します。

4. 結果値を返すための結果オブジェクト・メッセージを追加します。結果コード検証機能によって結果オブジェクトへアクセスできます。結果オブジェクトでは結果コード、サマリー、エラー・メッセージおよび所要時間情報が提供されます。

次の項で、手順について詳しく説明します。

#### 3.3.13.1 エラー・リカバリ・アクションの追加

エラー・リカバリ・アクションを追加するには、次のようにします。

1. 結果コードを検証するスクリプト・ノードの前にあるスクリプト・ノードを選択します。

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

3. 「一般」ノードを開きます。

4. 「エラー リカバリ アクション」を選択し、「OK」をクリックします。

5. 例外タイプを選択します。詳細は、3.3.12項「スクリプトへのエラー・リカバリの追加」を参照してください。

6. 「アクション」タイプとして「警告」または「無視」を選択して、「OK」をクリックします。

7. エラー確認条件をスクリプトに追加します。詳細は、3.3.13.2項「エラー確認制御ステートメントの追加」を参照してください。

#### 3.3.13.2 エラー確認制御ステートメントの追加

エラー確認制御ステートメントは、ツリー・ビューを使用してスクリプトに追加できます。ただし、条件付きの動作はJavaコード・ビューで指定する必要があります。

エラー確認条件を追加するには、次のようにします。

1. 結果コードを検証するスクリプト・ノードの後ろにあるスクリプト・ノードを選択します。

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

3. 「制御ステートメント」ノードを開きます。

4. 「エラー確認」を選択して「OK」をクリックします。`if (hasLastError())`ノードがスクリプト・ツリーに追加されます。

5. 結果オブジェクトを追加するか、`if (hasLastError())`ブロックのカスタム・コードをJavaコード・ビューで追加します。詳細は、3.3.13.3項「結果オブジェクト・メッセージの追加」を参照してください。

#### 3.3.13.3 結果オブジェクト・メッセージの追加

結果オブジェクトは結果値を返すために使用できます。

結果オブジェクト・メッセージを追加するには、次のようにします。

1. スクリプト・ツリーの`if (hasLastError())`ノードを選択します。

2. `if (hasLastError())`ノードを右クリックして、「追加」サブメニューから「その他」を選択します。

3. 「一般」ノードを開きます。

4. メッセージを選択して「OK」をクリックします。

5. 「メッセージ タイプ」として「情報」または「警告」を選択します。

6. 「変数の置換」をクリックします。

7. 「最後の結果」を開きます。

8. 「すべてのアクション」または「アサーションと検証」を開きます。

9. メッセージに追加する結果を選択し、「終了」をクリックします。

10. 「OK」をクリックしてスクリプトにメッセージを追加します。

    Javaコード・ビューで、結果タイプが付加されたメッセージ・コードが`if (hasLastError())`ブロックに追加されます。

        info("{{result.summary}}");

    メッセージ文字列はJavaコード・ビューでカスタマイズできます。次に例を示します。

        info("Summary of last action: {{result.summary}}");

11. 必要に応じて、メッセージが`if (hasLastError())`ブロックの子ノードとなるようにメッセージ・ノードを`if (hasLastError())`ノード内にドラッグします。次に例を示します。

        if (hasLastError()) {

            info("Summary of last action: {{result.summary}}");

        }

#### 3.3.13.4 検証可能なアクション

結果を検証できる機能を持つのは特定のOpenScriptアクションのみです。一般的に、ツリー・ビューUIから追加できるアクションはすべて、検証とアサーションもすべて含めて、検証に対応しています。

通常、検証に対応していないのは次のタイプのアクションです。

- コードのみで使用し、UIからは使用できないJavaメソッド

- 非推奨メソッド

- "Get"メソッド

- Logger、VUDisplay、Settings、CountersなどのOpenScript内部コードと相互作用するメソッド

- `http.removeCookie`などの、例外をスローしないメソッド

### 3.3.14 複数のスクリプトの連鎖

単一のスクリプトから複数のスクリプトを実行し、スクリプトの再生を連鎖させることができます。

主な手順は次のとおりです。

- ブラウザの詳細設定

- スクリプトの記録

- シェル・スクリプトの作成

#### 3.3.14.1 ブラウザの詳細設定

ブラウザの詳細設定では、異なるスクリプトを記録する際に、新しいブラウザを起動するかどうかを指定します。複数のスクリプト間のナビゲーション順序が重要であるため、スクリプトが相互に連続している場合には、ブラウザの同じインスタンスがすべてのスクリプトを実行する必要があります。各スクリプトが自己完結型で、スクリプト間にナビゲーションがない場合には、それぞれのスクリプトに独自のブラウザを起動できるため、ブラウザの詳細設定をスキップできます。

1. 「ビュー」メニューから「プリファレンス」を選択します。

2. 「一般」カテゴリを開いて、「ブラウザ」を選択します。

3. 「異なるスクリプトを記録する場合にいつも新しいブラウザを起動する」オプションの選択を解除します。

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

#### 3.3.14.2 スクリプトの記録

チェーン再生のスクリプトを記録する際には、スクリプト間の開始ポイントと停止ポイントの計画が重要です。スクリプト間でセッション状態を維持する必要がある場合には特に重要です。すべてのスクリプトが同じタイプであることが必要です。

1. Web機能テストのログイン・スクリプトなど、最初のスクリプトを作成して記録します。

2. 記録を停止しますが、ブラウザは閉じません。

3. スクリプトを保存します。

4. 次のスクリプトを作成して記録します。このスクリプトのナビゲーションは、最初のスクリプトが停止したブラウザのポイントから開始する必要があります。

5. 記録を停止してスクリプトを保存します。

6. 連鎖する追加のスクリプトを作成して記録します。これらのスクリプトのナビゲーションは、前のスクリプトが停止したブラウザのポイントから開始する必要があります。

#### 3.3.14.3 シェル・スクリプトの作成

前に記録されたスクリプトを順番に実行するには、シェル・スクリプトを使用します。

1. シェル・スクリプトとして使用する新しいスクリプトを作成します。

2. 最初のスクリプトを追加するスクリプト・ノードを選択します。InitializeまたはRunノードのいずれかになります。

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

4. 「一般」ノードを開いて、「スクリプト再生」を選択します。

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

6. 「新規」をクリックします。

7. 実行するスクリプトを、スクリプト・プロパティの使用可能なスクリプト・アセットから選択します。「追加」ボタンを使用して、スクリプトをスクリプト・アセット・プロパティに追加します。

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

9. 実行するスクリプト・セクションと反復回数を選択またはクリアします。

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

11. 次のスクリプトを追加するスクリプト・ノードを選択します。Initialize、RunまたはFinishノードのいずれかになります。

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

13. 「一般」ノードを開いて、「スクリプト再生」を選択します。

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

15. 「新規」をクリックします。

16. 実行するスクリプトを、スクリプト・プロパティの使用可能なスクリプト・アセットから選択します。「追加」ボタンを使用して、スクリプトをスクリプト・アセット・プロパティに追加します。

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

18. 実行するスクリプト・セクションと反復回数を選択またはクリアします。

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

20. 実行する追加のスクリプトごとに、スクリプトの追加手順を繰り返します。

21. シェル・スクリプトを保存して再生し、スクリプト・ナビゲーションが連動して正常に機能することを検証します。

22. Javaコード・ビューで、`getScript().run()`メソッドがスクリプト・コードに追加されます。

        getScript("Web1").run(1, true, true, true);

        getScript("Web2").run(1, true, true, true);

### 3.3.15 スクリプト内のノードの移動

スクリプト・ツリー・ビューのノードをクリックしてドラッグすると、スクリプト・ツリーの別の場所にノードを移動できます。たとえば、ステップ・グループ・ノードをRunセクションからInitializeセクションに移動することや、ナビゲーション・ノードを移動することができます。

スクリプト・ツリーのスクリプト・ノードを移動するには、次のようにします。

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

2. スクリプト・ビューの「ツリー ビュー」タブで、移動するスクリプト・ノードを選択します。

3. マウスをクリックしてドラッグし、スクリプト・ツリー内のノードを移動します。スクリプト・ツリーには、ノードの移動先であるスクリプト・ツリー内の場所を示すインジケータの線が表示されます。

4. インジケータの線がスクリプト・ノードの移動先の場所に到達したら、マウス・ボタンを放します。

スクリプト・セクション間（「Run」と「Initialize」間など）でステップ・グループを移動する場合は、ノードをセクション・ノードに移動する必要があります。

また、コード・ビューに切り替えて、手動でコード行を移動することもできます。

## 3.4 テキスト・ファイルのエンコードの変更

国際文字が使用されているサイトを英語のOSに記録するには、デフォルトのキャラクタ・セットのエンコードを、必要なキャラクタ・セットがサポートされるキャラクタ・セットに変更する必要があります。

テキスト・ファイルのエンコードを変更するには、次のようにします。

1. OpenScriptを起動して、「ビュー」メニューから「開発者 パースペクティブ」を選択します。

2. 「ウィンドウ」メニューで「プリファレンス」を選択します。

3. 「一般」ノードを開きます。

4. 「ワークスペース」ノードを選択します。

5. 「その他」オプションの下のテキスト・ファイル・エンコーディングを選択します。

6. 必要なテキスト・ファイルのエンコード（日本語のWebサイトの場合はUTF-8など）を選択します。

7. 完了したら「閉じる」をクリックします。

## 3.5 スクリプトのデバッグ

Eclipse IDEの機能を使用してスクリプトをデバッグできます。デバッグが目的の場合、スクリプトをデバッグするためデバッグ・パースペクティブに切り替えることは必ずしも必要ではありません。ブレークポイント、デバッグおよび式などのビューはテスター・パースペクティブに追加できます。アウトライン、変数およびタスクの各ビューの使用はほとんどのケースで不要です。この項では基本スクリプトのデバッグ手法のヒントを紹介します。

### 3.5.1 ビューのテスター・パースペクティブへの追加

デバッグ目的のため、テスター・パースペクティブにその他のビューを追加する場合があります。ビューの表示ウィンドウへのショートカット・キーを使用して、開くビューを選択します。

ビューの表示ウィンドウを開くには、次のようにします。

1. [Shift]キーおよび[Alt]キーを押したまま、[Q]キーを押します（[Shift] + [Alt] + [Q]）。

2. [Q]キーを再度押します。ビューの表示ウィンドウが開きます。

3. 必要に応じてデバッグ・ツリーを開きます。

4. 開くビューを選択します。

   - 隣り合った複数のビュー名を選択する場合は、[Shift]キーを押しながらクリックします。

   - 隣り合っていない複数のビュー名を選択する場合は、[Ctrl]キーを押しながらクリックします。

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

選択したビューがテスター・パースペクティブで開かれます。

注意: 「開発者 パースペクティブ」内にいる場合、ビューを追加するには、「ウィンドウ」メニューから「ビューの表示」を選択して「その他」を選択します。

### 3.5.2 ブレークポイントのスクリプトへの追加

スクリプトの特定のコード行でスクリプト実行を停止するため、ブレークポイントをスクリプト・ツリー・ビューまたはJavaコードに追加できます。

スクリプト・ツリー・ビューにブレークポイントを追加するには、次のようにします。

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

2. スクリプトを記録します。

3. スクリプト・ビューで「ツリー ビュー」タブをクリックします。

4. スクリプト・ツリーを開いて、ブレークポイントを追加するノードを選択します。

5. マウスを右クリックしてショートカット・メニューから「ブレーク ポイントの追加」を選択します。スクリプト・ノード・テキストの末尾に"[Breakpoint]"インジケータが表れます。

6. スクリプトを再生します。

   スクリプトを再生すると、コード実行はブレークポイントで停止します。コード実行がブレークポイントに達すると、「表示方法変更の確認」メッセージが表示されます。以後のスクリプト再生時にメッセージを再度表示しない場合は、「この決定を記憶する」オプションを選択します。

7. テスター・パースペクティブにとどまる場合は「いいえ」をクリックし、デバッグ・パースペクティブに切り替える場合は「はい」をクリックします。「スクリプト」メニューの次のオプションを使用して、スクリプトをデバッグできます。

   - ステップ: 現在選択されているノードを実行し、実行ポインタを次の兄弟ノードに移動します。選択されているノードに子ノードがある場合、実行ポインタは最初の子ノードに移動されます。このオプションはスクリプトの再生中のみアクティブになり、スクリプト・コードをステップスルーする間はスクリプトの実行は中断されます。

   - ステップ イン: 関数またはサブ・プロシージャにステップインします。このオプションはスクリプトの再生中のみアクティブになり、スクリプト・コードをステップスルーする間はスクリプトの実行は中断されます。実行ポインタは関数の先頭に移動されます。

   - 一時停止/再開: スクリプトの再生を一時停止および再開します。これらのオプションはスクリプトの再生中のみアクティブになります。

8. 次の右クリック・ショートカット・メニュー・オプションを使用してスクリプトをデバッグできます。

   - スキップ/スキップ解除: スキップまたはスキップ解除するコードを設定します。

   - ここまで再生: スクリプトの先頭から再生を開始して、スクリプト・ツリーの選択したノードで再生を停止します。

   - ここから再生: スクリプト・ツリーの選択したノードから再生を開始して、末尾または次のブレークポイントまで再生します。

   - ブレーク ポイントの追加/ブレーク ポイントの削除: を選択します。スクリプト・ツリー・ビューでブレークポイントを追加または削除します。ブレークポイントが設定されたスクリプト・ツリー・ノードでは、スクリプト・ノード・テキストの末尾に"[Breakpoint]"インジケータが表れます。

   - 実行: スクリプト・ツリーの選択したノードに対してコードを実行します。このオプションはスクリプトの再生中のみアクティブで、スクリプトは一時停止します。「実行」ではエディタまたはツリー・ビューでハイライト表示されたコードがコンパイルされ、現在一時停止中のスレッドで実行されます。ただし、「実行」の使用時には、最初から実行中のプログラム・コードは変更されず、現在の実行ポインタも移動しません。「実行」を使用すると、デバッグ中にスクリプトへの変更をテストできます。変更を実際に適用する場合はスクリプトを保存します。保存すると、コードが再コンパイルされ、実行ポインタが`run()`セクションの先頭に戻されます。

   - ステップ: 現在選択されているノードを実行し、実行ポインタを次の兄弟ノードに移動します。選択されているノードに子ノードがある場合、実行ポインタは最初の子ノードに移動されます。このオプションはスクリプトの再生中のみアクティブになり、スクリプト・コードをステップスルーする間はスクリプトの実行は中断されます。

   - ステップ イン: 関数またはサブ・プロシージャにステップインします。このオプションはスクリプトの再生中のみアクティブになり、スクリプト・コードをステップスルーする間はスクリプトの実行は中断されます。実行ポインタは関数の先頭に移動されます。

スクリプト・コードにブレークポイントを追加するには、次のようにします。

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

2. スクリプトを記録します。

3. スクリプト・ビューで「Java コード」タブをクリックします。

4. ブレークポイントを追加するコード行の隣にあるコード・ビュー・フレームの一番右側の列をダブルクリックします。ブレークポイント・インジケータがフレーム内に丸いドットとして表れます。必要な数だけ多くのブレークポイントを追加できます。

5. スクリプトを再生します。

   スクリプトを再生すると、コード実行はブレークポイントで停止します。コード実行がブレークポイントに達すると、「表示方法変更の確認」メッセージが表示されます。以後のスクリプト再生時にメッセージを再度表示しない場合は、決定を記憶するオプションを選択します。

6. 「いいえ」をクリックしてテスター・パースペクティブのままにするか、「はい」をクリックしてデバッグ・パースペクティブに切り替えます。次のキーボード・デバッグ機能を使用してデバッグ・モード中にコードを実行できます。

   - シングルステップ（[F6]）: コードの次の行を実行します。

   - ステップイン（[F5]）: メソッド/関数のクラス・ファイルを開きます。

     注意: JREまたはEclipse IDEのソース・コードは製品に含まれていません。コードにステップインすると、ソース・コードが含まれないエディタが表示される可能性があります。この場合は、エディタを閉じてスクリプト再生を再開します。ステップイン機能は、スクリプトにすでに追加した独自のカスタム関数にステップインする際に使用できます。

   - 再開（[F8]）: スクリプトの末尾または次のブレークポイントまでコード実行を再開します。

### 3.5.3 Java例外ブレークポイントの追加

Java例外ブレークポイントをブレークポイント・リストに追加することで、エラーが発生した際にスクリプトを一時停止できます。

Java例外ブレークポイントを追加するには、次のようにします。

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

2. スクリプトを記録します。

3. ブレークポイント・ビューを開きます。

4. ブレークポイント・ビュー・ツールバーのJava例外ブレークポイントの追加アイコンをクリックします。

5. "AbstractScriptException"と入力して「OK」をクリックし、この例外をブレークポイント・リストに追加します。

6. ブレークポイント・ビューでブレークポイントを右クリックして、ブレークポイント・プロパティを選択します。

7. ブレークポイント・プロパティのこの例外のサブクラスで停止オプションを選択して、「OK」をクリックします。

スクリプト再生中にエラーが発生した場合は、問題を修正した後にスクリプト再生を続行できます。

### 3.5.4 デバッグ・モードでのスクリプト再生の一時停止および再開

ツリー・ビューまたはデバッグ・ビューを使用してスクリプト再生を一時停止および再開できます。

ツリー・ビューで再生を一時停止および再開するには、次のようにします。

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

2. スクリプトを記録します。

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

4. 再生を一時停止するには「一時停止」ツールバー・ボタンをクリックします。

5. 一時停止したスクリプトの再生を再開するには「再開」ツールバー・ボタンをクリックします。

デバッグ・モードで再生を一時停止および再開するには、次のようにします。

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

2. スクリプトを記録します。

3. スクリプト・ビューで「Java コード」タブをクリックします。

4. 必要に応じて、デバッグ・ビューをテスター・パースペクティブに追加します。開発者パースペクティブが開いている場合、デバッグ・ビューはすでに開かれています。

5. スクリプトを再生します。

6. デバッグ・ビュー・ツリーで、`Thread [Iterating Agent 1]`スレッドを選択して「一時停止」ツールバー・ボタンをクリックします。`Thread [Iterating Agent 1]`スレッドは仮想ユーザーのスレッドです。その他は無視できます。

7. デバッグ・ビュー・ツリーで、`script.run()`を選択して「再開」ツールバー・ボタンをクリックし、再生を再開します。

   スクリプトの特定のポイントから再開する場合は、すべての行を現在の行の前にコメントアウトし、スクリプトを保存してから再開します。

行をコメントアウトして再生を再起動しなくても、スクリプトの一部を実行することもできます。

1. `run()`セクションの先頭行にブレークポイントを挿入します。

2. スクリプトを再生します。再生がブレークポイントで停止すると任意の行を実行または検査できます。

3. 再生する対象のコードの特定行を選択し、右クリックして「実行」を選択します。スクリプトを保存しなくても、コードを変更して再実行することができます。

4. スクリプトが目的どおりに機能するまで、コードの選択、右クリック、「実行」のプロセスを繰り返します。

5. 再生を停止するか、デバッグ・ビューで「再開」ボタンを選択してブレークポイントから再生します。

### 3.5.5 スクリプト変数値の検査および変更

スクリプト変数値を検査または監視して、スクリプトをデバッグできます。スクリプトは実行中か、ブレークポイントで停止中であることが必要です。

Javaローカル変数とスクリプト変数には違いがあります。Javaローカル変数は、`String x`または`int i`などの標準的なJava構文を使用して宣言されます。スクリプト変数は、`getVariables().set("``someVariable``", "123"`または`http.solve()`などのOpenScript APIメソッドを使用して設定されます。

スクリプト変数の値を検査するには、次のようにします。

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

2. スクリプトを記録します。

3. ブレークポイントをスクリプトに追加します。

4. スクリプトを再生します。

5. 変数が含まれるスクリプト・コードをブレークポイントでハイライト表示するか、次のコードを入力してコードをハイライト表示します。

       getVariables().get("someVariable")

6. 右クリックで「検査」または監視を選択します。

   - 「検査」では変数を表示するペインが開かれます（[Shift] + [Alt] + [I]によって変数が式ビューに追加されます）。

   - 監視では変数が式ビューにコピーされます。

7. スクリプト変数の値を変更するには、次のコードを入力します。

       getVariables().set("someVariable", "newValue")

8. コードをハイライト表示します。

9. 右クリックして「実行」を選択します。

   注意: スクリプトを一時停止して、テストするアクションのコードを選択してから、右クリックして「実行」を選択する（または[Ctrl] + [U]を押す）と、個々のWebアクションもテストできます。

## 3.6 デバッグ・ログの有効化

OpenScriptには、Jakarta Log4jを使用したデバッグ・ログ機能があります。

デバッグ・ログを有効化するには、次のようにします。

1. OpenScriptを終了します。

2. `C:\OracleATS\OpenScript`にある`log4j.xml`ファイルを開きます。

3. ファイルの最後にある次のセクションを探します。

4.     <!-- ======================= -->

         <!-- Setup the Root category -->

         <!-- ======================= -->

               <!-- For production  -->

         <root>

          <priority value="WARN"/>

          <appender-ref ref="AGENTFILE" />

         </root>

               <!-- For debugging

         <root>

          <priority value="DEBUG"/>

          <appender-ref ref="AGENTFILE" />

          <appender-ref ref="CONSOLE" />

         </root>

               -->

5. 最後のコメントのカッコを移動します。

6.     <!-- For production  -->

         <root>

          <priority value="WARN"/>

          <appender-ref ref="AGENTFILE" />

         </root>

               <!-- For debugging

         <root>

          <priority value="DEBUG"/>

          <appender-ref ref="AGENTFILE" />

          <appender-ref ref="CONSOLE" />

         </root>

               -->

   これを次のように変更します。

       <!-- For production

         <root>

          <priority value="WARN"/>

          <appender-ref ref="AGENTFILE" />

         </root>

               -->

               <!-- For debugging -->

         <root>

          <priority value="DEBUG"/>

          <appender-ref ref="AGENTFILE" />

          <appender-ref ref="CONSOLE" />

         </root>

7. ファイル`log4j.xml`を保存し、OpenScriptを再起動します。

8. スクリプトを実行します。

デバッグ・メッセージは、`<installdir>\OpenScript`にある`OpenScript.log`ファイルに保存されます。

デバッグを無効化するには、最後のコメントのカッコを元の場所に戻します。