(57)【特許請求の範囲】
【請求項１】
コンピュータにより実行される、プログラムのテスト結果を記録するためのテスト記録方法であって、
入力データに基づきテスト対象のプログラムを実行することにより出力データを生成し、該出力データと前記テスト対象のプログラムから生成された該テスト対象のプログラムのハッシュ値とを含むレスポンスを応答するテスト用サーバに対し、前記テスト対象のプログラムの前記入力データとしてテスト入力データを送信するデータ送信手順と、
前記テスト用サーバから受信した、前記テスト入力データに対する前記レスポンスに含まれる前記出力データと、前記テスト入力データと対応付けて前記コンピュータが有するテスト仕様書記憶手段に記憶されているテスト仕様出力情報とが一致するか否かにより、テストの合否を判定するテスト結果判定手順と、
前記テストの合否の判定結果と、前記テスト用サーバから受信した前記テスト入力データに対するレスポンスに含まれるハッシュ値とを関連付けて、前記テスト対象のプログラムのテスト実施ログとして前記コンピュータが有するテスト実施ログ記憶手段に格納するテスト結果記録手順と、
を有することを特徴とするテスト記録方法。
【請求項２】
テスト用クライアント装置から前記プログラムの前記入力データとして前記テスト入力データを受信し、前記テスト仕様書記憶手段に記憶されているテスト仕様入力情報と、前記テスト入力データとを比較し、当該テスト入力データが前記テスト仕様書記憶手段に記憶されている前記テスト仕様入力情報と一致するか否かを判定するテスト入力比較手順を更に有し、
前記データ送信手順は、前記テスト入力データが前記テスト仕様書記憶手段に記憶されている前記テスト仕様入力情報と一致する場合に、前記テスト入力データを前記テスト用サーバに送信する、
ことを特徴とする請求項１記載のテスト記録方法。
【請求項３】
前記テスト入力比較手順は、前記テスト仕様書記憶手段に、前記テスト入力データに対応付けて依存テスト情報が更に記憶されている場合には、前記テスト実施ログ記憶手段を参照して当該依存テスト情報で示された前記依存テストが既に実施されているか否かを判断し、
前記データ送信手順は、前記テスト入力比較手順により前記依存テストが実施されていると判断された場合に、前記テスト入力データを送信する、
ことを特徴とする請求項１または２記載のテスト記録方法。
【請求項４】
テスト入力データとテスト仕様出力情報とを対応付けて記憶するテスト仕様書記憶手段と、
テスト実施ログ記憶手段と、
入力データに基づきテスト対象のプログラムを実行することにより出力データを生成し、該出力データと、前記プログラムから生成された該プログラムのハッシュ値とを含むレスポンスを応答するテスト用サーバに対し、前記プログラムの前記入力データとして前記テスト入力データを送信するデータ送信手段と、
前記テスト用サーバから受信した、前記テスト入力データに対する前記レスポンスに含まれる前記出力データと、前記テスト仕様書記憶手段に前記テスト入力データに対応付けて記憶されている前記テスト仕様出力情報とが一致するか否かによりテストの合否を判定するテスト結果判定手段と、
前記テストの合否の判定結果と、前記テスト用サーバから受信した前記テスト入力データに対するレスポンスに含まれるハッシュ値とを関連付けて、前記テスト対象のプログラムのテスト実施ログとして前記テスト実施ログ記憶手段に格納するテスト結果記録手段と、
を有することを特徴とするテスト記録装置。
【請求項５】
コンピュータを、
入力データに基づきテスト対象のプログラムを実行することによって出力データを生成し、該出力データと、前記テスト対象のプログラムから生成された該テスト対象のプログラムのハッシュ値とを含むレスポンスを対応するテスト用サーバに対し、前記テスト対象のプログラムの前記入力データとしてテスト入力データを送信するデータ送信手段、
前記テスト用サーバから受信した、前記テスト入力データに対する前記レスポンスに含まれる前記出力データと、前記テスト入力データとを対応づけて前記コンピュータが有するテスト仕様書記憶手段に記憶されているテスト仕様出力情報とが一致するか否かにより、テストの合否を判定するテスト結果判定手段、
前記テストの合否の判定結果と、前記テスト用サーバから受信した前記テスト入力データに対するレスポンスに含まれるハッシュ値とを関連付けて、前記テスト対象のプログラムのテスト実施ログとして前記コンピュータが有するテスト実施ログ記憶手段に格納するテスト結果記録手段、
として機能させることを特徴とするテスト記録プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は所定の仕様に従って作成されたプログラムのテスト結果を記録するためのテスト記録方法、テスト記録装置、およびテスト記録プログラムに関し、特にテストの実施漏れを防止することができるテスト記録方法、テスト記録装置、およびテスト記録プログラムに関する。
【背景技術】
【０００２】
大規模のソフトウェアを開発する場合、分散開発が行われる。分散開発では、例えば、開発事業をクライアントから請け負った企業等（発注者）が、他の複数のソフトウェア会社等（受注者）に個別の機能の開発を委託する。そして、各受注者が作成したプログラムを発注者が統合し、最終的な製品に仕上げる。
【０００３】
ここで、納入されたソフトウェアが設計通りに動作することを確認する必要がある。このような品質保証を効率的に行う技術として、例えば、ソフトウェアの受け入れと同時に発注仕様に合致しているかを自動的に試験するソフトウェア開発管理装置が考えられている。これにより、安定したソフトウェア開発が可能となる（特許文献１参照）。
【特許文献１】特開２００３−４４２７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、ソフトウェアの受入側だけでテストをしていたのでは、テストに不合格となった場合に、受注者に修正の指示を出してソフトウェアの再提出を受けなければならず、開発の期間の長期化を招く。そのため、受注者側で予めテストを実施した後、テスト結果報告と共に、ソフトウェアが納入されることが望まれる。
【０００５】
しかしながら、ユーザからの入力に応じて処理を実行するソフトウェアの場合、試験を行う際にも試験担当者が実際にキー入力を行う必要がある。そのため、人手がかかる。しかも、開発ソフトウェアの納入は、全ての機能が完成してから納入する場合の手戻りリスクを軽減するために、機能ごとに段階的に行われることが多い。このような状況下では、以下の要因により悪意が無くてもテストの実施漏れが発生する。
【０００６】
（１）ソフトウェア開発の分散化が促進されるのに伴い、モジュールの粒度縮小、関連性の複雑化という傾向がある。そのため、前回納品時から追加した機能のテスト時に、変更の影響範囲の把握が困難である。
【０００７】
（２）時間的な制約により、リリース済み機能に対するテストの優先度が下がり、ついつい再テストを省いてしまう傾向がある。
本発明はこのような点に鑑みてなされたものであり、納入されたソフトウェアのテスト漏れを防止できるソフトウェア受入検査プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では上記課題を解決するために、図１に示すようなテスト記録方法が提供される。本発明に係るテスト記録方法は、所定の仕様に従って作成されたプログラムのテスト結果を記録するために、以下の手順で処理を行う。
【０００９】
データ送信手段１ｂが、プログラム３ａと、プログラム３ａに従った処理によって得られる結果にプログラム３ａに基づいて生成されたハッシュ値７を付加する処理が記述されたレスポンス加工プログラム３ｂとが実装されたテスト用サーバ３に対し、テスト用クライアント２から入力されたテスト入力データ５を送信する。テスト結果判定手段１ｃが、テスト用サーバ３がテスト入力データ５に応じてプログラム３ａを実行した結果生成されるテスト出力データ６と、予めテスト内容が定義されたテスト仕様書１ｄに記述されているテスト仕様出力内容とを比較することで、テストの合否を判定する。テスト結果記録手段１ｅが、テスト結果判定手段１ｃによる判定結果と、テスト用サーバ３がレスポンス加工プログラム３ｂを実行した結果生成されるハッシュ値７とを関連づけて、テスト実施ログ１ｇとしてテスト実施ログ記憶手段１ｆに格納する。
【００１０】
このようなテスト記録方法によれば、テスト用クライアント２からテスト入力データ５が入力されると、データ送信手段１ｂにより、そのテスト入力データ５がテスト用サーバ３に対して送信される。テスト用サーバ３からテスト出力データ６が返されると、テスト結果判定手段１ｃにより、テスト出力データ６と、テスト仕様書１ｄに記述されているテスト仕様出力内容とが比較され、テストの合否が判定される。そして、テスト結果記録手段１ｅにより、テスト結果判定手段１ｃによる判定結果とハッシュ値７とが関連づけられ、テスト実施ログ１ｇとしてテスト実施ログ記憶手段１ｆに格納される。
【００１１】
また、本発明では上記課題を解決するために、所定の仕様に従って作成されたプログラムのテスト結果を記録するためのテスト記録装置において、前記プログラムと、前記プログラムに従った処理によって得られるテスト出力データに前記プログラムに基づいて生成されたハッシュ値を付加する処理が記述されたレスポンス加工プログラムとが実装されたテスト用サーバに対し、テスト用クライアントから入力されたテスト入力データを送信するデータ送信手段と、前記テスト用サーバが前記テスト入力データに応じて前記プログラムを実行した結果生成される前記テスト出力データと、予めテスト内容が定義されたテスト仕様書に記述されているテスト仕様出力内容とを比較することで、テストの合否を判定するテスト結果判定手段と、前記テスト結果判定手段による判定結果と、前記テスト用サーバが前記レスポンス加工プログラムを実行した結果生成される前記ハッシュ値とを関連づけて、テスト実施ログとしてテスト実施ログ記憶手段に格納するテスト結果記録手段と、を有することを特徴とするテスト記録装置が提供される。
【００１２】
このようなテスト記録装置によれば、上記本発明に係るテスト記録方法と同様の処理がテスト記録装置上で実現される。
また、本発明では上記課題を解決するために、所定の仕様に従って作成されたプログラムのテスト結果を記録するためのテスト記録プログラムにおいて、コンピュータを、前記プログラムと、前記プログラムに従った処理によって得られるテスト出力データに前記プログラムに基づいて生成されたハッシュ値を付加する処理が記述されたレスポンス加工プログラムとが実装されたテスト用サーバに対し、テスト用クライアントから入力されたテスト入力データを送信するデータ送信手段、前記テスト用サーバが前記テスト入力データに応じて前記プログラムを実行した結果生成される前記テスト出力データと、予めテスト内容が定義されたテスト仕様書に記述されているテスト仕様出力内容とを比較することで、テストの合否を判定するテスト結果判定手段、前記テスト結果判定手段による判定結果と、前記テスト用サーバが前記レスポンス加工プログラムを実行した結果生成される前記ハッシュ値とを関連づけて、テスト実施ログとしてテスト実施ログ記憶手段に格納するテスト結果記録手段、として機能させることを特徴とするテスト記録プログラムが提供される。
【００１３】
このようなテスト記録プログラムをコンピュータに実行させれば、上記本発明に係るテスト記録方法と同様の処理がコンピュータ上で実現される。
【発明の効果】
【００１４】
本発明ではプログラムをテストしたときの判定結果と共に、プログラムに基づいて生成されるハッシュ値をテスト実施ログとして記録するようにしたため、ハッシュ値によって、テストを実行したプログラムのテスト実施ログであることを保証することができる。その結果、テストを実施していないプログラムの納品ができなくなり、プログラムのテスト漏れを防止することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本実施の形態の概略を示す図である。図１に示すように、テスト記録装置１は、テスト用クライアント２とテスト用サーバ３との間に配置される。また、テスト記録装置１は、開発したプログラムの納入先に設けられた受入システム４にも接続される。
【００１６】
テスト用クライアント２には、テストのための操作入力等を行うためのユーザインタフェース２ａが実装されている。テスト用サーバ３には、開発したプログラム３ａと、プログラム３ａに従った処理によって得られる結果にプログラム３ａに基づいて生成されたハッシュ値７を付加する処理が記述されたレスポンス加工プログラム３ｂとが実装されている。
【００１７】
テスト記録装置１は、処理機能として、テスト入力比較手段１ａ、データ送信手段１ｂ、テスト結果判定手段１ｃ、テスト結果記録手段１ｅ、テスト実施ログ記憶手段１ｆ、および納品手段１ｉを有する。また、テスト記録装置１には、予めテスト内容が定義されたテスト仕様書１ｄと、納品対象のプログラム１ｈとが設定されている。なお、テスト仕様書１ｄには、テスト番号、テストの際に入力すべきデータを示すテスト仕様入力、テストの結果出力されるべきデータを示すテスト仕様出力等が含まれる。
【００１８】
テスト入力比較手段１ａは、テスト仕様書１ｄに記述されているテスト入力内容（テスト仕様入力）と、テスト用クライアント２から入力されたテスト入力データ５と比較し、テスト入力データ５がテスト仕様書１ｄの内容に沿っていることを検証する。
【００１９】
データ送信手段１ｂは、テスト用サーバ３に対し、テスト用クライアント２から入力されたテスト入力データ５を送信する。なお、データ送信手段１ｂは、テスト入力データ５がテスト仕様書１ｄの内容に沿っている場合にのみ、テスト入力データ５をテスト用サーバ３に送信することもできる。
【００２０】
テスト結果判定手段１ｃは、テスト用サーバ３がテスト入力データ５に応じてプログラム３ａを実行した結果生成されるテスト出力データ６と、予めテスト内容が定義されたテスト仕様書１ｄに記述されているテスト仕様出力内容とを比較することで、テストの合否を判定する。
【００２１】
テスト結果記録手段１ｅが、テスト結果判定手段１ｃによる判定結果と、テスト用サーバ３がレスポンス加工プログラム３ｂを実行した結果生成されるハッシュ値７とを関連づけて、テスト実施ログ１ｇとしてテスト実施ログ記憶手段１ｆに格納する。テスト実施ログ１ｇには、例えば、テスト番号、テスト結果（テストの合否）、ハッシュ値等が含まれる。
【００２２】
納品手段１ｉは、納品要求に応じて、プログラム１ｈとテスト仕様書１ｄとテスト実施ログ記憶手段１ｆに格納されたテスト実施ログ１ｇとを、納入先の受入システム４に対して送信する。なお、納品手段１ｉは、公開鍵によってテスト実施ログ１ｇを暗号化することもできる。
【００２３】
このようなテスト記録方法によれば、テスト用クライアント２からテスト入力データ５が入力されると、テスト入力比較手段１ａにより、テスト入力データ５がテスト仕様書１ｄの内容に沿っていることが検証される。そして、データ送信手段１ｂにより、そのテスト入力データ５がテスト用サーバ３に対して送信される。
【００２４】
テスト用サーバ３からテスト出力データ６が返されると、テスト結果判定手段１ｃにより、テスト出力データ６と、テスト仕様書１ｄに記述されているテスト仕様出力内容とが比較され、テストの合否が判定される。そして、テスト結果記録手段１ｅにより、テスト結果判定手段１ｃによる判定結果とハッシュ値７とが関連づけられ、テスト実施ログ１ｇとしてテスト実施ログ記憶手段１ｆに格納される。
【００２５】
その後、納品要求が入力されると、納品手段により、プログラム１ｈとテスト実施ログ記憶手段１ｆに格納されたテスト実施ログ１ｇとが、納入先の受入システム４に対して送信される。
【００２６】
これにより、受入システム４では、テスト実施ログ１ｇに含まれたハッシュ値によって、テスト実施ログ１ｇが生成された際のテストで実行されたプログラム３ａと、納品されたプログラム１ｈとの内容が同一であることを認証できる。すなわち、受入システム４では、プログラム１ｈに基づいて、レスポンス加工プログラム３ｂと同様のアルゴリズムでハッシュ値を計算する。そして、受入システム４は、計算によって求められたハッシュ値と、テスト実施ログ１ｇに含まれるハッシュ値とを比較する。ハッシュ値が同一であれば、プログラム１ｈのテスト結果がテスト実施ログ１ｇに設定されていることが保証される。
【００２７】
例えば、開発段階では異なる版数のプログラムが作成される。そのとき、各版のプログラムでテストが行われテスト実施ログが生成されると、ハッシュ値によって、どの版のパッケージに対してテストが実施されたのかが確実に認識できる。これにより、最新版のパッケージに対してきちんとテストされていることが保証される。その結果、テスト漏れが防止される。
【００２８】
次に、本実施の形態の詳細を説明する。なお、一般に、開発されるソフトウェアは複数のプログラムで構成される。そこで、以下の説明において、１つ以上のプログラムの集合によって構成されるソフトウェアを「パッケージ」と呼ぶこととする。
【００２９】
図２は、本実施の形態のシステム構成例を示す図である。本実施の形態では、発注者２０が複数の受注者２１〜２３に対してソフトウェアの開発を依頼することで、分散開発を実施する場合を想定している。
【００３０】
発注者２０は、受入システム２００を有している。受入システム２００は、受注者２１〜２３から納品されたプログラムの合否を判定するためのコンピュータである。受入システム２００は、受注者２１によって作成されたソフトウェアのパッケージ４１を受け取り、パッケージ４１に基づいて生成されたハッシュ値をパッケージ４１のレスポンスに含めるように加工した検証用パッケージ４２を作成することができる。
【００３１】
受注者２１は、開発マシン３１、テスト用クライアント３２、テスト用サーバ３３、およびテスト記録装置１００を有している。開発マシン３１は、受託したソフトウェアを開発するためのコンピュータである。この開発マシン３１を用いて、ソフトウェアのパッケージ４１が作成される。テスト用クライアント３２は、検証用パッケージ４２をテストする際に、ユーザからの入力、および出力データの表示を行うためのコンピュータである。テスト用サーバ３３は、検証用パッケージ４２の動作テストを行うためのコンピュータである。
【００３２】
テスト記録装置１００は、ネットワーク１０を介して受入システム２００に接続されている。また、テスト記録装置１００は、テスト用クライアント３２とテスト用サーバ３３との間に接続されている。テスト記録装置１００は、テスト用クライアント３２からの入力データをテスト用サーバ３３に渡すと共に、テスト用サーバ３３から出力された出力データをテスト用クライアント３２に渡す。そして、テスト記録装置１００は、入力データと出力データとを解析して、テスト結果を判断する。また、テスト記録装置１００は、検証用パッケージ４２に対するテスト完了後、納品データ４３を受入システム２００に送信する。なお、納品データ４３には、検証用パッケージ４２と、テスト結果を示すテストレポートとが含まれる。
【００３３】
このようなシステムによって、まず、開発マシン３１で作成したソフトウェアのパッケージ４１が、受注者２１から発注者２０に渡される（ステップＳ１１）。すると、受入システム２００で検証用パッケージ４２が作成され、その検証用パッケージ４２が発注者２０から受注者２１に渡される（ステップＳ１２）。この際、検証用パッケージ４２は、パッケージ４１に基づいて生成されたハッシュ値をレスポンスに含めるように加工されている。
【００３４】
受注者２１が、検証用パッケージ４２をテスト用サーバ３３に導入し（ステップＳ１３）、テスト用クライアント３２を操作してテストを実行する（ステップＳ１４）。その際、テスト用サーバ３３は、テスト用の入力に対する応答に、検証用パッケージ４２に含まれていたハッシュ値を含める。
【００３５】
すると、テスト記録装置１００で、ハッシュ値によって検証用パッケージ４２と関連づけられたテストレポートが生成される。その後、受注者２１がテストレポートと検証用パッケージとを含む納品データ４３を発注者２０に渡す（ステップＳ１５）。
【００３６】
発注者２０は、納品データ４３を受入システム２００に入力し、ソフトウェアの受入検査を行う。受入システム２００では、ハッシュ値によって、納品データ４３に含まれた検証用パッケージ４２が正しくテストされていることを確認する。これにより、必要なテストが最新版のパッケージに対して実施されたことを自動チェックできる。
【００３７】
このような処理が、作成されたソフトウェアの品質が所定値以上になるまで繰り返し行われる。即ち、パッケージを検証した結果、品質に不備がある場合には、再度ステップＳ１１〜Ｓ１５の手順を踏んで、すべてのテストを再度実施する必要がある。
【００３８】
図３は、本実施の形態に用いるテスト記録装置のハードウェア構成例を示す図である。テスト記録装置１００は、ＣＰＵ(Central Processing Unit)１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ(Random Access Memory)１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００３９】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００４０】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００４１】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００４２】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、テスト記録装置１００のハードウェア構成例を示したが、受入システム２００、開発マシン３１、テスト用クライアント３２、およびテスト用サーバ３３も同様のハードウェアで実現することができる。
【００４３】
次に、受入システム２００とテスト記録装置１００との処理機能を、図４、図５を参照して説明する。
図４は、受入システムの機能を示すブロック図である。受入システム２００は、検証用パッケージ生成部２１０、テストレポート解析部２２０、検証用パッケージ認証部２３０、および合否判定部２４０を有している。
【００４４】
検証用パッケージ生成部２１０は、パッケージ４１を受け取り、そのパッケージ４１に対応する検証用パッケージ４２を生成する。そのために、検証用パッケージ生成部２１０は、ハッシュ値算出部２１１とレスポンス機能変更部２１２とを有している。ハッシュ値算出部２１１は、入力されたパッケージ４１に基づいてハッシュ値を計算する。レスポンス機能変更部２１２は、ハッシュ値を含む検証用パッケージ４２を生成する。なお、検証用パッケージ４２に含まれるプログラムは、テスト時にハッシュ値を含む応答を出力するように加工されている。
【００４５】
テストレポート解析部２２０は、納品データ４３に含まれるテストレポートを取得し、そのテストレポートを解析する。そして、テストレポート解析部２２０は、テストレポートからハッシュ値を抽出し、検証用パッケージ認証部２３０に渡す。また、テストレポート解析部２２０は、テストレポートに含まれるテスト実施ログ等の情報を合否判定部２４０に渡す。
【００４６】
検証用パッケージ認証部２３０は、納品データ４３に含まれる検証用パッケージ４２からパッケージ４１を取り出し、パッケージ４１からハッシュ値を計算する。そして、検証用パッケージ認証部２３０は、算出したハッシュ値と、テストレポート解析部２２０から渡されたハッシュ値とが一致するか否かにより、検証用パッケージ４２が正しくテストされた否かを認証する。そして、検証用パッケージ認証部２３０は、ハッシュ値が一致した場合、正しいテストレポートであることを、合否判定部２４０に通知する。
【００４７】
合否判定部２４０は、検証用パッケージ認証部２３０からテストレポートの内容が正しいことを示す通知を受け取ると、テスト実施ログ等に基づいてパッケージ４１の品質の合否を判定する。例えば、合否判定部２４０は、テストの合格率が所定の閾値以上であれば、合格と判断する。その場合、開発の初期段階では、比較的低い値を閾値に設定し、開発が進むに従って、閾値を上げていくことで、徐々にソフトウェアの完成度を高めることができる。
【００４８】
図５は、テスト記録装置の機能を示すブロック図である。テスト記録装置１００は、テスト仕様書記憶部１１０、テスト番号カウンタ１２０、テスト入力比較部１３０、テスト入力送信部１４０、テスト出力比較部１５０、テスト出力送信部１６０、テスト結果記録部１７０、テスト実施ログ記憶部１８０、および納品部１９０を有している。
【００４９】
テスト仕様書記憶部１１０は、入力されたテスト仕様書５１，５２，５３を記憶する。テスト仕様書５１，５２，５３には、テストの内容が定義されている。また、テスト仕様書５１，５２，５３には、テスト番号が付与されている。この例では、原則として、テスト番号順に検証用パッケージ４２のテストが行われるものとする。
【００５０】
テスト番号カウンタ１２０は、実施されているテストのテスト番号を示すカウンタである。テスト番号カウンタ１２０の値は、テストが実施される毎にインクリメントされる。
テスト入力比較部１３０は、テスト用クライアント３２からのテスト入力データ６１を受け取り、実施するテストのテスト仕様書と比較する。次にどのテストを実施するのかは、テスト番号カウンタ１２０で示されている。テスト入力比較部１３０は、比較の結果をテスト入力送信部１４０に渡す。
【００５１】
テスト入力送信部１４０は、テスト入力比較部１３０での比較によって、一致と判定された場合、テスト用サーバ３３のアドレスとポート番号とを宛先として設定し、データとしてテスト入力データを含むリクエスト６２を生成し、テスト用サーバ３３に送信する。
【００５２】
テスト出力比較部１５０は、テスト用サーバ３３からレスポンス６３を受け取ると、そのレスポンス６３からテスト出力データ６４とハッシュ値７とを取り出す。そして、テスト出力比較部１５０は、テスト出力データ６４をテスト出力送信部１６０に渡す。また、テスト出力比較部１５０は、テスト出力データ６４に基づいて、テストの合否を判定する。合否の判定結果は、テスト結果記録部１７０に渡される。
【００５３】
テスト出力送信部１６０は、レスポンス６３に含まれるテスト出力データ６４をテスト用クライアント３２に対して送信する。
テスト結果記録部１７０は、テスト結果とハッシュ値７とを含むテスト実施ログを生成し、テスト実施ログ記憶部１８０に格納する。
【００５４】
テスト実施ログ記憶部１８０は、実施されたテスト毎のテスト実施ログを記憶するための記録媒体である。
納品部１９０は、検証用パッケージ４２を受け取り、その検証用パッケージ４２に対応するテスト仕様書をテスト仕様書記憶部１１０から取得し、検証用パッケージ４２に対応するテスト実施ログをテスト実施ログ記憶部１８０から取得する。そして、納品部１９０は、検証用パッケージ４２、テスト仕様書、およびテスト実施ログを含む納品データ４３を生成し、受入システム２００に送信する。
【００５５】
受入システム２００とテスト記録装置１００とが図４、図５に示す機能を有することにより、納入されるパッケージのテスト結果を、発注者２０側で正しく認証することができる。
【００５６】
以下、パッケージの納入処理を詳細に説明する。
まず、検証用パッケージ４２の生成処理について説明する。
図６は、検証用パッケージ生成処理を示す図である。受入システム２００では、受注者２１からパッケージ４１を受け取ると、そのパッケージ４１に基づいて、ハッシュ値算出部２１１がハッシュ値４４を計算する（ステップＳ２１）。この場合、パッケージ４１の内容の一部でも変更された場合には、算出されるハッシュ値も異なる値となるような計算手法を採用する。
【００５７】
算出されたハッシュ値４４とパッケージ４１とは、レスポンス機能変更部２１２に渡される。そして、レスポンス機能変更部２１２において、検証用パッケージ４２が生成される（ステップＳ２２）。具体的には、レスポンス機能変更部２１２は、リクエストに対するレスポンスを出力する際に、そのレスポンスにハッシュ値４４を含めるような処理が記述されたレスポンス加工プログラム２１３を、パッケージ４１に挿入する。このような加工が施された検証用パッケージ４２が受注者２１に渡される。
【００５８】
次に、検証用パッケージ４２を用いたテスト処理について説明する。
図７は、テスト処理を示す図である。テストを行う場合、まず、予め検証用パッケージ４２をテスト用サーバ３３に導入する。その際、実際の運用状態と同様な環境となるように、受注者２１がテスト用サーバ３３の環境を手動で（自動で設定可能な内容についてはＯＳ等の機能を利用して自動で）設定する。
【００５９】
また、受注者２１は、テスト開始前に、テスト番号カウンタ１２０を初期値に設定する。例えば、すべてのテストを行う場合、テスト番号カウンタ１２０を「１」に設定する（テスト番号が「１」から始まる場合）。また、途中のテストから実施する場合、受注者２１は、そのテストのテスト番号をテスト番号カウンタ１２０に設定する。
【００６０】
そして、受注者２１は、テスト用クライアント３２を操作してテスト項目に応じた操作入力を行う。例えば、検証用パッケージ４２がＷｅｂサーバを利用したアプリケーションソフトウェアの場合、テスト用クライアント３２ではＷｅｂブラウザが起動される。そして、受注者２１は、Ｗｅｂブラウザの画面において、テスト仕様に沿った入力を行う。すると、テスト用クライアント３２からテスト記録装置１００に対してテスト入力データ６１が送信される。
【００６１】
テスト入力データ６１は、テスト入力比較部１３０で受け取られる。テスト入力比較部１３０は、現在のテスト番号カウンタ１２０の値を参照し、次に実行されるテスト仕様書のテスト番号を認識する。そして、テスト入力比較部１３０は、次に実行されるテスト番号に対応するテスト仕様書をテスト仕様書記憶部１１０から取得する。
【００６２】
ここで、テスト仕様書５１，５２，５３には、テスト番号、テスト仕様入力、テスト仕様出力、および依存テスト番号の各情報が含まれている。テスト番号は、テスト仕様書を一意に識別するための番号であり、実施されるテストの順番で採番されている。テスト仕様入力は、テスト入力データとして入力されるべき情報である。テスト仕様出力は、テスト結果として出力されるべき情報である。依存テスト番号は、対応するテストを実行する前に実行すべきテストのテスト番号が設定されるべき情報である。
【００６３】
テスト入力比較部１３０は、取得したテスト仕様書を参照し、テスト入力データ６１とテスト仕様入力とを比較し、内容が一致する否かを判断する（ステップＳ３１）。比較の結果一致しない場合、エラーとなる。
【００６４】
比較の結果一致した場合、テスト入力比較部１３０は、テスト実施ログ記憶部１８０を参照し、依存テスト番号で示されたテストが完了しているか否かを判断する。該当するテスト実施ログが存在しない場合、エラーとなる。該当するテスト実施ログが存在すれば、テスト入力比較部１３０は、テスト入力データ６１をテスト入力送信部１４０に渡す。
【００６５】
テスト入力送信部１４０は、予め設定されているテスト用サーバ３３のサーバアドレス１４１とポート番号１４２とを宛先として設定し、データとしてテスト入力データ６１を含むリクエスト６２を生成する。そして、テスト入力送信部１４０は、生成したリクエスト６２をテスト用サーバ３３に送信する（ステップＳ３２）。
【００６６】
テスト用サーバ３３では、リクエスト６２を受け取ると、検証用パッケージ４２に基づいた処理機能にテスト入力データ６１を渡す。すると、検証用パッケージ４２におけるプログラム内容に応じて処理が実行され、テスト出力データ６４が生成される。そして、テスト用サーバ３３は、レスポンス機能変更部２１２によって付加されたレスポンス加工プログラム２１３に基づいて、テスト出力データ６４にハッシュ値４４を付加したレスポンス６３を生成する。生成されたレスポンス６３は、テスト用サーバ３３からテスト記録装置１００に送信される。
【００６７】
テスト記録装置１００は、テスト出力比較部１５０がレスポンス６３に含まれるテスト出力データ６４を取得し、テスト結果の合否を判定する（ステップＳ３３）。具体的には、テスト出力比較部１５０は、テスト仕様書記憶部１１０から、テスト対象のテスト仕様書に含まれるテスト仕様出力を取得する。そして、テスト出力比較部１５０は、テスト出力データ６４とテスト仕様出力とを比較し、内容が一致するか否かを判断する。内容が一致すれば、テスト出力比較部１５０は、テスト結果を合格（○）と判定する。内容が一致しなければ、テスト出力比較部１５０は、テスト結果を不合格（×）と判定する。テスト結果は、テスト結果記録部１７０に通知される。
【００６８】
テスト結果記録部１７０は、テスト結果に応じたテスト実施ログを生成し、テスト実施ログ記憶部１８０に格納する（ステップＳ３４）。その際、テスト結果記録部１７０は、レスポンス６３に含まれていたハッシュ値４４を取得し、テスト実施ログに含める。
【００６９】
テスト実施ログ１８１，１８２，１８３には、テスト番号、テスト入力実績、テスト出力実績、テスト結果、およびハッシュ値が含まれる。テスト番号は、実施されたテストのテスト仕様書に付与された識別番号である。テスト入力実績は、実施されたテストで入力されたテスト入力データである。テスト出力実績は、実施されたテストで出力されたテスト出力データである。テスト結果は、テスト出力比較部１５０による判定結果である。ハッシュ値は、レスポンス６３に含まれていたハッシュ値である。
【００７０】
その後、テスト出力送信部１６０が、テスト出力データ６４をテスト用クライアント３２に送信する。テスト用クライアント３２には、テスト出力データ６４に応じた画面が表示される。
【００７１】
なお、テスト記録装置１００とテスト用サーバ３３との間の通信は、例えば、ＳＳＬ（Secure Socket Layer）のような技術を用いて暗号化される。これは、受注者２１によるハッシュ値のすり替え等の不正を防止するためである。
【００７２】
このようにして、テストが実行される。以下、テスト処理の内容を、具体的例を用いて詳細に説明する。
図８は、テスト仕様書の例を示す図である。図８には、テスト仕様書５１の内容が具体的に示されている。なお、検証用パッケージ４２のテストに必要なテスト仕様書５１，５２，５３のセットがテスト記録装置１００に入力されると、テスト番号によって昇順にソートされた上でテスト仕様書記憶部１１０に格納される。
【００７３】
この例では、テスト仕様書５１が１つのテキスト形式のファイルで作成されている。テスト仕様書５１内には、テスト番号、テスト仕様入力、テスト仕様出力、依存テスト番号の項目が記述されている。各項目の下に、その項目の内容が記述されている。
【００７４】
ここで、テスト仕様入力とテスト仕様出力は、「キー＝値」の繰り返し構造で記述する。テスト仕様入力とテスト仕様出力のキーの記述方法は以下の２通りの方法がある。１つ目は「キー１＝値１＆キー２＝値２＆・・・」といった「キー＝値」の繰り返し構造を取る場合に対応して、シンプルに名前を定義する方法である。２つ目はテスト入出力データがＸＭＬのような階層構造で記述される場合に対応して、テスト仕様入力とテスト仕様出力のキーをＸＰａｔｈのような階層構造内の位置を特定できるような表記法を使用する方法である。
【００７５】
依存テスト番号には、依存先のテスト仕様書のテスト番号と、ステータス（status）が記述される。ステータスは、依存先のテストの実行条件を定義する情報である。この例では、依存先のテストが直前に実行されていなければならない場合、ステータスの値に「０」が設定される。また、依存先のテストが過去に実行されていなければならない場合、ステータスの値に「１」が設定される。
【００７６】
図９は、テスト入力データのデータ構造例を示す図である。このテスト入力データ６１は、テスト仕様書５１に応じて入力されるデータである。この例では、テスト入力データ６１には、「userId」キーと「categories」キーとが含まれている。これらのキーには、それぞれ、「U0001」と「コンピュータ、政治、医学」との値が設定されている。なお、「userId」キーと「categories」キーとの値は、テスト用クライアント３２に対して、受注者２１がキーボードで入力した値である。
【００７７】
テスト入力データ６１に、「submit」キーによって各種フラグが設定されている。この「submit」キーの値は、テスト用クライアント３２で動作するスクリプトプログラム等によって自動的に付与される。
【００７８】
図１０は、テスト入力データの比較処理を示す図である。この例では、テスト番号カウンタ１２０の値が「１０」であり、テスト仕様書５１に沿ったテストが実施されるものとする。また、テスト入力データ６１の内容は、図９に示した通りである。
【００７９】
テスト入力データ６１がテスト用クライアント３２からテスト記録装置１００に入力されると、テスト入力比較処理が開始される。すなわち、テスト入力比較部１３０が、テスト番号カウンタ１２０の値と、テスト仕様書記憶部１１０に格納されたテスト処理仕様書のテスト番号とを比較する（ステップＳ４１）。
【００８０】
テスト番号がテスト番号カウンタ１２０と一致するテスト仕様書がなければ、テスト入力比較部１３０はエラーメッセージをテスト用クライアント３２に対して出力する。また、テスト番号がテスト番号カウンタ１２０と一致するテスト仕様書があれば、テスト入力比較部１３０はテスト入力データ６１の内容比較へ、処理を進める（ステップＳ４２）。
【００８１】
テスト入力比較部１３０は、テスト番号カウンタ１２０の値と同じテスト番号（この例では「１０」）のテスト仕様書５１をテスト仕様書記憶部１１０から取得し、依存テスト番号の条件が満たされているか否かを判断する（ステップＳ４３）。具体的には、ステータスが「０」の場合、テスト入力比較部１３０は、テスト番号カウンタ１２０の値−１と、依存テスト番号（dependentTestNumber）との値が一致することを確認する。また、ステータスが「１」の場合、テスト入力比較部１３０は、依存テスト番号の値と一致するテスト番号のテスト実施ログがテスト実施ログ記憶部１８０内に存在することを確認する。
【００８２】
この例では、依存テスト番号に「６」（dependentTestNumber=6）が設定されており、ステータスが「１」である。すなわち、テスト番号「６」のテスト仕様書に沿ったテストが、過去に実行されていなければならないことが示されている。
【００８３】
そこで、テスト入力比較部１３０は、テスト実施ログ記憶部１８０内に、テスト番号「６」のテスト実施ログが格納されているか否かを判断する。該当するテスト実施ログが存在すれば、そのテスト番号のテストが過去に実施されていることが分かる。
【００８４】
テスト番号「６」のテスト実施ログが存在しない場合、テスト入力比較部１３０は、エラーメッセージをテスト用クライアント３２に対して送信する。該当するテスト実施ログが存在すれば、テスト入力比較部１３０は、実施されるテストのテスト仕様書５１に記載されているテスト仕様入力と、テスト入力データ６１とが一致するか否かを判定する（ステップＳ４４）。
【００８５】
具体的には、テスト入力比較部１３０は、テスト仕様書５１のテスト仕様入力のキーを全て取得する。この例では、「userId、categories」が取得される。次に、テスト入力比較部１３０は、取得したキーに対応するテスト入力データの値を取得する。この例では、「userId」の値「U0001」と、「categories」の値"コンピュータ、政治、医学"とが取得される。
【００８６】
テスト入力比較部１３０は、テスト仕様書５１のテスト仕様入力とテスト入力データ６１との各キーの値の比較の結果、取得した値が全て一致することを確認する。なお、テスト入力比較部１３０は、テスト仕様入力で定義されたキー以外が、テスト入力データに含まれていた場合、そのデータは無視する。
【００８７】
比較の結果、少なくとも１つ不一致の値があれば、テスト入力比較部１３０は、エラーメッセージをテスト用クライアント３２に対して送信する。全ての値が一致すれば、テスト入力比較部１３０は、その旨をテスト入力送信部１４０に伝える。すると、テスト入力送信部１４０が、テスト用サーバ３３のサーバアドレス１４１とポート番号１４２を宛先としたリクエスト６２を生成し、テスト用サーバ３３に送信する（ステップＳ４５）。
【００８８】
図１１は、リクエストのデータ構造例を示す図である。図１１には、ＨＴＴＰによるリクエスト６２の例が示されている。リクエスト６２には、テスト入力データ６１と同じ情報６２ａが含まれている。このようなリクエスト６２がテスト用サーバ３３に送信されると、テスト用サーバ３３によって、検証用パッケージ４２に基づいた処理が実行され、テスト用サーバ３３からレスポンス６３が返される。
【００８９】
次に、図１２と図１３とを参照して、レスポンス６３の内容について説明する。図１２は、レスポンスのデータ構造例の前半を示す図である。図１３は、レスポンスのデータ構造例の後半を示す図である。
【００９０】
図１２に示すように、レスポンス６３のヘッダ部６３ａには、ハッシュ値４４が挿入されている。ヘッダ部６３ａ以降のＨＴＭＬ記述部分が、テスト出力データ６４となる。図１３に示すように、ＨＴＭＬ記述内には、検索処理によって取得された文字列６３ｂ〜６３ｅが含まれている。
【００９１】
このようなレスポンス６３がテスト用サーバ３３からテスト記録装置１００に返されると、テスト記録装置１００においてテスト実施ログ取得処理が行われる。
図１４は、テスト実施ログ取得処理を示す図である。テスト記録装置１００にレスポンス６３が入力されると、テスト出力比較部１５０がテスト仕様出力とテスト出力データとの比較処理を行う（ステップＳ５１）。
【００９２】
具体的には、テスト出力比較部１５０は、実施対象のテストに対応するテスト仕様書５１からテスト仕様出力のキーを全て取得する。この例では、「//td[id="itemIdList＿1"]」、「//td[id="itemIdList＿2"]」、「//td[id="itemIdList＿4"]」が取得される。
【００９３】
次に、テスト出力比較部１５０は、レスポンス６３に含まれるテスト出力データ６４から、テスト仕様出力のキーに対応する値を取得する。図１３に示したレスポンス６３によれば、「//td[id="itemIdList＿1"]」キーに対応する値として「臨床検査」が取得される。同様に、「//td[id="itemIdList＿2"]」キーに対応する値として「国家の罠」が取得される。「//td[id="itemIdList＿4"]」キーに対応する値として「ソフトウェア工学」が取得される。
【００９４】
そして、テスト出力比較部１５０は、テスト出力データ６４から取得した値が、テスト仕様書５１のテスト仕様出力に設定された各キーの値と全て一致することを確認する（ステップＳ５２）。キーの値が全て一致すればテスト結果が成功（○）となり、値が不一致のキーが少なくとも１つ存在すればテスト結果が失敗（×）となる。このとき、テスト仕様出力に設定されたキー以外のキーがテスト出力データ６４に含まれていた場合、テスト出力比較部１５０は、該当するキーを無視する。
【００９５】
テスト出力データ６４の比較が完了すると、テスト結果記録部１７０が、テスト結果として、テスト実施ログ１８１をテスト実施ログ記憶部１８０に格納する（ステップＳ５３）。テスト実施ログ１８１には、テスト番号カウンタ１２０の値、テスト入力データ６１、テスト出力データ６４、テスト結果（成功または失敗）、およびレスポンス６３に含まれていたハッシュ値４４がそれぞれテスト番号、テスト入力実績、テスト出力実績、テスト結果、ハッシュ値として設定される。
【００９６】
次に、テスト結果記録部１７０は、テスト番号カウンタ１２０の値を、１だけインクリメントする。この例では、カウンタの値「１０」に１を加算し、「１１」とする（ステップＳ５４）。その後、テスト出力送信部１６０が、テスト出力データ６４をテスト用クライアント３２に対して送信する（ステップＳ５５）。
【００９７】
このようにして、予め用意されたテスト仕様書５１，５２，５３に沿ったテストが実施され、そのテスト実施ログ１８１，１８２，１８３が取得される。そして、受注者２１は、検証用パッケージ４２について全てのテストが完了すると、検証用パッケージ４２を受入システム２００に対して納品する。
【００９８】
図１５は、納品処理を示す図である。受注者２１は、予め検証用パッケージ４２をテスト記録装置１００からアクセス可能な記録媒体に格納する。そして、受注者２１がテスト記録装置１００に対して納品の指示を入力すると、テスト記録装置１００の納品部１９０において納品処理が実行される。
【００９９】
納品部１９０は、まず、テスト仕様書５１，５２，５３のセットとテスト実施ログ１８１，１８２，１８３のセットとをまとめて、既定の納品フォーマットに変換する（ステップＳ６１）。次に、納品部１９０は、納品フォーマットに変換されたデータを、予め設定されている公開鍵１９１で暗号化し、テストレポート４３ａを作成する（ステップＳ６２）。
【０１００】
さらに、納品部１９０は、暗号化されたテストレポート４３ａと検証用パッケージ４２をまとめて納品データ４３とし、予め登録されている受入システムのアドレス１９２宛に、納品データ４３を送信する（ステップＳ６３）。
【０１０１】
受入システム２００には、予め公開鍵１９１に対応する秘密鍵２３１が登録されている。この秘密鍵２３１により、受入システム２００において、テストレポート４３ａの復号が可能となる。
【０１０２】
図１６は、受入システムにおける受入処理を示す図である。納品データ４３中のテストレポート４３ａは、テストレポート解析部２２０によって、秘密鍵２３１で復号される（ステップＳ７１）。さらに、テストレポート解析部２２０は、復号されたデータをテスト仕様書５１，５２，５３のセットと、テスト実施ログ１８１，１８２，１８３のセットとに分解する（ステップＳ７２）。
【０１０３】
一方、納品データ４３中の検証用パッケージ４２は検証用パッケージ認証部２３０に渡される。検証用パッケージ認証部２３０は、検証用パッケージ４２からレスポンス加工プログラムを除去し（ステップＳ７３）、パッケージ４１を生成する。次に、検証用パッケージ認証部２３０は、パッケージ４１からハッシュ値４４を計算する（ステップＳ７４）。
【０１０４】
そして、検証用パッケージ認証部２３０は、テストレポート４３ａから抽出された各テスト実施ログ１８１，１８２，１８３のそれぞれからハッシュ値を取得し、パッケージ４１から生成したハッシュ値と比較する。比較の結果、ハッシュ値が一致すれば、検証用パッケージ認証部２３０は、正しいテストレポートであることを合否判定部２４０に通知する（ステップＳ７５）。
【０１０５】
合否判定部２４０は、テスト仕様書５１，５２，５３に基づいて、実施すべきテストの総数を把握し、テスト実施ログ１８１，１８２，１８３それぞれからテスト結果を取得する。そして、合否判定部２４０は、実施すべきテストの総数で、成功したテスト数を除算することで、テストの合格率２４１を計算する（ステップＳ７６）。
【０１０６】
さらに、合否判定部２４０は、予め設定されている合格ライン２４２と合格率２４１とを比較する（ステップＳ７７）。合格率が合格ラインを超えていれば、合否判定部２４０は、パッケージ４１のテストを合格と判定し、パッケージ４１を受け入れる（ステップＳ７８）。
【０１０７】
このようにして、納品されるパッケージ４１が正しくテストされていることを認証することができる。その結果、開発対象のソフトウェアの品質管理が容易となる。
すなわち、納品されるパッケージの品質チェックは、（１）テスト項目の網羅性、（２）環境の整合性、（３）テスト結果とパッケージの対応、といった３つの観点で行われる。
【０１０８】
（１）についての合意を前提としたとき、（３）は本実施の形態により保証される。そのため、受入後のトラブルに対して（２）の原因に絞って究明することができる。
また、テスト項目の網羅性についても、テスト合格率によって自動判定することができる。なお、上記の実施の形態では、一定の合格ラインを超えていれば、すべてのテストに合格しなくてもパッケージ４１を受け入れることとしている。これは、開発途中の段階でも、ソフトウェアの仮運用を行い、仕様変更や不具合検出等に役立てる場合があるためである。
【０１０９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、テスト記憶装置や受入システムが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１１２】
また、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０１１３】
（付記１）  所定の仕様に従って作成されたプログラムのテスト結果を記録するためのテスト記録方法において、
データ送信手段が、前記プログラムと、前記プログラムに従った処理によって得られる結果に前記プログラムに基づいて生成されたハッシュ値を付加する処理が記述されたレスポンス加工プログラムとが実装されたテスト用サーバに対し、テスト用クライアントから入力されたテスト入力データを送信し、
テスト結果判定手段が、前記テスト用サーバが前記テスト入力データに応じて前記プログラムを実行した結果生成されるテスト出力データと、予めテスト内容が定義されたテスト仕様書に記述されているテスト仕様出力内容とを比較することで、テストの合否を判定し、
テスト結果記録手段が、前記テスト結果判定手段による判定結果と、前記テスト用サーバが前記レスポンス加工プログラムを実行した結果生成される前記ハッシュ値とを関連づけて、テスト実施ログとしてテスト実施ログ記憶手段に格納する、
ことを特徴とするテスト記録方法。
【０１１４】
（付記２）  テスト入力比較手段が、前記テスト仕様書に記述されているテスト入力内容と、前記テスト用クライアントから入力された前記テスト入力データと比較し、前記テスト入力データが前記テスト仕様書の内容に沿っていることを検証し、
前記データ送信手段は、前記テスト入力データが前記テスト仕様書の内容に沿っている場合にのみ、前記テスト入力データを前記テスト用サーバに送信することを特徴とする付記１記載のテスト記録方法。
【０１１５】
（付記３）  複数の前記テスト仕様書それぞれに、テスト実施順に沿ったテスト番号が付与されており、
前記テスト入力比較手段は、テストが実施される毎にカウントアップされるテスト番号カウンタの値に応じた前記テスト仕様書を特定し、特定した前記テスト仕様書の内容と前記テスト入力データとを比較し、
前記データ送信手段は、前記テスト入力比較手段による比較の結果が一致した場合にのみ、前記テスト入力データを送信することを特徴とする付記２記載のテスト記録方法。
【０１１６】
（付記４）  複数の前記テスト仕様書それぞれにテスト番号が付与されていると共に、テストを実施するために事前に完了している必要がある依存テストに対応するテスト仕様書のテスト番号が依存テスト番号として設定されており、
テスト入力比較手段が、前記依存テスト番号で示される前記依存テストが既に実施されているか否かを判断し、
前記データ送信手段は、前記テスト入力比較手段により前記依存テストが実施されていると判断された場合にのみ、前記テスト入力データを送信することを特徴とする付記１記載のテスト記録方法。
【０１１７】
（付記５）  複数の前記テスト仕様書それぞれにテスト番号が付与されていると共に、テストを実施するために直前に完了している必要がある依存テストに対応するテスト仕様書のテスト番号が依存テスト番号として設定されており、
前記テスト入力比較手段は、前記依存テスト番号で示される前記依存テストが直前に実施されているか否かを判断し、
前記データ送信手段は、前記テスト入力比較手段により前記依存テストが直前に実施されていると判断された場合にのみ、前記テスト入力データを送信することを特徴とする付記２記載のテスト記録方法。
【０１１８】
（付記６）  納品手段が、納品要求に応じて、少なくとも前記プログラムと前記テスト実施ログ記憶手段に格納された前記テスト実施ログとを、納入先の受入システムに対して送信することを特徴とする付記１記載のテスト記録方法。
【０１１９】
（付記７）  前記納品手段は、公開鍵によって少なくとも前記テスト実施ログを暗号化して前記受入システムに送信することを特徴とする付記６記載のテスト記録方法。
（付記８）  所定の仕様に従って作成されたプログラムのテスト結果を記録するためのテスト記録装置において、
前記プログラムと、前記プログラムに従った処理によって得られるテスト出力データに前記プログラムに基づいて生成されたハッシュ値を付加する処理が記述されたレスポンス加工プログラムとが実装されたテスト用サーバに対し、テスト用クライアントから入力されたテスト入力データを送信するデータ送信手段と、
前記テスト用サーバが前記テスト入力データに応じて前記プログラムを実行した結果生成される前記テスト出力データと、予めテスト内容が定義されたテスト仕様書に記述されているテスト仕様出力内容とを比較することで、テストの合否を判定するテスト結果判定手段と、
前記テスト結果判定手段による判定結果と、前記テスト用サーバが前記レスポンス加工プログラムを実行した結果生成される前記ハッシュ値とを関連づけて、テスト実施ログとしてテスト実施ログ記憶手段に格納するテスト結果記録手段と、
を有することを特徴とするテスト記録装置。
【０１２０】
（付記９）  所定の仕様に従って作成されたプログラムのテスト結果を記録するためのテスト記録プログラムにおいて、
コンピュータを、
前記プログラムと、前記プログラムに従った処理によって得られるテスト出力データに前記プログラムに基づいて生成されたハッシュ値を付加する処理が記述されたレスポンス加工プログラムとが実装されたテスト用サーバに対し、テスト用クライアントから入力されたテスト入力データを送信するデータ送信手段、
前記テスト用サーバが前記テスト入力データに応じて前記プログラムを実行した結果生成される前記テスト出力データと、予めテスト内容が定義されたテスト仕様書に記述されているテスト仕様出力内容とを比較することで、テストの合否を判定するテスト結果判定手段、
前記テスト結果判定手段による判定結果と、前記テスト用サーバが前記レスポンス加工プログラムを実行した結果生成される前記ハッシュ値とを関連づけて、テスト実施ログとしてテスト実施ログ記憶手段に格納するテスト結果記録手段、
として機能させることを特徴とするテスト記録プログラム。
【図面の簡単な説明】
【０１２１】
【図１】本実施の形態の概略を示す図である。
【図２】本実施の形態のシステム構成例を示す図である。
【図３】本実施の形態に用いるテスト記録装置のハードウェア構成例を示す図である。
【図４】受入システムの機能を示すブロック図である。
【図５】テスト記録装置の機能を示すブロック図である。
【図６】検証用パッケージ生成処理を示す図である。
【図７】テスト処理を示す図である。
【図８】テスト仕様書の例を示す図である。
【図９】テスト入力データのデータ構造例を示す図である。
【図１０】テスト入力データの比較処理を示す図である。
【図１１】リクエストのデータ構造例を示す図である。
【図１２】レスポンスのデータ構造例の前半を示す図である。
【図１３】レスポンスのデータ構造例の後半を示す図である。
【図１４】テスト実施ログ取得処理を示す図である。
【図１５】納品処理を示す図である。
【図１６】受入システムにおける受入処理を示す図である。
【符号の説明】
【０１２２】
１  テスト記録装置
１ａ  テスト入力比較手段
１ｂ  データ送信手段
１ｃ  テスト結果判定手段
１ｄ  テスト仕様書
１ｅ  テスト結果記録手段
１ｆ  テスト実施ログ記憶手段
１ｇ  テスト実施ログ
１ｈ  プログラム
１ｉ  納品手段
２  テスト用クライアント
２ａ  ユーザインタフェース
３  テスト用サーバ
３ａ  プログラム
３ｂ  レスポンス加工プログラム
４  受入システム
５  テスト入力データ
６  テスト出力データ
７  ハッシュ値
【図１】
0004397354.tif 000002
【図２】
0004397354.tif 000003
【図３】
0004397354.tif 000004
【図４】
0004397354.tif 000005
【図５】
0004397354.tif 000006
【図６】
0004397354.tif 000007
【図７】
0004397354.tif 000008
【図８】
0004397354.tif 000009
【図９】
0004397354.tif 000010
【図１０】
0004397354.tif 000011
【図１１】
0004397354.tif 000012
【図１２】
0004397354.tif 000013
【図１３】
0004397354.tif 000014
【図１４】
0004397354.tif 000015
【図１５】
0004397354.tif 000016
【図１６】
0004397354.tif 000017