(57)【特許請求の範囲】
【請求項１】
アプリケーションのテストを行うテスト装置であって、
テスト用の入力データを記憶するための入力データ記憶手段と、
アプリケーションの実行結果としてテスト結果情報を記憶するための出力データ記憶手段と、
前記入力データ記憶手段から入力データを読み出し、当該入力データにしたがってテスト対象のアプリケーションを実行し、その実行結果を出力する業務プログラム制御手段と、
前記業務プログラム制御手段からアプリケーションの実行結果の入力があった場合に、当該入力内容を、データベースを更新するための言語に変換したうえでデータベースを擬似的に更新し、当該更新の結果である擬似更新結果を前記業務プログラム制御手段に戻すデータベース擬似制御手段と、
前記出力データ記憶手段に記録されたロジック更新前後のテスト結果情報を読み出し、読み出したテスト結果情報を比較し、その比較結果を出力する比較結果出力手段と、
を備え、
前記業務プログラム制御手段は、前記データベース擬似制御手段から受け取った擬似更新結果に基づいて、前記入力データ、帳票出力データ、およびデータベース更新に関する記録を含むログ、を前記テスト結果情報として前記出力データ記憶手段に記録し、テストの実行開始時にアプリケーションのロジック更新後のテストであるか否かを示すテスト識別情報を記憶し、前記テスト識別情報がロジック更新後を示す値である場合に当該テストに対応するテスト結果情報が前記出力データ記憶手段へ格納された後に、前記比較結果出力手段に対してロジック更新前後の比較の実行を指示することを特徴とするテスト装置。
【請求項２】
前記比較結果出力手段は、さらに、
前記ロジック更新前後のテスト結果情報が異なっている場合、前記ロジック更新前後のアプリケーションの実行に使用した入力データを出力することを特徴とする請求項１に記載のテスト装置。
【請求項３】
アプリケーションのテスト方法であって、
入力データ記憶部からテスト用の入力データを読み出し、当該入力データにしたがってテスト対象のアプリケーションを実行する実行ステップと、
テストの実行開始時にアプリケーションのロジック更新後のテストであるか否かを示すテスト識別情報を記憶する記憶ステップと、
前記実行ステップによるアプリケーションの実行結果を、データベースを更新するための言語に変換したうえで、データベースを擬似的に更新する擬似更新ステップと、
前記擬似更新ステップによる更新の結果である擬似更新結果に基づいて、前記入力データ、帳票出力データ、およびデータベース更新に関する記録を含むログ、をテスト結果情報として出力データ記憶部に記録する記録ステップと、
前記テスト識別情報がロジック更新後を示す値である場合、当該テストに対応するテスト結果情報が前記出力データ記憶部へ格納された後に、前記出力データ記憶部に記録されたロジック更新前後のテスト結果情報を読み出し、読み出したテスト結果情報を比較し、その比較結果を出力する比較結果出力ステップと、
を含むことを特徴とするテスト方法。
【請求項４】
前記ロジック更新前後のテスト結果情報が異なっている場合、前記ロジック更新前後のアプリケーションの実行に使用した入力データを出力する入力データ出力ステップ、
をさらに含むことを特徴とする請求項３に記載のテスト方法。
【請求項５】
請求項３または４に記載のテスト方法をコンピュータに実行させることを特徴とするテストプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースを更新せずにアプリケーションのテストを実行するテスト装置、およびそのテスト方法に関する。
【背景技術】
【０００２】
従来、アプリケーションのテストを行う場合には、テストを実行する度にその結果がデータベースに反映されるため、再実行するためにはデータベースを元に戻すことが必要であった。
【０００３】
これに対して、下記特許文献１では、データベースの一部の写しが置かれるキャッシュを設け、データベースに対する更新操作に代えてキャッシュ上で更新操作を行う構成とすることで、データベースの内容を初期状態に維持したままで、データベースの更新を擬似的に行う技術が開示されている。
【０００４】
【特許文献１】特開平６−１６１８５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来の技術によれば、テストを行う度にキャッシュ上にデータベースの写しを作成しなければならないので、作業負荷がかかる、という問題があった。また、キャッシュ上の写しは更新されてしまうため、同じ処理について何度もテストを繰り返す場合に適用するには不向きである、という問題があった。
【０００６】
本発明は、上記に鑑みてなされたものであって、データベースを更新することなく、アプリケーションの検証を可能とするテスト装置、テスト方法およびテストプログラムを得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、アプリケーションのテストを行うテスト装置であって、テスト用の入力データを記憶するための入力データ記憶手段と、アプリケーションの実行結果としてテスト結果情報を記憶するための出力データ記憶手段と、前記入力データ記憶手段から入力データを読み出し、当該入力データにしたがってテスト対象のアプリケーションを実行し、その実行結果を出力する業務プログラム制御手段と、前記業務プログラム制御手段からアプリケーションの実行結果の入力があった場合に、当該入力内容を、データベースを更新するための言語に変換したうえでデータベースを擬似的に更新し、当該更新の結果である擬似更新結果を前記業務プログラム制御手段に戻すデータベース擬似制御手段と、を備え、前記業務プログラム制御手段は、前記データベース擬似制御手段から受け取った擬似更新結果に基づいて、前記入力データ、帳票出力データ、およびデータベース更新に関する記録を含むログ、を前記テスト結果情報として前記出力データ記憶手段に記録することを特徴とする。
【発明の効果】
【０００８】
この発明によれば、データベースを実際に更新することなく、保存された結果データを参照することで、アプリケーションの検証が可能になるとともに、実環境に近い状態で繰り返しテストができる、という効果を奏する。
【発明を実施するための最良の形態】
【０００９】
以下に、本発明にかかるテスト装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１０】
図１は、テスト装置の構成例を示す図である。このテスト装置は、入力データ記憶部１と、入力データ一括読込部２と、業務プログラム制御部３と、データベース擬似制御部４と、出力データ記憶部５と、コンペア結果一括出力部６と、を備えている。
【００１１】
入力データ記憶部１は、テストに用いる入力データを保持する。入力データ一括読込部２は、テストを行うにあたり、入力データ記憶部１に保持されるテスト対象データを読み込む。業務プログラム制御部３は、業務プログラムの実行を制御するとともに、データベース擬似制御部４を制御し、データベース擬似更新を行わせる。ここで、擬似更新とは、業務プログラムが発行するデータベース更新命令文を、データベースを更新するための実際の言語に変換して、確定（コミット）を除く更新処理を行うことをいう。データベース擬似制御部４は、業務プログラム制御部３による制御にしたがって、更新対象であるデータベースに擬似更新を行う。
【００１２】
出力データ記憶部５は、ログおよびテスト対象の業務プログラムが出力した帳票データなどの結果データを保持する。コンペア結果一括出力部６は、出力データ記憶部５から結果データを読み出し、業務プログラムの更新前後で結果を比較して、コンペア結果リストおよび差異入力データをファイルとして出力する。コンペア結果リストは、比較された結果が一覧として出力されるファイルである。差異入力データは、結果データ同士が異なっていた場合に、該当する入力データが出力されるファイルである。
【００１３】
なお、図１では、テスト対象業務プログラムとして業務プログラム１０を、業務プログラム１０が更新処理を行うデータベースとしてデータベース１１を、代表的に記載している。業務プログラム１０は、実行可能なオブジェクトの状態である。
【００１４】
つづいて、以上のように構成されたテスト装置の動作を、実際のデータを用いながら詳細に説明する。以下では、このテスト装置を、販売物流モジュールにおける業務プログラムのロジックを検証するために用いることとする。なお、テストは、ロジックの更新前と更新後について行う。ロジックの更新前のテストを１回目のテスト、ロジックの更新後のテストを２回目のテストとする。
【００１５】
図２は、テスト装置の動作、すなわち、アプリケーションのテスト処理を示すフローチャートである。テスト装置が動作を開始すると、入力データ一括読込部２は、入力データ記憶部１から、業務プログラム１０に引き渡す入力データを一括で読み込む（ステップＳ１）。図３は、入力データの一例を示す図である。図３における「機能番号」は、処理内容を一意に示すＩＤであり、ここでは、一例として、“００１（受注）”とする。「発注者コード」は、取引先のＩＤであり、「製品コード」は、製品のＩＤである。「発注数」は、発注された量である。
【００１６】
そして、入力データが１件以上存在した場合（ステップＳ２：Ｙｅｓ）、業務プログラム制御部３は、入力データにしたがって業務プログラム１０を実行する（ステップＳ３）。ここでは、業務プログラム１０は、受注データについて在庫引当を行い、在庫テーブルを更新するとともに引当結果を帳票出力する。データベース更新処理が発生すると、業務プログラム１０は、更新内容とともに、更新要求を発行し、業務プログラム制御部３に渡す。一方、入力データが１件も存在しなかった場合（ステップＳ２：Ｎｏ）、処理を終了する。
【００１７】
業務プログラム制御部３は、業務プログラム１０から更新要求を受けると、データベース擬似制御部４に、その更新内容を渡す。データベース擬似制御部４は、その更新内容をデータベース用の言語に変換し、データベース１１を擬似更新する。図４は、在庫テーブルのフォーマットの一例を示す図である。図４の在庫テーブルには、「製品コード」に対する「在庫数」が登録されている。データベース１１では、製品コード“ＢＢＢ”の在庫数“１００００”から、発注数“１００”を引いて“９９００”とする処理が行われる。そして、データベース擬似制御部４は、データベース１１から更新結果の戻りを受信し、この更新結果を業務プログラム制御部３に引き渡す。
【００１８】
業務プログラム制御部３は、データベース１１から受信した更新結果、および作成したログを、結果データとして出力データ記憶部５に保存する（ステップＳ４）。図５は、結果データのフォーマットの一例を示す図である。図５に示すように、たとえば、図３で示した入力データと、その入力データについて行われた処理についての、ログおよび出力された帳票データ、が保存される。図５では、上から順に、入力データ，ログ，帳票データが示されている。ここでは、帳票データとして在庫引当結果が出力されている。
【００１９】
つぎに、業務プログラム制御部３は、今回のテストが、ロジック更新後の業務プログラムについてのテストであるか否かを、テスト開始時に設定されたパラメータなどに基づいて判断する。ロジック更新前の業務プログラムについてのテストであった場合（ステップＳ５：Ｎｏ）、処理を終了する。テスト装置は、１回目のテスト，２回目のテストのいずれの場合も、ステップＳ１〜Ｓ４の処理を行い、結果データを出力データ記憶部５に保存する。
【００２０】
一方、今回のテストがロジック更新後の業務プログラムについてのテストの場合（ステップＳ５：Ｙｅｓ）、業務プログラム制御部３は、その旨をコンペア結果一括出力部６に通知する。これを受けたコンペア結果一括出力部６は、出力データ記憶部５から１回目および２回目のそれぞれの業務プログラム１０の結果データを読み出し、結果データ同士をコンペアする（ステップＳ６）。そして、コンペア結果一括出力部６は、コンペアした結果、違いがある結果データを特定し、コンペア結果リストとしてファイルを出力する（ステップＳ７）。また、コンペア結果一括出力部６は、違いがある結果データから、入力データのみを抽出し、差異入力データとしてファイルを出力する（ステップＳ８）。
【００２１】
たとえば、ロジックの更新が、ロジックの変更や不具合の修正であった場合、更新前後で結果データは異なる。このため、想定した通りに結果データが出ているかを検証することとなる。結果データが思惑通りでない場合、ロジックの不備を解消したうえで、同様に、差異入力データを用いて再度テストをする。
【００２２】
たとえば、今回のロジックの変更が不具合の修正であって、修正前と修正後にテストを行う場合を想定する。図６は、コンペア結果リストのフォーマットの一例を示す図である。図６に示すように、入力データと、それに対する１回目のテストと２回目のテストの結果データが示されている。１回目のテストでは、操作テーブル“在庫テーブル”についての操作後データが“８８００”となっている。この結果は、発注数“１００”を元の在庫数“１００００”（図４参照）から引くので誤りである。一方、２回目のテストでは、操作後データが“９９００”となっているので、ロジックの更新（修正）が思惑通りであることがわかる。
【００２３】
また、たとえば、ロジックを「全く同じロジックを異なる言語で書き換える（CobolをC言語に変更する、など）」とする変更であった場合は、ロジックの更新前後で結果データが同一となるはずである。この場合は、結果が異なっていれば更新に不備があったこととなる。更新に不備が見つかった場合は、ロジックの不備を解消したうえで、差異入力データ８を用いて再度テストをする。
【００２４】
図７は、差異入力データのフォーマットの一例を示す図であって、コンペア結果リストに挙がった入力データのみを抽出している。差異入力データは、図３の入力データと同じフォーマットである。上記のように、１回目と２回目のテスト結果が同じはずである場合には、差異入力データを用いて再度テストを実行することができる。また、１回目と２回目のテスト結果が異なるはずであるが、部分的に思惑通りでない場合には、差異入力データから必要なデータを選択して再度テストを実行することができる。
【００２５】
以上説明したように、本実施の形態では、更新処理をコミットせずにデータベースを擬似的に更新し、帳票出力やデータベース更新結果についてのログを出力することとした。これにより、ユーザは、データベースを実際に更新することなく、保存された結果データを参照することで、アプリケーションの検証が可能となる。また、実際のデータベースにアクセスしながらも実更新を回避するため、実環境に近い状態で繰り返しテストができる。
【００２６】
また、プログラムのロジックを変更する前と後において本実施の形態のテスト装置を適用し、結果データ同士を比較し、異なる場合にリストを出力することとした。これにより、プログラムの変更に関する検証が容易にでき、得られたリストを再度のテストに使用することができる。
【００２７】
つづいて、上記本実施の形態に示すテスト装置として動作し、前述したテスト処理を実現可能な計算機システムについて説明する。
【００２８】
この計算機システムは、たとえば、ＣＰＵを含む制御ユニットと、メモリユニットと、表示ユニットと、入力ユニットと、ＣＤ−ＲＯＭドライブユニットと、ディスクユニットと、外部Ｉ／Ｆユニットと、を備え、これらの各ユニットは、それぞれシステムバスを介して接続されている。
【００２９】
制御ユニットは、上記入力データ一括読込部２と業務プログラム制御部３とデータベース擬似制御部４とコンペア結果一括出力部６で行われる処理、すなわち、本発明のテストプログラムを実行する。メモリユニットは、上記入力データ記憶部１と出力データ記憶部５を含むＲＡＭ，ＲＯＭ等の各種メモリで構成され、上記制御ユニットが実行すべきプログラム，処理の過程で得られた必要なデータ等を記憶する。表示ユニットは、ＣＲＴやＬＣＤ（液晶表示パネル）等で構成され、計算機の使用者に対して各種画面を表示する。入力ユニットは、キーボード，マウス等で構成され、計算機の使用者が、各種情報の入力を行うために使用する。なお、ここでは、ＣＤ−ＲＯＭに、本実施の形態の処理を記述したテストプログラムが格納されていることとする。
【００３０】
ここで、上記テストプログラムが実行可能な状態になるまでの計算機の動作例について説明する。まず、上記のように構成される計算機システムには、ＣＤ−ＲＯＭドライブユニットにセットされたＣＤ−ＲＯＭから、テストプログラムがディスクユニットにインストールされる。そして、計算機システムの起動時またはプログラムの実行時に、ディスクユニットから読み出されたプログラムがメモリユニットに格納される。この状態で、制御ユニット（ＣＰＵ）は、メモリユニットに格納されたプログラムにしたがって、アプリケーションのテストを実行する。
【００３１】
なお、本実施の形態においては、ＣＤ−ＲＯＭにて上記テスト処理を記述したプログラムを提供しているが、このプログラムの記録媒体は、これに限定されることなく、システムを構成するコンピュータに応じて、たとえば、フロッピー（登録商標）ディスク等の磁気ディスク，光磁気ディスク，磁気テープ等の他の記録媒体を用いることも可能である。また、電子メール，インターネット等の伝送媒体により提供されたプログラムを用いることとしてもよい。
【産業上の利用可能性】
【００３２】
以上のように、本発明にかかるテスト装置、テスト方法およびテストプログラムは、データベース更新処理を含むアプリケーションの検証に有用であり、特に、ロジック変更の妥当性を検証する場合に適している。
【図面の簡単な説明】
【００３３】
【図１】テスト装置の構成例を示す図である。
【図２】テスト装置の動作を示すフローチャートである。
【図３】入力データの一例を示す図である。
【図４】在庫テーブルのフォーマットの一例を示す図である。
【図５】結果データのフォーマットの一例を示す図である。
【図６】コンペア結果リストのフォーマットの一例を示す図である。
【図７】差異入力データのフォーマットの一例を示す図である。
【符号の説明】
【００３４】
１  入力データ記憶部
２  入力データ一括読込部
３  業務プログラム制御部
４  データベース擬似制御部
５  出力データ記憶部
６  コンペア結果一括出力部
１０  業務プログラム
１１  データベース
【図１】
0004901802.tif 000002
【図２】
0004901802.tif 000003
【図３】
0004901802.tif 000004
【図４】
0004901802.tif 000005
【図５】
0004901802.tif 000006
【図６】
0004901802.tif 000007
【図７】
0004901802.tif 000008