ヘッダーをスキップ

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

戻る | 次へ |

# 16 ユーティリティ・モジュールの使用

この章では、OpenScriptユーティリティ・モジュールの使用手順について説明します。ユーティリティ・モジュールは、一般的に使用されるテスト機能を提供します。

## 16.1 ユーティリティ・モジュールについて

ユーティリティ・モジュールは、基本モジュールの拡張機能です。OpenScriptユーティリティ・モジュールには次の機能があります。

### 16.1.1 ユーティリティ・モジュールの主な機能

- テキスト・ファイル処理。CSVおよびXMLファイルを含むテキスト・ファイルから値を読み込み、ファイルシステムのファイルをコピーまたは移動します。

- データベース。Oracleやその他のJDBC-ODBC準拠のデータベースなど、様々なデータベースから値を読み込みます。

- XML XPath式。有効なXMLファイルからXPath式を生成します。

  ユーティリティ・モジュールAPIを使用して、記録されたスクリプトにテスト機能を追加して拡張することができます。ユーティリティ・モジュールに特有なコマンドはutilitiesクラスに含まれます。

## 16.2 テキスト・ファイル処理の使用

`utilities` APIを使用して、CSVやXMLなどのテキスト・ファイルから値を読み込みます。次の項では、utilities APIの使用方法を説明します。

### 16.2.1 テキスト・ファイルの操作

このユーティリティAPIには、`getFileService()`オブジェクトが含まれており、ファイルからのテキスト行の読込みやファイルへの追加などテキスト・ファイルを操作するためのメソッドがあります。次の例では、`getFileService`の使用方法を説明します。

ファイルからテキストを読み込むコードを追加するには、次のようにします。

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

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

3. 読み込むファイルを指定する`readLines()`メソッドを追加します。次の例は、ファイルのテキスト行を解析し、OpenScriptコンソール・ビューに出力する方法を示します。

       import java.io.File;
       //[...]
       String[] lines = utilities.getFileService().readLines("C:/Sample.txt");

       for (String line : lines) {
       info(line);

       }

ファイルにテキストを追加するコードを追加するには、次のようにします。

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

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

3. テキスト文字列を追加するファイルを指定する、`appendStringToFile()`メソッドを追加します。次の例では、新規ファイルを作成してそのファイルにテキスト行を追加する方法を説明します。

       import java.io.File;
       //[...]
       utilities.getFileService().createDestinationFile("myFile.txt", false);
       String line1 = "This is a new line 1";
       String line2 = "This is a another new line 2";
       String contents = "\n" + line1 + "\n" + line2;
       utilities.getFileService().appendStringToFile("myFile.txt", contents);

### 16.2.2 CSVファイルの操作

このユーティリティAPIにはカンマ区切りテキスト・ファイルのデータを操作するための`loadCSV()`オブジェクトが含まれます。

.CSVファイルからデータをロードして出力するコードを追加するには、次のようにします。

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

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

3. 読み込むファイルを指定する`loadCSV`メソッドを追加します。次の例では、ファイルC:\customer.csvにこのデータが含まれます。

       FirstName,LastName,MiddleInitial

       John,James,R

       Mary,Simpson,J

   次の例では、.CSVファイル内のテキストの表を解析し、値をOpenScriptコンソール・ビューに出力する1つの方法を示します。

       import java.io.File;
       import java.util.List;
       //[...]
       String filePath = "c:\\";
       String csvFile = filePath + "fmstocks_data.csv";
       File file = new File(csvFile);

       Table table = utilities.loadCSV(csvFile);

       //Print the CSV file
       String columns = "";
       int columnNumber = table.getColumns().getColumnCount();
       String [] columnNames = table.getColumns().getColumnNames();
       for (int index=0; index<columnNumber; index++)
          columns += columnNames[index] + "  ";
       info(columns);

       List <Row> rows = table.getRows();
       for (int index=0; index<rows.size(); index++) {
           String [] rowValue = rows.get(index).getAll();
           String rowContent = "";
           for (int columnIndex=0; columnIndex<rowValue.length; columnIndex++)
               rowContent += rowValue[columnIndex] + "  ";
           info(rowContent);
       }

### 16.2.3 XMLファイルの操作

このユーティリティAPIには、XML形式のテキスト・ファイルからテキストを読み込むための`loadXML()`オブジェクトが含まれます。

.XMLファイルからテキストを読み込むコードを追加するには、次のようにします。

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

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

3. 読み込むファイルを指定する`loadXML`メソッドを追加します。次の例では、ファイルC:\grocery.xmlにこのデータが含まれます。

       <?xml version="1.0" encoding="utf-8"?>
       <Oceans>
         <ocean name="Arctic"/>
         <ocean name="Atlantic"/>
         <ocean name="Indian"/>
         <ocean name="Pacific"/>
         <ocean name="Southern"/>
       </Oceans>

   次の例に、 .XMLファイル内のテキストの表を解析し、値をOpenScriptコンソール・ビューに出力する方法を示します。

       XML xml = utilities.loadXML("C:/oceans.xml");

       XML root = xml.getChildren()[0];
       info(root.getTagName());

       XML[] oceans = root.getChildren();

       for (XML ocean : oceans){
       info(ocean.getAttribute("name"));

       }

