(57)【特許請求の範囲】
【請求項１】
所定の実行順序が予め決められたトランザクションデータの第１と第２のデータパターンを格納する入力データ記憶手段と、
前記第１のデータパターンのコピーを格納するデータベース記憶手段と、
前記データベース記憶手段のデータアクセスを行うデータベース管理手段と、
前記入力データ記憶手段内の前記第１と第２のデータパターンを比較して差分を抽出し、前記第１のデータパターンのコピーを使用した第１の業務処理テストを実行後、前記データベース管理手段に当該差分を前記第１のデータパターンのコピーに反映させる差分反映処理を実行し、その後、前記第２のデータパターンのコピーを使用する第２の業務処理テストを実行するテストスイート管理手段と、を備えるテスト実施装置。
【請求項２】
前記第１と第２のデータパターンは、識別情報と複数のデータ項目を包含するレコードを複数含み、
前記テストスイート管理手段は、前記第１と第２のデータパターンの各々に含まれる同一識別情報のレコードの同一データ項目の値に差異がある場合に、前記第２のデータパターンに含まれるレコードの当該データ項目の値を、前記データベース記憶手段内の前記第１のデータパターンのコピーに記憶させる、請求項１のテスト実施装置。
【請求項３】
前記データベース管理手段は、前記第１のデータパターンのコピーのうち前記第１の業務処理テスト実行中に更新されたデータを復元するデータパターン復元処理を行い、
前記テストスイート管理手段は、前記データパターン復元処理後に、前記第１のデータパターンのコピーに対する前記差分反映処理を実行する、請求項１乃至２の何れか１項のテスト実施装置。
【請求項４】
前記入力データ記憶手段は、さらに、前記第１と第２の業務処理で共通に使用するマスタデータを格納し、
前記データベース記憶手段は、さらに、前記マスタデータのコピーを格納し、
データベース管理手段は、前記マスタデータのコピーのうち前記第１の業務処理テスト実行中に更新されたデータを復元するマスタデータ復元処理を行い、
前記テストスイート管理手段は、前記マスタデータ復元処理と、前記第１のデータパターンのコピーに対する前記差分反映処理後、前記第２のデータパターンを使用する第２の業務処理テストを実行する、請求項１乃至３の何れか１項のテスト実施装置。
【請求項５】
所定の実行順序が予め決められたトランザクションデータの第１と第２のデータパターンを入力データ記憶手段に格納し、
前記第１のデータパターンのコピーをデータベース記憶手段に格納し、
前記入力データ記憶手段内の前記第１と第２のデータパターンを比較して差分を抽出し、前記第１のデータパターンのコピーを使用した第１の業務処理テストを実行後、当該差分を前記第１のデータパターンのコピーに反映する差分反映処理を実行し、その後、前記第２のデータパターンのコピーを使用する第２の業務処理テストを実行する方法。
【請求項６】
前記第１と第２のデータパターンは、識別情報と複数のデータ項目を包含するレコードを複数含み、
前記第１と第２のデータパターンの各々に含まれる同一識別情報のレコードの同一データ項目の値に差異がある場合に、前記第２のデータパターンに含まれるレコードの当該データ項目の値を、前記データベース記憶手段内の前記第１のデータパターンのコピーに記憶させる、請求項５の方法。
【請求項７】
前記第１のデータパターンのコピーのうち前記第１の業務処理テスト実行中に更新されたデータを復元するデータパターン復元処理を行い、
前記データパターン復元処理後に、前記第１のデータパターンのコピーに対する前記差分反映処理を実行する、請求項５乃至６の何れか１項の方法。
【請求項８】
前記入力データ記憶手段に、さらに、前記第１と第２の業務処理で共通に使用するマスタデータを格納し、
前記データベース記憶手段に、さらに、前記マスタデータのコピーを格納し、
前記マスタデータのコピーのうち前記第１の業務処理テスト実行中に更新されたデータを復元するマスタデータ復元処理を行い、
前記マスタデータ復元処理と、前記第１のデータパターンのコピーに対する前記差分反映処理後、前記第２のデータパターンを使用する第２の業務処理テストを実行する、請求項５乃至７の何れか１項の方法。
【請求項９】
所定の実行順序が予め決められたトランザクションデータの第１と第２のデータパターンを入力データ記憶手段に格納する処理と、
前記第１のデータパターンのコピーをデータベース記憶手段に格納する処理と、
前記データベース記憶手段のデータアクセスを行うデータベース管理処理と、
前記入力データ記憶手段内の前記第１と第２のデータパターンを比較して差分を抽出し、前記第１のデータパターンのコピーを使用した第１の業務処理テストを実行後、前記データベース管理処理により当該差分を前記第１のデータパターンのコピーに反映させる差分反映処理を実行し、その後、前記第２のデータパターンのコピーを使用する第２の業務処理テストを実行するテストスイート管理処理と、をコンピュータに実行させるプログラム。
【請求項１０】
前記第１と第２のデータパターンは、識別情報と複数のデータ項目を包含するレコードを複数含み、
前記テストスイート管理処理においてコンピュータに、前記第１と第２のデータパターンの各々に含まれる同一識別情報のレコードの同一データ項目の値に差異がある場合に、前記第２のデータパターンに含まれるレコードの当該データ項目の値を、前記データベース記憶手段内の前記第１のデータパターンのコピーに記憶させる、請求項９のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト実施装置、方法、および、プログラム、特に、入力テストデータの登録を必要とするテスト実施装置、方法、および、プログラムに関する。
【背景技術】
【０００２】
電子計算機のために作成されたプログラムは、仕様通りの動きをするかテストされる。このテストは最初の開発時だけではなく、仕様変更時にも実施される。このテストは、仕様変更された機能のテストはもちろん、それ以外の機能のテストも含んでいる。なぜなら、仕様変更された機能以外の機能が、意図せずに変更されてしまう可能性があるからである。このようなテストは、回帰テストまたはリグレッションテストと呼ばれる。
【０００３】
特許文献１は、プログラムの回帰テストを自動化する装置を開示している。この装置は、前回テストを行ったときの入力テストデータや実行結果を保存しておく。テストを再度行う場合に、この装置は、自動的に、前回テストを行ったときの入力テストデータを登録し、テストを実行し、新たな実行結果と前回の実行結果を比較する。これにより、この装置は、仕様変更された機能以外の機能を、意図せずに、変更してしまっていないかを確認する。
【０００４】
このように回帰テストを含めプログラムのテストにおいては、広く一般に、テストケースごとに入力テストデータをテストデータベースに登録する必要がある。この入力テストデータの登録に時間がかかるという問題が起きている。
【０００５】
特許文献２は、この入力テストデータの登録（ロード）時間を短縮する為の方法を開示する。この方法を用いたサーバ装置は、複数プログラムのテストを連続して実行する際、前のテストで更新されたテストデータ部分と、次のテストでアクセスされることとなるデータ部分との差異が最小となるように、テストの実施順序を決定する。そのうえで、このサーバ装置は、次のテストでアクセスされるデータの部分ロードまたは全体ロードを行う。なお、このサーバ装置は、各テストの最初の実行時にデータ更新情報を記録し、当該情報を用いて上述の差分を把握する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開特開平４−１７２５３８号公報
【特許文献２】国際公開第２０１２／１０４９９１号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献２が開示する方法は、テストの実施前に少なくとも部分的なテストデータのロードを実行する。したがって、このテストデータのロードに時間がかかるテスト環境においては、依然としてテストデータの登録時間短縮が不十分となる。さらに、この方法は、実行順序が決められているテスト、初めて実行されるテストに対しては適用できない。
【０００８】
本発明は、上記課題を解決するテスト実施装置、方法、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の１実施の形態のテスト実施装置は、トランザクションデータの第１と第２のデータパターンを格納する入力データ記憶手段と、前記第１のデータパターンのコピーを格納するデータベース記憶手段と、前記データベース記憶手段のデータアクセスを行うデータベース管理手段と、前記入力データ記憶手段内の前記第１と第２のデータパターンを比較して差分を抽出し、前記第１のデータパターンのコピーを使用した第１の業務処理テストを実行後、前記データベース管理手段に当該差分を前記第１のデータパターンのコピーに反映させる差分反映処理を実行し、その後、前記第２のデータパターンのコピーを使用する第２の業務処理テストを実行するテストスイート管理手段と、を備える。
【００１０】
本発明の１実施の形態の方法は、トランザクションデータの第１と第２のデータパターンを入力データ記憶手段に格納し、前記第１のデータパターンのコピーをデータベース記憶手段に格納し、前記入力データ記憶手段内の前記第１と第２のデータパターンを比較して差分を抽出し、前記第１のデータパターンのコピーを使用した第１の業務処理テストを実行後、当該差分を前記第１のデータパターンのコピーに反映する差分反映処理を実行し、その後、前記第２のデータパターンのコピーを使用する第２の業務処理テストを実行する。
【００１１】
本発明の１実施の形態のプログラムは、トランザクションデータの第１と第２のデータパターンを入力データ記憶手段に格納する処理と、前記第１のデータパターンのコピーをデータベース記憶手段に格納する処理と、前記データベース記憶手段のデータアクセスを行うデータベース管理処理と、前記入力データ記憶手段内の前記第１と第２のデータパターンを比較して差分を抽出し、前記第１のデータパターンのコピーを使用した第１の業務処理テストを実行後、前記データベース管理処理により当該差分を前記第１のデータパターンのコピーに反映させる差分反映処理を実行し、その後、前記第２のデータパターンのコピーを使用する第２の業務処理テストを実行するテストスイート管理処理と、をコンピュータに実行させる。
【発明の効果】
【００１２】
本発明にかかるテスト実施装置は、連続して実施されるテストのテストデータの登録を高速に行うことが出来る。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１の実施の形態にかかるテスト実施装置３０の構成図である。
【図２】図２は、コンピュータ装置４０の構成図である。
【図３】図３は、テストスイート定義記憶部３３に格納されているテストスイート定義情報の構成図である。
【図４】図４は、テストスイート管理部３１の動作概要を示すフローチャートである。
【図５】図５は、テストスイート管理部３１のマスタデータ登録処理の動作フローチャートである。
【図６】図６は、テストスイート管理部３１のトランザクションデータ登録処理の動作フローチャートである。
【図７】図７は、読込管理表３７の構成を示す図である。
【図８】図８は、トランザクションデータのデータパターン例を示す図である。
【図９】図９は、第２の実施の形態にかかるテスト実施装置３０の構成図である。
【発明を実施するための形態】
【００１４】
プログラムのテスト、例えば、回帰テスト、を行う場合に、テストを実施する前提となる入力テストデータの原本を新たにテストシステムに格納する必要がある。これをテストケースごとに行うと、入力テストデータの格納に時間がかかる。本発明にかかるテストシステム（テスト実施装置３０）は、テストケースごとに入力テストデータの格納をできるだけしないようにすることで、テストの実施を高速化する。
【００１５】
＜第１の実施の形態＞
＜構成＞
図１は、本実施の形態にかかるテスト実施装置３０の構成図である。テスト実施装置３０は、テストスイート管理部３１、データベース管理部３２、テストスイート定義記憶部３３、テストプログラム記憶部３４、入力データ記憶部３５、データベース記憶部３６、および、読込管理表３７を備える。
【００１６】
テストスイート定義記憶部３３は、テストスイート定義情報を記憶する。テストスイート定義情報は１以上のテストスイートを定義し、テストスィートごとに複数のテストケースを定義する。さらに、テストスイート定義情報は、テストスィート内の各テストケースの実施順序、使用するテストデータ、および、使用するテストプログラム、等を定義する。
【００１７】
テストプログラム記憶部３４は、各テストケースで使用されるテストプログラムを記憶する。
【００１８】
入力データ記憶部３５は、各テストケースで使用される入力テストデータの原本を記憶する。データベース記憶部３６は、あるテストケースが実施されている間、当該テストケースで使用される入力テストデータのコピーを記憶する。各テストケースにおいて、テストプログラムは、データベース記憶部３６に登録されている入力テストデータをアクセスして、テストを実施する。
【００１９】
入力テストテータは、大きく２種類に分類される。それらは、トランザクションデータとマスタデータである。マスタデータは複数の業務処理に共通のデータであり、トランザクションデータはある業務処理固有のデータである。マスタデータは、例えば、銀行口座情報である。トランザクションデータは、例えば、オンライン取引トランザクションデータ、日次バッチ処理用データ、月次バッチ処理用データである。
【００２０】
入力テストデータのうちトランザクションデータは、テストケースごとに、当該テストケース用に毎回新たにデータベース記憶部３６に登録される必要がある。一方、マスタデータは、必ずしもテストケースごとに毎回データベース記憶部３６に登録される必要はない。
【００２１】
なお、トランザクションデータは、テストケースごとにデータが異なるのであるが、異なるデータは一部だけであることが多い。例えば、トランザクションデータが複数のレコードの集合である場合、各レコードのすべてのデータ項目が異なっているわけではない、異なっているのはごく一部のデータ項目であり、他のデータ項目は同じであるようなケースが多い。
【００２２】
例えば、ある整数データ項目の値が１００以上かどうかで処理が分岐するような閾値に関するテストケースに使用されるトランザクションデータは、当該整数データ項目の値が異なる２つのレコードを包含する。この２つのレコードは、例えば、当該整数データ項目の値が１００のレコードと９９のレコードである。しかし、その２つのレコードの中で、値が異なるのは当該整数データ項目のみであり、他のデータ項目の値に差異は無い場合が多い。
【００２３】
本実施の形態にかかるテスト実施装置３０は、トランザクションデータをマスタデータと区別したうえで、トランザクションデータのこの特性を利用して、テストデータを効率よくデータベース記憶部３６に登録する。
【００２４】
読込管理表３７は、既にデータベース記憶部３６に登録された入力テストデータを記録している表である。既にデータベース記憶部３６に登録された入力テストデータとは、実施済みのテストケースで使用された入力テストデータである。
【００２５】
テストスイート管理部３１は、テストスイート定義情報に基づいて、利用者から指定されたテストスィート内の各テストケースを実施する。すなわち、テストスイート管理部３１は、指定されたテストスイートのテストスイート定義情報から、各テストケースの情報を定義された順番に取り出し、定義された入力テストデータのコピーをデータベース記憶部３６に登録する。テストスイート管理部３１は、その後、定義されたテストプログラムを起動する。テストスイート管理部３１は、テストプログラムの実行が終了したとき、所定の結果データに基づいて当該テストケースの正常／異常を判定しても良い。
【００２６】
データベース管理部３２は、テストスイート管理部３１やテストプログラムから指示を受け、データベース記憶部３６内のデータにアクセスする。データベース管理部３２は、例えば、リレーショナルデータベースシステムである。データベース管理部３２は、データの更新履歴と更新前後のデータをログファイルに保存しており、テストスイート管理部３１の要求に応じて、データ更新の有無の判断とその情報提供、及び、更新データを復元する処理を行う。
【００２７】
ここで、テストスイート管理部３１、および、データベース管理部３２は、論理回路で構成される。テストスイート定義記憶部３３、テストプログラム記憶部３４、入力データ記憶部３５、および、データベース記憶部３６は、ディスク装置、または、半導体記憶装置等の記憶装置である。読込管理表３７は、ＲＡＭ（Random Access Memory）等の半導体記憶装置に格納されている。
【００２８】
なお、テスト実施装置３０は、コンピュータ装置４０により実現されても良い。図２は、コンピュータ装置４０の構成図である。
【００２９】
コンピュータ装置４０は、バス４４で相互に接続された、プロセッサ４１、主記憶部４３、および、外部記憶装置４２を備える。プロセッサ４１は、バス４４を経由して、主記憶部４３、および、外部記憶装置４２に対してデータの読み書きを行う。また、プロセッサ４１は、主記憶部４３に格納されているプログラム４５を実行する。なお、プログラム４５は、当初外部記憶装置４２に格納されており、コンピュータ装置４０の初期設定時に、プロセッサ４１が外部記憶装置４２から主記憶部４３にロードしても良い。
【００３０】
ここで、主記憶部４３はＲＡＭ等の半導体記憶装置である。外部記憶装置４２はディスク装置、または、半導体記憶装置等の記憶装置である。
【００３１】
プロセッサ４１は、プログラム４５を実行することにより、テストスイート管理部３１、および、データベース管理部３２として機能する。すなわち、プロセッサ４１は、プログラム４５を実行することにより、テストスイート管理部３１、および、データベース管理部３２が行う処理を実行する。外部記憶装置４２は、テストスイート定義記憶部３３、テストプログラム記憶部３４、入力データ記憶部３５、および、データベース記憶部３６として機能する。さらに、プロセッサ４１は、主記憶部４３に読込管理表３７を作成する。
【００３２】
図３は、テストスイート定義記憶部３３に格納されているテストスイート定義情報の構成図である。テストスイート定義情報は、例えば、テストスイート内のテストケース対応の複数の行レコードを包含する。各行レコードは、例えば、テストスイートＩＤ（Identification）、テストケースＩＤ、実施順、トランザクションデータ定義、マスタデータ定義、テストプログラムＩＤを包含する。
【００３３】
テストスイートＩＤ、および、テストケースＩＤは、それぞれ、テストスイート、および、テストケースの識別情報である。実施順は、当該テストケースが実行される、当該テストスイートの中における順序を定義する。テストプログラムＩＤは、当該テストケースで使用されるテストプログラムを定義する。
【００３４】
トランザクションデータ定義は、当該テストケースで使用される１以上のトランザクションデータとそのデータパターンを定義している。入力データ記憶部３５は、トランザクションデータ毎に、複数のデータパターンのデータの原本を格納している。
【００３５】
図３のテストスイート定義情報例の先頭行は、テストスイートＴ０１のテストケースＡが、トランザクションデータＡのデータパターンＡＡを用いることを示している。第２行は、テストスイートＴ０１のテストケースＢが、同じトランザクションデータＡであるが異なるパターンのデータであるデータパターンＡＢを用いることを示している。さらに、第３行は、テストスイートＴ０１のテストケースＣが、同じトランザクションデータＡであるが第３のパターンのデータであるデータパターンＡＣを用いることを示している。ここで、トランザクションデータＡのパターンＡＡ、ＡＢ、及び、ＡＣは、大部分が類似し、一部のデータ項目の値だけが異なっているデータかもしれない。
【００３６】
マスタデータ定義は、当該テストケースで使用される１以上のマスタデータを定義している。マスタデータは、複数のテストケースで共有されるデータである。入力データ記憶部３５は、マスタデータ対応にデータの原本を格納している。
【００３７】
図３のテストスイート定義情報例の先頭行は、テストスイートＴ０１のテストケースＡは、マスタデータＸを用いることを示している。第２行は、テストスイートＴ０１のテストケースＢは、マスタデータＸとＹを用いることを示している。さらに、第３行は、テストスイートＴ０１のテストケースＣは、マスタデータＹを用いることを示している。
【００３８】
＜動作＞
テスト実施装置３０の利用者は、テストを実施する前に、テストスイート定義情報を準備し、テストスイート定義記憶部３３に格納しておく。このとき、利用者は、各テストケースが入力・更新するデータを、トランザクションデータかマスタデータかを区別して定義しておく。
【００３９】
また、利用者は、テストスイート定義情報に定義したマスタデータを準備して、入力データ記憶部３５に格納しておく。さらに利用者は、テストスイート定義情報に定義したトランザクションデータの各データパターンを準備して、入力データ記憶部３５に格納しておく。
【００４０】
そのうえで、利用者は、テストを実施するテストスイートのＩＤを指定して、テストスイート管理部３１を起動する。利用者は、テスト実施装置３０に接続されている図示されないコンソール装置等を使用して、テストスイート管理部３１を起動する。
【００４１】
図４は、テストスイート管理部３１の動作概要を示すフローチャートである。テストスイート管理部３１は、テストスイート定義情報から、指定されたテストスイートのテストケースの情報を順次取り出す（Ｓ１）。テストスイート管理部３１は、各テストケースを、テストスイート定義情報に記載されている順序で取り出す。
【００４２】
テストスイート管理部３１は、マスタデータ定義で示されている当該テストケースで使用するマスタデータをデータベース記憶部３６に登録する（Ｓ２；詳細は後述）。次いで、テストスイート管理部３１は、トランザクション定義で示されている当該テストケースで使用するトランザクションデータのデータパターンをデータベース記憶部３６に登録する（Ｓ３；詳細は後述）。
【００４３】
入力テストデータのデータベース記憶部３６への登録を完了した後、テストスイート管理部３１は、テストプログラムＩＤで示されている当該テストケースで使用するテストプログラムを起動する。テストプログラムは、データベース記憶部３６に登録されている入力テストデータを参照または更新しながら、テストを実行する（Ｓ５）。テストプログラムの実行後、テストスイート管理部３１は、テストプログラムの出力値や、テストプログラムが更新した入力テストデータの内容からテストの良否を判断し、判断結果を装置外部に出力しても良い。
【００４４】
テストスイート管理部３１は、以上の動作を、指定されたテストスイートの全てのテストケースのテストが終了するまで（Ｓ５でＹ）、繰り返す
図５は、テストスイート管理部３１のマスタデータ登録処理の動作フローチャートである。この処理は、図４のフローチャートのＳ２で実行される。
【００４５】
テストスイート管理部３１は、まず、いまから実施しようとするテストケースのマスタデータが既にデータベース記憶部３６に登録済みであるか否かをチェックする（Ｓ１１）。このチェックは、以前に実施されたテストケースにより、いまから実施しようとするテストケースのマスタデータが既に登録されたか否かをチェックするものである。このチェックは、読込管理表３７を参照して行われる。
【００４６】
図７は、読込管理表３７の構成を示す図である。読込管理表３７は、テストスイート定義情報に登録されているマスタデータおよびトランザクションデータごとに、既に登録が『済み』であるか『否』か、を示すフラグを記録する。テストスイート管理部３１は、起動されるとすぐ（Ｓ１より以前）に、読込管理表３７を生成して初期化する。初期状態において、読込管理表３７の全てのマスタデータおよびトランザクションデータのフラグは、『否』（図７では空欄で示されている）の状態を示す。
【００４７】
図７のＡ）は、図３のテストスイート定義情報例に基づく、初期状態の読込管理表３７を示す。この読込管理表３７は、トランザクションデータＡ及びＢ、並びに、マスタデータＸ及びＹのいずれも、未登録であることを示している。
【００４８】
いまから実施しようとするテストケースのマスタデータが未だ登録されていなければ（Ｓ１１でＮ）、テストスイート管理部３１は、入力データ記憶部３５のマスタデータ原本を読み込んで、データベース記憶部３６に登録する（Ｓ１４）。テストスイート管理部３１は、データベース管理部３２を用いてデータベース記憶部３６にデータを登録する。このとき、テストスイート管理部３１は、登録した当該マスタデータが登録済みとなったことを、読込管理表３７に記録する。
【００４９】
このように、テストスイート管理部３１は、トランザクションデータＡ及びＢ、並びに、マスタデータＸ及びＹの何れかを始めて登録するたびに、その登録を読込管理表３７に記録していく。
【００５０】
図７のＢ）は、図３のテストスイート定義情報例の１行目のテストケース（テストスイートＴ０１、テストケースＡ）のマスタデータ、及び、トランザクションデータ登録後の読込管理表３７を示す。なお、各テストケースは、図３で記載されている実施順に実施される。この読込管理表３７は、マスタデータＸとトランザクションデータＡが登録済みであることを示している。
【００５１】
図７のＣ）は、図３のテストスイート定義情報例の２行目のテストケース（テストスイートＴ０１、テストケースＢ）のマスタデータ、及び、トランザクションデータ登録後の読込管理表３７を示す。この読込管理表３７は、マスタデータＸとＹ、並びに、トランザクションデータＡが登録済みであることを示している。
【００５２】
なお、図３のテストスイート定義情報例の３行目のテストケース（テストスイートＴ０１、テストケースＣ）のマスタデータ、及び、トランザクションデータ登録後の読込管理表３７も、図７のＣ）通りである。その理由は、当該テストケースで使用されるマスタデータＸとトランザクションデータＡは、それ以前のテストケースで登録されているからである。
【００５３】
図７のＤ）は、図３のテストスイート定義情報例の４行目のテストケース（テストスイートＴ０２、テストケースα）のマスタデータ、及び、トランザクションデータ登録後の読込管理表３７を示す。なお、テストスイートＴ０２は、テストスイートＴ０２に続いて実施されたとする。この読込管理表３７は、マスタデータＸとＹ、並びに、トランザクションデータＡとＢが登録済みであることを示している。
【００５４】
図５に戻り、いまから実施しようとするテストケースのマスタデータが登録済みであれば（Ｓ１１でＹ）、テストスイート管理部３１は、データベース管理部３２に当該マスタデータの更新の有無、更新データの復元の可否を問い合わせる。すなわち、テストスイート管理部３１は、以前に実施されたテストケースの実施過程で、いまから実施しようとするテストケースのマスタデータが変更を受けているのか、変更を受けていれば元に戻せるのかを、データベース管理部３２を用いてチェックする。
【００５５】
更新が無い場合（Ｓ１２でＮ）、登録済みマスタデータは再使用可能であるので、テストスイート管理部３１は当該マスタデータの登録処理を終了する。
【００５６】
更新があっても（Ｓ１２でＹ）、更新データの復元が可能な場合（Ｓ１５でＹ）、テストスイート管理部３１は、データベース管理部３２に依頼して更新データの復元を行う（Ｓ１７）。更新データが復元されれば、登録済みマスタデータは再使用可能であるので、テストスイート管理部３１は当該マスタデータの登録処理を終了する。
【００５７】
更新があって（Ｓ１２でＹ）、かつ、更新データの復元が不可能な場合（Ｓ１５でＮ）、テストスイート管理部３１は、登録済みデータをデータベース記憶部３６から削除する（Ｓ１６）。そして、テストスイート管理部３１は、入力データ記憶部３５のマスタデータ原本を読み込んで、データベース記憶部３６に登録し直す（Ｓ１８）。
【００５８】
当該マスタデータの登録処理を終了する（Ｓ１２でＹ、Ｓ１４、Ｓ１７、Ｓ１８）と、テストスイート管理部３１は、いまから実施しようとするテストケースのマスタデータが全て登録済みであれば（Ｓ１３でＹ）、マスタデータの登録処理を終了する。いまから実施しようとするテストケースのマスタデータで未登録なものがあれば（Ｓ１３でＮ）、テストスイート管理部３１は、次のマスタデータの登録処理を行う（Ｓ１１に戻る）。
【００５９】
図６は、テストスイート管理部３１のトランザクションデータ登録処理の動作フローチャートである。この処理は、図４のフローチャートのＳ３で実行される。
【００６０】
テストスイート管理部３１は、まず、いまから実施しようとするテストケースのトランザクションデータが既にデータベース記憶部３６に登録済みであるか否かをチェックする（Ｓ２１）。この時、テストスイート管理部３１は、トランザクションデータの登録有無をチェックするのであり、これから登録しようとするデータパターンの登録有無をチェックするのではない。
【００６１】
このチェックは、以前に実施されたテストケースにより、いまから実施しようとするテストケースのトランザクションデータが既に登録されたか否かをチェックするものである。このチェックは、前述した読込管理表３７を参照して行われる。
【００６２】
いまから実施するテストケースのトランザクションデータが未だ登録されていなければ（Ｓ２１でＮ）、テストスイート管理部３１は、いまから実施するテストケースのトランザクションデータデータパターンの原本を読み込んで登録する（Ｓ２８）。テストスイート管理部３１は、当該データパターンを、入力データ記憶部３５から読み込んで、データベース記憶部３６に登録する。
【００６３】
このとき、テストスイート管理部３１は、登録したトランザクションデータを読込管理表３７に記録する。テストスイート管理部３１は、登録したトランザクションデータのデータパターンを読込管理表３７に記録しても良い。こうすることで、テストスイート管理部３１は、トランザクションデータが登録されている場合に、どのデータパターンが登録されていたのかを簡単に知ることが出来る。
【００６４】
いまから実施しようとするテストケースのトランザクションデータが登録済みであれば（Ｓ２１でＹ）、テストスイート管理部３１は、データベース管理部３２に当該トランザクションデータの更新の有無、更新データの復元の可否を問い合わせる。すなわち、テストスイート管理部３１は、以前に実施されたテストケースの実施過程で、いまから実施しようとするテストケースのトランザクションデータが変更を受けているのか、変更を受けていれば元に戻せるのかを、チェックする。
【００６５】
更新が無い場合（Ｓ２２でＮ）、テストスイート管理部３１は、既に登録されているデータパターン（以降、前パターン）を、いまから実施しようとするテストケースのトランザクションデータのデータパターン（以降、新パターン）に変更する。この処理は、差分反映処理と呼ばれる。
【００６６】
更新があっても（Ｓ２２でＹ）、更新データの復元が可能な場合（Ｓ２９でＹ）、テストスイート管理部３１は、データベース管理部３２に依頼して更新データの復元を行う（Ｓ３１）。更新データが復元されれば、テストスイート管理部３１は、差分反映処理を実行する。
【００６７】
例えば、図３のテストスイート定義情報例の２行目のテストケース（テストスイートＴ０１、テストケースＢ）のトランザクションデータＡの登録時に、テストスイート管理部３１は、差分反映処理により前データパターンＡＡを新データパターンＡＢに変更する。
【００６８】
トランザクションデータは、複数のレコードの集合であり、各レコードは、レコードＩＤと複数のデータ項目を包含しているものとする。
【００６９】
差分反映処理において、テストスイート管理部３１は、入力データ記憶部３５内の前テータパターン、および、新データパターンの両者にアクセスする。テストスイート管理部３１は、前テータパターン、および、新データパターンがどのデータパターンであるかを、テストスイート定義情報から得る。テストスイート管理部３１は、前テータパターンがどのデータパターンであるかを、読込管理表３７から得ても良い。
【００７０】
そして、テストスイート管理部３１は、それらの一方または両方に含まれている全てのレコードＩＤについて、当該ＩＤのレコードが、前、新データパターンの何れに含まれているかの切り分けを行い（Ｓ２３）、切り分け結果に応じて以下の処理を行う。
【００７１】
ア：当該ＩＤのレコードが前、新データパターン両方に含まれている場合
この場合、テストスイート管理部３１は、同一ＩＤのレコードを前データパターン、および、新データパターンの各々から取り出し、両レコードのデータをデータ項目単位に比較する。テストスイート管理部３１は、差異が有るデータ項目を検出すると、新データパターンに含まれている値で、データベース記憶部３６内の同一ＩＤのレコードの当該テータ項目の値を、データベース管理部３２を用いて置換する（Ｓ２４）。
【００７２】
この場合の具体例が、図８のＡ）とＢ１）に示されている。図８のＡ）は、入力データ記憶部３５内の前テータパターンである。図８のＢ１）は、入力データ記憶部３５内の、新データパターンである。ここで、ＩＤ０１乃至ＩＤ０３の各レコードが両データパターンに含まれている。この場合、テストスイート管理部３１は、ＩＤ０１の両レコードのデータを比較し、データ項目１の値が、前データパターンでは“ａ”であるのに対し、新データパターンでは“ｄ”であることを検出する。そして、テストスイート管理部３１は、データベース記憶部３６内のＩＤ０１のレコードのデータ項目１の値を“ａ”から“ｄ”に更新する。同様に、テストスイート管理部３１は、データベース記憶部３６内のＩＤ０２とＩＤ００３のレコードのデータ項目１の値を“ｂ”、“ｃ”から“ｅ”、“ｆ”に置換する。
【００７３】
イ：当該ＩＤのレコードが前データパターンにだけ含まれている場合
この場合、テストスイート管理部３１は、データベース記憶部３６内の当該ＩＤのレコードを削除する（Ｓ２５）。
【００７４】
この場合の具体例が、図８のＡ）とＢ２）に示されている。図８のＡ）は、入力データ記憶部３５内の前テータパターンである。図８のＢ２）は、入力データ記憶部３５内の、新データパターンである。ここで、ＩＤ０２のレコードは前データパターンにだけ含まれている。この場合、テストスイート管理部３１は、データベース記憶部３６内のＩＤ０２のレコードを削除する。
【００７５】
ハ：当該ＩＤのレコードが新データパターンにだけ含まれている場合
この場合、テストスイート管理部３１は、入力データ記憶部３５内の当該ＩＤのレコードのコピーをデータベース記憶部３６に追加登録する（Ｓ２６）。
【００７６】
この場合の具体例が、図８のＡ）とＢ３）に示されている。図８のＡ）は、入力データ記憶部３５内の前テータパターンである。図８のＢ３）は、入力データ記憶部３５内の、新データパターンである。ここで、ＩＤ０４のレコードは新データパターンにだけ含まれている。この場合、テストスイート管理部３１は、入力データ記憶部３５内のＩＤ０４のレコードのコピーをデータベース記憶部３６に追加登録する。
【００７７】
図６に戻って、更新があって（Ｓ２２でＹ）、かつ、更新データの復元が不可能な場合（Ｓ２９でＮ）、テストスイート管理部３１は、登録済みデータをデータベース記憶部３６から削除する（Ｓ３０）。続いて、テストスイート管理部３１は、入力データ記憶部３５のトランザクションデータの新データパターン原本を読み込んで、データベース記憶部３６に登録する（Ｓ３２）。
【００７８】
当該トランザクションデータの登録処理を終了すると、テストスイート管理部３１は、いまから実施しようとするテストケースのトランザクションデータが全て登録済みであれば（Ｓ２７でＹ）、トランザクションデータの登録処理を終了する。いまから実施しようとするテストケースのトランザクションデータの何れかが未登録であれば（Ｓ２７でＮ）、テストスイート管理部３１は、次のトランザクションデータの登録処理を行う（Ｓ２１に戻る）。
【００７９】
＜効果＞
本実施の形態のテスト実施装置３０は、連続して実施されるテストのテストデータの登録を高速に行うことが出来る。
【００８０】
その第１の理由は、テストスイート管理部３１が、トランザクションデータのデータパターンの差異をデータベース記憶部３６に反映することで、これから実施するテストケースのデータを登録するからである。
【００８１】
トランザクションデータはテストケースごとに差異は有るが、それは一部のデータである場合が多い。また、データベースシステム、特に、リレーショナルデータベースシステムでは、一般的に、INSERT処理のコストはUPDATE処理に比べて高い。その理由は、UPDATE処理ではINSERT処理に比べてインデックス作成のコストがかからないこと、および、転送するデータの数がINSERT処理に比べて少ないからである。このため、例えば、回帰テストのように、一部しか異ならないデータを毎回入れ直すような場合には、INSERT処理ではなくUPDATE処理を使うことで、トランザクションデータ登録の高速化を実現することができる。
【００８２】
その第２の理由は、テストケース固有のトランザクションデータと区別されているため、テストケース共通のマスタデータについて、データ比較を行わなくて済むからである。
【００８３】
また、本実施の形態のテスト実施装置３０は、テストプログラムの入力データアクセスに過度の制約をかけない。
【００８４】
その理由は、更新データを復元するため、テストプログラムは、マスタデータ、および、トランザクションの更新が可能だからである。トランザクションデータのデータパターンの差異をデータベース記憶部３６に反映する前に、更新データを復元しておくことで、入力データ記憶部３５のトランザクションデータの差異に基づいて、データベース記憶部３６内の差分反映が可能となる。
【００８５】
＜変形例＞
データベース管理部３２は、リレーショナルデータベースシステムでなくても良い。データベース管理部３２は、索引順編成ファイルシステムやインメモリデータベースシステムでも良い。同様の効果が得られる。その理由は、レコードの削除と追加の２つの処理をレコードの更新だけの１つの処理に減らすことができるからである。
【００８６】
＜第２の実施形態＞
図９は、第２の実施の形態にかかるテスト実施装置３０の構成図である。テスト実施装置３０は、テストスイート管理部３１、データベース管理部３２、入力データ記憶部３５、および、データベース記憶部３６を備える。
【００８７】
入力データ記憶部３５は、トランザクションデータの第１と第２のデータパターンを格納する。データベース記憶部３６は、第１のデータパターンのコピーを格納する。データベース管理部３２は、データベース記憶部３６のデータアクセスを行う。
【００８８】
テストスイート管理部３１は、入力データ記憶部３５内の第１と第２のデータパターンを比較して差分を抽出する。そして、テストスイート管理部３１は、第１のデータパターンのコピーを使用した第１の業務処理テストを実行する。その後、テストスイート管理部３１は、データベース管理部３２に当該差分を第１のデータパターンのコピーに反映させる差分反映処理を実行し、第２のデータパターンのコピーを使用する第２の業務処理テストを実行する。
【００８９】
本実施の形態のテスト実施装置３０は、連続して実施されるテストのテストデータの登録を高速に行うことが出来る。
【００９０】
その理由は、テストスイート管理部３１が、トランザクションデータのデータパターンの差異をデータベース記憶部３６に反映することで、これから実施するテストケースのデータを登録するからである。
【００９１】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００９２】
３０    テスト実施装置
３１    テストスイート管理部
３２    データベース管理部
３３    テストスイート定義記憶部
３４    テストプログラム記憶部
３５    入力データ記憶部
３６    データベース記憶部
３７    読込管理表
４０    コンピュータ装置
４１    プロセッサ
４２    外部記憶装置
４３    主記憶部
４４    バス
４５    プログラム
【図１】
0006610037.tif 000002
【図２】
0006610037.tif 000003
【図３】
0006610037.tif 000004
【図４】
0006610037.tif 000005
【図５】
0006610037.tif 000006
【図６】
0006610037.tif 000007
【図７】
0006610037.tif 000008
【図８】
0006610037.tif 000009
【図９】
0006610037.tif 000010