(57)【要約】【課題】  単体テストツールを用いて単体テストツールとは非同期で動作するアプリケーションのテストを行う場合、単体テストツールでテストの合否を判断するタイミングとアプリケーションの動作完了のタイミングが一致しないため、正しく合否判定ができないこと。【解決手段】  アプリケーションの動作完了を検知する手段と動作完了まで待機する手段とを有するテストモジュールを用いる。まず、単体テストツールはテストモジュールを起動する。テストモジュールは単体テストツールを待機状態にさせる。テストモジュールは、アプリケーションを起動しアプリケーションの状態を監視する。そして、単体テストモジュールは、アプリケーションの動作完了を検知したら、待機状態になっていた単体テストツールを動作させ単体テストツールにアプリケーションの動作結果の合否判定を通知する。【選択図】  図１
2009032077.tif 000002
【特許請求の範囲】
【請求項１】
一つのテストを一つのテスト関数で実行し、前記テストが複数ある場合にテストの実行を制御し、テスト結果の集計をする単体テストツールと連携して動作するテストモジュールであって、テストシナリオが完了するまで単体テストツールを待機させる待機手段と、アプリケーションの状態を検知しつつアプリケーションをテストシナリオに則して動作させるためのテストモデルと、テストモデルによってアプリケーションの動作が正しく行われたかどうかを判定する合否判定手段と、からなるテストモジュール。
【請求項２】
前記テストモジュールにて、前記合否判定手段の正解として、アプリケーション実行時に生成される正解ログを予め作成しておき、アプリケーションを実行したときに生成される実行ログが前記正解ログと一致するかに応じて合否を判定することを特徴とする請求項１に記載のテストモジュール。
【請求項３】
前記テストモジュールにて、前記合否判定手段として、アプリケーション実行時に生成されるログの判定条件を予め作成しておき、アプリケーションを実行したときに生成される実行ログが前記判定条件に当てはまっているかに応じて合否を判定することを特徴とする請求項１又は請求項２に記載のテストモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
単体テストツールを利用したアプリケーションテスト方法に関する。
【背景技術】
【０００２】
従来の単体テストツールには、関数に対して入力値を与えた場合に戻り値が正しいかどうかに応じて合否を判定するものがある。このような単体テストツールは、テストの実行制御、テスト結果の集計、テスト結果の表示を行ってくれるため、アプリケーションのテストを行う場合、入力値と正解値のセットを準備するだけで、関数のテストができてしまう。
【０００３】
以下、図２を用いて従来から行われている単体テストの方法について述べる。
【０００４】
図２は単体テストツールを用いた単体テストを行う際の標準的なシステム構成を示すブロック図である。
【０００５】
図２に示すとおり、単体テストツール１１０と、テスト関数２２０と、テストの対象となる関数２３０とから構成される。
【０００６】
テスト関数２２０は、入力値２２１と正解値２２２と合否判定手段２２３から構成されている。テスト関数２２０は、テストケースの数だけ用意されている。ここで、テストケースとは、入力値と正解値のセットのことである。
【０００７】
単体テストを行う仕組みについて説明する。単体テストツール１１０はテスト関数２２０を起動する。テスト関数２２０は入力値２２１を入力値として関数２３０を呼び出す。関数２３０は戻り値２４０を戻しテスト関数２２０は合否判定手段にて戻り値２４０と正解値２２２を比較し合否を判定する。テスト関数２２０は判定結果を単体テストツール１１０に通知し単体テストツール１１０は結果の集計と表示を行う。
【０００８】
又、別の従来例としては、特許文献１及び特許文献２をあげることが出来る。
【特許文献１】特開平11-212824号公報
【特許文献２】特開2003-228493号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、単体テストツールは、通常、関数を同期的に呼び出し入力値に対する戻り値を正解値と比較するためのツールである。このため、単体テストツールで非同期に動作するアプリケーションのシステムテストを行うためには２つの課題がある。第一に、単体テストツールとアプリケーションの動作に同期が取れないという課題がある。第二に、アプリケーションのシステムテストは入力値と戻り値といった形では判定できないという課題がある。これらの課題のため、従来、単体テストツールを利用して、非同期に動作するアプリケーションのシステムテストができなかった。
【課題を解決するための手段】
【００１０】
これらの課題を解決するため、本発明の請求項１記載のテストモジュールは、テストシナリオが完了するまで単体テストツールを待機させる待機手段と、アプリケーションをテストシナリオに則して動作させるためのテストモデルと、アプリケーションの状態を検知する手段と、テストモデルによってアプリケーションの動作が正しく行われたかどうかを判定する合否判定手段とを有し、テストの実行を一つの評価関数で実行し、評価関数を連続実行し、その評価結果を集計する単体テストツールと連携して動作する。
【００１１】
請求項２記載のテストモジュールは、合否判定手段の正解値として正解ログを用い、アプリケーションの実行ログと一致するかに応じて合否判定を行う。
【００１２】
請求項３記載のテストモジュールは、合否判定手段として予め用意した判定条件を用い、アプリケーションの実行ログが判定条件にあてはまるかどうかに応じて合否判定を行う。
【発明の効果】
【００１３】
待機手段にて単体テストツールを待機させ状態検知手段にてテストの完了を検知し単体テストツールを再開させる仕組みにより、単体テストツールとアプリケーションの同期をとることができるという効果がある。
【００１４】
合否判定手段にてアプリケーションの動作シーケンスが正しいかどうか判定することによりテストの成否の判定が可能になるという効果がある。
【００１５】
よって、単体テストツールを使って非同期に動作しているアプリケーションのテストが可能になるという効果がある。
【００１６】
これにより、テストの実行制御、テスト結果の集計、テスト結果の表示といった単体テストツールの機能をアプリケーションのテストにおいても容易に利用することが可能になる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について、図面を参照して説明する。
【実施例１】
【００１８】
本発明の単体テストツールを利用したアプリケーションテストの実施形態について図を用いて説明する。
【００１９】
図１は単体テストツールを利用したアプリケーションテストシステムの構成を示すブロック図である。
【００２０】
図１に示すように、単体テストツールを利用したアプリケーションのテストシステムは、単体テストツール１１０、テストモジュール１２０、アプリケーション１３０で構成される。
【００２１】
前記単体テストツール１１０は、どのテストケースがテストの対象であるかといった管理や、テストを実行したときにどのテストケースがテストに成功しどのテストケースがテストに失敗したのかといった管理を行う。また、テスト対象となるテストケースが複数ある場合、１つのテストが完了すると次のテストの開始を指示するといったテストの実行制御を行う。
【００２２】
前記テストモジュール１２０は、単体テストツール１１０でアプリケーション１３０をテストするための仕組みと、アプリケーション１３０を動作させてテストを実行させるテストモデル１２１と、アプリケーション１３０が正しく動作したかを判別するための手段を有する。テストモデル１２１や正解ログ１２３はテストシナリオの数だけ用意されている。ここで、テストシナリオとは、アプリケーション１３０とテストモデル１２１によって作り出されるシーケンスのことで、シーケンスの正解値が正解ログ１２３に記憶されている。
【００２３】
単体テストツール１１０でアプリケーション１３０をテストするための仕組みについて説明する。アプリケーション１３０は、単体テストツール１１０とは非同期に動作するものを想定している。単体テストツール１１０はテストモジュール１２０を起動しテストモジュールはアプリケーション１３０を起動する。単体テストツール１１０とアプリケーション１３０は非同期に動作しているので、単体テストツール１１０がテストモジュール１２０を起動するとテストモジュール１２０は待機手段１２５によって単体テストツール１１０を待機状態にさせる。さらにアプリケーション１３０を起動したテストモジュール１２０はテストモデル１２１によってアプリケーション１３０をテスト仕様に基づいて動作させる。テストモデル１２１は、テスト仕様に基づいて動作しているアプリケーション１３０の状態変化を検知する手段１２２によって、アプリケーション１３０の状態変化を監視している。アプリケーション１３０は実行中に実行ログ１４０を生成する。状態検知手段１２２がアプリケーション１３０の動作完了を検知すると、テストモジュール１２０は合否判定手段１２４により正解ログ１２３と実行ログ１４０の整合性がとれているかどうかを判別する。また、テストモデル１２１は状態検知手段１２２でテストの完了を検知したことを待機手段１２５に通知し、待機手段１２５で待機させていた単体テストツール１１０の待機状態を解除し単体テストツールを再稼動させる。テストモジュール１２０は合否判定手段１２４で判定した判定結果を単体テストツール１１０に通知する。単体テストツール１１０は結果を集計し表示に反映させる。また、テスト項目が複数ある場合は、単体テストツール１１０は次のテストモデル１２１を起動させ、テストの対象となっているテスト項目全てに対して前記手順を繰り返す。
【００２４】
単体テストツール１１０とテストモジュール１２０とアプリケーション１３０が非同期に動作するところが図２と異なる。このため、図１のシステムには、状態検知手段１２２や待機手段１２５がある。そのため、図２のシステムでは非同期に動作する単体テストツール１１０とテストモジュール１２０とアプリケーション１３０を同期させて動作させるテスト可能になる。
【００２５】
図１のハード構成は、単体テストツール１１０とテストモジュール１２０とアプリケーション１３０が同じコンピュータ上に配置されている場合も、単体テストツール１１０とテストモジュール１２０が同じコンピュータに配置されアプリケーション１３０が異なるコンピュータに配置されている場合も、同じ図１の構成にて対応が可能である。
【００２６】
図３は図１の単体テストツール１１０の動作を説明するためのフローチャートである。
【００２７】
Ｓ３０１にて単体テストツール１１０はテストモジュール１２０を起動する。Ｓ３０２にて単体テストツール１１０は待機状態になる。Ｓ３０３にて単体テストツール１１０はテスト結果を受信し、Ｓ３０４にてテスト結果を集計し、Ｓ３０５にて集計した結果を表示する。Ｓ３０６にて次のテストの有無を判別し、次のテストがある場合はＳ３０１に戻り、テストを繰り返す。次のテストがない場合はテストを終了する。
【００２８】
図４は図１のテストモジュール１２０の動作を説明するためのフローチャートである。
【００２９】
Ｓ４０１にてアプリケーションを起動させる。Ｓ４０２にて単体テストツールを待機させる。Ｓ４０３にてアプリケーションの状態を監視する。Ｓ４０４にて完了通知を検知する。Ｓ４０５にて合否判定を行う。Ｓ４０６にて単体テストツール１１０を再開させる。Ｓ４０７にて単体テストツール１１０に結果を通知する。
【００３０】
図５は図１のアプリケーション１３０の動作を説明するためのフローチャートである。
【００３１】
Ｓ５０１にてアプリケーション１３０を実行する。実行中にＳ５０２にて随時ログを出力する。実行が完了した時点でＳ５０３により完了通知を行う。
【実施例２】
【００３２】
図１の正解ログを請求項３の判定条件とする構成について説明する。
【００３３】
第一の判定条件は、ログに記録される特定のコマンドに関するログの中での順番が正解として用意した順番と一致するかである。
【００３４】
第二の判定条件は、ログに記録されるコマンドの数が一致するかである。
【００３５】
第三の判定条件は、ログに記録されるコマンドをあるキーによってソートしたものと正解値と用意するログを前記キーと同じキーによってソートしたものが一致するかである。
【００３６】
これらの判定条件は、全て使っても良いし、場合によっては任意の判定条件のみ利用してもよい。
【００３７】
［産業上の利用可能性］
本発明は、アプリケーションのテスト環境を効率よく構築する手段を提供する。
【図面の簡単な説明】
【００３８】
【図１】単体テストツールを利用したアプリケーションテストシステムの構成図
【図２】標準的に単体テストツールを利用する際の単体テストシステムの構成図
【図３】単体テストツールのフローチャート
【図４】テストモジュールのフローチャート
【図５】アプリケーションのフローチャート
【符号の説明】
【００３９】
１１０  単体テストツール
１２０  テストモジュール
１２１  テストケース
１２２  待機手段
１２３  正解ログ
１２４  合否判定手段
１２５  テストモデル
１２６  状態検知手段
１３０  アプリケーション
１４０  実行ログ
２２０  テストケース
２２１  正解値
２２２  合否判定手段
２３０  関数
【図１】
2009032077.tif 000003
【図２】
2009032077.tif 000004
【図３】
2009032077.tif 000005
【図４】
2009032077.tif 000006
【図５】
2009032077.tif 000007