ヘッダーをスキップ

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

戻る | 次へ |

# 13 Webサービス・モジュールの使用

この章では、OpenScript Webサービス・モジュールの使用手順について説明します。このモジュールはWebサービスのテストをサポートします。

## 13.1 Webサービス・モジュールについて

Webサービス・モジュールは、Webサービスのテストをサポートするアプリケーション・モジュールです。Webサービス・モジュールは、HTTPモジュールの拡張機能です。OpenScript Webサービス・モジュールには次の機能があります。

- Webサービス・モジュール。新規プロジェクト・ウィザード（「ファイル」メニューから「新規」を選択）には、OpenScriptでWebサービス・スクリプトを作成する際に使用するWebサービス・スクリプト・オプションが含まれます。

- SOAPプロトコルのサポート。Webサービス・モジュールでは、SOAP 1.1および1.2プロトコルがサポートされます。

- 複数のパーサーのサポート。Webサービス・モジュールでは、複数のWSDLパーサーがサポートされます。デフォルトのOpenScriptおよびOracleパーサーに加えて、OpenScriptはApache AXISおよび.Netパーサーを使用するよう設定できます。

- WSDLマネージャ。OpenScript WSDLマネージャでは、Webサービス・スクリプトを作成するためにWebサービス定義ファイルをインポートおよび格納できます。WSDLマネージャを使用して、Webサービス・メソッドをOpenScriptツリーに追加します。

- XMLエディタ。OpenScript XMLエディタでは、Webサービス・リクエストを静的な値または変数のいずれかを含むよう編集できます。

- Web固有のApplication Program Interface（API）。Webサービス・モジュールには、Webサービス・スクリプトのカスタマイズに使用できるWebサービス・モジュールAPI仕様が含まれます。

### 13.1.1 Webサービス・モジュールの主な機能

Webサービス・モジュールは、Webサービス・テスト機能でプラットフォームを拡張するHTTPモジュールの拡張モジュールです。Webサービス・モジュールはOpenScriptプラットフォームと完全に統合され、結果ビュー、詳細ビュー、プロパティ・ビュー、コンソール/問題の各ビュー、詳細設定、ステップ・グループ、スクリプト・マネージャおよびワークスペース・マネージャが含まれます。

Webサービス・メソッドは、WSDLマネージャを使用してスクリプト・ツリーに追加されます。Webサービス・メソッドのPOSTデータ・パラメータは、詳細ビューのXMLエディタ機能を使用して編集できます。

OpenScriptによって、Webサービス・スクリプトの再生結果が結果ビューに表示されます。結果ビューには、各スクリプト・コマンドの結果が表示されます（機能の経過時間とサマリーを含む）。結果レポートは同じ情報をHTMLフォーマットの結果レポートにコンパイルします。結果をOpenScript GUIから標準フォーマット（CSV/HTML）でエクスポートすることもできます。また、コマンドラインを通じた自動再生によっても結果は生成されます。

Webサービス・モジュールAPIには、追加のプログラム機能を提供するwsクラスが含まれます。

## 13.2 WSDLマネージャを使用したWebサービス・スクリプトの作成

WDSLマネージャを使用してWebサービス・スクリプトを作成する主要ステップは、次のとおりです。

1. Webサービス・スクリプト・ツリーを作成します。

2. WSDLファイルをWSDLマネージャ・ビューに追加します。

3. メソッドをWSDLマネージャからスクリプト・ツリーに追加します。

4. 「詳細」ビューでメソッド・パラメータを編集します。

次の項では、各主要ステップについて説明します。

### 13.2.1 Webサービス・スクリプト・ツリーの作成

Webサービス・スクリプト・ツリーを作成するには、次のようにします。

1. OpenScriptを起動します。

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

3. 「一般」グループを開き、「Web サービス」を選択します。

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

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

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

7. 「終了」をクリックします。新規スクリプト・ツリーがスクリプト・ビューに作成され、「WSDL マネージャ」ビューが表示されます。

### 13.2.2 WSDLファイルのWSDLマネージャ・ビューへの追加

ファイルを「WSDL マネージャ」ビューに追加するには、次のようにします。

