ヘッダーをスキップ
Oracle® Functional Testing OpenScriptユーザーズ・ガイド
バージョン9.31
B62630-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

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.3.1 データベース・プロシージャ文のコール

utilities APIを使用して、データベース・プロシージャ文のSQLコールを実行し、out型パラメータ値リストのリスト・オブジェクトを返します。

utilities.getSQLService().callProcedure("recid", "alias", "sql", "params")メソッドを使用して、プロシージャをコールしてout型のリスト・オブジェクトを返すことができます。メソッドの説明を次に示します。

  • recidは、記録されたIDを指定するオプションの整数です。

  • aliasは、プロシージャが含まれるデータベースに指定される、ユーザー定義データベース別名を指定する文字列です。

  • aliasは、データベースに送信されるSQL文を指定する文字列で、通常はデータベース・プロシージャ文をコールする静的SQLです。

  • paramsは、すべてのSQLService.parameterまたはSQLService.SQLParameterTypeにラップされたパラメータ値がインデックス別に含まれる、オプションのList<Object>オブジェクトです。インデックスは1から開始します。

次の例は、データベースへの定義および接続、データベース・プロシージャのコール、およびデータベースからの切断に使用されるコードを示しています。

utilities.getSQLService().define("local_XE_DB",
   "oracle.jdbc.driver.OracleDriver",
   "jdbc:oracle:thin:@localhost:1521/XE", "system",
   ;deobfuscate("6GaD7eW3kGVe5TKHmuI/+w=="));

utilities.getSQLService().connect("local_XE_DB");

utilities.getSQLService().callProcedure(44, "local_XE_DB",
   "Begin\n  insertInfo2(014,'anna14',21,'F','ecnu14',
     'History','1288',to_date(?,'yyyy-mm-dd'));\nEnd;",
   utilities.parameters(
     SQLService.parameter("1989-02-18",
     SQLService.SQLParameterType.In)));

utilities.getSQLService().disconnect("local_XE_DB");      

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. 「ツール」メニューから「XPathの生成」を選択します。

  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)