この章では、OpenScript Webサービス・モジュールの使用手順について説明します。このモジュールは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サービス固有のAPI (アプリケーション・プログラミング・インタフェース)。Webサービス・モジュールには、Webサービス・スクリプトをカスタマイズする際に使用するWebサービス・モジュールのAPI仕様が含まれています。
Webサービス・モジュールはHTTPモジュールの拡張モジュールであり、Webサービス・テスト機能でプラットフォームを拡張します。Webサービス・モジュールは、結果ビュー、詳細ビュー、プロパティ・ビュー、コンソール/問題の各ビュー、詳細設定、ステップ・グループ、スクリプト・マネージャ、ワークスペース・マネージャなどのOpenScriptプラットフォームと完全に統合されています。
Webサービス・メソッドは、WSDLマネージャを使用してスクリプト・ツリーに追加されます。Webサービス・メソッドのPOSTデータ・パラメータは、「詳細」ビューのXMLエディタ機能を使用して編集できます。
OpenScriptによって、Webサービス・スクリプトの再生結果が結果ビューに表示されます。結果ビューには各スクリプト・コマンドの結果が表示されます(経過時間や失敗のサマリーを含む)。結果レポートは同じ情報をHTMLフォーマットの結果レポートにコンパイルします。結果をOpenScript GUIから標準フォーマット(CSV / HTML)でエクスポートすることもできます。また、コマンドラインを通じた自動再生によっても結果は生成されます。
Webサービス・モジュールAPIには、追加のプログラミング機能を提供する"ws"クラスが含まれています。
WSDLマネージャを使用してWebサービス・スクリプトを作成する主な手順は次のとおりです。
Webサービス・スクリプト・ツリーを作成します。
WSDLファイルを「WSDLマネージャ」ビューに追加します。
メソッドをWSDLマネージャからスクリプト・ツリーに追加します。
「詳細」ビューでメソッド・パラメータを編集します。
次の項では、個々の主な手順を説明します。
Webサービス・スクリプト・ツリーを作成するには、次のようにします。
OpenScriptを起動します。
「ファイル」メニューから「新規」を選択します。
「一般」グループを開いて、「Webサービス」を選択します。
「次へ」をクリックします。
リポジトリとワークスペースを選択します。
スクリプト名を入力します。
「終了」をクリックします。新規スクリプト・ツリーがスクリプト・ビューに作成され、WSDLマネージャ・ビューが表示されます。
WSDLマネージャ・ビューにファイルを追加するには、次のようにします。
「WSDLマネージャ」ビューで「追加」アイコンをクリックします。
WSDLファイルに対するURLを入力するか、「参照」をクリックしてローカル・ファイルを選択します。
使用するパーサーを選択し、ロール・オーバー・オプションを設定します。
「次へ」をクリックします。解析されたメソッドが表示されます。
「終了」をクリックして解析されたメソッドを「WSDLマネージャ」ビューに追加します。
WSDLファイル・メソッドを「WSDLマネージャ」ビューからスクリプト・ツリーに追加するには、次のようにします。
「WSDLマネージャ」ビューでWSDLファイル・ツリーを開きます。
追加するメソッドを右クリックしてショートカット・メニューから「スクリプトに追加」を選択します。メソッドは、スクリプト・ツリーの「Run」ノードに追加されます。
Javaコード・ビューでは、次のようにws.method(
method
)
/ws.endMethod()
グループが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();
「詳細」ビューでWSDLファイル・メソッドを編集するには、次のようにします。
スクリプト・ツリー・ビューで「Run」ノードを開きます。
スクリプト・ツリー・ビューでWSDLメソッド・ノードを開きます。
スクリプト・ツリー・ビューでXML POSTデータ・ノードを選択します。
「詳細」ビューを開き、「XMLツリー」タブを選択します。
「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"">google"</soapenv>
フォーマット後の要素のインナー・テキストの例を次に示します。
<soapenv name="google"">google"</soapenv>
スクリプトを作成あるいは記録したら、テスト上の必要に応じてスクリプトに変更を加え、カスタマイズすることができます。
スクリプトにWebサービス・ポスト・ナビゲーションを追加するには、次のようにします。
Webサービス・スクリプトを作成します。
「Run」ノードを選択します。
「スクリプト」メニューを選択した後、「追加」サブメニューから「その他」を選択します。
「HTTP」ノードを開きます。
Webサービス・グループから「Webサービス・ポスト・ナビゲーション」ノードを選択し、「OK」をクリックします。
「ベースURL」タブで、URL、リクエストおよびレスポンスの文字セットを入力し、「文字列のエンコード」オプションを設定します。
「ポスト・データ」タブで、SOAPプロトコル・ポストデータXMLを入力します。
「ヘッダー」タブの「追加」ボタンを使用して、名前/値のペアとアクションをベースURLに追加します。
「OK」をクリックしてスクリプト・ツリーにWebサービス・ポスト・ナビゲーション・ノードを追加します。
Javaコード・ビューでは、Webサービス・ポスト・ナビゲーションは、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");
テキスト・マッチング・テストを使用すると、リクエストがテキスト・マッチング・テストの条件に一致しない場合に、エラーの報告またはスクリプトの中止(あるいはその両方)を実行できます。
テキスト・マッチング・テストをWebサービス・スクリプトに追加するには、次のようにします。
Webサービス・スクリプトを作成します。
「Run」ノードを開きます。
テキスト・マッチング・テストを追加するWebサービス・ポストデータ・ノードを選択します。
「スクリプト」メニューを選択した後、「追加」メニューから「その他」を選択します。
「検証」グループから「テキスト マッチング テスト」を選択します。
テストの名前を入力します。
照合するテキストを入力します。
テストが失敗した場合に記録するエラー・メッセージ・テキストを入力します。
照合するテキストを検索するソースの場所(HTMLまたはレスポンス・ヘッダー)を選択します。
「合格条件」設定を選択します。
選択したテキストが存在します: 選択したソースに「照合するテキスト」の文字列が見つかった場合は合格とします。
選択したテキストが存在しません: 選択したソースに「照合するテキスト」の文字列が見つからない場合は合格とします。
「照合するテキスト」に正規表現を指定した場合、「正規表現」オプションを選択します。「照合するテキスト」にプレーン・テキストを指定した場合、「正規表現」オプションの選択を解除します。
「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テキスト・マッチング・テストにデフォルトのエラー・リカバリ設定を設定します。
Webサービス・スクリプトにセキュリティ拡張機能を追加できます。
Webサービス・スクリプトにセキュリティ拡張機能を追加するには、次のようにします。
Webサービス・スクリプトを作成します。
「Run」ノードを開きます。
セキュリティおよびアタッチメントを追加するWebサービス・メソッド・ノードを選択します。
「スクリプト」メニューを選択した後、「追加」メニューから「その他」を選択します。
「HTTP」ノードを開きます。
Webサービス・グループから「Webサービス・セキュリティ添付ファイル」ノードを選択し、「OK」をクリックします。
必要に応じて、「WSセキュリティ」タブをクリックします。
URLを入力します。スクリプト・ツリーでWebサービス・ナビゲーション・ノードを選択した場合、URLは自動的に入力されます。
「ユーザー名トークンの使用」を選択します。
ユーザー名およびパスワードを入力します。
ユーザー名: XMLリクエストのユーザー名トークンに使用するユーザー名を指定します。
パスワード: XMLリクエストのユーザー名トークンに使用するパスワードを指定します。
パスワードの確認: パスワードを確認します。
パスワード・タイプの「パスワード・テキスト」または「パスワード・ダイジェスト」を選択します。
パスワード・テキスト: 選択すると、XMLリクエストにプレーン・テキストとしてパスワードが含まれます。<wsse:Password>エレメントのURI属性は#PasswordTextに設定されます。
パスワード・ダイジェスト: 選択すると、パスワードは暗号化されます。<wsse:Password>エレメントのURI属性は#PasswordDigestに設定されます。
「作成したヘッダーの追加」、「Nonceの追加」および「タイムスタンプの追加」オプションを選択または選択解除します。
作成したヘッダーの追加: 選択すると、使用されるナンスのサーバー・キャッシュ制限の設定用に生成のタイムスタンプがXMLリクエストのユーザー名トークンに含まれます。
Nonceの追加: 選択すると、再生攻撃に対する対応策を提供する暗号的にランダムなナンス値がXMLリクエストのユーザー名トークンに含まれます。
タイムスタンプの追加: 選択すると、タイムスタンプ値がXMLリクエストのWebサービス・セキュリティ・エレメントに含まれます。タイムスタンプには、CreatedおよびExpiresエレメント両方が含まれます。「有効期限」秒数を指定します。
「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
")));
Webサービス・スクリプトにファイル・アタッチメントを追加できます。
Webサービス・スクリプトにファイル・アタッチメントを追加するには、次のようにします。
Webサービス・スクリプトを作成します。
「Run」ノードを開きます。
セキュリティおよびアタッチメントを追加するWebサービス・メソッド・ノードを選択します。
「スクリプト」メニューを選択した後、「追加」メニューから「その他」を選択します。
Webサービス・グループから「Webサービス・セキュリティ添付ファイル」を選択します。
必要に応じて、「WSセキュリティ」タブをクリックします。
URLを入力します。スクリプト・ツリーでWebサービス・ナビゲーション・ノードを選択した場合、URLは自動的に入力されます。
「添付ファイル」タブをクリックします。
「転送タイプ」を選択します。
「追加」をクリックします。
パスおよびファイル名を入力するか、「参照」をクリックしてファイルを選択します。
Webサービス・メソッドにアタッチメント・パート・オブジェクト識別子が含まれている場合、リストからアタッチメント・パートを選択します。Webサービス・メソッドにアタッチメント・パート・オブジェクト識別子が含まれていない場合、リストは空になります。
「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=UTF-8", Header.HeaderAction.Modify), http.header("SOAPAction", "\"urn:upload\"", Header.HeaderAction.Modify)), true, null, null); } ws.endMethod();
Webサービス・モジュールには、Webサービス・テストに固有のスクリプトApplication Program Interface (API)があります。Webサービス・スクリプトでは、 理解しやすい関数名を使用してツリー・ビューに対応するJavaコードが作成され、Javaコード・ビューにWebサービスが表示されます。Javaコード・ビューのコマンドはツリー・ビューに対応しているため、どちらのビューでもスクリプトを修正できます。
WebサービスAPIを使用してスクリプトを拡張し、テスト機能を追加できます。Webサービス・モジュール固有のコマンドは、wsクラスの一部です。追加の機能テスト・メソッドは、httpクラスにあります。また、その他の有効なクラス(サービス)の他のコマンドや汎用Javaコマンドも、スクリプトで利用できます。
Webサービス・テスト・モジュールのツリー・ビューを使用して、多数のAPIメソッドを追加できます。Javaコード・ビューを使用してさらにメソッドを追加することができます。使用できるプロシージャ一覧のインテリジェンス・ウィンドウを開くには、[Ctrl]キーを押しながら[Space]キーを押します。その他のプログラミング情報の詳細は、OpenScriptヘルプのAPIリファレンスを参照してください。
HTTP経由で通信するWebサービス・クライアント・アプリケーションがすでに作成されていて、そのアプリケーションがプロキシを介して通信する場合、OpenScript HTTPレコーダを使用してトラフィックを記録できます。
Webサービスの記録詳細設定を設定するには、次のようにします。
OpenScriptを起動します。
「ビュー」メニューから「OpenScript 詳細設定」を選択します。
「OpenScript」ノード配下の「記録」カテゴリを開きます。
「Web サービス」を選択します。
タブをクリックして、詳細を設定します。
「OK」をクリックします。
Webサービス・スクリプトを記録するには、次のようにします。
OpenScriptを起動します。
Webサービスの記録詳細設定を設定します。
「ファイル」メニューから「新規」を選択します。
「一般」グループを開いて、「Webサービス」を選択します。
「次へ」をクリックします。
リポジトリとワークスペースを選択します。
スクリプト名を入力します。
「終了」をクリックします。新規スクリプト・ツリーがスクリプト・ビューに作成され、WSDLマネージャ・ビューが表示されます。
「スクリプト」メニューから「記録」を選択します。記録を開始すると、ブラウザが自動的に開きます。
記録を開始するWebページをブラウザにロードします。
ナビゲーションを記録するWebサイトにアクセスします。ナビゲーションは、「記録セクション指定」設定で指定したスクリプト・ツリーのノード(デフォルトは「Run」ノード)に追加されます。
ページのナビゲーションが終了したら、ブラウザを閉じてください。
「スクリプト」メニューから「停止」を選択するか、OpenScriptツールバーの「停止」ボタンをクリックします。
スクリプトの「Run」ノードを開いて、スクリプト・ツリーのページ・ナビゲーション・ノードを表示します。
特定のテスト要件実現のために、メニュー・オプションまたはコード・ビューを使用してスクリプトをカスタマイズすることができます。
注意: 記録中またはスクリプトの再生中に、スクリプト・エディタ・ビューまたはスクリプト・プロジェクトを閉じないでください。閉じると、OpenScriptアプリケーションで予期しない動作が発生する場合があります。