## 16.3 データベースから値を取得

データベースから値を取得するには、データベース定義、データベースSQL問合せまたはSQL実行、およびデータベースからの切断が必要です。この項では、手動でスクリプトにデータベース・アクションを追加する方法について説明します。プレーンSQLやPL/SQL文の.SQLスクリプト・ファイルからDBReplayキャプチャ・ファイルまたはSQL文をインポートしてOpenScript負荷テスト・スクリプトを生成するには、3.2.6項「データベース・キャプチャ・ファイルのインポート」を参照してください。

データベースから値を取得するには、次のようにします。

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

2. データベース定義を追加するノードを選択します。

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

4. 「データベース」ノードを開き、「データベース定義」を選択します。

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

6. データベース定義情報を指定します。

7. 「テスト」をクリックし、正常に接続されることを確認します。

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

9. データベース接続を追加するノードを選択します。OpenScriptデータベース接続メソッドはオプションです。データベース接続は実行または問合せメソッドの呼び出し時に自動的に起動されます。

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

11. 「データベース」ノードを開き、「接続」を選択します。

12. データベース別名を選択し、「OK」をクリックします。

13. データベース問合せまたは実行文を追加するノードを選択します。

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

15. 「データベース」ノードを開き、「SQL クエリ」または「SQL 実行」を選択します。

16. 問合せまたは実行するSQL文を指定して、「追加」をクリックします。

17. パラメータに対し、データ・タイプを指定し、名前を定義します。

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

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

20. データベースの切断を追加するノードを選択します。

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

22. 「データベース」ノードを開き、「切断」を選択します。

23. データベース別名を選択し、「OK」をクリックします。

    Javaコード・ビューでは、各データベース・スクリプト・アクションのスクリプト・コードに`utilities.getSQLService()`メソッドが追加されます（コードとコメントが追加される）。

        //define database
        utilities.getSQLService().define("oracledb",

           "oracle.jdbc.driver.OracleDriver", "00.000.000.000", "myuserID",

           decrypt("ZgEQLMIUx8EVDAhfAenvyg=="));

        //connect to database
        utilities.getSQLService().connect("oracledb");

        //execute SQL statement
        String query = "Create table Employee (ID number(4) not null unique, " +
        "FirstName varchar2(40) not null, LastName varchar2(40) not null, " +
        "Country varchar2(40), HireDate date)";
        info("Query: " + query);
        utilities.getSQLService().execute("oracledb", query);

        //execute update SQL statement
        query = "Insert into Employee (ID, FirstName, LastName, Country, HireDate) " +
           "Values (101, 'Tom', 'Smith', 'USA', '01-JAN-95')";
        utilities.getSQLService().executeUpdate("oracledb", query);

        //query SQL statement
        query = "Select * from Employee";
        Table table = utilities.getSQLService().query("oracledb", query);

        //print table
        for (int i=0; i<table.getRowCount(); i++) {
           Row row = table.getRow(i);
           String [] rowValue = row.getAll();
           String rowContent = "";
           for (int col=0; col<rowValue.length; col++)
              rowContent += rowValue[col] + "  ";
           info(rowContent);
        }

        //disconnect from database
        utilities.getSQLService().disconnect("oracledb");

## 16.4 XPathジェネレータの使用

このユーティリティ・モジュールには、有効なXMLファイルから選択した要素へのXPath式を生成するために使用できるXPathジェネレータ・ユーティリティが含まれます。

XPathジェネレータを使用するには、次のようにします。

1. XPath式の生成に使用するタグおよび値を含むXMLファイルを作成します。XPathジェネレータで使用できる単純なXMLファイルの例を次に示します。

       <?xml version="1.0" encoding="utf-8"?>

       <Oceans>

          <ocean name="Artic"/>

          <ocean name="Atlantic"/>

          <ocean name="Indian"/>

          <ocean name="Pacific"/>

          <ocean name="Southern"/>

       </Oceans>

2. テスト・スクリプトを作成して記録します。機能テストおよび負荷テスト・スクリプト用の「ツール」メニューがOpenScriptメニュー・バーに表示されます。

3. 「ツール」メニューから「XPaths 生成」を選択します。

4. 「参照」をクリックし、ロードするXMLファイルを選択します。

5. XMLファイルの「タグ」セクションの下のXMLツリーを開きます。

6. XPathの生成に使用するXMLタグを選択します。生成されたXPathは`/Oceans/ocean[1]/@name`のような形式で「XPath 式」フィールドに表示されます。

7. [Ctrl] + [C]および[Ctrl] + [V]のキーの組合せを使用して、生成したXPathをスクリプト・ビューの「Java コード」タブでメソッドにコピーおよび貼り付けます。

   XPath式はユーティリティ `findByXPath` APIメソッドで、次のように使用することができます。

       utilities.loadXML("filePath").findByXPath(xpath, xml)