1. 「WSDL マネージャ」ビューで「追加」アイコンをクリックします。

2. WSDLファイルにURLを入力するか、「参照」をクリックしてローカル・ファイルを選択します。

3. 使用するパーサーを選択し、「ロールオーバー」オプションを設定します。

4. 「次へ」をクリックします。解析されたメソッドが表示されます。

5. 「終了」をクリックして解析されたメソッドを「WSDL マネージャ」ビューに追加します。

### 13.2.3 メソッドのスクリプト・ツリーへの追加

WSDLファイル・メソッドを「WSDL マネージャ」ビューからスクリプト・ツリーに追加するには、次のようにします。

1. 「WSDL マネージャ」ビューでWSDLファイル・ツリーを開きます。

2. 追加するメソッドを右クリックしてショートカット・メニューから「スクリプトに追加」を選択します。メソッドは、スクリプト・ツリーの「Run」ノードに追加されます。

   Javaコード・ビューでは、`ws.method(``method``)`/`ws.endMethod()` group with a `ws.post()`メソッドが次のようにスクリプト・コードに追加されます。

       ws.method("findApprovedPatientsByLastName");

       {

         ws.post(2, "http://server:7011/medrec-jaxws-services/PatientFacadeService",

           "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>

           <soapenv:Envelope

             xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"

             xmlns:med=\"http://www.oracle.com/medrec\">\r\n

               <soapenv:Header/>\r\n

                 <soapenv:Body>\r\n

                   <med:findApprovedPatientsByLastName>\r\n

                    <!--Optional:-->\r\n

                    <arg0>String</arg0>\r\n

                   </med:findApprovedPatientsByLastName>\r\n

                 </soapenv:Body>\r\n

           </soapenv:Envelope>", null, true, null, null);

       }

       ws.endMethod();

### 13.2.4 詳細ビューでのメソッド・パラメータの編集

「詳細」ビューでWSDLファイル・メソッドを編集するには、次のようにします。

1. スクリプト・ツリー・ビューで「Run」ノードを開きます。

2. スクリプト・ツリー・ビューでWSDLメソッド・ノードを開きます。

3. スクリプト・ツリー・ビューでXML POSTデータ・ノードを選択します。

4. 「詳細」ビューを開き、「XML ツリー」タブを選択します。

5. 「XML ツリー」タブの右列の値をクリックして値を編集します。

   または

   「XML ツリー」タブの左列でパラメータを右クリックし、「変数の置換」を選択して、変数名または「データバンク」値を選択してパラメータ値に置き換えます。値をデータバンクでパラメータ化した場合、データバンク変数はSOAPパラメータに`{{db.``databankFileName``.``field``,``recordedValue``}}`として表示されます。たとえば、前述のPOSTデータの例のオプションの引数`<arg0>`は、`<arg0>{{db.customer.LastName,String}}</arg0>\r\n`として表示されます。

   「XML」タブ内のXMLソースは、デフォルトではデコードされていません。コンテンツをフォーマットするには、「XML」タブ内のXMLソースを右クリックして「フォーマット」を選択します。XMLコンテンツをフォーマットすると、要素の内部テキストがデコードされます。次に、フォーマット前の要素の内部テキストの例を示します。

       <soapenv name="google&quot;">google&quot;</soapenv>

   次に、フォーマット後の要素の内部テキストの例を示します。

       <soapenv name="google&quot;">google"</soapenv>

## 13.3 スクリプトの変更

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

### 13.3.1 WebサービスPOSTナビゲーションの追加

スクリプトにWebサービスPOSTナビゲーションを追加するには、次のようにします。

1. Webサービス・スクリプトを作成します。

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

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

4. HTTPノードを開きます。

5. Webサービス・グループから「Web サービス POST ナビゲーション」ノードを選択して「OK」をクリックします。

6. 「ベース URL」タブで、URL、リクエストとレスポンスのキャラクタ・セットを入力し、「文字列をエンコード」オプションを設定します。

7. 「POST データ」タブで、SOAPプロトコルPOSTデータXMLを入力します。

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

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

   Javaコード・ビューでは、WebサービスPOSTナビゲーションは、`ws.Post`メソッドで実行されるコードから構成されます（わかりやすいように改行とスペースが追加されています）。

       ws.post(2, "http://testserver2/EmployeeLookup/EmployeeLookup.asmx",

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

           <soapenv:Envelope

              xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"

              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"

              xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"

              xmlns:web=\"http://oracle.com/webservices\"> \r\n

            <soapenv:Header/> \r\n

              <soapenv:Body> \r\n

                <web:findEmployee soapenv:

                  encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"> \r\n

                  <criteria xmlns:enc=\"http://oracle.com/webservices/encodedTypes\"

                    xsi:type=\"enc:SearchCriteria\"> \r\n

                    <FirstName xsi:type=\"xsd:string\">string</FirstName> \r\n

                    <LastName xsi:type=\"xsd:string\">string</LastName> \r\n

                    <EmployeeID xsi:type=\"xsd:int\">3</EmployeeID> \r\n

                  </criteria> \r\n

                </web:findEmployee> \r\n

              </soapenv:Body> \r\n

           </soapenv:Envelope>",

         http.headers(http.header("Content-Type", "text/xml",

           Header.HeaderAction.Modify),

           http.header("SOAPAction","\"http://oracle.com/webservices/findEmployee\"",

             Header.HeaderAction.Add)),

         false, "UTF-8", "UTF-8");

### 13.3.2 テキスト・マッチング・テストの追加

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

Webサービス・スクリプトにテキスト・マッチング・テストを追加するには、次のようにします。

1. Webサービス・スクリプトを作成します。

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

3. テキスト・マッチング・テストを追加するWebサービスPOSTデータ・ノードを選択します。

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

5. 「検証」グループから「テキスト マッチング テスト」を選択します。

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

7. 「テストする文字列」に入力します。

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

9. 一致するテキストを検索するソースの場所（HTMLまたはレスポンス・ヘッダー）を選択します。

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

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

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

11. 「テストする文字列」に正規表現を指定した場合、「正規表現」オプションを選択します。「テストする文字列」にプレーン・テキストを指定した場合、「正規表現」オプションの選択を解除します。

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

    Javaコード・ビューでは、テキスト・マッチング・テストは、`http.match`メソッドで実行されるコードから構成されます（わかりやすくするために改行とスペースが追加されます）。

        http.match("Test name", "Text to Match", "Error Message",

              Source location = Source.Html | Source.ResponseHeader,

              pass when present = false | pass when absent = true,

              is not RegExp = false | is RegExp = true);

    例:

        http.match("MyTXTMatch", "Login", "Could not find login", Source.Html, false, false);

OpenScriptの詳細設定の再生項目でHTTPテキスト・マッチング・テストにデフォルトのエラー・リカバリ設定を設定します。

### 13.3.3 セキュリティ拡張機能の追加

Webサービス・スクリプトにセキュリティ拡張機能を追加できます。

Webサービス・スクリプトにセキュリティ拡張機能を追加するには、次のようにします。

1. Webサービス・スクリプトを作成します。

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

3. セキュリティおよびアタッチメントを追加するWebサービス・メソッド・ノードを選択します。

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

5. HTTPノードを開きます。

6. Webサービス・グループから「Web サービス セキュリティ アタッチメント」を選択して「OK」をクリックします。

7. 必要に応じて、「WS-Security」タブをクリックします。

8. URLを入力します。スクリプト・ツリーでWebサービス・ナビゲーション・ノードを選択した場合、URLは自動的に入力されます。

9. ユーザーのユーザー名トークンを選択します。

10. ユーザー名およびパスワードを入力します。

    ユーザー名: XMLリクエストのユーザー名トークンに使用するユーザー名を指定します。

    パスワード: XMLリクエストのユーザー名トークンに使用するパスワードを指定します。

    パスワードの確認: パスワードを確認します。

11. パスワード・タイプ、「パスワード テキスト」または「パスワード ダイジェスト」を選択します。

    パスワード テキスト: 選択すると、XMLリクエストにプレーン・テキストとしてパスワードが含まれます。<wsse:Password>要素のURI属性は#PasswordTextに設定されます。

    パスワード ダイジェスト: 選択すると、パスワードは暗号化されます。<wsse:Password>要素のURI属性は#PasswordDigestに設定されます。

12. 「生成したヘッダーを追加」、「ナンスを追加」、「タイム スタンプを追加」の各オプションを選択または選択解除します。

    生成したヘッダーを追加: 選択すると、使用されるナンスのサーバー・キャッシュ制限の設定用に生成のタイムスタンプがXMLリクエストのユーザー名トークンに含まれます。

    ナンスを追加: 選択すると、再生攻撃に対する対応策を提供する暗号的にランダムなナンス値がXMLリクエストのユーザー名トークンに含まれます。

    タイム スタンプを追加: 選択すると、タイムスタンプ値がXMLリクエストのWebサービス・セキュリティ・エレメントに含まれます。タイムスタンプには、CreatedおよびExpiresエレメント両方が含まれます。「検証」秒数を指定します。

13. 「OK」をクリックし、セキュリティ アタッチメントノードをスクリプト・ツリーに追加します。

    Javaコード・ビューでは、次のようにセキュリティ・アタッチメントは`ws.addSecurityAttachments`メソッドで実行されるコードから構成されます（わかりやすいように改行とスペースが追加されています）。

        ws.addSecurityAttachments("url",

          ws.security("userName", deobfuscate("password"),addCreatedHeader,

            addNonce, addTimestamp, validFor), null);

    セキュリティとファイル・アタッチメントを一緒に追加した場合、次のように`ws.addSecurityAttachments`メソッドには`ws.security`と`ws.attachments`メソッドの両方が含まれます（わかりやすいように改行とスペースが追加されています）。

        ws.addSecurityAttachments("url",

           ws.security("userName", deobfuscate("password"),true, true, true, 10),

           ws.attachments(AttachmentMechanism.transferType,

             ws.attachment("filename","attachmentPart")));

### 13.3.4 アタッチメントの追加

Webサービス・スクリプトにファイル・アタッチメントを追加できます。

Webサービス・スクリプトにファイル・アタッチメントを追加するには、次のようにします。

1. Webサービス・スクリプトを作成します。

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

3. セキュリティおよびアタッチメントを追加するWebサービス・メソッド・ノードを選択します。

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

5. Webサービス・グループから「Web サービス セキュリティ アタッチメント」を選択します。

6. 必要に応じて、「WS-Security」タブをクリックします。

7. URLを入力します。スクリプト・ツリーでWebサービス・ナビゲーション・ノードを選択した場合、URLは自動的に入力されます。

8. 「アタッチメント」タブをクリックします。

9. 「転送タイプ」を選択します。

   - DEFAULT: Content-Typeヘッダーで指定されたデフォルトの転送タイプを使用します。

   - SWA: アタッチメント付きセキュリティSOAPメッセージ

   - MTOM: SOAPメッセージ送信最適化メカニズム

   - DIME: ダイレクト・インターネット・メッセージ・カプセル化

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

11. パスおよびファイル名を入力するか、「参照」をクリックしてファイルを選択します。

12. Webサービス・メソッドにアタッチメント・パート・オブジェクト識別子が含まれている場合、リストからアタッチメント・パートを選択します。Webサービス・メソッドにアタッチメント・パート・オブジェクト識別子が含まれていない場合、リストは空になります。

13. 「OK」をクリックし、セキュリティ アタッチメントノードをスクリプト・ツリーに追加します。

    Javaコード・ビューでは、次のようにセキュリティ・アタッチメントは`ws.addSecurityAttachments`メソッドで実行されるコードから構成されます（わかりやすいように改行とスペースが追加されています）。

        ws.addSecurityAttachments("url", null,

           ws.attachments(AttachmentMechanism.transferType,

             ws.attachment("filename","attachmentPart")));

    セキュリティとファイル・アタッチメントを一緒に追加した場合、次のように`ws.addSecurityAttachments`メソッドには`ws.security`と`ws.attachments`メソッド両方が含まれます（わかりやすいように改行とスペースが追加されています）。

        ws.addSecurityAttachments("url",

           ws.security("userName", deobfuscate("password"),true, true, true, 10),

           ws.attachments(AttachmentMechanism.transferType,

             ws.attachment("filename","attachmentPart")));

    次の例のWebサービス・スクリプト・メソッドには、`ws.addSecurityAttachments`メソッドと、ファイルのアップロードに使用する`ws.post` POSTデータ・メソッドが示されています。`ws.post`メソッドは、SOAPエンベロープPOSTデータ、Content-TypeおよびSOAPアクションを指定します。

        ws.method("upload");

        {

          ws.addSecurityAttachments("http://myurl.com:8080/services/MTOMService",

            ws.security("username",  deobfuscate("5blNah5kX/XuZnepYwInFw=="),

              true, true, true, 20),

            ws.attachments(AttachmentMechanism.MTOM,

              ws.attachment("C:\\OracleATS\\OFT\\test.txt", "<upload>776598931581")));

          ws.post(15, "http://myurl.com:8080/services/MTOMService",

            "<soapenv:Envelope

                xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"

                xmlns:ser=\"http://service.interop.mtom.sample\">\r\n

              <soapenv:Header/>\r\n

              <soapenv:Body>\r\n

                <ser:upload>\r\n

                  <!--Optional:-->\r\n

                  <ser:fileName>string</ser:fileName>\r\n

                  <!--Optional:-->\r\n

                  <ser:contents>cid:776598931581</ser:contents>\r\n

                </ser:upload>\r\n

              </soapenv:Body>\r\n

            </soapenv:Envelope>",

            http.headers(http.header("Content-Type", "text/xml;charset=Shift_JIS",

                Header.HeaderAction.Modify),

              http.header("SOAPAction", "\"urn:upload\"",

                Header.HeaderAction.Modify)),

            true, null, null);

        }

        ws.endMethod();

### 13.3.5 Webサービス・モジュールAPI

Webサービス・モジュールには、Webサービス・テストに固有のスクリプトApplication Program Interface（API）があります。Webサービス・スクリプトでは、 理解しやすい関数名を使用してツリー・ビューに対応するJavaコードが作成され、Javaコード・ビューにWebサービスが表示されます。Javaコード・ビューのコマンドは、ツリー・ビューと対応しており、どちらのビューでもスクリプトを編集できます。

WebサービスAPIを使用してスクリプトを拡張し、テスト機能を追加できます。Webサービス・モジュール固有のコマンドは、wsクラスの一部です。追加の機能テスト・メソッドは、httpクラスにあります。他の使用可能なクラス（サービス）からの他のコマンド、またはスクリプト内の一般的なJavaコマンドも利用できます。

Webサービス・テスト・モジュールのツリー・ビューを使用して、多数のAPIメソッドを追加できます。Javaコード・ビューを使用してさらにメソッドを追加することができます。使用できるプロシージャ一覧のインテリジェンス・ウィンドウを開くには、[Ctrl]キーを押しながら[Space]キーを押します。その他のプログラミング情報の詳細は、OpenScriptヘルプのAPIリファレンスを参照してください。

## 13.4 Webサービス・スクリプトの記録

作成されたWebサービス・クライアント・アプリケーションがすでにHTTPおよびプロキシを介して通信している場合、OpenScript HTTPレコーダを使用して通信を記録できます。

### 13.4.1 Webサービス記録の詳細設定の設定

Web機能テスト記録の詳細設定を設定するには、次のようにします。

1. OpenScriptを起動します。

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

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

4. 「Web サービス」を選択します。

5. タブをクリックして、詳細を設定します。

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

### 13.4.2 Webサービス・スクリプトの記録

Webサービス・スクリプトを記録するには、次のようにします。

1. OpenScriptを起動します。

2. Webサービス記録の詳細設定を設定します。

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

4. 「一般」グループを開き、「Web サービス」を選択します。

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

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

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

8. 「終了」をクリックします。新規スクリプト・ツリーがスクリプト・ビューに作成され、「WSDL マネージャ」ビューが表示されます。

9. 「スクリプト」メニューから「記録」を選択します。記録を開始すると、ブラウザが自動的に開きます。

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

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

12. ページのナビゲーションが終了したら、ブラウザを閉じてください。

13. 「スクリプト」メニューから「停止」を選択するか、OpenScriptツールバーの「停止」ボタンをクリックします。

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

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

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