(57)【要約】【課題】ブラウザでは出力できない内容のリクエストも含め、Ｗｅｂサーバへのテスト用リクエストの作成を自動化できるようにする。【解決手段】デフォルトリクエスト生成手段６により、リンク識別情報記憶手段２に記憶されたリンク識別情報に基づいてテスト対象ページにアクセスするためのリクエストデータが生成され、生成されたリクエストデータがデフォルトリクエスト６ａとして出力される。さらに、テスト用リクエスト生成手段７により、デフォルトリクエスト生成手段６から出力されたデフォルトリクエスト６ａに対し、差分操作データ記憶手段４に記憶された差分操作データ４ａ，４ｂ，４ｃで示される変更対象データに関する操作内容に従った編集操作が行われ、テスト用リクエスト７ａ，７ｂ，７ｃが生成される。そして、リクエスト送信手段８により、テスト用リクエスト７ａ，７ｂ，７ｃが送信される。【選択図】図１
2008015709.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上のサーバで提供されるページのテストを支援するためのテスト支援プログラムにおいて、
コンピュータを、
テスト対象ページに対してリンクが張られたリンク元ページから前記テスト対象ページへのリンクを辿るために必要なリンク識別情報の入力を受け付けるリンク識別情報取得手段、
前記リンク識別情報取得手段に入力された前記リンク識別情報を記憶するリンク識別情報記憶手段、
デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データの入力を受け付ける差分操作データ取得手段、
前記差分操作データ取得手段に入力された前記差分操作データを記憶する差分操作データ記憶手段、
前記リンク識別情報記憶手段に記憶された前記リンク識別情報に基づいて前記テスト対象ページにアクセスするためのリクエストデータを生成し、生成した前記リクエストデータを前記デフォルトリクエストとして出力するデフォルトリクエスト生成手段、
前記デフォルトリクエスト生成手段から出力された前記デフォルトリクエストに対し、前記差分操作データ記憶手段に記憶された前記差分操作データで示される前記変更対象データに関する前記操作内容に従った編集操作を行い、テスト用リクエストを生成するテスト用リクエスト生成手段、
前記テスト用リクエスト生成手段で生成された前記テスト用リクエストを、前記ネットワークを介して送信するリクエスト送信手段、
として機能させることを特徴とするテスト支援プログラム。
【請求項２】
前記コンピュータを、さらに、
前記サーバで提供されるページ間のリンク関係が予め記憶されたリンク関係記憶手段、および前記リンク関係記憶手段を参照して前記リンク元ページを判断し、前記サーバにアクセスすることで前記リンク元ページを再現するリンク元ページ再現手段として機能させ、
前記デフォルトリクエスト生成手段は、入力された前記リンク識別情報に対応するリンク識別情報を、前記リンク元ページ再現手段で再現された前記リンク元ページから抽出し、抽出した前記リンク識別情報に基づいてリクエストデータを生成する、
ことを特徴とする請求項１記載のテスト支援プログラム。
【請求項３】
前記デフォルトリクエスト生成手段は、前記リンク元ページ再現手段で再現された前記リンク元ページを解析し、前記リンク元ページから他のページへのリンクを示すリンク識別情報を抽出し、抽出した前記リンク識別情報の中から少なくとも含まれるパラメータの名前が共通の前記リンク識別情報を選択し、選択した前記リンク識別情報に基づいてリクエストデータを生成することを特徴とする請求項２記載のテスト支援プログラム。
【請求項４】
前記テスト用リクエスト生成手段は、前記差分操作データにおいて変更対象のパラメータ名および変更後の値を指定したパラメータ変更指示が示されている場合、前記デフォルトリクエストから前記パラメータ名に該当するパラメータを検出し、検出したパラメータの値を指定された値に変更し、前記テスト用リクエストとすることを特徴とする請求項１記載のテスト支援プログラム。
【請求項５】
コンピュータを、さらに、
操作対象データのデータ種別と操作対象データに設定する変更値とを含むテスト入力規則定義および前記リンク識別情報が入力されると、前記リンク識別情報から前記データ種別に該当するパラメータを抽出し、抽出したパラメータの値を前記変更値に変更することを示す前記差分操作データを生成し、生成した前記差分操作データを前記差分操作データ取得手段に対して出力するテスト入力手段として機能させることを特徴とする請求項１記載のテスト支援プログラム。
【請求項６】
コンピュータを、さらに、
前記テスト用リクエストに対する応答が正しいか否かの判定基準が示された結果判定規則定義が予め入力されており、前記リクエスト送信手段から送信された前記テスト用リクエストに対する応答を取得し、応答内容の正否を前記結果判定規則定義に基づいて判定するテスト結果判定手段として機能させることを特徴とする請求項１記載のテスト支援プログラム。
【請求項７】
コンピュータを、さらに、
操作対象データのデータ種別と操作対象データに設定する変更値とを含むテスト入力規則定義および前記リンク識別情報が入力されると、前記リンク識別情報から前記データ種別に該当するパラメータを抽出し、抽出したパラメータの値を前記変更値に変更することを示す前記差分操作データを生成し、生成した前記差分操作データを前記差分操作データ取得手段に対して出力するテスト入力手段、
前記テスト用リクエストに対する応答が正しいか否かの判定基準が示された結果判定規則定義が予め入力されており、前記リクエスト送信手段から送信された前記テスト用リクエストに対する応答を取得し、応答内容の正否を前記結果判定規則定義に基づいて判定するテスト結果判定手段、
前記テスト入力規則定義と前記結果判定規則定義とを含むテスト定義が入力されると、前記テスト定義から前記テスト入力規則定義を抽出して前記テスト入力手段に対して出力し、前記テスト定義から前記結果判定記憶定義を抽出して前記テスト結果判定手段に対して出力するテスト定義解析手段、
として機能させることを特徴とする請求項１記載のテスト支援プログラム。
【請求項８】
前記テスト定義解析手段は、所定の時刻になったことを確認後、前記テスト入力規則定義と前記結果判定規則定義とをそれぞれ前記テスト入力手段と前記テスト結果判定手段とに対して出力することを特徴とする請求項７記載のテスト支援プログラム。
【請求項９】
ネットワーク上のサーバで提供されるページのテストを支援するためのテスト支援装置において、
テスト対象ページに対してリンクが張られたリンク元ページから前記テスト対象ページへのリンクを辿るために必要なリンク識別情報の入力を受け付けるリンク識別情報取得手段と、
前記リンク識別情報取得手段に入力された前記リンク識別情報を記憶するリンク識別情報記憶手段と、
デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データの入力を受け付ける差分操作データ取得手段と、
前記差分操作データ取得手段に入力された前記差分操作データを記憶する差分操作データ記憶手段と、
前記リンク識別情報記憶手段に記憶された前記リンク識別情報に基づいて前記テスト対象ページにアクセスするためのリクエストデータを生成し、生成した前記リクエストデータを前記デフォルトリクエストとして出力するデフォルトリクエスト生成手段と、
前記デフォルトリクエスト生成手段から出力された前記デフォルトリクエストに対し、前記差分操作データ記憶手段に記憶された前記差分操作データで示される前記変更対象データに関する前記操作内容に従った編集操作を行い、テスト用リクエストを生成するテスト用リクエスト生成手段と、
前記テスト用リクエスト生成手段で生成された前記テスト用リクエストを、前記ネットワークを介して送信するリクエスト送信手段と、
を有することを特徴とするテスト支援装置。
【請求項１０】
ネットワーク上のサーバで提供されるページのテストを支援するためのテスト支援方法において、
リンク識別情報取得手段が、テスト対象ページに対してリンクが張られたリンク元ページから前記テスト対象ページへのリンクを辿るために必要なリンク識別情報の入力を受け付け、入力された前記リンク識別情報をリンク識別情報記憶手段に格納し、
差分操作データ取得手段が、デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データの入力を受け付け、入力された前記差分操作データを差分操作データ記憶手段に格納し、
デフォルトリクエスト生成手段が、前記リンク識別情報記憶手段に記憶された前記リンク識別情報に基づいて前記テスト対象ページにアクセスするためのリクエストデータを生成し、生成した前記リクエストデータを前記デフォルトリクエストとして出力し、
テスト用リクエスト生成手段が、前記デフォルトリクエスト生成手段から出力された前記デフォルトリクエストに対し、前記差分操作データ記憶手段に記憶された前記差分操作データで示される前記変更対象データに関する前記操作内容に従った編集操作を行い、テスト用リクエストを生成し、
リクエスト送信手段が、前記テスト用リクエスト生成手段で生成された前記テスト用リクエストを、前記ネットワークを介して送信する、
ことを特徴とするテスト支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はサーバの機能テストを支援するためのテスト支援プログラム、テスト支援装置、およびテスト支援方法に関し、特にネットワーク経由で入力するデータの自動生成を行うテスト支援プログラム、テスト支援装置、およびテスト支援方法に関する。
【背景技術】
【０００２】
現在、社内ネットワークや広域ネットワークの普及により、ネットワークを介して様々なサービスを提供することができる。また、最近のほとんどのクライアントコンピュータには、ＷＷＷ（World Wide Web）用のＷｅｂブラウザが実装されている。そのため、Ｗｅｂページ提供用のプログラムが実装されたサーバコンピュータ（以下、Ｗｅｂサーバという）を使用してサービスを提供すれば、クライアント側に特別なプログラムを組み込まずにすみ、システムの導入が容易となる。そこで、Ｗｅｂサーバで実行させる業務用のアプリケーションプログラム（以下、単にアプリケーションという）の開発が盛んに行われている。
【０００３】
ＷＷＷサーバ用の業務アプリケーションを開発した場合、運用開始前に、そのアプリケーションが正常に動作することを確認する必要がある。一般的に、ＧＵＩ（Graphical User Interface）による入出力を伴うアプリケーションの場合、人手によって動作確認が行われていた。ただし、人手によって動作確認を行った場合、仕様書に基づいたデータ入力を行うときに入力ミスをする可能性がある。しかも、画面表示用のプログラムは入力項目が多岐に渡ることが多く、全てのパターンを手作業で入力するには膨大な時間を要していた。
【０００４】
さらに、動作確認の作業では同じテストを繰り返すことがあるが、人手によって同じ作業を繰り返すのは非効率的である。しかも、前回のテスト実行時と何処の結果が異なるのか又は同じなのかを目視で確認するため、常に確認漏れの可能性がある。
【０００５】
そこで、ＷｅｂブラウザへのＧＵＩ上の操作を自動的に実行することで、テストを支援する技術が考えられている。その技術の１つとして、Ｗｅｂブラウザに対して行われた操作に応じて発生したイベントに基づいてスクリプトファイルを生成し、そのスクリプトファイルに基づいてＷｅｂブラウザに対して発行されたイベントを再現することで再帰テストを支援する技術がある。このとき、スクリプトファイルはテキスト形式で編集可能であるため、入力フィールドへの入力値をエディタで編集しておくことで、装置に編集後の値を入力させることが可能である。つまり、テスト入力毎にスクリプトファイルを用意しておいてそれらスクリプトファイル群を装置に入力すれば、複数のテスト入力を自動化することができる（たとえば、特許文献１参照）。
【特許文献１】特開２００５−２６６９５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に示したようなＷｅｂブラウザへの操作入力を自動化する技術では、ブラウザ上で操作できる範囲内でしかテストを行うことができない。そのため、セキュリティ上のテストを十分に行うことができない。
【０００７】
たとえば、特にセキュリティ的に重要なテストとして、hiddenパラメータ値の変更や新たなパラメータの追加などがある。すなわち、悪意の第三者は、通常のブラウザから出力されるリクエストデータには設定されることのないパラメータをリクエストに付加する。そのリクエストをＷｅｂサーバに送信することで、Ｗｅｂサーバの誤動作を誘発させる。そのような行為に対する安全性を確認するには、Ｗｅｂブラウザに対する操作入力では出力されることのないデータを、テスト用のデータとしてＷｅｂサーバに送信できることが望まれる。
【０００８】
なお、Ｗｅｂブラウザから出力されないデータをテスト用のデータとする方法として、Ｗｅｂブラウザから出力されたリクエストを中継し、パラメータなどの内容をエディタによってリアルタイムに編集した後、Ｗｅｂサーバに送信する方法が考えられる。ただし、この方法では、リアルタイムな編集に頼っておりバッチ処理に対応できない。すなわち、一連のテスト入力候補が既知の場合はバッチ的処理を装置に指示し、一連のテスト入力を自動化したいという要求があるが、ユーザの編集操作が介在することでバッチ処理によるテストの自動化ができなくなっている。
【０００９】
本発明はこのような点に鑑みてなされたものであり、ブラウザでは出力できない内容のリクエストも含め、Ｗｅｂサーバへのテスト用リクエストの作成を自動化できるテスト支援プログラム、テスト支援装置、およびテスト支援方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明では上記課題を解決するために、図１に示すようなテスト支援プログラムが提供される。本発明に係るテスト支援プログラムは、ネットワーク上のサーバで提供されるページのテストを支援するために、図１に示す機能をコンピュータに実行させることができる。
【００１１】
リンク識別情報取得手段１は、テスト対象ページに対してリンクが張られたリンク元ページからテスト対象ページへのリンクを辿るために必要なリンク識別情報の入力を受け付ける。リンク識別情報記憶手段２は、リンク識別情報取得手段１に入力されたリンク識別情報を記憶する。差分操作データ取得手段３は、デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データ４ａ，４ｂ，４ｃの入力を受け付ける。差分操作データ記憶手段４は、差分操作データ取得手段３に入力された差分操作データを記憶する。デフォルトリクエスト生成手段６は、リンク識別情報記憶手段２に記憶されたリンク識別情報に基づいてテスト対象ページにアクセスするためのリクエストデータを生成し、生成したリクエストデータをデフォルトリクエスト６ａとして出力する。テスト用リクエスト生成手段７は、デフォルトリクエスト生成手段６から出力されたデフォルトリクエスト６ａに対し、差分操作データ記憶手段４に記憶された差分操作データ４ａ，４ｂ，４ｃで示される変更対象データに関する操作内容に従った編集操作を行い、テスト用リクエスト７ａ，７ｂ，７ｃを生成する。リクエスト送信手段８は、テスト用リクエスト生成手段７で生成されたテスト用リクエスト７ａ，７ｂ，７ｃを、ネットワークを介して送信する。
【００１２】
このようなテスト支援プログラムをコンピュータに実行させることで、リンク識別情報取得手段１により、テスト対象ページに対してリンクが張られたリンク元ページからテスト対象ページへのリンクを辿るために必要なリンク識別情報の入力が受け付けられる。すると、リンク識別情報取得手段１に入力されたリンク識別情報がリンク識別情報記憶手段２に記憶される。また、差分操作データ取得手段３により、デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データ４ａ，４ｂ，４ｃの入力が受け付けられる。すると、差分操作データ取得手段３に入力された差分操作データが差分操作データ記憶手段４に記憶される。次に、デフォルトリクエスト生成手段６により、リンク識別情報記憶手段２に記憶されたリンク識別情報に基づいてテスト対象ページにアクセスするためのリクエストデータが生成され、生成されたリクエストデータがデフォルトリクエスト６ａとして出力される。さらに、テスト用リクエスト生成手段７により、デフォルトリクエスト生成手段６から出力されたデフォルトリクエスト６ａに対し、差分操作データ記憶手段４に記憶された差分操作データ４ａ，４ｂ，４ｃで示される変更対象データに関する操作内容に従った編集操作が行われ、テスト用リクエスト７ａ，７ｂ，７ｃが生成される。そして、リクエスト送信手段８により、テスト用リクエスト生成手段７で生成されたテスト用リクエスト７ａ，７ｂ，７ｃがネットワークを介して送信される。
【００１３】
また、本発明では上記課題を解決するために、ネットワーク上のサーバで提供されるページのテストを支援するためのテスト支援装置において、テスト対象ページに対してリンクが張られたリンク元ページから前記テスト対象ページへのリンクを辿るために必要なリンク識別情報の入力を受け付けるリンク識別情報取得手段と、前記リンク識別情報取得手段に入力された前記リンク識別情報を記憶するリンク識別情報記憶手段と、デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データの入力を受け付ける差分操作データ取得手段と、前記差分操作データ取得手段に入力された前記差分操作データを記憶する差分操作データ記憶手段と、前記リンク識別情報記憶手段に記憶された前記リンク識別情報に基づいて前記テスト対象ページにアクセスするためのリクエストデータを生成し、生成した前記リクエストデータを前記デフォルトリクエストとして出力するデフォルトリクエスト生成手段と、前記デフォルトリクエスト生成手段から出力された前記デフォルトリクエストに対し、前記差分操作データ記憶手段に記憶された前記差分操作データで示される前記変更対象データに関する前記操作内容に従った編集操作を行い、テスト用リクエストを生成するテスト用リクエスト生成手段と、前記テスト用リクエスト生成手段で生成された前記テスト用リクエストを、前記ネットワークを介して送信するリクエスト送信手段と、を有することを特徴とするテスト支援装置が提供される。
【００１４】
また、本発明では上記課題を解決するために、ネットワーク上のサーバで提供されるページのテストを支援するためのテスト支援方法において、リンク識別情報取得手段が、テスト対象ページに対してリンクが張られたリンク元ページから前記テスト対象ページへのリンクを辿るために必要なリンク識別情報の入力を受け付け、入力された前記リンク識別情報をリンク識別情報記憶手段に格納し、差分操作データ取得手段が、デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データの入力を受け付け、入力された前記差分操作データを差分操作データ記憶手段に格納し、デフォルトリクエスト生成手段が、前記リンク識別情報記憶手段に記憶された前記リンク識別情報に基づいて前記テスト対象ページにアクセスするためのリクエストデータを生成し、生成した前記リクエストデータを前記デフォルトリクエストとして出力し、テスト用リクエスト生成手段が、前記デフォルトリクエスト生成手段から出力された前記デフォルトリクエストに対し、前記差分操作データ記憶手段に記憶された前記差分操作データで示される前記変更対象データに関する前記操作内容に従った編集操作を行い、テスト用リクエストを生成し、リクエスト送信手段が、前記テスト用リクエスト生成手段で生成された前記テスト用リクエストを、前記ネットワークを介して送信する、ことを特徴とするテスト支援方法が提供される。
【発明の効果】
【００１５】
本発明では、リンク識別情報に基づいて生成されたデフォルトリクエストに対して差分操作データに従った編集操作を行うことでテスト用リクエストを生成するようにしたため、リンク元ページを表示するブラウザへの操作入力では設定できないようなデータを含むテスト用リクエストを生成することができる。しかも、差分操作データを予め入力しておけばデフォルトリクエストが自動編集されるため、リクエストデータが生成される毎に操作入力を行う必要がなく、バッチ処理も可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本実施の形態の概略を示す図である。本実施の形態では、ネットワーク上のサーバＡで提供されるページのテストを支援するための主な機能として、リンク識別情報取得手段１、リンク識別情報記憶手段２、差分操作データ取得手段３、差分操作データ記憶手段４、リンク関係記憶手段５、デフォルトリクエスト生成手段６、テスト用リクエスト生成手段７、リクエスト送信手段８、およびリンク元ページ再現手段９が設けられている。
【００１７】
リンク識別情報取得手段１は、テスト対象ページに対してリンクが張られたリンク元ページからテスト対象ページへのリンクを辿るために必要なリンク識別情報の入力を受け付ける。たとえば、リンク識別情報取得手段１は、ユーザからの操作入力によりリンク識別情報を取得する。また、リンク識別情報取得手段１は、リンク関係記憶手段５に格納されているリンク関係を選択する操作入力を受け付け、選択されたリンク関係を示すリンク識別情報をリンク関係記憶手段５から取得することもできる。そして、リンク識別情報取得手段１は、取得したリンク識別情報をリンク識別情報記憶手段２に格納する。
【００１８】
リンク識別情報記憶手段２は、リンク識別情報取得手段１に入力されたリンク識別情報を記憶する。なお、リンク識別情報記憶手段２に記憶されたリンク識別情報は、デフォルトリクエスト生成手段６によってデフォルトリクエスト６ａが作成された後は消去される。
【００１９】
差分操作データ取得手段３は、デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データ４ａ，４ｂ，４ｃの入力を受け付ける。たとえば、ユーザからの操作入力によって差分操作データ４ａ，４ｂ，４ｃが入力される。差分操作データ４ａ，４ｂ，４ｃでは、たとえば、パラメータ名によって変更対象データが指定されている。また、操作内容としては、「追加」、「変更」、「削除」などが指定される。操作の種別がパラメータの「追加」や「変更」の場合、差分操作データ４ａ，４ｂ，４ｃ内に操作後のパラメータの値が設定されている。そして、差分操作データ取得手段３は、取得した差分操作データ４ａ，４ｂ，４ｃを差分操作データ記憶手段４に格納する。
【００２０】
差分操作データ記憶手段４は、差分操作データ取得手段３に入力された差分操作データ４ａ，４ｂ，４ｃを記憶する。なお、デフォルトリクエスト６ａに対して複数の差分操作データを適用して１つのテスト用リクエストを生成する場合、同時に適用すべき複数の差分操作データを１つにまとめた差分操作データ群の単位で差分操作データ記憶手段４に格納される。
【００２１】
リンク関係記憶手段５は、サーバＡで提供されるページ間のリンク関係が予め記憶されている。たとえば、予めサーバＡ内のページを収集して解析することで、ページ間のリンク関係をリンク関係記憶手段５に格納することができる。リンク関係としては、どのページからどのページの呼び出しが行われるかを示す情報や、その呼び出しのためにリンク元ページ（呼び出し元のページ）に設定されているリンク識別情報の内容などが設定されている。
【００２２】
たとえば、特開２００６−５８９６６号公報には、Ｗｅｂサーバからページを収集し、同様の内容のページ毎にクラス分けする技術が開示されている。具体的には、ページ収集の際に、ＨＴＴＰ（HyperText Transfer Protocol）レスポンスを構文解析して自動的にリンクを検出し、そこからＨＴＴＰリクエストデータを生成する。この際、リンクに対して識別データを記録しておく。当該公報ではページの分類単位であるページクラスにＩＤがつけられ、ページクラスに対応するリンク識別情報は「リンク元ページクラスＩＤ」と「リンクＵＲＬ（Uniform Resource Locator）」との組で表現される。リンクＵＲＬは、「リンクの種類に対応するリクエストメソッド」、「ＵＲＬ」、「フォームデータ」の組で表現される。各ページクラスにはそれを再現するのに使用するリンク識別データが記録されている。
【００２３】
なお、クラス分けの条件は、任意に設定できる。たとえば、同じＵＲＬで呼び出されるページが同一クラスを分類することができる。また、同じＵＲＬでかつ同じ名前のパラメータが設定されたリクエストで呼び出されるページを同一クラスに分類することもできる。
【００２４】
デフォルトリクエスト生成手段６は、リンク識別情報記憶手段２に記憶されたリンク識別情報に基づいてテスト対象ページにアクセスするためのリクエストデータを生成する。そして、デフォルトリクエスト生成手段６は、生成したリクエストデータをデフォルトリクエスト６ａとして出力する。
【００２５】
テスト用リクエスト生成手段７は、デフォルトリクエスト生成手段６から出力されたデフォルトリクエスト６ａに対し、差分操作データ記憶手段４に記憶された差分操作データ４ａ，４ｂ，４ｃで示される変更対象データに関する操作内容に従った編集操作を行い、テスト用リクエスト７ａ，７ｂ，７ｃを生成する。
【００２６】
リクエスト送信手段８は、テスト用リクエスト生成手段７で生成されたテスト用リクエスト７ａ，７ｂ，７ｃを、ネットワークを介して送信する。
リンク元ページ再現手段９は、リンク関係記憶手段５を参照してリンク元ページを判断し、サーバＡにアクセスすることでリンク元ページを再現する。
【００２７】
このようなテスト支援プログラムをコンピュータに実行させることで、リンク識別情報取得手段１により、リンク識別情報の入力が受け付けられリンク識別情報記憶手段２に記憶される。また、差分操作データ取得手段３により、差分操作データ４ａ，４ｂ，４ｃの入力が受け付けられ、差分操作データ記憶手段４に記憶される。次に、デフォルトリクエスト生成手段６により、リンク識別情報記憶手段２に記憶されたリンク識別情報に基づいてテスト対象ページにアクセスするためのリクエストデータが生成され、生成されたリクエストデータがデフォルトリクエスト６ａとして出力される。その際、デフォルトリクエスト生成手段６は、リンク識別情報から直接リクエストデータを生成することもできるが、リンク元ページ再現手段９で再現したページを利用してリクエストデータを生成することもできる。
【００２８】
リンク元ページ再現手段９でリンク元ページを再現する場合、デフォルトリクエスト生成手段６からリンク元ページ再現手段９へリンク元ページの再現要求が出される。すると、リンク元ページ再現手段９はリンク関係記憶手段５を参照し、リンク識別情報記憶手段２に記憶されているリンク識別情報が属するページクラスのリンク元となるページクラスＩＤを判断する。そして、リンク元ページ再現手段９は、リンク元のページクラスのリンクＵＲＬを用いて、リンク元ページを再現する。
【００２９】
再現されたリンク元ページは、デフォルトリクエスト生成手段６に渡される。デフォルトリクエスト生成手段６では、リンク元ページが解析され、リンク識別情報記憶手段２に記憶されているリンク識別情報に定義されているリンクＵＲＬに対応するリンクＵＲＬが抽出される。そして、デフォルトリクエスト生成手段６は、リンク元ページから抽出したリンクＵＲＬに基づいてリクエストデータが生成され、デフォルトリクエスト６ａとして出力される。
【００３０】
このように、再現したリンク元ページ内のリンクＵＲＬを用いることで、サーバＡにアクセスする毎に値が変化するパラメータ（たとえば、controlなどの値）に対して、テストを実施する時点での値を使用することができる。たとえば、図１の例では、リンク識別情報記憶手段２に記憶されたリンク識別情報を利用してリクエストデータを作成すると、「control=123」となるが、再現したリンク元ページ内のリンクＵＲＬを使用するとリンク元ページを再現したときにサーバＡから送られた値「control=412」が設定される。
【００３１】
さらに、テスト用リクエスト生成手段７により、デフォルトリクエスト生成手段６から出力されたデフォルトリクエスト６ａに対し、差分操作データ記憶手段４に記憶された差分操作データ４ａ，４ｂ，４ｃで示される変更対象データに関する操作内容に従った編集操作が行われ、テスト用リクエスト７ａ，７ｂ，７ｃが生成される。たとえば、差分操作データ４ａにおいて「data=0」と設定されているため、デフォルトリクエスト６ａのパラメータ「data=0」に変更したテスト用リクエスト７ａが生成されている。
【００３２】
生成されたテスト用リクエスト７ａ，７ｂ，７ｃは、リクエスト送信手段８によってサーバＡに送信される。
テスト用リクエスト７ａ，７ｂ，７ｃに対するサーバＡからの応答内容を解析することで、サーバＡ内のページが設計通りに機能していることを確認することができる。また、不正なパラメータが送信されたときに、セキュリティホールが発生しないことを確認することができる。たとえば、リンク元ページを表示するブラウザへの操作入力では「data」の値として「１」と「２」しか設定できない場合であっても、本実施の形態を利用すれば、「０」、「−１」、「６５５３６」などの不正な値を設定することができる。
【００３３】
このようなテストを行うことで、サーバＡに対して悪意を持って不正アクセスを行う第三者からのサーバＡの安全性をテストすることが容易となる。しかも、差分操作データ４ａ，４ｂ，４ｃを用意しておけば、デフォルトリクエスト６ａに対して自動的に差分操作が適用されるため、バッチ処理による自動化も可能となる。
【００３４】
ところで、バッチ処理による自動化を実現する場合、テスト結果の自動判定も実行できることが望まれる。そこで、テスト結果の自動判定までも自動化が可能なシステムの例を用いて、本発明の実施の形態を詳細に説明する。
【００３５】
図２は、本実施の形態のシステム構成例を示す図である。Ｗｅｂサーバ２１に対して、ネットワーク１０を介してテスト支援装置１００が接続されている。Ｗｅｂサーバ２１内でプログラムの更新などが行われた場合、テスト支援装置１００からＷｅｂサーバ２１に対してテスト用のリクエストを送信することで、Ｗｅｂサーバ２１の動作テストを行うことができる。
【００３６】
図３は、本実施の形態に用いるコンピュータのハードウェア構成例を示す図である。テスト支援装置１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００３７】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００３８】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００３９】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００４０】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、テスト支援装置１００のハードウェア構成を示したが、Ｗｅｂサーバ２１も同様のハードウェア構成で実現できる。
【００４１】
次に、テスト支援装置１００がＷｅｂページをテストするために必要とする機能について説明する。
図４は、テスト支援装置の機能を示すブロック図である。テスト支援装置１００は、テスト定義解析部１１０、テスト入力部１２０、Ｗｅｂページ取得部１３０、テスト結果判定部１４０、およびリンク識別情報記憶部１５０を有している。
【００４２】
テスト定義解析部１１０は、操作入力などによりテスト定義３１の入力を受け付け、入力されたテスト定義を解析する。テスト定義３１は、テスト内容を定義したものであり、テストの際に入力すべきデータの設定規則を定義したテスト入力規則定義３２と、テスト結果の良否判定基準を定義した結果判定規則定義３３とで構成される。テスト定義解析部１１０は、入力されたテスト定義３１をテスト入力規則定義３２と結果判定規則定義３３とに分離する。そして、テスト定義解析部１１０は、テスト入力規則定義３２をテスト入力部１２０に渡し、結果判定規則定義３３をテスト結果判定部１４０に渡す。
【００４３】
テスト入力部１２０は、操作入力などにより指定されたリンク識別情報群３４をリンク識別情報記憶部１５０から取得する。そして、テスト入力部１２０は、テスト定義解析部１１０からテスト入力規則定義３２を受け取り、取得したリンク識別情報群３４に含まれる各リンク識別情報についてテスト入力規則定義３２に従った処理を行う。
【００４４】
すなわち、テスト入力部１２０は、リンク識別情報毎にテスト入力規則定義３２の<target>タグに従った対象についての差分操作データを、<input＿value>タグに従った値で作成する。そして、テスト入力部１２０は、生成元となったリンク識別情報をリンク指定３５としてリンク識別・ページ再現部１３１に入力すると共に、作成された複数の差分操作データを差分操作データ群３６として差分操作適用部１３２に入力する。
【００４５】
Ｗｅｂページ取得部１３０は、Ｗｅｂサーバ２１にアクセスし、テスト対象のＷｅｂページを取得する。具体的には、Ｗｅｂページ取得部１３０は、リンク指定３５によって指定されたＷｅｂページを取得する。
【００４６】
なお、Ｗｅｂページには、所定のリンクを辿っていかないと正しく取得できないものがある。たとえば、ログインなどの認証処理を経ないと取得できないＷｅｂページの場合、認証処理を行うためのＷｅｂページ経由でしか取得することができない。そこで、Ｗｅｂページ取得部１３０は、リンク指定３５で示されたＷｅｂページまでの取得手順を再現することで、正しくＷｅｂページを取得する機能を備えている。
【００４７】
また、Ｗｅｂページ取得部１３０は、Ｗｅｂページを取得する際のリクエストの内容を、差分操作データに応じて変更する機能を備えている。これらの機能を実現するため、Ｗｅｂページ取得部１３０は、リンク識別・ページ再現部１３１、差分操作適用部１３２、およびＨＴＴＰ通信部１３３を有している。
【００４８】
リンク識別・ページ再現部１３１は、入力されたリンク指定３５に基づいて、リンク指定で指定されたＷｅｂページを、所定のリンクを辿って再現する。この機能は、たとえば、特開２００６−５８９６６号公報に開示された「ページ情報収集装置」の機能を用いて実現できる。当該公報記載の発明は、ＷｅｂサイトからＷｅｂページを自動収集するものである。収集したＷｅｂページは、所定の分類規則に従ってデータ構造毎にクラス分けされる。たとえば、ＵＲＬが同じであり、かつ他のＷｅｂページへのリンク情報が同一の場合には、データ構造が同じと判断して同じクラスに振り分ける。さらに、「ページ情報収集装置」は、任意のクラスに属するＷｅｂページを再現するために辿るためのリンク関係などの情報を、リンク識別情報群３４として記憶している。
【００４９】
リンク識別・ページ再現部１３１は、前記公報記載の「ページ情報収集装置」の機能を内包している。そこで、リンク識別・ページ再現部１３１は、リンク指定３５で指定されたＷｅｂページを再現するためのリンクを辿り、そのＷｅｂページのリンク元ページを再現する。さらに、リンク識別・ページ再現部１３１は、リンク元ページの中から、リンク指定３５で指定されたＷｅｂページを取得するためのリンクＵＲＬを選択する。そして、リンク識別・ページ再現部１３１は、選択したリンクＵＲＬに基づいて、リクエスト（デフォルトリクエスト４２）を生成する。
【００５０】
また、リンク識別・ページ再現部１３１は、デフォルトリクエスト４２、デフォルトリクエスト４２の生成元となったリンクＵＲＬ４３、およびデフォルトリクエストに対して適用すべき差分操作データ群４１を差分操作適用部１３２に渡す。この差分操作データ群４１は、ページを収集する際に使用した情報として、リンク識別・ページ再現部１３１内に記録されていたものである。
【００５１】
差分操作適用部１３２は、リンク識別・ページ再現部１３１から入力されたデフォルトリクエスト４２に対して、リンク識別・ページ再現部１３１から受け取った差分操作データ群４１とテスト入力部１２０から受け取った差分操作データ群３６とを適用し、リンク指定３５で指定されたＷｅｂページへのテスト用のリクエストを生成する。なお、差分操作の対象がフォームデータの場合、デフォルトリクエスト４２と共に受け取ったリンクＵＲＬ４３に設定されているフォームデータに対応するデータをデフォルトリクエスト４２から検索し、検出されたデータを差分操作の対象とする。
【００５２】
さらに、差分操作適用部１３２は、生成したリクエストをＨＴＴＰ通信部１３３に渡し、ＨＴＴＰ通信部１３３からＨＴＴＰレスポンス３７を受け取る。そして、差分操作適用部１３２は、受け取ったＨＴＴＰレスポンス３７をテスト結果判定部１４０に渡す。
【００５３】
ＨＴＴＰ通信部１３３は、リクエストデータ（補足情報としてＵＲＬを含む）を入力として受け付け、対象Ｗｅｂサーバ２１にＨＴＴＰ／ＨＴＴＰＳ通信でリクエストデータを送信する。そして、ＨＴＴＰ通信部１３３は、リクエストデータの送信に対するレスポンスデータを出力する。この機能は一般的に良く知られているtelnetなどを用いて実現できる。ＨＴＴＰ通信部１３３は、この機能を用いて、リンク識別・ページ再現部１３１や差分操作適用部１３２からのＨＴＴＰのリクエストに応じてＷｅｂサーバ２１にアクセスし、ＷｅｂページなどのＨＴＴＰレスポンスを取得する。そして、ＨＴＴＰ通信部１３３は、取得したＨＴＴＰレスポンスをリンク識別・ページ再現部１３１や差分操作適用部１３２に渡す。
【００５４】
テスト結果判定部１４０は、差分操作適用部１３２から受け取ったＨＴＴＰレスポンス３７を、テスト定義解析部１１０から受け取った結果判定規則定義３３で評価する。たとえば、テスト結果判定部１４０は、結果判定規則定義３３で示される情報がＨＴＴＰレスポンス３７に含まれていれば、テストを正常終了と判定する。テスト結果判定部１４０は、判定内容をテスト結果３８として出力する。
【００５５】
リンク識別情報記憶部１５０は、リンク識別・ページ再現部１３１において生成されたリンク識別情報群３４を記憶する。
なお、図１に示したサーバＡ以外の各機能は、Ｗｅｂページ取得部１３０に含まれる機能である。具体的には、リンク識別情報取得手段１、リンク識別情報記憶手段２、リンク関係記憶手段５、デフォルトリクエスト生成手段６、およびリンク元ページ再現手段９の機能が、リンク識別・ページ再現部１３１に含まれる。また、差分操作データ取得手段３、差分操作データ記憶手段４、テスト用リクエスト生成手段７、およびリクエスト送信手段８の機能が、差分操作適用部１３２に含まれる。ただし、リクエスト送信手段８とリンク元ページ再現手段９との機能のうちＨＴＴＰによる通信処理機能については、ＨＴＴＰ通信部１３３によって実現される。
【００５６】
以下、図４に示した各機能で実行される処理の詳細を説明する前に、まずＵＲＬとパラメータのデータ構造とリンク識別情報群３４とについて説明する。
図５は、ＵＲＬとパラメータのデータ構造を示す図である。ＨＴＴＰデータの所在地は、ＵＲＬ２０１で指定される。ＵＲＬ２０１には、パラメータ２０２を付加することが出来る。パラメータ２０２は、ＵＲＬ２０１で指定されたＨＴＴＰデータを取得する際に、そのＨＴＴＰデータを保持するＷｅｂサーバに渡される。そして、ＵＲＬ２０１においてＷｅｂアプリケーションが指定されている場合、「？」以降にクエリ２０３を設定することができる。クエリ２０３は、１以上のクエリパラメータ２０４，２０５で構成される。クエリパラメータ２０４は、名前２０６と値２０７とを有している。このようなＵＲＬ２０１に付加されるパラメータ２０２の場合、そのパラメータ２０２の一部として含まれるクエリパラメータ２０４、２０５毎に差分操作の対象となる。
【００５７】
次に、リンク識別・ページ再現部１３１が保持するページクラスとリンク識別情報群とについて説明する。
リンク識別情報群は、Ｗｅｂページ収集機能によって収集されたＷｅｂページに基づいて生成されている。Ｗｅｂページは、データ構造に応じてページクラスに分類されている。そして、各ページクラスに属するＷｅｂページを取得した際のリンクＵＲＬと差分操作データとがリンク識別情報で示される。
【００５８】
図６は、ページクラスとリンク識別情報との関係を示す図である。収集したＷｅｂページの分類先であるページクラス５１〜５４には、ページクラスを一意に識別するためのページクラスＩＤが設定されている。
【００５９】
初期ノード以外の各ページクラス５２〜５４には、再現用リンク５２ａ，５３ａ，５４ａが関連づけられている。再現用リンク５２ａ，５３ａ，５４ａは、対応するページクラスを再現するための代表的なリンク識別情報である。
【００６０】
また、初期ノード以外の各ページクラス５２〜５４には、そのページクラスに属するページを取得した際に使用したリンク識別情報５２ｂ，５３ｂ，５３ｃ，５４ｂが関連づけられている。
【００６１】
本実施の形態では、差分操作適用後のリクエストも更なる操作の元となるリンクとして扱えるようにするため、特開２００６−５８９６６号公報で示されたリンク識別情報を拡張し、「リンク元ページクラスＩＤ」、「リンクＵＲＬ」、「差分操作データ群」の組でリンク識別情報を表現している。このうち、リンク元ページクラスＩＤとリンクＵＲＬとからデフォルトリクエストが生成され、差分操作データ群と共に差分操作適用部に入力される。
【００６２】
ページクラス５１のページクラスＩＤは「０」である。ページクラス５１は、初期ノードであり、属するＷｅｂページの情報が空（blank）となっている。初期ノードは、Ｗｅｂページのリンク関係を辿る際の起点を示している。初期ノードは、ユーザによる対話型の操作におけるＷｅｂページを読み込む前のＷｅｂブラウザの状態に相当する。
【００６３】
ページクラス５２のページクラスＩＤは「１」である。ページクラス５２には、初期ノードから直接読み出されるＷｅｂページが属している。たとえば、Ｗｅｂサーバ２１内のトップページがページクラス５２に属する。ページクラス５２の再現用リンク５２ａは”(0,(GET,http://example.com/top,-),[])”である。再現用リンク５２ａの先頭に示されている「０」は、リンク元となるページクラス５１のページクラスＩＤである。
【００６４】
ページクラスＩＤに続く括弧内の記載”(GET,http://example.com/top)が、リンクＵＲＬである。リンクＵＲＬ内の”ＧＥＴ”の文字は、リンクの種類に対応するリクエストのメソッド属性である＜リクエストメソッド＞を示している。”ＧＥＴ”は、Ｗｅｂページ取得のリクエストであることを示している。種別に続けて、ＵＲＬ”http://example.com/top”が示されている。ＵＲＬの後にはフォームデータの設定フィールドであるが、この例ではフォームデータが設定されていないため空欄の記号”-”が設定されている。最後の”［］”は、差分操作データの設定フィールドを示している。この例では、再現用リンク５２ａの内容が、そのままリンク識別情報５２ｂ”(0,(GET,http://example.com/top,-),[])”となる。
【００６５】
ページクラス５３のページクラスＩＤは「２」である。ページクラス５３には、ページクラス５２からのリクエストに応じてＨＴＴＰレスポンスとして返されるＷｅｂページが属している。ページクラス５３の再現用リンク５３ａは”(1,(POST,http://example.com/dynamic,control=123&data=1),[])”である。再現用リンク５３ａの先頭に示されている「１」は、リンク元となるページクラス５２のページクラスＩＤである。次の”ＰＯＳＴ”の文字は、リクエストの種別を示している。”ＰＯＳＴ”は、Ｗｅｂページに対するデータ設定のリクエストであることを示している。種別に続けて、ＵＲＬ”http://example.com/dynamic”が示されている。また、”control=123&data=1”によって、パラメータが設定されている。
【００６６】
この例では、ページクラス５２を表示するＷｅｂブラウザからページクラス５３にアクセスするためリクエストデータには、差分操作データを適用しない場合と差分操作データを適用した場合とがある。そこで、ページクラス５３に対応するリンク識別情報５３ｂ，５３ｃとして、”(1,(POST,http://example.com/dynamic, control=123&data=1),[])”と”(1,(POST,http://example.com/dynamic, control=213&data=1),[From,変更,data,1,2])”が設定されている。
【００６７】
図６に示したページ間のリンク関係を示す情報はリンク識別・ページ再現部１３１が管理する記憶装置内で記憶されている。すなわち、リンク識別・ページ再現部１３１は、ページクラスＩＤに対応付けて、再現用リンクと、そのページクラスに対するリンク識別情報とを記憶している。
【００６８】
リンク識別情報に設定されている”[From,変更,data,1,2]”が差分操作データである。差分操作データは、＜対象＞、＜種類＞、＜名前＞、＜順序＞、＜変更値＞というデータ配列となっている。
【００６９】
＜対象＞フィールドは、リンク識別情報中の変更対象となるデータを特定する情報を示している。本実施の形態では、＜対象＞フィールドに、「Method」、「URL」、「Form」、「Query」、「Cookie」、「Referer」、「Header」が設定できる。なお、これらの対象の中には差分操作方法に制限がある対象もある。たとえば、「Method」、「URL」、「Referer」については操作の種類として「全体変更」のみに制限される。
【００７０】
＜種類＞フィールドは、変更処理の種類を示している。種類には、「追加」、「変更」、「削除」、「全て削除」、「全体変更」がある。「追加」は、パラメータを追加することを示す。「変更」は、所定のパラメータの値を変更することを示す。「削除」は、所定のパラメータを削除することを示す。「全て削除」は、全てのパラメータを削除することを示す。「全体変更」は、全体変更のみに制限した変更であることを示す。
【００７１】
＜名前＞フィールドは、変更対象となるパラメータの名称である。＜順序＞フィールドは、変更対象のパラメータが同一名称のパラメータ中の前から何番目のパラメータなのかを示している。＜変更値＞フィールドは、変更対象のパラメータの変更後の値を示している。
【００７２】
たとえば”[From,変更,data,1,2]”という差分操作データは、フォームデータとして設定された名前が「data」の１つ目のパラメータの値を「２」に変更することを示している。
【００７３】
ページクラス５４のページクラスＩＤは「３」である。ページクラス５４には、ページクラス５２からのリクエストに応じてＨＴＴＰレスポンスとして返されるＷｅｂページが属している。ページクラス５４の再現用リンクは”(1,(GET,http://example.com/static, -),[])”である。ページクラス５３に対応するリンク識別情報も同様に”(1,(GET,http://example.com/static, -),[])”である。
【００７４】
このようなページクラスとリンク識別情報とがリンク識別・ページ再現部１３１によって生成され、ページクラス情報としてリンク識別・ページ再現部１３１が記憶している。そして、リンク識別・ページ再現部１３１は、ページクラス情報からリンク識別情報を抽出してリンク識別情報群３４とし、リンク識別情報記憶部１５０に格納する。
【００７５】
図７は、リンク識別情報記憶部に格納されたリンク識別情報群を示す図である。図７に示すように、リンク識別情報記憶部１５０には、リンク識別情報群３４が格納される。
リンク識別情報記憶部１５０には、たとえばＷｅｂサイト毎のリンク識別情報群が格納される。そして、Ｗｅｂページのテストを行う際には、テスト対象となるＷｅｂページが属するページクラスに関するリンク識別情報を含むリンク識別情報群がユーザによって指定され、テスト入力部１２０によって取り出される。
【００７６】
Ｗｅｂページのテストを行う際には、ユーザは、テスト定義解析部１１０に対してテスト定義３１を入力する。
図８は、テスト定義の例を示す図である。このテスト定義３１は、既知の各リンク識別情報について、「各「Form」（<target>タグで指定されている）のパラメータに値「ID＿STRING」（<input＿value>タグで指定されている）を設定したテストリクエストを送信し、そのレスポンスに「ID＿STRING」（<finding＿value>タグで指定されている）が含まれているものを正しいテスト結果（リンク識別情報、差分操作データ群、リクエスト・レスポンスなど）として出力せよ」ということを意味している。
【００７７】
テスト定義解析部１１０は、入力されたテスト定義３１をテスト入力規則定義３２と結果判定規則定義３３にわける。具体的には、テスト定義解析部１１０は、図８の<target>タグと<input＿value>タグとの情報をテスト定義３１から抽出し、テスト入力規則定義３２としてテスト入力部１２０に入力する。また、テスト定義解析部１１０は、図８の<finding＿value>タグの情報をテスト定義３１から抽出し、結果判定規則定義３３としてテスト結果判定部１４０に入力する。
【００７８】
このように、テスト定義３１がテスト定義解析部１１０に入力されることで、テスト定義３１の解析結果であるテスト入力規則定義３２および結果判定規則定義３３がそれぞれテスト入力部１２０およびテスト結果判定部１４０に入力される。
【００７９】
また、ユーザは、テスト入力部１２０に対して、テスト対象となるページクラスの指定、およびそのページクラスへのリンク識別情報を含むリンク識別情報群３４の指定を行う。すると、テスト入力部１２０が、指定されたリンク識別情報群３４をリンク識別情報記憶部１５０から抽出する。そして、テスト入力部１２０は、テスト入力規則定義３２とリンク識別情報群３４とに基づいて、リンク指定３５と差分操作データ群３６とを生成する。
【００８０】
図９は、テスト入力部の処理手順を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］テスト入力部１２０は、指定された既知のリンク識別情報群３４とテスト入力規則定義３２とを取得する。
【００８１】
［ステップＳ１２］テスト入力部１２０は、テスト入力規則定義３２から＜対象＞と＜変更値＞とを取得する。図８の例では、<target>タグで＜対象＞が指定され、<input＿value>タグで＜変更値＞が指定されている。
【００８２】
［ステップＳ１３］テスト入力部１２０は、リンク識別情報群３４に含まれるリンク識別情報毎に、ステップＳ１４からステップＳ２２の処理を実行する。
［ステップＳ１４］テスト入力部１２０は、リンク識別情報から＜対象＞で指定されたデータである＜対象データ＞を取得する。
【００８３】
［ステップＳ１５］テスト入力部１２０は、＜対象＞が「全体操作」のみに制限されているか否かを判断する。すなわち、テスト定義３１における＜対象＞の指定内容として、「全体操作」のみに制限することを示す情報が設定されているか否かを判断する。たとえば、「全体操作」のみに制限される対象のリストが予め登録されており、＜対象＞フィールドの内容がリストに含まれている場合、「全体操作」のみに制限されるものと判断される。「全体操作」のみに制限されている場合、処理がステップＳ１６に進められる。「全体操作」のみに制限されていない場合、処理がステップＳ１８に進められる。
【００８４】
［ステップＳ１６］テスト入力部１２０は、＜対象データ＞に対する差分操作データ（＜対象＞、全体変更、−，−，＜変更値＞）を作成する。なお、全体変更の場合、＜変更値＞に全体の変更内容が設定される。そのため、変更対象のパラメータを特定するための情報は不要であり、＜名前＞や＜順序＞は空欄（”−”の記号で示されている）となる。
【００８５】
［ステップＳ１７］テスト入力部１２０は、処理対象としたリンク識別情報をリンク指定３５としてリンク識別・ページ再現部１３１に対して出力すると共に、ステップＳ１６で生成した差分操作データを差分操作データ群３６として差分操作適用部１３２に対して出力する。その後、処理がステップＳ２３に進められる。
【００８６】
［ステップＳ１８］テスト入力部１２０は、＜対象データ＞のパラメータ毎に、ステップＳ１９〜ステップＳ２１の処理を行う。
［ステップＳ１９］テスト入力部１２０は、パラメータの＜名前＞を取得し、そのパラメータの＜順序＞（同じ名前のパラメータの配列上の何番目か）を判断する。
【００８７】
［ステップＳ２０］テスト入力部１２０は、＜対象データ＞に対する差分操作データ（＜対象＞、＜変更＞、＜名前＞、＜順序＞、＜変更値＞）を作成する。
［ステップＳ２１］テスト入力部１２０は、処理対象としたリンク識別情報をリンク指定３５としてリンク識別・ページ再現部１３１に対して出力すると共に、ステップＳ２０で生成した差分操作データを差分操作データ群３６として差分操作適用部１３２に対して出力する。その後、処理がステップＳ２２に進められる。
【００８８】
［ステップＳ２２］テスト入力部１２０は、対象データの全てのパラメータに対してステップＳ１９〜Ｓ２１の処理が終了したら、処理をステップＳ２３に進める。
［ステップＳ２３］テスト入力部１２０は、全てのリンク識別情報に対してステップＳ１４〜Ｓ２２の処理が終了したら、処理を終了する。
【００８９】
以上の処理により、リンク識別情報に対応するリンク指定３５と差分操作データ群３６との組がテスト入力部１２０から出力される。対象データに複数のパラメータが含まれている場合、パラメータの数だけリンク指定３５と差分操作データ群３６との組が出力される。
【００９０】
次に、リンク指定３５を受け取ったリンク識別・ページ再現部１３１のデフォルトリクエスト生成処理について説明する。
図１０は、デフォルトリクエスト生成処理手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００９１】
［ステップＳ３１］リンク識別・ページ再現部１３１は、入力されたリンク指定３５からリンク識別情報を取得する。
［ステップＳ３２］リンク識別・ページ再現部１３１は、取得したリンク識別情報を解析し、＜リンク元ページクラスＩＤ＞、＜リンクＵＲＬ＞、および＜差分操作データ群＞を取得する。
【００９２】
［ステップＳ３３］リンク識別・ページ再現部１３１は、＜リンク元ページクラスＩＤ＞に相当するノードが初期ノードか否かを判断する。初期ノードであれば、処理がステップＳ３４に進められる。初期ノードでなければ、処理がステップＳ３５に進められる。
【００９３】
［ステップＳ３４］リンク識別・ページ再現部１３１は、ステップＳ３２で取得した＜リンクＵＲＬ＞からＷｅｂページを取得するためのＨＴＴＰリクエストデータを作成する。その後、処理がステップＳ３９に進められる。
【００９４】
［ステップＳ３５］リンク識別・ページ再現部１３１は、＜リンク元ページクラスＩＤ＞に相当するページを再現する。この処理の詳細は後述する（図１１参照）。なお、ページが再現できずエラーが出力された場合、図１０に示す処理はエラー終了する。
【００９５】
［ステップＳ３６］リンク識別・ページ再現部１３１は、ステップＳ３５で再取得したレスポンスをパースし、含まれているリンク情報のリストを取得する。ここで「パース」とは、データを解析し、その中から必要なデータを抽出する処理である。
【００９６】
［ステップＳ３７］リンク識別・ページ再現部１３１は、ステップＳ３６で抽出したリンク情報のリストから、ステップＳ３２で取得した＜リンクＵＲＬ＞に相当するリンク情報を選択する。この処理の詳細は後述する（図１２参照）。
【００９７】
［ステップＳ３８］リンク識別・ページ再現部１３１は、選択したリンク情報に基づいて、そのリンク情報が選択されたときにＷｅｂブラウザで生成されるＨＴＴＰリクエストデータを作成する。
【００９８】
［ステップＳ３９］リンク識別・ページ再現部１３１は、作成したリクエストデータをデフォルトリクエスト４２とし、ステップＳ３２で取得した＜差分操作データ群＞を差分操作データ群４１として、差分操作適用部１３２に対して出力する。
【００９９】
図１１は、ページ再現処理の手順を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ４１］リンク識別・ページ再現部１３１は、＜リンク元ページクラスＩＤ＞で示されるクラスＩＤを、再現するページクラスＩＤとして取得する。
【０１００】
［ステップＳ４２］リンク識別・ページ再現部１３１は、取得したクラスＩＤに相当するページクラスを再現するのに使用するリンク識別データを取得する。たとえば、図６に示すように、リンク識別・ページ再現部１３１は各ページクラスに対応付けて、再現用リンクを予めページクラス情報として保持している。そこで、リンク識別・ページ再現部１３１は、予め記憶しているページクラス情報から、再現するページクラスＩＤに対応付けられた再現用リンクを取得する。
【０１０１】
［ステップＳ４３］リンク識別・ページ再現部１３１は、再現用リンクに対応するＷｅｂページの取得要求を示すデフォルトリクエストを生成する。具体的には、リンク識別・ページ再現部１３１は、再現用リンクを新たな入力として、図１０に示すデフォルトリクエスト生成処理を再帰的に実行する。
【０１０２】
［ステップＳ４４］リンク識別・ページ再現部１３１は、ＨＴＴＰ通信部１３３を介してデフォルトリクエストを送信し、そのリクエストに対するレスポンスを取得する。
［ステップＳ４５］リンク識別・ページ再現部１３１は、レスポンスで取得したデータによって、ページが再現されたか（取得したデータが再現すべきページクラスに分類されたか）否かを判断する。具体的には、リンク識別・ページ再現部１３１には、各ページクラスに分類するための条件が定義されており、取得したデータが再現すべきページクラスに分類するための条件に合致するか否かによって、再現性の有無が判断される。正しく再現された場合、処理がステップＳ４６に進められる。再現できなかった場合、処理がステップＳ４７に進められる。
【０１０３】
［ステップＳ４６］リンク識別・ページ再現部１３１は、レスポンスを再現結果として出力する。その後、ページ再現処理が終了する。
［ステップＳ４７］リンク識別・ページ再現部１３１は、再現できなかった旨のエラーを出力し、ページ再現処理を終了する。
【０１０４】
図１２は、リンク選択処理の手順を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
［ステップＳ５１］リンク識別・ページ再現部１３１は、再現されたページから抽出されたリンクのリストと＜リンクＵＲＬ＞とを取得する。
【０１０５】
［ステップＳ５２］リンク識別・ページ再現部１３１は、＜リンクＵＲＬ＞から、＜リクエストメソッド＞、＜ＵＲＬ＞、＜フォームデータ＞を取得する。
［ステップＳ５３］リンク識別・ページ再現部１３１は、リンクのリストの中から、ステップＳ５２で取得した＜リクエストメソッド＞に一致しないリンクをリストから排除する。たとえば、＜リクエストメソッド＞が”ＧＥＴ”であれば、”ＧＥＴ”以外の”ＰＯＳＴ”などのメソッドが削除される。
【０１０６】
［ステップＳ５４］リンク識別・ページ再現部１３１は、ステップＳ５２で取得した＜ＵＲＬ＞、＜フォームデータ＞に対してパラメータの順序は問わず一致するリンクが、リンクのリスト中にあるか否かを判断する。なお、＜フォームデータ＞内のパラメータの値は一致していることが必要である。一致するリンクがあれば、処理がステップＳ５６に進められる。一致するリンクがなければ、処理がステップＳ５５に進められる。
【０１０７】
［ステップＳ５５］リンク識別・ページ再現部１３１は、ステップＳ５２で取得した＜ＵＲＬ＞、＜フォームデータ＞に対してパラメータの順序と値は問わず一致するリンクが、リンクのリスト中にあるか否かを判断する。一致するリンクがあれば、処理がステップＳ５６に進められる。一致するリンクがなければ、処理がステップＳ５７に進められる。
【０１０８】
［ステップＳ５６］リンク識別・ページ再現部１３１は、一致したリンクを選択リンクとして出力する。その後、リンク選択処理が終了する。
［ステップＳ５７］リンク識別・ページ再現部１３１は、再現できなかった旨のエラーを出力する。その後、リンク選択処理が終了する。
【０１０９】
以上のようにして、リンク識別・ページ再現部１３１から差分操作データ群４１とデフォルトリクエスト４２とが出力される。たとえば、図７に示すリンク識別情報群３４がテスト入力部１２０に入力され、ページクラスＩＤ「２」のページクラス５３（図６参照）の再現を試みるリンク(1,(POST,http://example.com/dynamic, control=123&data=1),[])をリンク指定３５として入力された場合、以下のような手順でデフォルトリクエストが生成される。
【０１１０】
入力されたリンク指定３５は初期ノード（ＩＤ「０」）ではないので、図１０のステップＳ３３の条件分岐においてＮＯと判断される。図１１の処理に移行する。入力されたリンク指定３５の＜リンク元ページクラスＩＤ＞は「１」であるため、ページクラスＩＤ「１」のページクラス５２（図６参照）を再現するための再現用リンク(0,(GET,http://example.com/top, -),[])がステップＳ４２で取得される。そして、ステップＳ４３において、ページクラス５２の再現用リンクを処理対象のリンク識別情報として、図１０の処理が行われる。すると、ページクラス５２の再現用リンク(0,(GET,http://example.com/top, -),[])は＜リンク元ページクラスＩＤ＞が初期ノード（ページクラスＩＤ「０」）であるため、ステップＳ３３においてＹＥＳと判定される。その結果、ステップＳ３４において「http://example.com/top」を要求するＧＥＴメソッドのＨＴＴＰリクエストデータがデフォルトリクエストとして生成される。生成されたデフォルトリクエストは、処理の呼び出し元である図１１のステップＳ４３における処理結果となる。
【０１１１】
次に、ステップＳ４４において、生成されたデフォルトリクエストがネットワーク１０上に送信され、レスポンスが取得される。
図１３は、リクエストに対するレスポンスの例を示す図である。図１３に示すように、レスポンスとしてＨＴＴＰ文書６１が得られる。このＨＴＴＰ文書６１からリンクのリストが生成される。
【０１１２】
図１３の例では、<form>、</form>タグ内の記載がリンクを表している。なお、<input type="radio" name="data" value="1" checked>との記載から、ラジオボタンによる選択によって"data"の値として"1"が選択されていることが分かる。また、<a href="static">problem?</a>のアンカータグによって、リンクが設定されている。
【０１１３】
ここで、レスポンスとしてページクラスＩＤ「１」に属するページが正しく再現された場合、ステップＳ４６において、そのページが再現結果として出力される。次に、処理が図１０のステップＳ３６に進められ、再現されたページがパースされ、そのページに含まれているリンクのリストが取得される。
【０１１４】
図１４は、レスポンスに含まれるリンクのリストを示す図である。リスト６２には、ＰＯＳＴメソッドのリンクとＧＥＴメソッドのリンクとが含まれている。ＰＯＳＴメソッドのリンクは、ＨＴＴＰ文書６１の、<form>、</form>タグ内の記載に基づくリンクＵＲＬである。また、ＧＥＴメソッドは、ＨＴＴＰ文書６１の<a href="static">problem?</a>の記載に基づくリンクＵＲＬである。
【０１１５】
さらに、取得されたリンクのリスト６２から、図１２に示す処理に基づいて、リンクが選択される。図１４のようなリスト６２の場合、再現用リンク(1,(POST,http://example.com/dynamic, control=123&data=1),[])と、リスト６２内の各リンクＵＲＬとが比較される。すると、(POST,http://example.com/dynamic, control=123&data=1）というリンクＵＲＬが、＜ＵＲＬ＞と一致し、＜フォームデータ＞内のパラメータの順序と値は問わず一致するか（図１２のステップＳ５５）の判断でＹＥＳとなり、このリンクが選択される。
【０１１６】
リンクが選択されると、図１０のステップＳ３８において、ＨＴＴＰリクエストデータが生成される。
図１５は、リクエストデータの例を示す図である。ＨＴＴＰリクエストデータ６３には、所定のＷｅｂブラウザ上でリンクが選択されたときに、そのＷｅｂブラウザから出力される内容が設定されている。すなわち、リンクが選択されたときにＷｅｂブラウザが実行する処理をシミュレートすることで、ＨＴＴＰリクエストデータ６３が生成される。
【０１１７】
生成されたＨＴＴＰリクエストデータ６３は、デフォルトリクエスト４２として差分操作適用部１３２に渡される。なお、デフォルトリクエスト４２を生成する際にリンク指定３５として入力されたのは、(1,(POST,http://example.com/dynamic, control=123&data=1),[])というリンクである。このリンクには、差分操作データ群が設定されていない。そのため、図１５に示したＨＴＴＰリクエストデータ６３がデフォルトリクエスト４２としてリンク識別・ページ再現部１３１から出力される際には、差分操作データ群４１は出力されない。
【０１１８】
ここで、リンク指定３５として、リンク識別情報群３４内の(1,(POST,http://example.com/dynamic,control=213&data=1),[From,変更,data,1,2])というリンク識別情報が入力された場合、図１５に示したＨＴＴＰリクエストデータ６３と同じ内容のリクエストデータが生成される。そして、[From,変更,data,1,2]という差分操作データ群がリンク識別情報に含まれているため、[From,変更,data,1,2]がリンク識別・ページ再現部１３１から出力される差分操作データ群４１となる。
【０１１９】
なお、(1,(POST,http://example.com/dynamic,control=213&data=1),[From,変更,data,1,2])というリンク識別情報は、図１３に示したＨＴＴＰ文書６１における<form>、</form>タグ内の記載において、<input type="radio" name="data" value="2">で定義されたラジオボタンが選択された場合のリンクを示している。
【０１２０】
図１４に示すリスト６２から(POST,http://example.com/dynamic, control=123&data=1）が選択され、図１５に示すＨＴＴＰリクエストデータ６３が生成された場合、ＨＴＴＰリクエストデータ６３がデフォルトリクエスト４２として差分操作適用部１３２に渡される。また、生成元となったリンクＵＲＬ４３(POST,http://example.com/dynamic, control=123&data=1）も同様に、差分操作適用部１３２に渡される。
【０１２１】
すると、差分操作適用部１３２において、デフォルトリクエスト４２の中から、差分操作データ群３６，４１に従って差分操作の対象が判断される。対象が「Method」であれば、ＨＴＴＰリクエストデータ６３の一行目の最初の記述（図１５の例では、「ＰＯＳＴ」）が対象として特定される。また、対象が「URL」であれば、ＨＴＴＰリクエストデータ６３の一行目のメソッドに続く記述（図１５の例では、「http://example.com/dynamic」）が対象として特定される。対象が「Form」であれば、リンクＵＲＬ４３(POST,http://example.com/dynamic, control=123&data=1）のフォームデータ（control=123&data=1）に対応するＨＴＴＰリクエストデータ６３内の記述（図１５の例では、９行目の「control=123&data=1」）が対象として特定される。対象が「Query」であれば、ＨＴＴＰリクエストデータ６３の一行目に示されたＵＲＬの記述内の「？」以降の記述（図１５の例ではクエリは設定されていない）が対象として特定される。対象が「Cookie」であれば、ＨＴＴＰリクエストデータ６３内の「Cookie」で始まる行の記載（図１５の例ではクッキーは設定されていない）が対象として特定される。対象が「Referer」であれば、ＨＴＴＰリクエストデータ６３内の「Referer」で始まる行の記載（図１５の例では４行目）が対象として特定される。対象が「Header」であれば、ＨＴＴＰリクエストデータ６３内の「Content-Length」や「Content-Type」などのフィールド名で示されたヘッダフィールドの行の記載が対象として特定される。
【０１２２】
次に、差分操作適用部１３２における差分操作適用処理について説明する。ここで、差分操作適用処理の代表的な処理として、対象としてクエリが指定された場合の処理を説明する。
【０１２３】
図１６は、差分操作適用処理の手順を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］差分操作適用部１３２は、入力されたデフォルトリクエスト４２と差分操作データ群３６，４１とを取得する。
【０１２４】
［ステップＳ６２］差分操作適用部１３２は、取得した差分操作データ毎にステップＳ６３〜Ｓ７２の処理を行う。
［ステップＳ６３］差分操作適用部１３２は、差分操作データから＜種類＞、＜名前＞、＜順序＞、＜値＞の各フィールドに設定されたデータを取得する。
【０１２５】
［ステップＳ６４］差分操作適用部１３２は、＜種類＞フィールドのデータが「追加」か否かを判断する。「追加」であれば処理がステップＳ６５に進められる。「追加」でなければ処理がステップＳ６６に進められる。
【０１２６】
［ステップＳ６５］差分操作適用部１３２は、デフォルトリクエストのクエリの末尾に、ステップＳ６３で取得した＜名前＞フィールドに示された名前のクエリパラメータを追加する。その際、差分操作適用部１３２は、追加したクエリパラメータには、ステップＳ６３で取得した＜値＞フィールドに示された値を設定する。その後、処理がステップＳ７３に進められる。
【０１２７】
［ステップＳ６６］差分操作適用部１３２は、＜種類＞フィールドのデータが「変更」か否かを判断する。「変更」であれば処理がステップＳ６７に進められる。「変更」でなければ処理がステップＳ６８に進められる。
【０１２８】
［ステップＳ６７］差分操作適用部１３２は、デフォルトリクエストのクエリからステップＳ６３で取得した＜名前＞フィールドに示された名前と同じ名前のクエリパラメータを抽出する。次に、差分操作適用部１３２は、抽出したクエリパラメータのうちステップＳ６３で取得した＜順番＞フィールドに示される順番となるクエリパラメータを選択する。そして、差分操作適用部１３２は、選択したクエリパラメータの値に、ステップＳ６３で取得した＜値＞フィールドのデータを設定する。その後、処理がステップＳ７３に進められる。
【０１２９】
［ステップＳ６８］差分操作適用部１３２は、＜種類＞フィールドのデータが「削除」か否かを判断する。「削除」であれば処理がステップＳ６９に進められる。「削除」でなければ処理がステップＳ７０に進められる。
【０１３０】
［ステップＳ６９］差分操作適用部１３２は、デフォルトリクエストのクエリからステップＳ６３で取得した＜名前＞フィールドに示された名前と同じ名前のクエリパラメータを抽出する。次に、差分操作適用部１３２は、抽出したクエリパラメータのうちステップＳ６３で取得した＜順番＞フィールドに示される順番となるパラメータを選択する。そして、差分操作適用部１３２は、選択したクエリパラメータを削除する。その後、処理がステップＳ７３に進められる。
【０１３１】
［ステップＳ７０］差分操作適用部１３２は、＜種類＞フィールドのデータが「全て削除」か否かを判断する。「全て削除」であれば処理がステップＳ７１に進められる。「全て削除」でなければ処理がステップＳ７２に進められる。なお、ステップＳ７０でＮＯと判断される場合とは、＜種類＞フィールドのデータが「全て変更」の場合である。
【０１３２】
［ステップＳ７１］差分操作適用部１３２は、デフォルトリクエストのクエリパラメータを全て削除する。その後、処理がステップＳ７３に進められる。
［ステップＳ７２］差分操作適用部１３２は、デフォルトリクエストのクエリに含まれる全てのクエリパラメータの値を、ステップＳ６３で取得した＜値＞フィールドに設定されていた値に変更する。その後、処理がステップＳ７３に進められる。
【０１３３】
［ステップＳ７３］差分操作適用部１３２は、全ての差分操作データに対してステップＳ６３〜Ｓ７２の処理が完了したら、処理をステップＳ７４に進める。
［ステップＳ７４］差分操作適用部１３２は、差分情報反映後のデフォルトリクエストを、ＨＴＴＰ通信部１３３を介してＷｅｂサーバ２１に送信し、その応答をＨＴＴＰレスポンス３７としてテスト結果判定部１４０に出力する。
【０１３４】
このようにして、デフォルトリクエストに対して差分操作処理を行うことができる。なお、本実施の形態では、リンク識別・ページ再現部１３１によって提供される差分操作データ群４１を優先的に適用し、その後にテスト入力部１２０によって提供される差分操作データ群３６を適用するものとする。
【０１３５】
なお、図１６の処理は、差分操作の対象がクエリ「Query」の場合の処理であるが、他の対象でも同じような処理で差分操作を適用できる。対象が「Form」であれば、クエリパラメータを、フォームデータのパラメータに置き換えればよい。
【０１３６】
なお、操作の種類に制限がある対象もある。たとえば、「Method」、「URL」、「Referer」については操作の種類として「全体変更」のみに制限される。その場合、図１６に示すフローチャート中のステップＳ６４，Ｓ６６，Ｓ６８は、必ずＮＯに遷移する。
【０１３７】
また、「Header」が対象の場合には、図１６のフローチャートの説明における「クエリ」を「ヘッダ」に、「クエリパラメータ」を「ヘッダフィールド」に変更することで適用できる。
【０１３８】
また、本実施の形態では差分操作データ群について、対象の種別に応じた適用する順番が決定される。すなわち、「Method」、「URL」、「Form」、「Query」、「Cookie」、「Referer」、「Header」の順で差分操作データを選択し、順次適用される。この順序は主に分かりやすさを考慮して決定されている。
【０１３９】
ところで、テスト入力部１２０は、手動操作によって差分操作データ群３６を設定することもできる。たとえば、テスト入力部１２０は、ユーザからの操作入力により、リンク識別情報群３４内の任意のリンク識別情報が選択されると、差分操作メイン画面を表示する。
【０１４０】
図１７は、差分操作メイン画面を示す図である。差分操作メイン画面７０は、差分操作適用部１３２が提供する手動入力用のＧＵＩの一つであり、選択したリンク識別情報に対する差分操作の概要を表示するものである。
【０１４１】
差分操作メイン画面７０には、「Method：」などの操作対象７１が表示されている。各操作対象７１には、操作内容が全体操作か部分操作群かを示す種類毎に、その差分操作を行うか否かを指定するためのチェックボックス７２が対応付けられている。種類「全体操作」は、全体変更の差分操作データが設定されていることを示す。種類「部分操作群」は、全体変更以外の差分操作データ群が設定されていることを示す。チェックボックス７２がユーザの操作入力によって選択されると、チェックボックス７２内にチェックのマークが表示される。
【０１４２】
各操作項目（全体操作または部分操作群）に対応付けて、テキストボックス７３が設けられている。テキストボックス７３内には、操作入力によって、差分操作における変更後の内容が設定できる。なお、各テキストボックス７３には、選択されたリンク識別情報に対応する値が各項目の初期値として表示されている。
【０１４３】
また、「Form:」などの操作対象に対応付けて、詳細ボタン７４が設けられている。詳細ボタン７４が押下されると、詳細編集画面が表示される。
「操作済みリクエストを送信する」と表記された確定ボタン７５は、差分操作を適用したリクエストの送信を指示するためのボタンである。確定ボタン７５が押下されると、差分操作メイン画面７０において設定された差分操作を適用したリクエストが、ネットワーク１０を介してＷｅｂサーバに送信される。すなわち、確定ボタン７５がクリックされると、テスト入力部１２０により、表示中の差分操作データ群が、選択したリンク識別情報とともにＷｅｂページ取得部１３０に入力される。そして差分操作適用部１３２によって、デフォルトリクエスト４２に対して、差分操作データが上から順に（Method全体操作→URL全体操作→Form全体操作→Form部分操作→・・・）適用されていく。
【０１４４】
「送信直前に送信元ノードを再現する」と表記されたチェックボックス７６は、送信元ノードの再現を指示するためのチェックボックスである。チェックボックス７６が選択された状態で確定ボタン７５が押下されると、リンク識別・ページ再現部１３１によって、送信すべきリクエストの送信元となるクラスの再現処理が行われた後、差分操作を適用したリクエストが送信される。
【０１４５】
なお、「Form」はＨＴＭＬのフォームにより指定されているデータである。「Query」はＵＲＬの一部（”?”以降のクエリパラメータ）として指定されているデータである。
次に、詳細編集画面について説明する。
【０１４６】
図１８は、詳細編集画面を示す図である。これは、「Form」の対応する詳細ボタンが押下されたときに表示される詳細編集画面８０である。詳細編集画面８０の左上には、「予想される初期値」と表記された初期値表示部８１が設けられている。初期値表示部８１には、選択したリンク識別情報から取得したFormのパラメータが表示される。
【０１４７】
初期値表示部８１の下には、「操作群適用後の値」と表記された差分操作結果表示部８２が設けられている。差分操作結果表示部８２には、「予想される初期値」に対して操作領域８３で設定された差分操作データが適用された後の値が、適用値表示部８２ａに表示される。さらにその下の「上記をパースしたもの」と表記されたパース結果表示部８２ｂは、差分操作適用後のパラメータを見やすいようにパラメータをパースして表形式で表示したものである。
【０１４８】
詳細編集画面８０右側の「操作群」と表記された操作領域８３は、差分操作を設定するための入力領域である。操作領域には、全体操作チェックボックス８３ａが設けられている。全体操作チェックボックス８３ａは、種類が全体変更の差分操作を行う際にチェックされる。全体操作チェックボックス８３ａが選択されたときは、全体操作入力部８３ｂに、変更後のFromパラメータの内容が設定される。
【０１４９】
部分操作群を適用する場合、ユーザは、全体操作チェックボックス８３ａは選択せずに、「部分操作群」と表記されたパラメータ入力部８３ｃに、変更後のパラメータの内容を設定する。パラメータ入力部８３ｃには、「順序」、「名前」、「対象」、および「値」の欄が設けられている。これらの欄の横方向に並べられたデータ同士が関連づけられ、１つの差分操作データを示している。
【０１５０】
「順序」の欄には、差分操作の適用順を示している。同じ名前のパラメータの中の何番目のパラメータを変更対象とするのかが設定される。「名前」の欄には、対象とするパラメータの名前が設定される。「対象」の欄には、同じ名前のパラメータの中の何番目のパラメータを変更対象とするのかが設定される。「値」の欄には、パラメータの差分操作適用後の値が設定される。
【０１５１】
「新しい操作を追加」と表記された追加ボタン８３ｄは、新しい差分操作データを追加するためのボタンである。追加ボタン８３ｄが押下されると、部分操作入力画面が表示され、その部分操作入力画面に入力された差分操作データが、パラメータ入力部８３ｃの新たな行に追加される。
【０１５２】
「選択された全操作（群）を上に移動」と表記された移動ボタン８３ｅは、選択された差分操作データの行を上に移動させるためのボタンである。「選択された全操作（群）を削除」と表記されたボタン８３ｆは、選択された差分操作データの行を削除するためのボタンである。「選択された全操作（群）を下に移動」と表記された移動ボタン８３ｇは、選択された差分操作データの行を下に移動させるためのボタンである。
【０１５３】
詳細編集画面８０の下部には、ＯＫボタン８４とCancelボタン８５が設けられている。ＯＫボタン８４が押下されると、詳細編集画面８０に入力された内容が確定し、差分操作メイン画面７０に反映される。Cancelボタン８５が押下されると、詳細編集画面８０内容が差分操作メイン画面７０に反映されることなく、詳細編集画面８０が閉じる。
【０１５４】
図１８の例では、＜種類＞変更、＜名前＞data、＜順序＞1、＜値＞0という一つの部分操作が、差分操作データとして設定されている。すると、図１６に示した処理と同様の処理手順によって「予想される初期値」から「操作群適用後の値」がテスト入力部１２０で計算され、差分操作結果表示部８２に表示されている。ここで、差分操作結果表示部８２において、変更された部分を強調表示してもよい（たとえば、他の文字が黒字の場合、変更された部分を赤字で表示する）。
【０１５５】
また、図１８左上には「URLデコードして表示」と表記されたチェックボックス８６が設けられている。このチェックボックス８６は、文字符号化方式を指定するためのものである。チェックボックス８６が選択された場合、テキストボックス８７で指定された文字符号化方式でデコードした後の各データが表示される。
【０１５６】
なお、図１８には「From」の詳細編集画面８０を示したが、「Form」以外の項目についても図１８に示したものとほぼ同様の詳細編集画面で編集が行われる。ただし、「Method」などには「全体操作」しかない。また、「Cookie」などには「全体操作」は指定できない。さらに、「Cookie」の場合は一つの「Cookie」（NAME=VALUE）が操作単位となる。また、「Header」の場合は一つのフィールド行（”field-name” : ”field-value”）が操作単位となる。
【０１５７】
図１９は、部分操作入力画面を示す図である。この部分操作入力画面９０は、図１８の追加ボタン８３ｄが選択されたとき、またはパース結果表示部８２ｂの任意の行でダブルクリックされたときに表示される。
【０１５８】
部分操作入力画面９０は、部分操作追加用ＧＵＩである。部分操作入力画面９０には、操作の種別毎に、種別選択用のチェックボックス９１が設けられている。また、「名前」と表記されたテキストボックス９２には、変更対象のパラメータの名前が入力される。その下のテキストボックス９３には、変更対象のパラメータが、同じ名前のパラメータ中の何番目かが入力される。さらにその下のテキストボックス９４には、変更対象のパラメータの変更後の値が入力される。
【０１５９】
ＯＫボタン９５が押下されると、部分操作入力画面９０の設定内容が確定し、詳細編集画面８０に反映される。また、Cancelボタン９６が押下されると、部分操作入力画面９０への設定内容が反映されることなく、部分操作入力画面９０が閉じる。図１９の上部に表示されている「URLデコードして表示」は、文字符号化方式でデコードした状態で各データが表示されることを示している。
【０１６０】
ユーザは、部分操作入力画面９０で、差分操作データの＜種類＞フィールドに設定する種類に対応するチェックボックス９１を選択し、＜名前＞、＜順序＞、＜値＞を設定しＯＫボタン９５を押すことにより、詳細編集画面８０に新たな部分操作を追加できる。
【０１６１】
以上のように、本実施の形態によれば、ブラウザ経由では設定できない値をパラメータに設定したテスト用のリクエストを生成することができる。また、差分操作データを設定しておけば、バッチ処理によってテスト用のリクエストを生成することが可能となる。具体的には、テスト定義３１が入力されたテスト定義解析部１１０が、所定の時刻に達するのを待って、テスト入力規則定義３２と結果判定規則定義３３とを出力すればよい。その際、テスト入力部１２０には、予め処理対象のリンク識別情報群３４が指定さているものとする。
【０１６２】
しかも、リクエスト送信元のページを再現し、再現したページから生成したデフォルトリクエストに対して差分操作を適用するようにしたため、セッショントークンなどのセッション毎の値を操作せずにすむ。すなわち、ページ再現時のセッショントークンなどの値をそのまま使用することで、セッション毎の適切な値で送信できる。その結果、バッチ的処理によるテストも可能となる。
【０１６３】
さらに、本実施の形態では、差分操作データをパラメータ単位とし、１つのリクエストに対して複数の差分操作データを適用可能とした。これにより、柔軟な差分操作指定ができるようになっている。
【０１６４】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、テスト支援装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１６５】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１６６】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１６７】
ところで、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０１６８】
（付記１）  ネットワーク上のサーバで提供されるページのテストを支援するためのテスト支援プログラムにおいて、
コンピュータを、
テスト対象ページに対してリンクが張られたリンク元ページから前記テスト対象ページへのリンクを辿るために必要なリンク識別情報の入力を受け付けるリンク識別情報取得手段、
前記リンク識別情報取得手段に入力された前記リンク識別情報を記憶するリンク識別情報記憶手段、
デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データの入力を受け付ける差分操作データ取得手段、
前記差分操作データ取得手段に入力された前記差分操作データを記憶する差分操作データ記憶手段、
前記リンク識別情報記憶手段に記憶された前記リンク識別情報に基づいて前記テスト対象ページにアクセスするためのリクエストデータを生成し、生成した前記リクエストデータを前記デフォルトリクエストとして出力するデフォルトリクエスト生成手段、
前記デフォルトリクエスト生成手段から出力された前記デフォルトリクエストに対し、前記差分操作データ記憶手段に記憶された前記差分操作データで示される前記変更対象データに関する前記操作内容に従った編集操作を行い、テスト用リクエストを生成するテスト用リクエスト生成手段、
前記テスト用リクエスト生成手段で生成された前記テスト用リクエストを、前記ネットワークを介して送信するリクエスト送信手段、
として機能させることを特徴とするテスト支援プログラム。
【０１６９】
（付記２）  前記コンピュータを、さらに、
前記サーバで提供されるページ間のリンク関係が予め記憶されたリンク関係記憶手段、および前記リンク関係記憶手段を参照して前記リンク元ページを判断し、前記サーバにアクセスすることで前記リンク元ページを再現するリンク元ページ再現手段として機能させ、
前記デフォルトリクエスト生成手段は、入力された前記リンク識別情報に対応するリンク識別情報を、前記リンク元ページ再現手段で再現された前記リンク元ページから抽出し、抽出した前記リンク識別情報に基づいてリクエストデータを生成する、
ことを特徴とする付記１記載のテスト支援プログラム。
【０１７０】
（付記３）  前記デフォルトリクエスト生成手段は、前記リンク元ページ再現手段で再現された前記リンク元ページを解析し、前記リンク元ページから他のページへのリンクを示すリンク識別情報を抽出し、抽出した前記リンク識別情報の中から少なくとも含まれるパラメータの名前が共通の前記リンク識別情報を選択し、選択した前記リンク識別情報に基づいてリクエストデータを生成することを特徴とする付記２記載のテスト支援プログラム。
【０１７１】
（付記４）  前記テスト用リクエスト生成手段は、前記差分操作データにおいて変更対象のパラメータ名および変更後の値を指定したパラメータ変更指示が示されている場合、前記デフォルトリクエストから前記パラメータ名に該当するパラメータを検出し、検出したパラメータの値を指定された値に変更し、前記テスト用リクエストとすることを特徴とする付記１記載のテスト支援プログラム。
【０１７２】
（付記５）  コンピュータを、さらに、
操作対象データのデータ種別と操作対象データに設定する変更値とを含むテスト入力規則定義および前記リンク識別情報が入力されると、前記リンク識別情報から前記データ種別に該当するパラメータを抽出し、抽出したパラメータの値を前記変更値に変更することを示す前記差分操作データを生成し、生成した前記差分操作データを前記差分操作データ取得手段に対して出力するテスト入力手段として機能させることを特徴とする付記１記載のテスト支援プログラム。
【０１７３】
（付記６）  コンピュータを、さらに、
前記テスト用リクエストに対する応答が正しいか否かの判定基準が示された結果判定規則定義が予め入力されており、前記リクエスト送信手段から送信された前記テスト用リクエストに対する応答を取得し、応答内容の正否を前記結果判定規則定義に基づいて判定するテスト結果判定手段として機能させることを特徴とする付記１記載のテスト支援プログラム。
【０１７４】
（付記７）  コンピュータを、さらに、
操作対象データのデータ種別と操作対象データに設定する変更値とを含むテスト入力規則定義および前記リンク識別情報が入力されると、前記リンク識別情報から前記データ種別に該当するパラメータを抽出し、抽出したパラメータの値を前記変更値に変更することを示す前記差分操作データを生成し、生成した前記差分操作データを前記差分操作データ取得手段に対して出力するテスト入力手段、
前記テスト用リクエストに対する応答が正しいか否かの判定基準が示された結果判定規則定義が予め入力されており、前記リクエスト送信手段から送信された前記テスト用リクエストに対する応答を取得し、応答内容の正否を前記結果判定規則定義に基づいて判定するテスト結果判定手段、
前記テスト入力規則定義と前記結果判定規則定義とを含むテスト定義が入力されると、前記テスト定義から前記テスト入力規則定義を抽出して前記テスト入力手段に対して出力し、前記テスト定義から前記結果判定記憶定義を抽出して前記テスト結果判定手段に対して出力するテスト定義解析手段、
として機能させることを特徴とする付記１記載のテスト支援プログラム。
【０１７５】
（付記８）  前記テスト定義解析手段は、所定の時刻になったことを確認後、前記テスト入力規則定義と前記結果判定規則定義とをそれぞれ前記テスト入力手段と前記テスト結果判定手段とに対して出力することを特徴とする付記７記載のテスト支援プログラム。
【０１７６】
（付記９）  前記差分操作データ取得手段は、変更対象のパラメータの名前と同じ名前のパラメータ内での順番とを含む前記差分操作データの入力を受け付け、
前記テスト用リクエスト生成手段は、前記デフォルトリクエスト内の前記差分操作データで示された名前のパラメータのうち指定された順番のパラメータに対して編集を施すことを特徴とする付記１記載のテスト支援プログラム。
【０１７７】
（付記１０）  ネットワーク上のサーバで提供されるページのテストを支援するためのテスト支援装置において、
テスト対象ページに対してリンクが張られたリンク元ページから前記テスト対象ページへのリンクを辿るために必要なリンク識別情報の入力を受け付けるリンク識別情報取得手段と、
前記リンク識別情報取得手段に入力された前記リンク識別情報を記憶するリンク識別情報記憶手段と、
デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データの入力を受け付ける差分操作データ取得手段と、
前記差分操作データ取得手段に入力された前記差分操作データを記憶する差分操作データ記憶手段と、
前記リンク識別情報記憶手段に記憶された前記リンク識別情報に基づいて前記テスト対象ページにアクセスするためのリクエストデータを生成し、生成した前記リクエストデータを前記デフォルトリクエストとして出力するデフォルトリクエスト生成手段と、
前記デフォルトリクエスト生成手段から出力された前記デフォルトリクエストに対し、前記差分操作データ記憶手段に記憶された前記差分操作データで示される前記変更対象データに関する前記操作内容に従った編集操作を行い、テスト用リクエストを生成するテスト用リクエスト生成手段と、
前記テスト用リクエスト生成手段で生成された前記テスト用リクエストを、前記ネットワークを介して送信するリクエスト送信手段と、
を有することを特徴とするテスト支援装置。
【０１７８】
（付記１１）  ネットワーク上のサーバで提供されるページのテストを支援するためのテスト支援方法において、
リンク識別情報取得手段が、テスト対象ページに対してリンクが張られたリンク元ページから前記テスト対象ページへのリンクを辿るために必要なリンク識別情報の入力を受け付け、入力された前記リンク識別情報をリンク識別情報記憶手段に格納し、
差分操作データ取得手段が、デフォルトリクエスト内の変更対象データに対する操作内容を示す差分操作データの入力を受け付け、入力された前記差分操作データを差分操作データ記憶手段に格納し、
デフォルトリクエスト生成手段が、前記リンク識別情報記憶手段に記憶された前記リンク識別情報に基づいて前記テスト対象ページにアクセスするためのリクエストデータを生成し、生成した前記リクエストデータを前記デフォルトリクエストとして出力し、
テスト用リクエスト生成手段が、前記デフォルトリクエスト生成手段から出力された前記デフォルトリクエストに対し、前記差分操作データ記憶手段に記憶された前記差分操作データで示される前記変更対象データに関する前記操作内容に従った編集操作を行い、テスト用リクエストを生成し、
リクエスト送信手段が、前記テスト用リクエスト生成手段で生成された前記テスト用リクエストを、前記ネットワークを介して送信する、
ことを特徴とするテスト支援方法。
【図面の簡単な説明】
【０１７９】
【図１】本実施の形態の概略を示す図である。
【図２】本実施の形態のシステム構成例を示す図である。
【図３】本実施の形態に用いるコンピュータのハードウェア構成例を示す図である。
【図４】テスト支援装置の機能を示すブロック図である。
【図５】ＵＲＬとパラメータのデータ構造を示す図である。
【図６】ページクラスとリンク識別情報との関係を示す図である。
【図７】リンク識別情報記憶部に格納されたリンク識別情報群を示す図である。
【図８】テスト定義の例を示す図である。
【図９】テスト入力部の処理手順を示すフローチャートである。
【図１０】デフォルトリクエスト生成処理手順を示すフローチャートである。
【図１１】ページ再現処理の手順を示すフローチャートである。
【図１２】リンク選択処理の手順を示すフローチャートである。
【図１３】リクエストに対するレスポンスの例を示す図である。
【図１４】レスポンスに含まれるリンクのリストを示す図である。
【図１５】リクエストデータの例を示す図である。
【図１６】差分操作適用処理の手順を示すフローチャートである。
【図１７】差分操作メイン画面を示す図である。
【図１８】詳細編集画面を示す図である。
【図１９】部分操作入力画面を示す図である。
【符号の説明】
【０１８０】
１  リンク識別情報取得手段
２  リンク識別情報記憶手段
３  差分操作データ取得手段
４  差分操作データ記憶手段
４ａ，４ｂ，４ｃ  差分操作データ
５  リンク関係記憶手段
６  デフォルトリクエスト生成手段
６ａデフォルトリクエスト
７  テスト用リクエスト生成手段
７ａ，７ｂ，７ｃ  テスト用リクエスト
８  リクエスト送信手段
９  リンク元ページ再現手段
Ａ  サーバ
【図１】
2008015709.tif 000003
【図２】
2008015709.tif 000004
【図３】
2008015709.tif 000005
【図４】
2008015709.tif 000006
【図５】
2008015709.tif 000007
【図６】
2008015709.tif 000008
【図７】
2008015709.tif 000009
【図８】
2008015709.tif 000010
【図９】
2008015709.tif 000011
【図１０】
2008015709.tif 000012
【図１１】
2008015709.tif 000013
【図１２】
2008015709.tif 000014
【図１３】
2008015709.tif 000015
【図１４】
2008015709.tif 000016
【図１５】
2008015709.tif 000017
【図１６】
2008015709.tif 000018
【図１７】
2008015709.tif 000019
【図１８】
2008015709.tif 000020
【図１９】
2008015709.tif 000021