(57)【要約】  【課題】テストする者への入力支援を行う 。  【解決手段】  取得手段４は指定されたメソッドの引数、型を取得し、与えられたテスト値によって、リクエスタ51によって生成されたメッセージが捕獲されると、SOAPメッセージ型名取得手段７は、ボディ部から型名を取得する。ファイル取得手段8は、SOAPヘッダ部から、WSDLを取得する。型情報抽出手段10はWSDLツリーから、インプットおよびアウトプット用のメッセージを特定し、対応するメッセージ型情報として抽出する。テスト値入力催促手段11は取得された引数およびその型を表示しテスト値の入力を操作者に促す。期待値入力支援手段12は、対応するメッセージ型情報を表示させ、前記テスト値の入力に対して、やり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶する。  【選択図】  図１
2007102665.tif 000002
【特許請求の範囲】
【請求項１】
ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるオブジェクト指向のリクエスタプログラムをチェックするリクエスタプログラムチェック装置であって、
前記リクエスタプログラムについて、全てのリクエスタクラスと対象メソッドを表示させ、操作者にテスト対象のリクエスタクラスおよび対象メソッドの指定を促す入力催促手段、
前記指定があると、リフレクションＡＰＩを用いてリクエスタクラスを走査して、指定されたメソッドの「戻り値の型」「メソッド名」「引数の個数」「引数の型」を取得し、これを用いてソースコードを走査して前記メソッドの情報に合致したメソッドの引数の名称を取得し、前記メソッドの型情報と合わせて指定されたメソッドの引数情報として記憶するメソッド引数取得手段
引数の型毎の値の候補を複数記憶する引数候補記憶手段、
前記引数候補から前記取得した引数の型毎の値の候補を任意に抽出して、組情報として前記リクエスタプログラムに与える候補付与手段、
前記リクエスタプログラムが前記プロバイダコンピュータに送信するリクエストメッセージを捕獲するリクエストメッセージ捕獲装置から、捕獲したリクエストメッセージが与えられると、このリクエストメッセージのボディ部から、ＳＯＡＰメッセージを抽出するＳＯＡＰメッセージ抽出手段、
前記ＳＯＡＰメッセージのツリー構造を解析して、当該メッセージの型名を取得するメッセージ型名取得手段、
前記与えられたリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩから前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するＷＳＤＬファイル取得手段、
前記取得したＷＳＤＬファイルのツリー構造を解析して、ＸＭＬ要素のツリー構造を取得するツリー構造取得手段、
前記取得した要素のツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションについて、ポートタイプ定義部を参照して、オペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージにおける要素の階層構造および各要素の属性を、前記指定されたメソッドに対応する要素階層型情報として抽出する要素階層型情報抽出手段、
前記メソッド引数取得手段によって、取得された引数および当該引数の型情報に基づき、当該引数の型を表示し、テスト値の入力を促すテスト値入力催促手段、
前記インプット用のメッセージの要素階層型情報を参照して、各要素およびその属性を画面上に表示させて、前記テスト値の入力に対して、リクエスタプログラムが作成すると期待されるリクエストメッセージの入力を促し、入力されると、リクエスト期待値として記憶するリクエスト期待値取得手段、
前記アウトプット用のメッセージの要素階層型情報を参照して、各要素およびその属性を画面上に表示させて、前記テスト対象入力に対して、リクエスタプログラムが作成するリクエストメッセージが与えられた場合に、前記プロバイダコンピュータが作成すると期待されるレスポンスメッセージの入力を促し、入力されると、レスポンス期待値として記憶するレスポンス期待値取得手段、
前記テスト対象入力に対して、リクエストプログラムが作成した実リクエストメッセージと、前記リクエスト期待値を比較し、一致しない場合には報知するリクエスト期待値比較手段、
前記実リクエストメッセージを前記プロバイダコンピュータに与え、返答として前記リクエスタが受け取るメッセージである実レスポンスメッセージと、前記レスポンス期待値を比較し、一致しない場合には報知するレスポンス期待値比較手段、
を備えたことを特徴とするリクエスタプログラムチェック装置。
【請求項２】
ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるリクエスタプログラムをチェックするための値の入力支援装置であって、
前記リクエスタプログラムから、全てのリクエスタクラスと対象メソッドを抽出し、一覧表示し、操作者にテスト対象のリクエスタクラスと対象メソッドの指定を促す指定催促手段、
前記指定がなされると、指定されたリクエスタクラスを走査して、指定されたメソッドを呼び出すための引数およびその型を取得する取得手段、
前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるテスト候補値生成手段、
前記リクエスタコンピュータと前記プロバイダコンピュータ間でやり取りされるメッセージを捕獲するメッセージ捕獲装置から、捕獲したリクエストメッセージが与えられると、このメッセージのボディ部のＳＯＡＰメッセージからそのメッセージの型名を取得するＳＯＡＰメッセージ型名取得手段、
前記リクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するＷＳＤＬファイル取得手段、
前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するＷＳＤＬファイルツリー構造取得手段、
前記取得した要素のツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出する型情報抽出手段、
前記リクエスタクラスを走査して取得された引数およびその型について、テスト値の入力を操作者に促すテスト値入力催促手段、
前記指定されたメソッドに対して、対応するメッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶する期待値入力支援手段、
を備えたことを特徴とする入力支援装置。
【請求項３】
請求項2の入力支援装置、
前記テスト値を前記リクエスタコンピュータに与えるテスト実行手段、
前記テスト値に対して、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを前記メッセージ捕獲装置から与えられると、そのメッセージと前記期待値とを比較する比較手段、
を備えたことを特徴とするチェック装置。
【請求項４】
請求項３のチェック装置において、
前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージは、リクエスタコンピュータからプロバイダコンピュータに与えられるリクエストメッセージであり、
前記期待値入力支援手段は、前記オペレーションのインプット用のメッセージのメッセージ型情報を画面上に表示させて、前記正テスト値の入力に対して、リクエスタプログラムが作成すると期待されるリクエストメッセージの入力を促すこと、
を特徴とするもの。
【請求項５】
請求項３のチェック装置において、
前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージは、プロバイダコンピュータからリクエスタコンピュータに与えられるレスポンスメッセージであり、
前記期待値入力支援手段は、前記アウトプット用のメッセージの型情報を画面上に表示させて、前記テスト対象入力に対して、リクエスタプログラムが作成するリクエストメッセージが与えられた場合に、前記プロバイダコンピュータが作成すると期待されるレスポンスメッセージの入力を促すこと、
を特徴とするもの。
【請求項６】
ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるリクエスタプログラムをコンピュータによって、チェックするチェック方法であって、
前記コンピュータに以下のステップを実行させること、
前記リクエスタプログラムから、全てのリクエスタクラスと対象メソッドを抽出させるステップ、
抽出したリクエスタクラスと対象メソッドをモニタに一覧表示し、操作者によるテスト対象のリクエスタクラスおよび対象メソッドの指定を促すステップ、
操作者によって、テスト対象のリクエスタクラスと対象メソッドが指定されると、指定されたリクエスタクラスを走査して、指定されたメソッドを呼び出すための引数およびその型を取得するステップ、
前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるステップ、
前記リクエスタコンピュータから前記プロバイダコンピュータへやり取りされるメッセージを捕獲するステップ、
前記捕獲したメッセージのボディ部のＳＯＡＰメッセージから、ボディ部の次の階層のＸＭＬ要素を、そのメッセージの型名として取得するステップ、
前記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するステップ、
前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するステップ、
前記取得したツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出するステップ、
前記リクエスタクラスを走査して取得された引数およびその型について、テスト値の入力を操作者に促すステップ、
前記ツリー構造を解析して、各要素のツリー構造を取得し、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出するステップ、
前記メッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶するステップ、
前記テスト値を前記リクエスタコンピュータに与えるステップ、
前記テスト値に対して、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを捕獲すると、そのメッセージと前記期待値とを比較するステップ、
を特徴とするチェック方法。
【請求項７】
ウェブサービスを提供するプロバイダコンピュータと、前記プロバイダコンピュータに対して、要求を行うリクエスタコンピュータの双方に接続されたコンピュータを、前記リクエスタコンピュータで用いるリクエスタプログラムをチェックするチェック装置として記憶させるプログラムであって、
以下のステップを前記コンピュータに実行させること、
前記リクエスタプログラムから、全てのリクエスタクラスと対象メソッドを抽出させるステップ、
抽出したリクエスタクラスと対象メソッドをモニタに一覧表示し、操作者によるテスト対象のリクエスタクラスおよび対象メソッドの指定を促すステップ、
操作者によって、テスト対象のリクエスタクラスと対象メソッドが指定されると、指定されたリクエスタクラスを走査して、指定されたメソッドを呼び出すための引数およびその型を取得するステップ、
前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるステップ、
前記リクエスタコンピュータから前記プロバイダコンピュータへやり取りされるメッセージを捕獲するステップ、
前記捕獲したメッセージのボディ部のＳＯＡＰメッセージから、ボディ部の次の階層のＸＭＬ要素を、そのメッセージの型名として取得するステップ、
前記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するステップ、
前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するステップ、
前記取得したツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出するステップ、
前記リクエスタクラスを走査して取得された引数およびその型について、テスト値の入力を操作者に促すステップ、
前記ツリー構造を解析して、各要素のツリー構造を取得し、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出するステップ、
前記メッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶するステップ、
前記テスト値を前記リクエスタコンピュータに与えるステップ、
前記テスト値に対して、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを捕獲すると、そのメッセージと前記期待値とを比較するステップ、
を特徴とするプログラム。
【請求項８】
ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるリクエスタプログラムをチェックするリクエスタプログラムチェック装置であって、
前記リクエスタプログラムについて、全てのプログラムモジュールとその関数を表示させ、操作者にテスト対象のプログラムモジュールとその関数の指定を促す入力催促手段、
前記指定があると、前記プログラムモジュールを走査して、指定された関数を呼び出すための引数および当該引数の型情報を取得して、これを指定された関数の引数情報として記憶する関数引数取得手段、
引数の型毎の値の候補を複数記憶する引数候補記憶手段、
前記引数候補から前記取得した引数の型毎の値の候補を任意に抽出して、組情報として前記リクエスタプログラムに与える候補付与手段、
前記リクエスタプログラムが前記プロバイダコンピュータに送信するリクエストメッセージを捕獲するリクエストメッセージ捕獲装置から、捕獲したリクエストメッセージが与えられると、このリクエストメッセージのボディ部から、ＳＯＡＰメッセージを抽出するＳＯＡＰメッセージ抽出手段、
前記ＳＯＡＰメッセージのツリー構造を解析して、当該メッセージの型名を取得するメッセージ型名取得手段、
前記与えられたリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩから前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するＷＳＤＬファイル取得手段、
前記取得したＷＳＤＬファイルのツリー構造を解析して、ＸＭＬ要素のツリー構造を取得するツリー構造取得手段、
前記取得した要素のツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションについて、ポートタイプ定義部を参照して、オペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージにおける要素の階層構造および各要素の属性を、前記指定された関数に対応する要素階層型情報として抽出する要素階層型情報抽出手段、
前記関数引数取得手段によって、取得された引数および当該引数の型情報に基づき、当該引数の型を表示し、テスト値の入力を促すテスト値入力催促手段、
前記インプット用のメッセージの要素階層型情報を参照して、各要素およびその属性を画面上に表示させて、前記テスト値の入力に対して、リクエスタプログラムが作成すると期待されるリクエストメッセージの入力を促し、入力されると、リクエスト期待値として記憶するリクエスト期待値取得手段、
前記アウトプット用のメッセージの要素階層型情報を参照して、各要素およびその属性を画面上に表示させて、前記テスト対象入力に対して、リクエスタプログラムが作成するリクエストメッセージが与えられた場合に、前記プロバイダコンピュータが作成すると期待されるレスポンスメッセージの入力を促し、入力されると、レスポンス期待値として記憶するレスポンス期待値取得手段、
前記テスト対象入力に対して、リクエストプログラムが作成した実リクエストメッセージと、前記リクエスト期待値を比較し、一致しない場合には報知するリクエスト期待値比較手段、
前記実リクエストメッセージを前記プロバイダコンピュータに与え、返答として前記リクエスタが受け取るメッセージである実レスポンスメッセージと、前記レスポンス期待値を比較し、一致しない場合には報知するレスポンス期待値比較手段、
を備えたことを特徴とするリクエスタプログラムチェック装置。
【請求項９】
ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるリクエスタプログラムをチェックするための値の入力支援装置であって、
前記リクエスタプログラムから、全てのプログラムモジュールとその関数を抽出し、一覧表示し、操作者にテスト対象のプログラムモジュールとその関数の指定を促す指定催促手段、
前記指定がなされると、指定されたプログラムモジュールを走査して、指定された関数を呼び出すための引数およびその型を取得する取得手段、
前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるテスト候補値生成手段、
前記リクエスタコンピュータと前記プロバイダコンピュータ間でやり取りされるメッセージを捕獲するメッセージ捕獲装置から、捕獲したリクエストメッセージが与えられると、このメッセージのボディ部のＳＯＡＰメッセージからそのメッセージの型名を取得するＳＯＡＰメッセージ型名取得手段、
前記リクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するＷＳＤＬファイル取得手段、
前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するＷＳＤＬファイルツリー構造取得手段、
前記取得した要素のツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定された関数に対応するメッセージ型情報として抽出する型情報抽出手段、
前記プログラムモジュールを走査して取得された引数およびその型について、テスト値の入力を操作者に促すテスト値入力催促手段、
前記指定された関数に対して、対応するメッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶する期待値入力支援手段、
を備えたことを特徴とする入力支援装置。
【請求項１０】
ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるリクエスタプログラムをコンピュータによって、チェックするチェック方法であって、
前記コンピュータに以下のステップを実行させること、
前記リクエスタプログラムから、全てのプログラムモジュールとその関数を抽出させるステップ、
抽出したプログラムモジュールとその関数をモニタに一覧表示し、操作者によるテスト対象のプログラムモジュールとその関数の指定を促すステップ、
操作者によって、テスト対象のプログラムモジュールとその関数が指定されると、プログラムモジュールを走査して、指定された関数を呼び出すための引数およびその型を取得するステップ、
前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるステップ、
前記リクエスタコンピュータから前記プロバイダコンピュータへやり取りされるメッセージを捕獲するステップ、
前記捕獲したメッセージのボディ部のＳＯＡＰメッセージから、ボディ部の次の階層のＸＭＬ要素を、そのメッセージの型名として取得するステップ、
前記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するステップ、
前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するステップ、
前記取得したツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定された関数に対応するメッセージ型情報として抽出するステップ、
前記プログラムモジュールを走査して取得された引数およびその型について、テスト値の入力を操作者に促すステップ、
前記ツリー構造を解析して、各要素のツリー構造を取得し、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定された関数に対応するメッセージ型情報として抽出するステップ、
前記メッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶するステップ、
前記テスト値を前記リクエスタコンピュータに与えるステップ、
前記テスト値に対して、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを捕獲すると、そのメッセージと前記期待値とを比較するステップ、
を特徴とするチェック方法。
【請求項１１】
ウェブサービスを提供するプロバイダコンピュータと、前記プロバイダコンピュータに対して、要求を行うリクエスタコンピュータの双方に接続されたコンピュータを、前記リクエスタコンピュータで用いるリクエスタプログラムをチェックするチェック装置として記憶させるプログラムであって、
以下のステップを前記コンピュータに実行させること、
前記リクエスタプログラムから、全てのプログラムモジュールとその関数を抽出させるステップ、
抽出したプログラムモジュールとその関数をモニタに一覧表示し、操作者にテスト対象のプログラムモジュールとその関数の指定を促すステップ、
操作者によって、テスト対象のプログラムモジュールとその関数が指定されると、プログラムモジュールを走査して、指定された関数を呼び出すための引数およびその型を取得するステップ、
前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるステップ、
前記リクエスタコンピュータから前記プロバイダコンピュータへやり取りされるメッセージを捕獲するステップ、
前記捕獲したメッセージのボディ部のＳＯＡＰメッセージから、ボディ部の次の階層のＸＭＬ要素を、そのメッセージの型名として取得するステップ、
前記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するステップ、
前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するステップ、
前記取得したツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定された関数に対応するメッセージ型情報として抽出するステップ、
前記プログラムモジュールを走査して取得された引数およびその型について、テスト値の入力を操作者に促すステップ、
前記ツリー構造を解析して、各要素のツリー構造を取得し、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定された関数に対応するメッセージ型情報として抽出するステップ、
前記メッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶するステップ、
前記テスト値を前記リクエスタコンピュータに与えるステップ、
前記テスト値に対して、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを捕獲すると、そのメッセージと前記期待値とを比較するステップ、
を特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力支援装置に関し、特に、ＷＳＤＬ（Web Services Description Language）を用いた入力支援に関する。
【背景技術】
【０００２】
今日、ＨＴＴＰを用いてコンピュータ間で、ＳＯＡＰ(Simple Object Access Protocol）メッセージを送受信することで、業務データをコンピュータ間でやり取りするウェブサービスが知られている。かかるウェブサービスでは、サービス提供コンピュータはプロバイダコンピュータと、サービス利用コンピュータはリクエスタコンピュータと呼ばれる。サービスを利用するにあたっては、前記プロバイダコンピュータに送信するメッセージを作成するリクエスタプログラムを作成する必要がある。
【０００３】
従来の、リクエスタプログラムのチェックは、リクエスタコンピュータとプロバイダコンピュータの間に、ＨＴＴＰプロキシサーバを設け、かかるプロキシサーバにて、両者間でやり取りされるＳＯＡＰメッセージを抽出し、これを人間が目視して、リクエスタコンピュータへの入力に対して、リクエスタコンピュータとプロバイダコンピュータ間で所望のメッセージがやり取りされているか否かで判断していた。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記のようなチェック方法においては以下のような問題があった。
【０００５】
（１）前記両者間でやり取りされるＳＯＡＰメッセージの解析をテストの回数分行う必要があり煩雑であった。
【０００６】
（２）一度テストが終了しても、プロバイダコンピュータのプログラムがバージョンアップされると、再び上記ＳＯＡＰメッセージの解析をする必要がある。ウェブサービスにおいては、かかるバージョンアップが頻繁になされる場合がある。
【０００７】
なお、特許文献1には、クライアントコンピュータにおけるリクエスタプログラムについて、ウェブサービスのインターフェースが変更された場合の修正手法について、変更前後のＷＳＤＬファイルの差分データを用いることが開示されているが、これは、一度も、正しいリクエスタプログラムを作成していない段階では使えない。
【０００８】
【特許文献１】特開2004-362051号  この発明は、リクエスタコンピュータのプログラムの試験を容易に行うことができる入力支援装置を提供することを目的とする。さらに、かかる入力支援によって入力された値を用いてリクエスタコンピュータのプログラムのテストを行うチェック装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１）本発明にかかるリクエスタプログラムチェック装置は、ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるオブジェクト指向のリクエスタプログラムをチェックするリクエスタプログラムチェック装置であって、1)前記リクエスタプログラムについて、全てのリクエスタクラスと対象メソッドを表示させ、操作者にテスト対象のリクエスタクラスおよび対象メソッドの指定を促す入力催促手段、2)前記指定があると、リフレクションＡＰＩを用いてリクエスタクラスを走査して、指定されたメソッドの「戻り値の型」「メソッド名」「引数の個数」「引数の型」を取得し、これを用いてソースコードを走査して前記メソッドの情報に合致したメソッドの引数の名称を取得し、指定されたメソッドの引数情報として記憶するメソッド引数取得手段、3)引数の型毎の値の候補を複数記憶する引数候補記憶手段、4)前記引数候補から前記取得した引数の型毎の値の候補を任意に抽出して、組情報として前記リクエスタプログラムに与える候補付与手段、5)前記リクエスタプログラムが前記プロバイダコンピュータに送信するリクエストメッセージを捕獲するリクエストメッセージ捕獲装置からリクエストメッセージが与えられると、そのボディ部から、ＳＯＡＰメッセージを抽出するＳＯＡＰメッセージ抽出手段、6)前記ＳＯＡＰメッセージのツリー構造を解析して、当該メッセージの型名を取得するメッセージ型名取得手段、7)前記与えられたリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩから前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するＷＳＤＬファイル取得手段、8)前記取得したＷＳＤＬファイルのツリー構造を解析して、ＸＭＬ要素のツリー構造を取得するツリー構造取得手段、9)前記取得した要素のツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションについて、ポートタイプ定義部を参照して、インプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出する型情報抽出手段、10)前記メソッド引数取得手段によって、取得された引数および当該引数の型情報に基づき、当該引数の型を表示し、テスト値の入力を促すテスト値入力催促手段、11)前記インプット用のメッセージの型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタプログラムが作成すると期待されるリクエストメッセージの入力を促し、入力されると、リクエスト期待値として記憶するリクエスト期待値取得手段、12)前記アウトプット用のメッセージの型情報を画面上に表示させて、前記テスト対象入力に対して、リクエスタプログラムが作成するリクエストメッセージが与えられた場合に、前記プロバイダコンピュータが作成すると期待されるレスポンスメッセージの入力を促し、入力されると、レスポンス期待値として記憶するレスポンス期待値取得手段、13)前記テスト対象入力に対して、リクエストプログラムが作成した実リクエストメッセージと、前記リクエスト期待値を比較し、一致しない場合には報知するリクエスト期待値比較手段、14)前記実リクエスト���ッセージを前記プロバイダコンピュータに与え、返答として前記リクエスタが受け取るメッセージである実レスポンスメッセージと、前記レスポンス期待値を比較し、一致しない場合には報知するレスポンス期待値比較手段を備えている。
【００１０】
このように、前記取得した引数の型毎の値の候補を引数候補から任意に抽出して、組情報として前記リクエスタプログラムに与え、ＳＯＡＰメッセージを生成させ、そのヘッダ情報からＷＳＤＬを取得し、ＳＯＡＰメッセージから当該オペレーション名を特定し、ＷＳＤＬからそのオペレーションについてのリクエストメッセージとレスポンスメッセージの型を特定し、これを表示してテストする際の入力支援を行う。また、テスト値が入力されると、実際のやり取りされるメッセージと前記期待値を比較して、一致しない場合には報知している。したがって、前記リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、前記リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、テストが可能となる。
【００１１】
２）本発明にかかる入力支援装置はウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるリクエスタプログラムをチェックするための値の入力支援装置であって、1)前記リクエスタプログラムから、全てのリクエスタクラスと対象メソッドを抽出し、一覧表示し、操作者にテスト対象のリクエスタクラスと対象メソッドの指定を促す指定催促手段、2)前記指定がなされると、指定されたリクエスタクラスを走査して、指定されたメソッドを呼び出すための引数およびその型を取得する取得手段、3)前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるテスト候補値生成手段、4)前記リクエスタコンピュータと前記プロバイダコンピュータ間でやり取りされるメッセージを捕獲するメッセージ捕獲装置から、捕獲したリクエストメッセージが与えられると、このメッセージのボディ部のＳＯＡＰメッセージからそのメッセージの型名を取得するＳＯＡＰメッセージ型名取得手段、5)記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するＷＳＤＬファイル取得手段、6)前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するＷＳＤＬファイルツリー構造取得手段、7)前記取得した要素のツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出する型情報抽出手段、8)前記リクエスタクラスを走査して取得された引数およびその型について、テスト値の入力を操作者に促すテスト値入力催促手段、9)前記指定されたメソッドに対して、対応するメッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶する期待値入力支援手段を備えている。
【００１２】
このように、前記取得した引数の型毎の値の候補として、テスト候補値を前記リクエスタプログラムに与え、ＳＯＡＰメッセージを生成させ、そのヘッダ情報からＷＳＤＬを取得し、ＳＯＡＰメッセージから当該オペレーション名を特定し、ＷＳＤＬからそのオペレーションのリクエストメッセージとレスポンスメッセージの型を特定し、これを表示してテストする際の入力支援を行うことにより、リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、容易にテスト値を入力することができる。
【００１３】
３）本発明にかかるチェック装置は、1)請求項2の入力支援装置、2)前記テスト値を前記リクエスタコンピュータに与えるテスト実行手段、3)前記テスト値に対して、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを前記メッセージ捕獲装置が捕獲すると、そのメッセージと前記期待値とを比較する比較手段を備えている。したがって、リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、テストの実行が容易となる。
【００１４】
４）本発明にかかるチェック装置は、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージは、リクエスタコンピュータからプロバイダコンピュータに与えられるリクエストメッセージであり、前記期待値入力支援手段は、前記オペレーションのインプット用のメッセージのメッセージ型情報を画面上に表示させて、前記正テスト値の入力に対して、リクエスタプログラムが作成すると期待されるリクエストメッセージの入力を促す。したがって、リクエストメッセージのテストが容易に実行できる。
【００１５】
５）本発明にかかるチェック装置は、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージは、プロバイダコンピュータからリクエスタコンピュータに与えられるレスポンスメッセージであり、前記期待値入力支援手段は、前記アウトプット用のメッセージの型情報を画面上に表示させて、前記テスト対象入力に対して、リクエスタプログラムが作成するリクエストメッセージが与えられた場合に、前記プロバイダコンピュータが作成すると期待されるレスポンスメッセージの入力を促す。したがって、レスポンスメッセージのテストが容易に実行できる。
【００１６】
６）本発明にかかるチェック方法は、前記コンピュータに以下のステップを実行させること、1)前記リクエスタプログラムから、全てのリクエスタクラスと対象メソッドを抽出させるステップ、2)抽出したリクエスタクラスと対象メソッドをモニタに一覧表示し、操作者によるテスト対象のリクエスタクラスおよび対象メソッドの指定を促すステップ、3)操作者によって、テスト対象のリクエスタクラスと対象メソッドが指定されると、指定されたリクエスタクラスを走査して、指定されたメソッドを呼び出すための引数およびその型を取得するステップ、4)前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるステップ、5)前記リクエスタコンピュータから前記プロバイダコンピュータへやり取りされるメッセージを捕獲するステップ、6)前記捕獲したメッセージのボディ部のＳＯＡＰメッセージから、ボディ部の次の階層のＸＭＬ要素を、そのメッセージの型名として取得するステップ、7)前記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するステップ、8)前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するステップ、9)前記取得したツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出するステップ、10)前記リクエスタクラスを走査して取得された引数およびその型について、テスト値の入力を操作者に促すステップ、11)前記ツリー構造を解析して、各要素のツリー構造を取得し、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出するステップ、12)前記メッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶するステップ、13)前記テスト値を前記リクエスタコンピュータに与えるステップ、14)前記テスト値に対して、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを捕獲すると、そのメッセージと前記期待値とを比較するステップ。
【００１７】
このように、前記取得した引数の型毎の値の候補として、テスト候補値を前記リクエスタプログラムに与え、ＳＯＡＰメッセージを生成させ、そのヘッダ情報からＷＳＤＬを取得し、ＳＯＡＰメッセージから当該オペレーション名を特定し、ＷＳＤＬからそのオペレーションについてのリクエストメッセージとレスポンスメッセージの型を特定し、これを表示してテストする際の入力支援を行うことにより、リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、容易にテストすることができる。
【００１８】
７）本発明にかかるプログラムは、ウェブサービスを提供するプロバイダコンピュータと、前記プロバイダコンピュータに対して、要求を行うリクエスタコンピュータの双方に接続されたコンピュータを、前記リクエスタコンピュータで用いるリクエスタプログラムをチェックするチェック装置として記憶させるプログラムであって、以下のステップを前記コンピュータに実行させる。1)前記リクエスタプログラムから、全てのリクエスタクラスと対象メソッドを抽出させるステップ、2)抽出したリクエスタクラスと対象メソッドをモニタに一覧表示し、操作者によるテスト対象のリクエスタクラスおよび対象メソッドの指定を促すステップ、3)操作者によって、テスト対象のリクエスタクラスと対象メソッドが指定されると、リクエスタクラスを走査して、指定されたメソッドを呼び出すための引数およびその型を取得するステップ、4)前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるステップ、5)前記リクエスタコンピュータから前記プロバイダコンピュータへやり取りされるメッセージを捕獲するステップ、6)前記捕獲したメッセージのボディ部のＳＯＡＰメッセージから、ボディ部の次の階層のＸＭＬ要素を、そのメッセージの型名として取得するステップ、7)前記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するステップ、8)前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するステップ、9)前記取得したツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出するステップ、10)前記リクエスタクラスを走査して取得された引数およびその型について、テスト値の入力を操作者に促すステップ、11)前記ツリー構造を解析して、各要素のツリー構造を取得し、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出するステップ、12)前記メッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶するステップ、13)前記テスト値を前記リクエスタコンピュータに与えるステップ、14)前記テスト値に対して、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを捕獲すると、そのメッセージと前記期待値とを比較するステップ。
【００１９】
このように、前記取得した引数の型毎の値の候補として、テスト候補値を前記リクエスタプログラムに与え、ＳＯＡＰメッセージを生成させ、そのヘッダ情報からＷＳＤＬを取得し、ＳＯＡＰメッセージから当該オペレーション名を特定し、ＷＳＤＬからそのオペレーションについてのリクエストメッセージとレスポンスメッセージの型を特定し、これを表示してテストする際の入力支援を行うことにより、リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、容易にテストすることができる。
【００２０】
８）本発明にかかるリクエスタプログラムチェック装置は、ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるリクエスタプログラムをチェックするリクエスタプログラムチェック装置であって、1)前記リクエスタプログラムについて、全てのプログラムモジュールとその関数を表示させ、操作者にテスト対象のプログラムモジュールとその関数の指定を促す入力催促手段、2)前記指定があると、前記プログラムモジュールを走査して、指定された関数を呼び出すための引数および当該引数の型情報を取得して、これを指定された関数の引数情報として記憶する関数引数取得手段、3)引数の型毎の値の候補を複数記憶する引数候補記憶手段、4)前記引数候補から前記取得した引数の型毎の値の候補を任意に抽出して、組情報として前記リクエスタプログラムに与える候補付与手段、5)前記リクエスタプログラムが前記プロバイダコンピュータに送信するリクエストメッセージを捕獲するリクエストメッセージ捕獲装置から、捕獲したリクエストメッセージが与えられると、このリクエストメッセージのボディ部から、ＳＯＡＰメッセージを抽出するＳＯＡＰメッセージ抽出手段、6)前記ＳＯＡＰメッセージのツリー構造を解析して、当該メッセージの型名を取得するメッセージ型名取得手段、7)前記与えられたリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩから前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するＷＳＤＬファイル取得手段、8)前記取得したＷＳＤＬファイルのツリー構造を解析して、ＸＭＬ要素のツリー構造を取得するツリー構造取得手段、9)前記取得した要素のツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションについて、ポートタイプ定義部を参照して、オペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージにおける要素の階層構造および各要素の属性を、前記指定された関数に対応する要素階層型情報として抽出する要素階層型情報抽出手段、10)前記関数引数取得手段によって、取得された引数および当該引数の型情報に基づき、当該引数の型を表示し、テスト値の入力を促すテスト値入力催促手段、11)前記インプット用のメッセージの要素階層型情報を参照して、各要素およびその属性を画面上に表示させて、前記テスト値の入力に対して、リクエスタプログラムが作成すると期待されるリクエストメッセージの入力を促し、入力されると、リクエスト期待値として記憶するリクエスト期待値取得手段、12)前記アウトプット用のメッセージの要素階層型情報を参照して、各要素およびその属性を画面上に表示させて、前記テスト対象入力に対して、リクエスタプログラムが作成するリクエストメッセージが与えられた場合に、前記プロバイダコンピュータが作成すると期待されるレスポンスメッセージの入力を促し、入力されると、レスポンス期待値として記憶するレスポンス期待値取得手段、13)前記テスト対象入力に対して、リクエストプログラムが作成した実リクエストメッセージと、前記リクエスト期待値を比較し、一致しない場合には報知するリクエスト期待値比較手段、14)前記実���クエストメッセージを前記プロバイダコンピュータに与え、返答として前記リクエスタが受け取るメッセージである実レスポンスメッセージと、前記レスポンス期待値を比較し、一致しない場合には報知するレスポンス期待値比較手段を備えている。
【００２１】
このように、前記取得した引数の型毎の値の候補を引数候補から任意に抽出して、組情報として前記リクエスタプログラムに与え、ＳＯＡＰメッセージを生成させ、そのヘッダ情報からＷＳＤＬを取得し、ＳＯＡＰメッセージから当該オペレーション名を特定し、ＷＳＤＬからそのオペレーションについてのリクエストメッセージとレスポンスメッセージの型を特定し、これを表示してテストする際の入力支援を行う。また、テスト値が入力されると、実際のやり取りされるメッセージと前記期待値を比較して、一致しない場合には報知している。したがって、前記リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、前記リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、テストが可能となる。
【００２２】
９）本発明にかかる入力支援装置は、ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるリクエスタプログラムをチェックするための値の入力支援装置であって、1)前記リクエスタプログラムから、全てのプログラムモジュールとその関数を抽出し、一覧表示し、操作者にテスト対象のプログラムモジュールとその関数の指定を促す指定催促手段、2)前記指定がなされると、指定されたプログラムモジュールを走査して、指定された関数を呼び出すための引数およびその型を取得する取得手段、3)前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるテスト候補値生成手段、4)前記リクエスタコンピュータと前記プロバイダコンピュータ間でやり取りされるメッセージを捕獲するメッセージ捕獲装置から、捕獲したリクエストメッセージが与えられると、このメッセージのボディ部のＳＯＡＰメッセージからそのメッセージの型名を取得するＳＯＡＰメッセージ型名取得手段、5)前記リクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するＷＳＤＬファイル取得手段、6)前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するＷＳＤＬファイルツリー構造取得手段、7)前記取得した要素のツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定された関数に対応するメッセージ型情報として抽出する型情報抽出手段、8)前記プログラムモジュールを走査して取得された引数およびその型について、テスト値の入力を操作者に促すテスト値入力催促手段、9)前記指定された関数に対して、対応するメッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶する期待値入力支援手段を備えている。
【００２３】
このように、前記取得した引数の型毎の値の候補として、テスト候補値を前記リクエスタプログラムに与え、ＳＯＡＰメッセージを生成させ、そのヘッダ情報からＷＳＤＬを取得し、ＳＯＡＰメッセージから当該オペレーション名を特定し、ＷＳＤＬからそのオペレーションのリクエストメッセージとレスポンスメッセージの型を特定し、これを表示してテストする際の入力支援を行うことにより、リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、容易にテスト値を入力することができる。
【００２４】
１０）本発明にかかるチェック方法は、ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるリクエスタプログラムをコンピュータによって、チェックするチェック方法であって、前記コンピュータに以下のステップを実行させる。1)前記リクエスタプログラムから、全てのプログラムモジュールとその関数を抽出させるステップ、2)抽出したプログラムモジュールとその関数をモニタに一覧表示し、操作者によるテスト対象のプログラムモジュールとその関数の指定を促すステップ、3)操作者によって、テスト対象のプログラムモジュールとその関数が指定されると、プログラムモジュールを走査して、指定された関数を呼び出すための引数およびその型を取得するステップ、4)前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるステップ、5)前記リクエスタコンピュータから前記プロバイダコンピュータへやり取りされるメッセージを捕獲するステップ、6)前記捕獲したメッセージのボディ部のＳＯＡＰメッセージから、ボディ部の次の階層のＸＭＬ要素を、そのメッセージの型名として取得するステップ、7)前記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するステップ、8)前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するステップ、9)前記取得したツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定された関数に対応するメッセージ型情報として抽出するステップ、10)前記プログラムモジュールを走査して取得された引数およびその型について、テスト値の入力を操作者に促すステップ、11)前記ツリー構造を解析して、各要素のツリー構造を取得し、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定された関数に対応するメッセージ型情報として抽出するステップ、12)前記メッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶するステップ、13)前記テスト値を前記リクエスタコンピュータに与えるステップ、14)前記テスト値に対して、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを捕獲すると、そのメッセージと前記期待値とを比較するステップ。
【００２５】
このように、前記取得した引数の型毎の値の候補として、テスト候補値を前記リクエスタプログラムに与え、ＳＯＡＰメッセージを生成させ、そのヘッダ情報からＷＳＤＬを取得し、ＳＯＡＰメッセージから当該オペレーション名を特定し、ＷＳＤＬからそのオペレーションについてのリクエストメッセージとレスポンスメッセージの型を特定し、これを表示してテストする際の入力支援を行うことにより、リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、容易にテストすることができる。
【００２６】
１１）本発明にかかるプログラムは、ウェブサービスを提供するプロバイダコンピュータと、前記プロバイダコンピュータに対して、要求を行うリクエスタコンピュータの双方に接続されたコンピュータを、前記リクエスタコンピュータで用いるリクエスタプログラムをチェックするチェック装置として記憶させるプログラムであって、以下のステップを前記コンピュータに実行させる。1)前記リクエスタプログラムから、全てのプログラムモジュールとその関数を抽出させるステップ、2)抽出したプログラムモジュールとその関数をモニタに一覧表示し、操作者にテスト対象のプログラムモジュールとその関数の指定を促すステップ、3)操作者によって、テスト対象のプログラムモジュールとその関数が指定されると、プログラムモジュールを走査して、指定された関数を呼び出すための引数およびその型を取得するステップ、4)前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値として前記リクエスタコンピュータに与えるステップ、5)前記リクエスタコンピュータから前記プロバイダコンピュータへやり取りされるメッセージを捕獲するステップ、6)前記捕獲したメッセージのボディ部のＳＯＡＰメッセージから、ボディ部の次の階層のＸＭＬ要素を、そのメッセージの型名として取得するステップ、7)前記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するステップ、8)前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得するステップ、9)前記取得したツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定された関数に対応するメッセージ型情報として抽出するステップ、10)前記プログラムモジュールを走査して取得された引数およびその型について、テスト値の入力を操作者に促すステップ、11)前記ツリー構造を解析して、各要素のツリー構造を取得し、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定された関数に対応するメッセージ型情報として抽出するステップ、12)前記メッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶するステップ、13)前記テスト値を前記リクエスタコンピュータに与えるステップ、14)前記テスト値に対して、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを捕獲すると、そのメッセージと前記期待値とを比較するステップ。
【００２７】
このように、前記取得した引数の型毎の値の候補として、テスト候補値を前記リクエスタプログラムに与え、ＳＯＡＰメッセージを生成させ、そのヘッダ情報からＷＳＤＬを取得し、ＳＯＡＰメッセージから当該オペレーション名を特定し、ＷＳＤＬからそのオペレーションのリクエストメッセージとレスポンスメッセージの型を特定し、これを表示してテストする際の入力支援を行うことにより、リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、容易にテスト値を入力することができる。
【００２８】
なお、本明細書において、「メッセージの型」とは、型がさらに他の要素で表されているコンプレックス型と、型がさらに他の要素でなくその属性で表されているシンプル型のいずれの型も含む概念である。シンプル型はツリー構造の最下位の要素の型であり、要素の属性として下位の要素を有していない型であり、例えば、図２４では、要素「name」は属性「String」という型で構成されている。コンプレックス型とは、その要素が1又は2以上の他の要素で構成されている場合をいい、図２４では、要素「userInfo」は、４つの要素「userName」、「userID」、「address」、「tel」で構成されている。要素「userName」は、属性「String」という型で構成されている。
【発明を実施するための最良の形態】
【００２９】
１．機能ブロック図
図１に、本件発明にかかるリクエスタプログラムのチェック装置１の全体構成を示す。チェック装置１は、ウェブサービスを提供するプロバイダコンピュータ６１に対して、要求を行うリクエスタコンピュータ４０で用いるオブジェクト指向のリクエスタプログラムをチェックするリクエスタプログラムチェック装置１であって、この実施形態では、リクエスタコンピュータ内に存在する支援装置１０，およびメッセージトランスポータ用サーバ２０で構成されている。
【００３０】
支援装置１０は、指定催促手段３、取得手段４、テスト候補値生成手段５、テスト値入力催促手段１１、期待値入力支援手段１２、テスト実行手段１３、比較手段１４を備えている。メッセージトランスポータ用サーバ２０は、メッセージ捕獲手段６、ＳＯＡＰメッセージ型名取得手段７、ＷＳＤＬファイル取得手段８、ＷＳＤＬファイルツリー構造取得手段９、型情報抽出手段１５を備えている。
【００３１】
指定催促手段３は、リクエスタ処理手段５１のリクエスタプログラムから、全てのリクエスタクラスと対象メソッドを抽出し、一覧表示し、操作者にテスト対象のリクエスタクラスと対象メソッドの指定を促す。取得手段４は、前記指定がなされると、指定されたリクエスタクラスを走査して、指定されたメソッドを呼び出すための引数およびその型を取得する。テスト候補値生成手段５は、前記取得した引数について、予め登録した引数の型毎の値の候補を任意に抽出して、テスト候補値としてリクエスタ処理手段５１に与える。リクエスタ処理手段５１は、テスト候補値に基づき、リクエストメッセージを生成し、プロバイダコンピュータ６１に送信する。
【００３２】
メッセージトランスポータ用サーバ１０のメッセージ捕獲手段６は、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを捕獲する。ＳＯＡＰメッセージ型名取得手段７は、前記捕獲したメッセージのボディ部のＳＯＡＰメッセージからそのメッセージの型名を取得する。ＷＳＤＬファイル取得手段８は、前記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩに基づき、前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得する。ＷＳＤＬファイルツリー構造取得手段９は、前記取得したＷＳＤＬファイルのツリー構造を解析して、各要素のツリー構造を取得する。型情報抽出手段１５は前記取得した要素のツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出する。
【００３３】
支援装置１０のテスト値入力催促手段１１は、前記リクエスタクラスを走査して取得された引数およびその型について、テスト値の入力を操作者に促す。期待値入力支援手段１２は、前記指定されたメソッドに対して、対応するメッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされると期待されるメッセージの値の入力を促し、入力されると、期待値として記憶する。テスト実行手段１３は、前記テスト値を前記リクエスタコンピュータに与える。
【００３４】
リクエスタ処理手段５１は、前記テスト値に基づき、リクエストメッセージを生成し、プロバイダコンピュータ６１に送信する。メッセージトランスポータ用サーバ１０のメッセージ捕獲手段６は、リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージを捕獲する。
【００３５】
支援装置１０の比較手段１４は、前記リクエスタコンピュータとプロバイダコンピュータ間でやり取りされるメッセージをメッセージ捕獲手段６が捕獲すると、前記テスト値に対して、そのメッセージと前記期待値とを比較する。
【００３６】
このように、前記取得した引数の型毎の値の候補として、テスト候補値を前記リクエスタプログラムに与え、ＳＯＡＰメッセージを生成させ、そのヘッダ情報からＷＳＤＬを取得し、ＳＯＡＰメッセージから当該オペレーション名を特定し、ＷＳＤＬからそのオペレーションについてのリクエストメッセージとレスポンスメッセージの型を特定し、これを表示してテストする際の入力支援を行うことにより、リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、容易にテストすることができる。
【００３７】
この例では、支援装置１０に、指定催促手段３、取得手段４、テスト候補値生成手段５、テスト値入力催促手段１１、期待値入力支援手段１２、テスト実行手段１３、比較手段１４を設け、メッセージトランスポータ用サーバ２０に、メッセージ捕獲手段６、ＳＯＡＰメッセージ型名取得手段７、ＷＳＤＬファイル取得手段８、ＷＳＤＬファイルツリー構造取得手段９、型情報抽出手段１５を設けたが、メッセージトランスポータ用サーバ２０としては、メッセージ捕獲手段６を少なくとも、含んでいればよく、他の手段については、一部又はその全部を支援装置内に設けてもよい。メッセージトランスポータ用サーバがメッセージ捕獲を行うだけであれば、メッセージ捕獲装置として構成されることとなる。
【００３８】
２．ハードウェア構成
図１に示す支援装置１０をリクエスタコンピュータ内に構成した場合のリクエスタコンピュータ５０のハードウェア構成について、図２を用いて説明する。図２は、ＣＰＵを用いて構成したハードウェア構成の一例である。
【００３９】
リクエスタコンピュータ５０は、ＣＰＵ２３、メモリ２７、ハードディスク２６、モニタ３０、ＣＤＤ（ＣＤ−ＲＯＭドライブ）２５、入力デバイス２８、通信ボード３１およびバスライン２９を備えている。ＣＰＵ２３は、ハードディスク２６に記憶された各プログラムにしたがいバスライン２９を介して、各部を制御する。
【００４０】
ハードディスク２６は、オペレーティングシステムプログラム２６ｏ（以下ＯＳと略す）、仮テストデータ記憶部２６ｄ、リクエスタプログラム２６ｒ、JVM（Java(商標) Virtual Machine)２６ｊ、チェックプログラム記憶部２６ｐを有する。
【００４１】
チェックプログラム記憶部２６ｐには、リクエスタコンピュータのリクエスタプログラム２６ｒをチェックするプログラムが記憶されている。かかるプログラムは、ユーザ画面部２６ｐｕ、リクエスタ解析部２６ｐｒ、テスティングフレームワーク部２６ｐｆ、メッセージ管理部２６ｐｋで構成されている。各部における処理については後述する。
【００４２】
仮テストデータ記憶部２６dは、図３〜図５に示すように、引数の型毎に、仮テストデータが記憶されている。オペレーティングシステムプログラム（ＯＳ）２６ｏとして、本実施形態においては、LINUX（商標）を採用したが、これに限定されるものではない。
【００４３】
なお、上記各プログラムは、ＣＤＤ２５を介して、プログラムが記憶されたＣＤＲＯＭ２５ａから読み出されてハードディスク２６にインストールされたものである。なお、ＣＤ−ＲＯＭ以外に、フレキシブルディスク（ＦＤ）、ＩＣカード等のプログラムをコンピュータ可読の記録媒体から、ハードディスクにインストールさせるようにしてもよい。さらに、通信回線を用いてダウンロードするようにしてもよい。
【００４４】
本実施形態においては、プログラムをＣＤ−ＲＯＭからハードディスク２６にインストールさせることにより、ＣＤ−ＲＯＭに記憶させたプログラムを間接的にコンピュータに実行させるようにしている。しかし、これに限定されることなく、ＣＤ−ＲＯＭに記憶させたプログラムをＣＤＤ２５から直接的に実行するようにしてもよい。なお、コンピュータによって、実行可能なプログラムとしては、そのままインストールするだけで直接実行可能なものはもちろん、一旦他の形態等に変換が必要なもの（例えば、データ圧縮されているものを、解凍する等）、さらには、他のモジュール部分と組合して実行可能なものも含む。
【００４５】
リクエスタプログラムについて説明する。本実施形態においては、図６、図７に示すjava（商標）プログラムがリクエスタプログラムとして記憶されている。かかるjava（商標）プログラムは、JVM２６ｊによってネイティブコードに変換されて処理が実行される。
【００４６】
３．トランスポーター用サーバおよびプロバイダコンピュータについて
図２ａにトランスポーター用サーバのハードウェア構成を示す。全体的な構成は図２とほぼ同じである。プログラム記憶部１２６ｐにトランスポータ部１２６ｐｔと、メッセージキャプチャ部１２６ｐｍが記憶されている点で異なる。各部における処理については後述する。
【００４７】
図１に示すプロバイダコンピュータ６１は、リクエスタコンピュータ５０からリクエストを受けると、かかるリクエストに所定の処理を行い、メッセージを返答する。プロバイダコンピュータ６１には、図８〜図１０に示すＸＭＬデータで構成されたＷＳＤＬファイルが記憶されている。ＷＳＤＬファイルは、プロバイダコンピュータのプログラムがデータ処理を行う内容をＸＭＬを用いて記述したものである。プロバイダコンピュータのハード構成については、一般的なものであるので、説明は省略する。
【００４８】
４．チェック処理について
図１１、図１２を用いて、チェックプログラム記憶部２６pに記憶された各プログラムの処理を説明する。
【００４９】
ユーザ画面部２６ｐｕは、テスト対象のリクエスタプログラム２６ｒを取得し、このリクエスタプログラムについて、リクエスタクラスおよび対象メソッドの一覧を表示させ、ユーザに選択を促す。
【００５０】
この場合、リクエスタプログラムには、クラス「BuyerClient」だけが存在するので、クラス「BuyerClient」から、以下のメソッド 「order」、「purchase」、「cancel」、「createSOAPMessage」、「createOrderSheetDoc」、「createParchaseDoc」、「createCancelDoc」、「toByteArray」、「getMessageManagerURL」、「callWS」が抽出され、画面上に一覧表示される。
【００５１】
なお、メソッドは「修飾子 戻り値 メソッド名(引数){実行する処理}」で記載される。したがって、ユーザ画面部２６ｐｕは、ソースコードを解析し、かかる書式で記載されている行がメソッドであると判断する。
【００５２】
ここでは、メソッド「order」が選択されたものとする。
【００５３】
なお、本実施形態においては、クラスが1つであったので、そのクラスが選択されたものとして、全メソッドを抽出したが、クラスが複数ある場合には、一旦クラスを表示して、クラスが選択されると、そのメソッドを抽出するようにしても、全クラスおよびそのメソッドを一覧表示して、選択されたメソッドを抽出するようにしてもよい。
【００５４】
ユーザによって、クラスおよび対象メソッドが選択されると（図１１ステップＳ２００）、リクエスタ解析部２６ｐｒは、リクレクションAPIを用いて、リクエスタクラスを走査し（ステップＳ２０１）、指定されたメソッド「order」を呼び出すため引数の型情報を入手する（ステップＳ２０２）。
【００５５】
この場合、メソッド「order」がテスト対象メソッドであるので、メソッド「order」の引数について、その型として、引数「username」、「ID」 、「address」、「tel」は型が「String」であり、引数「detail」は型が「List」であることが抽出される。
【００５６】
さらに、引数「detail」は、メソッド「order」がコールするメソッド「createOrderSheetDoc」を参照することにより、引数「goodsname」、さらに、引数「goodsname」、「type」は型が「String」であり、引数「price」、「amount」は型が「int」であることがわかる。
【００５７】
つぎに、リクエスタ解析部２６ｐｒは、上記決定した全ての引数について、各引数の型情報を用いて、仮テストデータ記憶部２６d に記憶されたデータから、各引数の型と同じ型の値を任意に選択する（図１１ステップＳ２０３）。ここでは、引数「userName」は型が「String」であるので、java.lang.Stringであるとして値「あいう」が候補として選択されたものとする。引数「ID」、引数「address」、引数「tel」についても、それぞれ値「0123456789」、値「abc」、値「null」が候補として選択されたものとする。また、引数「detail」について、さらにその引数「goodsname」、引数「type」は、それぞれ、値「null」「abc」が、引数「price」、「amount」は値「１」、値「１２７」が候補として選択されたものとする。
【００５８】
つぎに、リクエスタ解析部２６ｐｒは、トランスポーター用サーバのメッセージキャプチャ部２６ｐｍにキャプチャ開始要求を出す（図１１ステップＳ２０４）。かかる要求を受けて、メッセージキャプチャ部２６ｐｍは、リクエスタコンピュータ５０から送出されるＩＰパケットの取得を開始する（図１２ステップＳ２２５）。
【００５９】
一方、リクエスタ解析部２６ｐｒは、選択された値でリクエスタプログラムを呼び出す（図１１ステップＳ２０５）。これにより、リクエスタコンピュータ５０のリクエスタプログラム２６ｒは、与えられた引数の値で、プロバイダ６１へのメッセージを生成しプロバイダ６１へ送信する。
【００６０】
なお、前記候補値は任意に選択した値であるので、当該値ではエラーが発生して、プロバイダ６１へのメッセージが作成できないおそれがある。リクエスタ解析部２６ｐｒは、かかるエラーを受けとった場合には、次候補がある間は、ステップＳ２０３以下の処理を繰り返す。
【００６１】
メッセージトランスポータ用サーバ２０のメッセージキャプチャ部２６ｐｍは、リクエスタコンピュータ５０がＩＰパケットを送信すると、これを捕捉する（図１２ステップＳ２１３）。
【００６２】
メッセージキャプチャ部２６ｐｍは、捕獲したＩＰパケットを解析し、ＨＴＴＰヘッダに記載された送り先コンピュータの相手先URLを取得する（ステップＳ２１４）。これは、ＷＳＤＬを取得するサーバを特定するためである。ここでは、相手先ＵＲＬとして（http://buyerservice.ias.hitachi_system.co.jp)が、取得されたものとする。メッセージキャプチャ部２６ｐｍは取得したＵＲＬをプロバイダ定義ファイルに保持する（ステップＳ２１４ｂ、Ｏ２１２)。具体的には、リクエスタコンピュータの、ＩＰアドレス、リクエスタクラス、呼出メソッド名に対応させて取得したＵＲＩ（ＵＲＬ）を記憶するようにすればよい。
【００６３】
つぎに、メッセージキャプチャ部２６ｐｍは、前記ＩＰパケットを解析し、ＨＴＴＰボディからＳＯＡＰメッセージを取得する（ステップＳ２１５）。
【００６４】
かかるＳＯＡＰメッセージについて図１３を用いて説明する。ウェブサービスでは、ＳＯＡＰを用いた通信でメッセージのやり取りを行う。ＳＯＡＰメッセージは、ＨＴＴＰなどのプロトコルヘッダおよびＳＯＡＰエンベロープで構成されている。ＳＯＡＰエンベロープは、ＳＯＡＰヘッダおよびＳＯＡＰボディを包み込む「封筒」(envelope)の役割を有しており、封筒には、オブジェクトへの宛先、あるいは必要に応じてメッセージIDなどの付帯情報を自由に付加できる。この付帯情報により、オブジェクトへの宛先、あるいは必要に応じてメッセージIDなどを自由に付加できる。捕捉したデータを図１４に示す。図１４においては、行７１〜行７３までがＳＯＡＰエンベロープの付帯情報であり、行７５以下がＳＯＡＰボディである。なお、この例では、ＳＯＡＰヘッダは省略されている。
【００６５】
つぎに、メッセージキャプチャ部２６ｐｍは、取得したＳＯＡＰメッセージを解析しツリー構造を構築し、このツリー構造からこのオペレーション名を取得する(図１２ステップＳ２１７）。図１１の例では、ＳＯＡＰボディタグ「<soapenv:Body>」の次の行７６に <order xmlns="・・・">とあるので、「order」がこのオペレーション名であると判断する。
【００６６】
つぎに、メッセージキャプチャ部２６ｐｍは、ステップＳ２１４にて取得したURLを元にＷＳＤＬを取得する。
【００６７】
なお、１のＷＳＤＬでは、１つのプロバイダのサービスを記述するように定められているので、ＵＲＬに対応するWSDLは一意に特定することができる。
【００６８】
この場合、プロバイダは、図８〜図１０に示すＷＳＤＬファイルが記憶されているので、メッセージキャプチャ部２６ｐｍは、このＷＳＤＬファイルを取得する。
【００６９】
ＷＳＤＬファイルについて、図１５を用いて説明する。ＷＳＤＬファイルは、メッセージ定義部１５１、ポートタイプ定義部１５３、バインディング定義部１５５、サービス定義部１５７で構成されている。メッセージ定義部１５１は、複数のメッセージが定義される。各メッセージは、ＳＯＡＰでやりとりされるメッセージの種類とその型が記述される。ポートタイプ定義部１５３には、複数のオペレーションが定義される。各オペレーションは、メッセージ定義部１５１で定義されたメッセージがどのオペレーションの入力（input）と出力（output）で使用されるのかが構造的に記述される。バインディング定義部１５５には、メッセージ定義部１５１、ポートタイプ定義部１５３にて定義された機能がどのようなプロトコルで利用できるかが記述される。サービス定義部１５７は、バインディング定義部１５５で定義したバインディング情報を持つWebサービスがどのＵＲＬにて利用できるかが記される。
【００７０】
すなわち、メッセージ定義部１５１の各メッセージは、ポートタイプ定義部１５３の各オペレーションで利用され、ポートタイプ定義部１５３の各オペレーションはバインディング定義部１５５で利用され、バインディング定義部１５５の各バインディングはサービス定義部１５７で利用される。
【００７１】
図８〜図１０に示すＷＳＤＬファイルは、図９に示す行９３〜行９５がメッセージ定義部であり、図１０に示す行１０１〜行１０３がポートタイプ定義部であり、図１０に示す行１０５〜行１０７がバインディング定義部であり、図１０に示す行１０９〜行１１１がサービス定義部である。なお、行８３（図８）〜行９１（図９）はこのWebサービスによって使用される データの型を指定している。
【００７２】
メッセージキャプチャ部２６ｐｍは、取得したＷＳＤＬを解析しＸＭＬのツリー構造を構築する。本実施形態においては、ＸＭＬツリー構造を構築するのに、「XERCES」というオープンソースのXMLエンジンを用いた。
【００７３】
図１５に、かかるツリー構造の内、メッセージ定義部に定義されたメッセージのツリー構造を示す。メッセージキャプチャ部２６ｐｍは、ステップＳ２１４で取得したURLおよびステップＳ２１７で取得したメッセージの型を元に、構築したＷＳＤＬのツリー構造から、そのメッセージに対応するリクエスタプログラムのオペレーション（操作）を特定する。この場合、取得したURLは「http://buyerservice.ias.hitachi_system.co.jp」であり、メッセージの型は「order」であるので、ＷＳＤＬのツリー構造から、当該型のオペレーション「order」を特定する。なお、特定したメソッドについての、入出力メッセージのツリー構造は、あとで期待値を入力する際に用いられる。
【００７４】
本実施形態においては、ステップＳ２１９でツリー構造を構築して、これを用いてステップＳ２２０にて、メソッドを特定するようにした。メソッドツリー構造はあとで期待値を入力する際に必要となるので、この段階で、解析を行っている。
【００７５】
メッセージキャプチャ部２６ｐｍは、オペレーション定義ファイルに、ステップＳ２００にて指定されたメソッドをオペレーション名として、そのリクエスタ名と、ステップＳ２２０で特定したプロバイダ名、オペレーション名を関連付けて保存する。この場合、プロバイダ名「BuyerService」、オペレーション名「order」、リクエスタ名「BuyerClient」、オペレーション名「order」が記憶される。
【００７６】
メッセージキャプチャ部２６ｐｍは、リクエスタ解析部２６ｐｒからキャプチャ終了要求を受けて、キャプチャ処理を終了する(ステップＳ２２３）。
【００７７】
これにより、ＷＳＤＬを用いた入力支援のためのデータ収集処理が終了する。  以下、このようにして収集されたデータを用いて、ユーザは、テストデータの入力を行う。
【００７８】
ユーザ画面部２６ｐｕは、ステップＳ２０２にて、リクエスタプログラムから取得した引数、型情報を表示し(ステップＳ２２５)、操作者に引数値の入力を促す(ステップＳ２２６）。この場合であれば、ステップＳ２０２で取得された引数は、型として、引数「userName」−型「String」、引数「ID」−型「String」 、引数「address」−型「String」、引数「tel」−型「String」、引数「detail」−型「list」である。また、引数「detai1」については、さらに、引数「goodsname」−型「String」、引数「type」−型「String」、引数「price」−型「int」、引数「amount」−型「int」である。
【００７９】
したがって、これを画面上に表示し（図示せず）、テストデータの入力を待つ。この場合、ユーザから、図１８に示す値をそれぞれテスト値として入力されたものとする。入力されたデータは入力情報ファイルに保管される（ステップＳ２２７）。かかるファイル名は自動的に連番で付与するようにすればよい。この場合、入力情報ファイルの名称を「param1_000」とした。入力情報ファイル名は、図１９Ａに示す入力情報名に追記される（ステップＳ２２８）。
【００８０】
つぎに、ユーザ画面部２６ｐｕは、前記入力について、リクエスタプログラム２６ｒで呼ばれるオペレーションにより、リクエスタコンピュータ５０からプロバイダコンピュータ６１に送られるメッセージの要素名、型、個数を表示し、入力を促す（ステップＳ２２９、ステップＳ２３０）。この場合、プロバイダ名「BuyerService」、オペレーション名「order」なので、ステップＳ２１９で解析したＷＳＤＬから、下記の要素名、および型を取得する。オペレーション「order」は、図１０行１０６aに存在する。オペレーション「order」には、ＷＳＤＬの解析結果から、さらにメッセージ「orderRequest」、「orderResponse」が存在する（行１０６b、１０６c参照）と判断できる。メッセージ「orderRequest」が”imput name”で、「orderResponse」が"output name"となっているので、前者がプロバイダへの入力時、後者がプロバイダからの出力時のメッセージであることがわかる。この場合、リクエスタコンピュータ５０からプロバイダ６１に送られるメッセージの要素名、型を抽出するので、前者のメッセージ「orderRequest」の要素名およびそれらの型を解析後のＷＳＤＬから抽出する。この場合、図９の行９７、９７a、９７bから、要素「OrderRequest」は、要素「userInfo」と要素「details」で構成されていることがわかる。また、要素「userInfo」は、行９８、９８a〜９８dから、要素「userName」、「userID」、「address」、「tel」で構成されており、要素「details」は、要素「OrderDetail」の型をしており、要素「OrderDetail」は、行９９、９９a〜９９dから、要素「name」、「type」、「price」、「amount」という型で構成されていることがわかる。また、各要素の型も９８a〜９８d、および９９a〜９９dを参照することにより判明する。
【００８１】
また、個数は、行９７ｂにて、「maxOccurs="unbounded"」となっているので、個数制限がないことが表示される。なお、要素名が「soapenv:Envelope・・・」になっているのは、このメッセージがＳＯＡＰメッセージだからである。
【００８２】
これにより、当該オペレーションにとって、必要な要素およびその型が取得できるので、画面上にこれらを表示して、ユーザに前記テスト値の入力に対して期待するリクエスト期待値の入力を促す。ユーザが期待値を入力すると、これを図２０に示すようにリクエスト期待値ファイルに記憶する（ステップＳ２３１）。期待値名はオペレーション定義ファイルに追記する（ステップＳ２３２）。
【００８３】
つぎに、ユーザ画面部２６ｐｕは、前記入力に対して、リクエスタ５１で呼ばれたオペレーションにより生成されたメッセージを受け取ったプロバイダ６１が生成すると期待する返信メッセージの要素名、型、個数を表示し、入力を促す（ステップＳ２３３、ステップＳ２３４）。この場合、ステップＳ２２９で、メッセージ「orderResponse」が、プロバイダからの出力時のメッセージであることがわかる。したがって、メッセージ「orderResponse」を構成する要素名およびその型を、前記解析後のＷＳＤＬから抽出する。この場合、図９行９4、９4ａ、９４bから、メッセージ「orderResponse」は、要素「userInfo」と要素「orderID」で構成されていることがわかる。また、要素「userInfo」は、行９８、９８a〜９８dから、要素「userName」、「userID」、「address」、「tel」で構成されており、いずれも型は「String」であることがわかる。なお、要素「orderID」は、型「String」であることがわかる。また、要素名はステップＳ２２９と同様に決定することができる。個数についても同様である。
【００８４】
これにより、出力時におけるメッセージの要素名、型が取得できるので、画面上にこれらを表示して、ユーザに前記テスト値の入力に対して期待するレスポンス期待値の入力を促す。ユーザが期待値を入力すると、これを図２１に示すようにレスポンス期待値ファイルに記憶する（ステップＳ２３５）。期待値名はオペレーション定義ファイルに追記する（ステップＳ２３６）。
【００８５】
なお、この例では、「orderID」と「userID」が同じになっている（図２１参照）。１のユーザから複数のオーダがある場合に、区別するには、例えば、「orderID」は、「userID」に日付と注文順序を付加するようなルールにしておけばよい。
【００８６】
これにより、テスト準備が終了する。
【００８７】
つぎに、図２３を用いて、比較処理について説明する。テスティングフレームワーク部２６ｐｆは、図１９に示すオペレーション定義ファイルを読み込む（ステップＳ２４３）。そして、オペレーション定義ファイルで指定された入力情報ファイルを読み込む（ステップＳ２４４）。この場合、入力情報ファイルparam1_000が読み込まれる。
【００８８】
テスティングフレームワーク部２６ｐｆは、呼び出し先ＵＲＬをトランスポータのURLに変更し（ステップＳ２４５）、入力情報ファイルparam1_000でリクエスタプログラム２６ｒを呼び出す（ステップＳ２４６）。
【００８９】
リクエスタプログラム２６ｒは、かかる入力情報を受けてプロバイダ６１へのメッセージを生成して、メッセージトランスポータ部２６ｐｔを送信先として送信する。
【００９０】
メッセージトランスポータ部２６ｐｔはこれを受け取り（ステップＳ２４７）、メッセージ管理部２６ｐｋにリクエストメッセージを保持させる（ステップＳ２４８）。メッセージトランスポータ部２６ｐｔは、疑似プロバイダを使用するか否か判断する。この場合、使用しないとなっているので、プロバイダＵＲＩ設定ファイルを読み込み（ステップＳ２４９）、メッセージをプロバイダ６１に転送する（ステップＳ２５０）。この設定ファイルは、図１２ステップＳ２１４で特定したプロバイダコンピュータのＵＲＬとリクエスタコンピュータのＩＰアドレスが対応づけられて記憶されたものである。
【００９１】
メッセージトランスポータ部２６ｐｔはプロバイダ６１からレスポンスメッセージを受信すると（ステップＳ２５５）、メッセージ管理部２６ｐｋにこのレスポンスメッセージを保持させ（ステップＳ２５６）、レスポンスメッセージをリクエスタプログラム２６ｒに送信する（ステップＳ２５７）。
【００９２】
リクエスタプログラム２６ｒは、かかるレスポンスメッセージを受け取ると、テスティングフレームワーク部２６ｐｆにレスポンスメッセージを与える。テスティングフレームワーク部２６ｐｆはこれを受けて（ステップＳ２５８）、設定ファイルを読み込む（ステップＳ２５９）、この設定ファイルは、予め定められたトランスポーター用サーバのＵＲＬとリクエスタコンピュータのＩＰアドレスが対応づけられて記憶されたものである。
【００９３】
テスティングフレームワーク部２６ｐｆは、メッセージトランスポータ部２６ｐｔから実際に送受信されたメッセージを取得する（ステップＳ２６０）。これは、ステップＳ２５８のメッセージは、主に制御を伝えるためにプログラムにオブジェクトとして返されるもので、あるので、実際の比較ではＸＭＬ形式のデータを取得する必要があるからである。
【００９４】
かかる入力情報が入力された場合の、リクエストメッセージとレスポンスメッセージの例を、それぞれ図２４、図２５に示す。
【００９５】
テスティングフレームワーク部２６ｐｆは期待値ファイルを読み込み（ステップＳ２６１）、期待値ファイルのデータと取得したメッセージを比較する（ステップＳ２６２）。なお、期待値ファイルのデータも、取得したメッセージもＸＭＬ形式で記載されているので、ＸＭＬのツリー構造を解析して、各要素を構成する下位の構成要素および、これらの関係、さらに各要素の値が一致していれば、一致すると判断する。ＸＭＬデータの比較については、例えば、XERCESオープンソースプログラム）に比較器を追加することにより構成すればよい。比較器は、空行の削除や順序の並べ替えをし、各ノードをトラバースしながら、比較できるようにすればよい。
【００９６】
テスティングフレームワーク部２６ｐｆは相違点がある場合には相違点を提示する（ステップＳ２６３）。
【００９７】
なお、ステップＳ２４８の後、疑似プロバイダを使用する場合には、ＷＳＤＬを取得し（ステップＳ２５１）、解析し（ステップＳ２５２）、リクエスト期待値ファイル、およびレスポンス期待値ファイルを読み込み（ステップＳ２５３）、期待値とＷＳＤＬからプロバイダ６１がするであろう処理を、疑似的に動作させ、ステップＳ２４８の処理を行えばよい。
【００９８】
なお、上記の例では１組のテストを行う場合について説明したが、複数のテスト値について一度にテストすることもできる。この場合には、複数のテスト値の入力を繰り返すようにすればよい。
【００９９】
また、正常結果としてレスポンスがなされないような値をテスト値として、入力し、正しいエラーがレスポンスとしてプロバイダ６１から返信されるかをテストすることもできる。
【０１００】
この場合には、上記リクエスト期待値ファイルやレスポンス期待値ファイルとともに、エラー期待値ファイルを作成しておき、これを比較するようにすればよい。エラー期待値ファイルの作成について、図２６を用いて説明する。
【０１０１】
ユーザ画面部２６ｐｕは、プロバイダのエラーメッセージのインターフェース情報を取得する（図２６ステップＳ２３７）。本実施形態においては、エラーメッセージは、ＳＯＡＰの規格で決められたエラーメッセージを採用したので、かかる規格で決められたエラーメッセージが存在するＵＲＬにアクセスすることにより、インターフェース情報を取得することができる。候補の要素を表示して、ユーザによる入力を促して期待値ファイルに保管する点については同様である（ステップＳ２３８〜２４１）。保管したエラー期待値ファイルのデータ構造を図２２に示す。また、プロバイダ６１が生成したエラーメッセージを図２７に示す。この場合、オペレーション定義ファイルに疑似プロバイダの使用の有無を保管する点が異なる。
【０１０２】
このように、本実施形態においては、仮テストデータでＳＯＡＰメッセージを生成させ、そのヘッダ情報からＷＳＤＬを取得し、ＳＯＡＰメッセージから当該オペレーション名を特定し、ＷＳＤＬからそのオペレーションについてのリクエストメッセージとレスポンスメッセージの型を特定し、これを表示してテストする際の入力支援を行うことにより、容易にテスト値を入力することができる。
【０１０３】
したがって、リクエスタプログラムのテストにおいて、各入力する値がどのような型であるのか、また、リクエスタプログラムにおけるメッセージ送り先がどこかをテストする人間が理解していなくても、テストができる。
【０１０４】
また、プロバイダ６１のプログラムが完成していない状態でも、そのＷＳＤＬさえ存在すれば、疑似プロバイダによるテストも可能である。
【０１０５】
５．他の実施形態
上記実施形態においては、リフレクションＡＰＩを用いて、クラスを走査し、引数の型情報を取得し、これを用いてソースコードを走査して引数の名称を取得したが、リフレクションＡＰＩを用いることなく、ソースコードを走査して引数の名称、引数の型を取得するようにしてもよい。
【０１０６】
上記実施形態においては、リクエスタプログラムがオブジェクト指向のプログラムである場合について説明したが、従来の手続き型のプログラムであっても同様に適用することができる。この場合には、上記実施形態におけるリクエスタクラス、メソッドを、それぞれリクエスタプログラムを構成するプログラムモジュール、その関数に対応させて、同様の処理を実行するようにすればよい。
【０１０７】
チェック装置１は、ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるオブジェクト指向のリクエスタプログラムをチェックするための値の入力支援装置として把握することもできる。
【０１０８】
チェック装置１は、ウェブサービスを提供するプロバイダコンピュータに対して、要求を行うリクエスタコンピュータで用いるオブジェクト指向のリクエスタプログラムをチェックするチェック装置であって、1)前記リクエスタプログラムについて、全てのリクエスタクラスと対象メソッドを表示させ、操作者にテスト対象のリクエスタクラスおよび対象メソッドの指定を促す入力催促手段、2)前記指定があると、リクエスタクラスを走査して、指定されたメソッドを呼び出すための引数および当該引数の型情報を取得して、これを指定されたメソッドの引数情報として記憶するメソッド引数取得手段、3)引数の型毎の値の候補を複数記憶する引数候補記憶手段、4)前記引数候補から前記取得した引数の型毎の値の候補を任意に抽出して、組情報として前記リクエスタプログラムに与える候補付与手段、5)前記リクエスタプログラムが前記プロバイダコンピュータに送信するリクエストメッセージを捕獲するリクエストメッセージ捕獲装置からリクエストメッセージが与えられると、そのＨＴＴＰボディ部から、ＳＯＡＰメッセージを抽出するＳＯＡＰメッセージ抽出手段、6)前記ＳＯＡＰメッセージのツリー構造を解析して、当該メッセージの型名を取得するメッセージ型名取得手段、7)前記捕獲したリクエストメッセージを含むIPパケットから、前記プロバイダコンピュータのＵＲＩを特定し、特定したＵＲＩから前記プロバイダコンピュータにおけるプロバイダプログラムのＷＳＤＬファイルを取得するＷＳＤＬファイル取得手段、8)前記取得したＷＳＤＬファイルのツリー構造を解析して、ＸＭＬ要素のツリー構造を取得するツリー構造取得手段、9)前記取得した要素のツリー構造のうち、前記ＳＯＡＰメッセージ型名で特定されるオペレーションのインプットおよびアウトプット用のメッセージを特定し、当該メッセージの型を、前記指定されたメソッドに対応するメッセージ型情報として抽出する型情報抽出手段、10)前記メソッド引数取得手段によって、取得された引数および当該引数の型情報に基づき、当該引数の型を表示し、テスト値の入力を促すテスト値入力催促手段、11)前記オペレーションのインプット用のメッセージのメッセージ型情報を画面上に表示させて、前記テスト値の入力に対して、リクエスタプログラムが作成すると期待されるリクエストメッセージの入力を促し、入力されると、リクエスト期待値として記憶するリクエスト期待値取得手段、12)前記アウトプット処理を行うオペレーションのメッセージ型情報を画面上に表示させて、前記テスト対象入力に対して、リクエスタプログラムが作成するリクエストメッセージが与えられた場合に、前記プロバイダコンピュータが作成すると期待されるレスポンスメッセージの入力を促し、入力されると、レスポンス期待値として記憶するレスポンス期待値取得手段、13)前記テスト対象入力に対して、リクエストプログラムが作成した実リクエストメッセージと、前記リクエスト期待値を比較し、一致しない場合には報知するリクエスト期待値比較手段、14)前記実リクエストメッセージを前記プロバイダコンピュータに与え、返答として前記リクエスタが受け取るメッセージである実レスポンスメッセージと、前記レスポンス期待値を比較し、一致しない場合に���報知するレスポンス期待値比較手段を備えた、チェック装置として把握することもできる。
【０１０９】
上記実施形態においては、図１に示す機能を実現する為に、ＣＰＵを用い、ソフトウェアによってこれを実現している。しかし、その一部もしくは全てを、ロジック回路等のハードウェアによって実現してもよい。
【０１１０】
なお、上記プログラムの一部の処理をオペレーティングシステム（ＯＳ）にさせるようにしてもよい。
【図面の簡単な説明】
【０１１１】
【図１】本発明にかかるチェック装置１の機能ブロック図である。
【図２】図１に示すチェック装置１をＣＰＵを用いて実現したハードウェア構成の一例を示す図である。
【図２ａ】図１に示すトランスポーター用サーバをＣＰＵを用いて実現したハードウェア構成の一例を示す図である。
【図３】ダミーテスト用の候補リストである。
【図４】ダミーテスト用の候補リストである。
【図５】ダミーテスト用の候補リストである。
【図６】チェック対象のリクエスタプログラムである。
【図７】チェック対象のリクエスタプログラムである。
【図８】プロバイダのＷＳＤＬファイルである。
【図９】プロバイダのＷＳＤＬファイルである。
【図１０】プロバイダのＷＳＤＬファイルである。
【図１１】チェックプログラムのアクティビティー図である。
【図１２】チェックプログラムのアクティビティー図である。
【図１３】リクエストメッセージのデータ構造を説明する図である。
【図１４】ダミーで生成されたテストデータである。
【図１５】ＳＯＡＰメッセージのデータ構造を説明する図である。
【図１６】ＷＳＤＬファイルを解析したツリー構造（一部）である。
【図１７】チェックプログラムのアクティビティー図である。
【図１８】入力情報ファイルのデータ構成を示す図である。
【図１９】オペレーション定義ファイルのデータ構成を示す図である。
【図２０】リクエスト期待値ファイルのデータ構成を示す図である。
【図２１】レスポンス期待値ファイルのデータ構成を示す図である。
【図２２】エラー期待値ファイルのデータ構成を示す図である。
【図２３】チェックプログラムのアクティビティー図である。
【図２４】リクエスタにて生成されるリクエストメッセージである。
【図２５】プロバイダにて生成されるレスポンスメッセージである。
【図２６】チェックプログラム（エラー処理）のアクティビティー図である。
【図２７】エラーメッセージである。
【符号の説明】
【０１１２】
１・・・・ 画面生成装置
２３・・・ＣＰＵ
２７・・・メモリ
【図１】
2007102665.tif 000003
【図２】
2007102665.tif 000004
【図２ａ】
2007102665.tif 000005
【図３】
2007102665.tif 000006
【図４】
2007102665.tif 000007
【図５】
2007102665.tif 000008
【図６】
2007102665.tif 000009
【図７】
2007102665.tif 000010
【図８】
2007102665.tif 000011
【図９】
2007102665.tif 000012
【図１０】
2007102665.tif 000013
【図１１】
2007102665.tif 000014
【図１２】
2007102665.tif 000015
【図１３】
2007102665.tif 000016
【図１４】
2007102665.tif 000017
【図１５】
2007102665.tif 000018
【図１６】
2007102665.tif 000019
【図１７】
2007102665.tif 000020
【図１８】
2007102665.tif 000021
【図１９】
2007102665.tif 000022
【図２０】
2007102665.tif 000023
【図２１】
2007102665.tif 000024
【図２２】
2007102665.tif 000025
【図２３】
2007102665.tif 000026
【図２４】
2007102665.tif 000027
【図２５】
2007102665.tif 000028
【図２６】
2007102665.tif 000029
【図２７】
2007102665.tif 000030