(57)【要約】【課題】全てのテストシナリオに沿ってテストを最小時間で完了させることができるよう、スナップショットを取得するテストノードを適切に選択することができるテスト支援装置、テスト装置、テスト支援方法及びコンピュータプログラムを提供する。【解決手段】テストシナリオに関する情報、次に遷移するべきテストノードに関する情報等を記憶しておく。テストノードごとに分岐パスが存在するか否かを判断し、分岐パスが存在すると判断したテストノードにおいて、スナップショットを取得した場合にテストを完了するまでに要する実行予測時間を算出する。スナップショットを取得することなくテストを完了するまでに要する実行時間を算出し、実行時間と実行予測時間との差分を短縮時間として算出する。短縮時間が最も大きいテストノードを選択して、選択したテストノードを識別する情報を出力する。【選択図】図１０
2011129028.tif 000002
【特許請求の範囲】
【請求項１】
複数のテストノード及び該テストノード間のプロセスを定義したテストシナリオに関する情報を記憶するシナリオ情報記憶手段と、
テストノードごとに、次に遷移するべきテストノードを識別する情報を含むテストノードに関する情報、プロセスが分岐する分岐パスを含むか否かに関する情報を記憶するテストノード情報記憶手段と、
テストノードごとに前記分岐パスが存在するか否かを判断する第一の判断手段と、
該第一の判断手段で前記分岐パスが存在すると判断したテストノードにおいて、スナップショットを取得した場合にテストを完了するまでに要する実行予測時間を算出する実行予測時間算出手段と、
スナップショットを取得することなくテストを完了するまでに要する実行時間を算出する実行時間算出手段と、
スナップショットを取得したテストノードごとに、実行時間と実行予測時間との差分を短縮時間として算出する短縮時間算出手段と、
前記短縮時間が最も大きいテストノードを選択する選択手段と、
選択したテストノードを識別する情報を出力する出力手段と
を備えるテスト支援装置。
【請求項２】
前記プロセスごとにエラーが発生する確率であるエラー確率を記憶しておき、
前記実行予測時間算出手段は、前記実行予測時間を、前記エラー確率に基づいて、実行時間の期待値として算出する請求項１記載のテスト支援装置。
【請求項３】
前記エラー確率を、複数回のテスト実行時におけるエラー発生の実績に基づいて算出して記憶する請求項２記載のテスト支援装置。
【請求項４】
請求項１乃至３のいずれか一項に記載のテスト支援装置とデータ通信することが可能に接続してあり、
前記選択手段で選択したテストノードにおいてスナップショットを取得するスナップショット取得手段を備え、
終端に位置するテストノードに到達した場合、スナップショットを取得したテストノードまで戻ってテストを続行するテスト装置。
【請求項５】
複数のテストノード及び該テストノード間のプロセスを定義したテストシナリオに関する情報を記憶する工程と、
テストノードごとに、次に遷移するべきテストノードを識別する情報を含むテストノードに関する情報、プロセスが分岐する分岐パスを含むか否かに関する情報を記憶する工程と、
テストノードごとに前記分岐パスが存在するか否かを判断する工程と、
前記分岐パスが存在すると判断したテストノードにおいて、スナップショットを取得した場合にテストを完了するまでに要する実行予測時間を算出する工程と、
スナップショットを取得することなくテストを完了するまでに要する実行時間を算出する工程と、
スナップショットを取得したテストノードごとに、実行時間と実行予測時間との差分を短縮時間として算出する工程と、
前記短縮時間が最も大きいテストノードを選択する工程と、
選択したテストノードを識別する情報を出力する工程と
を含むテスト支援方法。
【請求項６】
前記プロセスごとにエラーが発生する確率であるエラー確率を記憶し、
前記実行予測時間を、前記エラー確率に基づいて、実行時間の期待値として算出する請求項５記載のテスト支援方法。
【請求項７】
前記エラー確率を、複数回のテスト実行時におけるエラー発生の実績に基づいて算出して記憶する請求項６記載のテスト支援方法。
【請求項８】
複数のテストノードに対して連続的にテストを実行するテスト支援装置で実行することが可能なコンピュータプログラムにおいて、
前記テスト支援装置を、
複数のテストノード及び該テストノード間のプロセスを定義したテストシナリオに関する情報を記憶するシナリオ情報記憶手段、
テストノードごとに、次に遷移するべきテストノードを識別する情報を含むテストノードに関する情報、プロセスが分岐する分岐パスを含むか否かに関する情報を記憶するテストノード情報記憶手段、
テストノードごとに前記分岐パスが存在するか否かを判断する第一の判断手段、
該第一の判断手段で前記分岐パスが存在すると判断したテストノードにおいて、スナップショットを取得した場合にテストを完了するまでに要する実行予測時間を算出する実行予測時間算出手段、
スナップショットを取得することなくテストを完了するまでに要する実行時間を算出する実行時間算出手段、
スナップショットを取得したテストノードごとに、実行時間と実行予測時間との差分を短縮時間として算出する短縮時間算出手段、
前記短縮時間が最も大きいテストノードを選択する選択手段、及び
選択したテストノードを識別する情報を出力する出力手段
として機能させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スナップショットを取得して処理を戻すことにより、全てのテストシナリオを最小時間で実行させることができるテストノードを適切に選択することができるテスト支援装置、テスト装置、テスト支援方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
昨今のコンピュータプログラムの開発において、商品の差別化のために様々な機能を付加する要望が強く、いきおいソースコードが膨大となりつつある。膨大なソースコードからなるコンピュータプログラムを正常に稼動させるためには、確実に、しかも漏れのないテストを実行する必要がある。したがって、完成したコンピュータプログラムのテストを、いかに効率よく、しかも確実に行うかは、開発コストの観点から無視することができない重要点になりつつある。
【０００３】
そこで、テストシナリオを動的に変更、構成するための支援ソフトウェア、支援方法が多々開発されている。例えば特許文献１では、プログラムの実行経路ごとに、スレッドに含まれる各ステートメントの依存関係を解析し、依存関係に基づいて未実行である実行経路について実行するべきか否かを判断する並列プログラムの挙動生成方法が開示されている。特許文献１では、並列処理される各ステートメントの依存関係に基づいて不要な実行経路を生成することなく効率の良い実行経路に沿って並列プログラムを実行させることができる。
【０００４】
また、特許文献２では、アプリケーションの実行と関係付けた動的なアプリケーションの状態に関する情報である履歴スナップショットを含む履歴情報を取得し、アプリケーションの再起動時に取得した履歴情報を用いることで早期にアプリケーションを再起動することができる、履歴情報を使用する再起動方法が開示されている。特許文献２では、履歴スナップショットを用いることにより、再起動時に全てのリソースを初期化する必要がなくなり、早期に再起動を完了することが可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２０７２４８号公報
【特許文献２】特表２００８−５００６４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１のように、ステートメントごとに全ての依存関係を把握することは、コンピュータプログラムのテストにおいては、テストノードの依存関係を把握することになり、実際には困難である。またエラーが発生した場合には、発生したエラーの影響が及ぶテストシナリオの範囲を特定することも困難である。したがって、テストシナリオをどのようにすればコンピュータプログラムの総テスト時間を最小にすることができるか、特定することは困難であるという問題点があった。
【０００７】
また、特許文献２のように履歴スナップショットを用いることにより、コンピュータプログラムのテストにおいて、終端テストノードからの戻り点、エラー発生時の戻り点を特定することはできる。しかし、履歴スナップショットを取得するにも所定の時間を要することから、大規模なアプリケーションになればなるほど、どのテストノードで履歴スナップショットを取得するか特定することが重要となる。特許文献２では、全てのリソースの履歴スナップショットを取得しているので、取得するテストノードを限定するという考え方そのものが存在しない。
【０００８】
本発明は斯かる事情に鑑みてなされたものであり、全てのテストシナリオを最小時間で実行させることができるよう、スナップショットを取得するテストノードを適切に選択することができるテスト支援装置、テスト装置、テスト支援方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために第１発明に係るテスト支援装置は、複数のテストノード及び該テストノード間のプロセスを定義したテストシナリオに関する情報を記憶するシナリオ情報記憶手段と、テストノードごとに、次に遷移するべきテストノードを識別する情報を含むテストノードに関する情報、プロセスが分岐する分岐パスを含むか否かに関する情報を記憶するテストノード情報記憶手段と、テストノードごとに前記分岐パスが存在するか否かを判断する第一の判断手段と、該第一の判断手段で前記分岐パスが存在すると判断したテストノードにおいて、スナップショットを取得した場合にテストを完了するまでに要する実行予測時間を算出する実行予測時間算出手段と、スナップショットを取得することなくテストを完了するまでに要する実行時間を算出する実行時間算出手段と、スナップショットを取得したテストノードごとに、実行時間と実行予測時間との差分を短縮時間として算出する短縮時間算出手段と、前記短縮時間が最も大きいテストノードを選択する選択手段と、選択したテストノードを識別する情報を出力する出力手段とを備える。
【００１０】
また、第２発明に係るテスト支援装置は、第１発明において、前記プロセスごとにエラーが発生する確率であるエラー確率を記憶しておき、前記実行予測時間算出手段は、前記実行予測時間を、前記エラー確率に基づいて、実行時間の期待値として算出する。
【００１１】
また、第３発明に係るテスト支援装置は、第２発明において、前記エラー確率を、複数回のテスト実行時におけるエラー発生の実績に基づいて算出して記憶する。
【００１２】
次に上記目的を達成するために第４発明に係るテスト装置は、第１乃至第３発明のいずれか１つのテスト支援装置とデータ通信することが可能に接続してあり、前記選択手段で選択したテストノードにおいてスナップショットを取得するスナップショット取得手段を備え、終端に位置するテストノードに到達した場合、スナップショットを取得したテストノードまで戻ってテストを続行する。
【００１３】
次に上記目的を達成するために第５発明に係るテスト支援方法は、複数のテストノード及び該テストノード間のプロセスを定義したテストシナリオに関する情報を記憶する工程と、テストノードごとに、次に遷移するべきテストノードを識別する情報を含むテストノードに関する情報、プロセスが分岐する分岐パスを含むか否かに関する情報を記憶する工程と、テストノードごとに前記分岐パスが存在するか否かを判断する工程と、前記分岐パスが存在すると判断したテストノードにおいて、スナップショットを取得した場合にテストを完了するまでに要する実行予測時間を算出する工程と、スナップショットを取得することなくテストを完了するまでに要する実行時間を算出する工程と、スナップショットを取得したテストノードごとに、実行時間と実行予測時間との差分を短縮時間として算出する工程と、前記短縮時間が最も大きいテストノードを選択する工程と、選択したテストノードを識別する情報を出力する工程とを含む。
【００１４】
また、第６発明に係るテスト支援方法は、第５発明において、前記プロセスごとにエラーが発生する確率であるエラー確率を記憶し、前記実行予測時間を、前記エラー確率に基づいて、実行時間の期待値として算出する。
【００１５】
また、第７発明に係るテスト支援方法は、第６発明において、前記エラー確率を、複数回のテスト実行時におけるエラー発生の実績に基づいて算出して記憶する。
【００１６】
次に上記目的を達成するために第８発明に係るコンピュータプログラムは、複数のテストノードに対して連続的にテストを実行するテスト支援装置で実行することが可能なコンピュータプログラムにおいて、前記テスト支援装置を、複数のテストノード及び該テストノード間のプロセスを定義したテストシナリオに関する情報を記憶するシナリオ情報記憶手段、テストノードごとに、次に遷移するべきテストノードを識別する情報を含むテストノードに関する情報、プロセスが分岐する分岐パスを含むか否かに関する情報を記憶するテストノード情報記憶手段、テストノードごとに前記分岐パスが存在するか否かを判断する第一の判断手段、該第一の判断手段で前記分岐パスが存在すると判断したテストノードにおいて、スナップショットを取得した場合にテストを完了するまでに要する実行予測時間を算出する実行予測時間算出手段、スナップショットを取得することなくテストを完了するまでに要する実行時間を算出する実行時間算出手段、スナップショットを取得したテストノードごとに、実行時間と実行予測時間との差分を短縮時間として算出する短縮時間算出手段、前記短縮時間が最も大きいテストノードを選択する選択手段、及び選択したテストノードを識別する情報を出力する出力手段として機能させる。
【発明の効果】
【００１７】
本発明によれば、分岐パスが存在するテストノードにおいて、スナップショットを取得することにより短縮することができる短縮時間が最も大きいテストノードを選択することができるので、選択したテストノードにおいてスナップショットを取得しておき、終端テストノードまで到達した場合、エラーが発生した場合等に、スナップショットを取得したテストノードまで戻ることにより、無駄なく全てのテストを完了することができるとともに、テストに要する総テスト時間を最小にすることが可能となる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態１に係るテスト支援装置を、ＣＰＵを用いて構成した例を示すブロック図である。
【図２】本発明の実施の形態１に係るテストシナリオ及び状態遷移の例示図である。
【図３】本発明の実施の形態１に係るテストシナリオ情報記憶部のデータ構成の例示図である。
【図４】本発明の実施の形態１に係るテストノード情報記憶部のデータ構成の例示図である。
【図５】本発明の実施の形態１に係る複数のテストシナリオ及び状態遷移の例示図である。
【図６】本発明の実施の形態１に係るテスト支援装置の機能ブロック図である。
【図７】本発明の実施の形態１に係る複数のテストシナリオ及び状態遷移の例示図である。
【図８】本発明の実施の形態１に係るテストシナリオ上でエラーが発生した場合及び発生していない場合の、スナップショットを取得しないときの状態遷移の例示図である。
【図９】本発明の実施の形態１に係るテストシナリオ上でエラーが発生した場合及び発生していない場合の、スナップショットを取得するときの状態遷移の例示図である。
【図１０】本発明の実施の形態１に係るテスト支援装置のＣＰＵの処理手順を示すフローチャートである。
【図１１】本発明の実施の形態２に係る複数のテストシナリオ及び状態遷移の例示図である。
【図１２】本発明の実施の形態２に係る複数の類似するテストシナリオが存在する場合の状態遷移の例示図である。
【図１３】本発明の実施の形態２に係るテストシナリオ上でエラーが発生した場合及び発生していない場合の、スナップショットを取得しないときの状態遷移の例示図である。
【図１４】本発明の実施の形態２に係るテストシナリオ上でエラーが発生した場合及び発生していない場合の、スナップショットを取得するときの状態遷移の例示図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態におけるテスト支援装置について、図面に基づいて具体的に説明する。以下の実施の形態は、特許請求の範囲に記載された発明を限定するものではなく、実施の形態の中で説明されている特徴的事項の組み合わせの全てが解決手段の必須事項であるとは限らないことは言うまでもない。
【００２０】
また、本発明は多くの異なる態様にて実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。実施の形態を通じて同じ要素には同一の符号を付している。
【００２１】
以下の実施の形態では、コンピュータシステムにコンピュータプログラムを導入した、テスト支援装置について説明するが、当業者であれば明らかな通り、本発明はその一部をコンピュータで実行することが可能なコンピュータプログラムとして実施することができる。したがって、本発明は、テスト支援装置というハードウェアとしての実施の形態、ソフトウェアとしての実施の形態、又はソフトウェアとハードウェアとの組み合わせの実施の形態をとることができる。コンピュータプログラムは、ハードディスク、ＤＶＤ、ＣＤ、光記憶装置、磁気記憶装置等の任意のコンピュータで読み取ることが可能な記録媒体に記録することができる。
【００２２】
本発明の実施の形態によれば、分岐パスが存在するテストノードについて、スナップショットを取得することにより短縮することができる短縮時間が最も大きいテストノードを選択することができるので、選択したテストノードにおいてスナップショットを取得しておき、終端テストノードまで到達した場合、エラーが発生した場合等に、スナップショットを取得したテストノードまで処理を戻すことにより、無駄なく全てのテストを完了することができるとともに、テストに要する総テスト時間を最小にすることが可能となる。
【００２３】
（実施の形態１）
図１は、本発明の実施の形態１に係るテスト支援装置を、ＣＰＵを用いて構成した例を示すブロック図である。図１に示すように、テスト支援装置１は、少なくともＣＰＵ（中央演算装置）１１、メモリ１２、記憶装置１３、Ｉ／Ｏインタフェース１４、ビデオインタフェース１５、可搬型ディスクドライブ１６、通信インタフェース１７及び上述したハードウェアを接続する内部バス１８で構成されている。
【００２４】
ＣＰＵ１１は、内部バス１８を介してテスト支援装置１の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置１３に記憶しているコンピュータプログラム１００に従って、種々のソフトウェア的機能を実行する。メモリ１２は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム１００の実行時にロードモジュールが展開され、コンピュータプログラム１００の実行時に発生する一時的なデータ等を記憶する。
【００２５】
記憶装置１３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成されている。記憶装置１３に記憶しているコンピュータプログラム１００は、プログラム及びデータ等の情報を記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体９０から、可搬型ディスクドライブ１６によりダウンロードされ、実行時には記憶装置１３からメモリ１２へ展開して実行される。もちろん、通信インタフェース１７を介して、接続されている外部のコンピュータからダウンロードされたコンピュータプログラムであっても良い。
【００２６】
また記憶装置１３は、テストシナリオ情報記憶部（シナリオ情報記憶手段）１３１及びテストノード情報記憶部１３２を備えている。テストシナリオ情報記憶部１３１には、複数のテストノード及び該テストノード間のプロセスを定義したテストシナリオに関する情報、例えばテストを開始するテストノードに関する情報、終端テストノードに相当するテストノードに関する情報等を記憶する。
【００２７】
図２は、本発明の実施の形態１に係るテストシナリオ及び状態遷移の例示図である。図２の例では、２つのテストシナリオ（シナリオＩＤ：０００１、０００２）をプロセスごとに記載している。シナリオＩＤ‘０００１’と‘０００２’との違いは、実行するプロセスＩＤ‘４’のジョブが‘ｘｘｘ’であるか‘ｙｙｙ’であるかだけである。
【００２８】
したがって、中央の状態遷移図において、処理ステータスを○付番号で表すと、それぞれのプロセスにおいてプロセスＩＤ‘３’までは同一の処理ステータスであるのに対し、プロセスＩＤ‘４’以下はシナリオごとに処理ステータスが相違する。以後、各処理ステータスをテストノードと呼び、テストノード間のパスが各プロセスに相当する。
【００２９】
図３は、本発明の実施の形態１に係るテストシナリオ情報記憶部１３１のデータ構成の例示図である。図３に示すように、テストシナリオに関する情報は、シナリオＩＤごとに、どのようなプロセスが含まれているか、及びプロセスごとにどのパスに対応するかを、元テストノード及び先テストノードにて特定している。テストシナリオ情報記憶部１３１により、どのテストノードが終端テストノード（一連のプロセスの最終テストノード）であるか、知ることができる。
【００３０】
テストノード情報記憶部１３２は、テストノードごとに、次に遷移するべきテストノードを識別する情報を含むテストノードに関する情報、プロセスが分岐する分岐パスを含むか否かに関する情報を記憶する。図４は、本発明の実施の形態１に係るテストノード情報記憶部１３２のデータ構成の例示図であり、図５は、本発明の実施の形態１に係る複数のテストシナリオ及び状態遷移の例示図である。
【００３１】
図５の状態遷移図からもわかるように、３つのジョブであるジョブ１、ジョブ２、ジョブ３を、共通のテストノード、固有のテストノードに分類し、各テストノードに関する情報を図４に示すデータ構造にまとめて記憶してある。すなわち、図４では、どのパスにおけるプロセスの実行であるかを特定するために、元テストノードと先テストノードを記憶してある。これにより終端テストノードへ向かって順次実行するプロセスだけでなく、所定のテストノードへ戻るプロセスについても明示することができる。また、同一の元テストノードに対して複数の先テストノードが記憶されているか否かに応じて、どのテストノードが分岐パスを含むか否かを判断することができる。
【００３２】
また、図４の例では実行予測時間、実行時間、エラー予測率、エラー発生率を、プロセスごとに記憶している。ここで、実行予測時間とは、元テストノードにおいてスナップショットを取得した場合に全てのテストを完了するまでに要する時間を、実行時間とは、元テストノードにおいてスナップショットを取得することなく全てのテストを完了するまでに要する時間を、それぞれ意味している。しかし、図４では、実行予測時間及び実行時間はプロセスごとの実行予測時間及び実行時間を記憶してあり、総テスト時間である実行予測時間及び実行時間を計算する基礎となるデータである。
【００３３】
また、エラー確率としてエラー予測率とエラー発生率とを記憶している。エラー予測率とは、プロセスごとにエラーが発生する確率を意味しており、エラー発生率とは、プロセスごとに実際にエラーが発生した確率を意味している。実際にエラーが発生するまではエラー予測率を使用し、エラーが発生した後はエラー発生率を用いても良いし、所定回数のテスト実行後にはエラー発生率を用いるようにしても良い。すなわち、複数回のテスト実行時の実績に基づいてエラー発生率を算出した値を記憶する。
【００３４】
図１に戻って、通信インタフェース１７は内部バス１８に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワークに接続されることにより、外部のコンピュータ、例えばテストを実行するテスト装置等とデータ送受信を行うことが可能となっている。
【００３５】
Ｉ／Ｏインタフェース１４は、キーボード２１、マウス２２等のデータ入力媒体と接続され、データの入力を受け付ける。また、ビデオインタフェース１５は、ＣＲＴモニタ、ＬＣＤ等の表示装置２３と接続され、所定の画像を表示する。
【００３６】
以下、上述した構成のテスト支援装置１の動作について説明する。図６は、本発明の実施の形態１に係るテスト支援装置１の機能ブロック図である。図６において、分岐パス判断部（第一の判断手段）６０１は、テストノードごとに分岐パスが存在するか否かを判断する。
【００３７】
具体的には、記憶装置１３のテストノード情報記憶部１３２を参照して、次に状態遷移するべきテストノード（先テストノード）が複数記憶されているプロセスを抽出することになる。次に状態遷移するべきテストノードが複数記憶されているプロセスの元テストノードから、ジョブに固有のプロセスへと進むことになる。
【００３８】
実行予測時間算出部６０２は、分岐パスが存在すると判断したテストノードについて、スナップショットを取得した場合に、全てのテストを完了するまでに要する実行予測時間を算出する。また、実行時間算出部６０３は、スナップショットを取得することなく全てのテストを完了するまでに要する実行時間を算出する。短縮時間算出部６０４は、実行時間と実行予測時間との差分を短縮時間として算出する。
【００３９】
プロセスごとの実行予測時間及び実行時間は、テストノード情報記憶部１３２から読み出す。そして、全てのテストシナリオに沿ってテストを実行する、すなわちテストが完了するのに要する実行予測時間及び実行時間として、プロセスごとの実行予測時間及び実行時間の総和を算出する。
【００４０】
図７は、本発明の実施の形態１に係る複数のテストシナリオ及び状態遷移の例示図である。図５の状態遷移図とは異なり、連続的にテストシナリオに沿ってテストを実行するために、各テストシナリオの終端テストノードからは、直近の分岐パスが存在するテストノードまでしか戻らない場合を想定している。したがって、エラーの発生も想定していない。
【００４１】
図７の例では、全てのテストシナリオに沿って漏れなくテストを実行するためには、テストを以下のパスにて実行すれば良い。すなわち、テストノードの番号でテストを実行するパスを示すと、０→１→２→３→４→５→６→４→３→７→８→９→１０→７→１１→１２→１３→７→３→１４→１５→１６→１５→１７→１８（→１５→１４→３→２→１→０）となる。テストノード間の各パスに対応するプロセスの実行予測時間及び実行時間は、テストノード情報記憶部１３２に記憶されているので、総テスト時間は、これらの総和として算出することができる。
【００４２】
図７に示す状態遷移図のいずれかのテストノードでエラーが発生した場合、エラーが発生したテストノード以下のテストシナリオに含まれるパスに対応するプロセスの実行は放棄される。テストシナリオの一部においてプロセスの実行を放棄した場合、まだテストを実行していないテストシナリオについてテストを実行するためには、テストを実行することが可能なテストシナリオへのパスを回復する必要が生じる。
【００４３】
例えば図７において、テストノード０→１→２→３→４→５→６→４→３→７とテストシナリオに沿ってテストを実行した時点、すなわちテストノード７でエラーが発生した場合、本来はテストを実行する必要があったテストノード７→８→９→１０にて実行するプロセスを放棄する。同時に分岐パスによりテストを実行する必要があったテストノード７→１１→１２→１３にて実行するプロセスも放棄する。
【００４４】
実行を放棄したプロセスのパスを含むテストシナリオは、それ以降のテストにおいてテストを実行するべきプロセスとして検出されることがないように削除される。したがって、まだテストを実行していないテストシナリオについてテストを実行するためには、テストノード１４へと遷移するべく、テストノード７→３→１４のパスを回復する必要がある。
【００４５】
次に、プロセスごとのエラーが発生する確率であるエラー発生率を記憶した時点におけるテストシナリオの実行予測時間Ｔ１と実行時間Ｔ２との算出方法を説明する。説明を簡単にするために、テストノード４つからなるテストシナリオについて説明する。図８は、本発明の実施の形態１に係るテストシナリオ上でエラーが発生した場合及び発生していない場合の、スナップショットを取得しないときの状態遷移の例示図である。
【００４６】
図８（ａ）は、エラーが発生していない場合の状態遷移を、図８（ｂ）は、エラーが発生した場合の状態遷移を、それぞれ示している。また、それぞれのパスに付記してある数字は、それぞれのパスのプロセスを実行するのに要する実行時間を示している。
【００４７】
図８（ａ）では、テストノード１→２→３→４とテストシナリオに沿ってテストを実行するのに要する実行時間が（１０＋２０＋５０＝）８０ｓｅｃ．であるのに対し、図８（ｂ）では、一度テストノード２へ戻って再実行するため、テストノード１→２→３→３ｅ→２→３→４とテストシナリオに沿ってテストを実行するのに要する実行時間が（１０＋２０＋２５＋１２０＋２０＋５０＝）２４５ｓｅｃ．となる。
【００４８】
テストノード３におけるエラー発生率が２０％である場合、テストシナリオに沿ってテストを実行するのに要する実行時間Ｔ２は、期待値として、（８０ｓｅｃ．×０．８＋２４５ｓｅｃ．×０．２＝）１１３ｓｅｃ．となる。
【００４９】
図９は、本発明の実施の形態１に係るテストシナリオ上でエラーが発生した場合及び発生していない場合の、スナップショットを取得するときの状態遷移の例示図である。図９（ａ）は、エラーが発生していない場合の状態遷移を、図９（ｂ）は、エラーが発生した場合の状態遷移を、それぞれ示している。また、それぞれパスに付記してある数字は、それぞれのパスのプロセスを実行するのに要する実行時間を示している。
【００５０】
図９（ａ）に示すように、テストノード１→２→３→４とテストシナリオに沿ってテストを実行するのに要する実行予測時間には、図８（ａ）とは異なり、テストノード３においてスナップショットを取得するのに要する時間１０ｓｅｃ．が加算される。したがって、実行予測時間は（１０＋２０＋１０＋５０＝）９０ｓｅｃ．となる。
【００５１】
図９（ｂ）では、テストノード３においてスナップショットを取得するため、テストノード２まで戻す必要がない。ただし、スナップショットを取得するのに要する時間１０ｓｅｃ．が加算される。したがって、テストノード１→２→３→３ｅ→３→４とテストシナリオに沿ってテストを実行するのに要する実行予測時間は（１０＋２０＋１０＋２５＋１０＋５０＝）１２５ｓｅｃ．となる。
【００５２】
テストノード３におけるエラー発生率が２０％である場合、全てのテストシナリオに沿ってテストを実行するのに要する実行予測時間Ｔ１は、期待値として、（９０ｓｅｃ．×０．８＋１２５ｓｅｃ．×０．２＝）９７ｓｅｃ．となる。よって、実行予測時間Ｔ２の方が実行時間Ｔ１よりも短いことから、スナップショットを取得した場合の方が、総テスト時間を短縮することができる。
【００５３】
図６に戻って、テストノード選択部（選択手段）６０５は、短縮時間が最も大きいテストノードを選択する。すなわち、分岐パスが存在するテストノードごとに、上述したようにスナップショットを取得した場合の実行予測時間Ｔ２を算出し、実行時間Ｔ２と実行予測時間Ｔ１との差分である短縮時間が最も大きいテストノードを選択する。
【００５４】
選択結果出力部（出力手段）６０６は、選択したテストノードを識別する情報を出力する。出力方法は、特に限定されるものではなく、表示装置２３の表示画面上に表示出力しても良いし、通信インタフェース１７を介して外部のコンピュータへスナップショット取得の指示信号として送信しても良い。
【００５５】
図１０は、本発明の実施の形態１に係るテスト支援装置１のＣＰＵ１１の処理手順を示すフローチャートである。図１０では、説明を簡単にするために、短縮時間が最も大きいテストノードを１つ選択する場合について説明する。テスト支援装置１のＣＰＵ１１は、記憶装置１３のテストノード情報記憶部１３２を参照して、所定のテストシナリオに沿ってテストノードを抽出し（ステップＳ１００１）、一のテストノードを選択して（ステップＳ１００２）、選択したテストノードに分岐パスが存在するか否かを判断する（ステップＳ１００３）。
【００５６】
ＣＰＵ１１が、分岐パスが存在すると判断した場合（ステップＳ１００３：ＹＥＳ）、ＣＰＵ１１は、分岐パスが存在すると判断したテストノードでスナップショットを取得した場合にテストを完了するまでに要する実行予測時間を算出するとともに（ステップＳ１００４）、該テストノードでスナップショットを取得することなくテストを完了するまでに要する実行時間を算出する（ステップＳ１００５）。ＣＰＵ１１は、実行時間と実行予測時間との差分を短縮時間として算出する（ステップＳ１００６）。
【００５７】
プロセスごとの実行予測時間及び実行時間は、テストノード情報記憶部１３２から読み出す。そして、全てのテストシナリオに沿ってテストを実行するのに要する実行予測時間及び実行時間を、読み出したプロセスごとの実行予測時間及び実行時間を基礎として、テストシナリオに沿ってスナップショット取得時間も含めた総和として算出する。
【００５８】
ＣＰＵ１１は、算出した短縮時間が最大であるか否かを判断する（ステップＳ１００７）。具体的には、既に算出されてメモリ１２に一時記憶されている短縮時間より大きいか否かにより判断する。ＣＰＵ１１が、算出した短縮時間が最大であると判断した場合（ステップＳ１００７：ＹＥＳ）、ＣＰＵ１１は、算出した短縮時間をメモリ１２に一時記憶する（ステップＳ１００８）。
【００５９】
ＣＰＵ１１が、算出した短縮時間が最大ではないと判断した場合（ステップＳ１００７：ＮＯ）、及び分岐パスが存在しないと判断した場合（ステップＳ１００３：ＮＯ）、ＣＰＵ１１は、テストシナリオに沿って抽出した全てのテストノードを選択したか否かを判断する（ステップＳ１００９）。ＣＰＵ１１が、未選択のテストノードが存在すると判断した場合（ステップＳ１００９：ＮＯ）、ＣＰＵ１１は、次のテストノードを選択し（ステップＳ１０１０）、処理をステップＳ１００３へ戻して上述した処理を繰り返す。
【００６０】
ＣＰＵ１１が、全てのテストノードを選択したと判断した場合（ステップＳ１００９：ＹＥＳ）、ＣＰＵ１１は、メモリ１２に一時記憶してある短縮時間が最大であるテストノードを選択し（ステップＳ１０１１）、選択したテストノードを識別する情報を結果として出力する（ステップＳ１０１２）。出力方法は、特に限定されるものではなく、表示装置２３の表示画面上に表示出力しても良いし、通信インタフェース１７を介して外部のコンピュータへスナップショット取得の指示信号として送信しても良い。
【００６１】
以上のように本実施の形態１によれば、分岐パスが存在するテストノードについて、スナップショットを取得することにより短縮することができる短縮時間が最も大きいテストノードを選択することができるので、選択したテストノードにおいてスナップショットを取得しておき、終端テストノードまで到達した場合、エラーが発生した場合等に、スナップショットを取得したテストノードまで処理を戻すことにより、無駄なく全てのテストを完了することができるとともに、テストに要する総テスト時間を最小にすることが可能となる。
【００６２】
なお、スナップショットを取得するテストノードの選択は、上述した実施例に示すように、短縮時間が最も大きいテストノードを１つ選択する方法に限定されるものではなく、短縮時間が大きいテストノードから順に所定数のテストノードを選択しても良い。また、複数のテストノードを選択した場合の短縮時間が最大となる組み合わせを選択しても良いことは言うまでもない。
【００６３】
さらに、結果として出力されたテストノードを識別する情報、すなわち選択されたスナップショットを取得するテストノードを識別する情報を取得したテスト装置（テスト支援装置１と一体であっても他のコンピュータであっても良い）は、取得したテストノードにおいてスナップショットを取得しつつ、テストシナリオに沿ってテストを実行する。テストシナリオが終端テストノードに到達した場合、又はエラーが発生した場合には、直近に存在するスナップショットを取得したテストノードまで戻って、テストを続行する。これにより、最短時間で全てのテストシナリオに沿って漏れなくテストを完了することが可能となる。
【００６４】
（実施の形態２）
本発明の実施の形態２に係るテスト支援装置の構成は、実施の形態１と同様であることから、同一の符号を付することにより詳細な説明を省略する。実施の形態２では、同じテストシナリオ、又は類似する複数のテストシナリオを異なる環境、あるいは異なる時間帯にて実行する場合を考慮して実行予測時間及び実行時間を算出する点で、実施の形態１とは相違する。
【００６５】
図１１は、本発明の実施の形態２に係る複数のテストシナリオ及び状態遷移の例示図である。図１１の例では、２つのテストシナリオが時間をおいてインストールされる例を示している。
【００６６】
例えば、第一のテストシナリオと第二のテストシナリオとはテストノードの構成自体は同じであるものの、第一のテストシナリオを有するビルドＡをインストールし、次週には第二のテストシナリオを有するビルドＢをインストールしてテストを実行する。ここで、「ビルド」とは、テストを実行する環境を意味しており、例えば性能、設置場所等が異なる別のコンピュータ、異なるバージョンのコンピュータプログラム等を意味している。この場合、現時点でスナップショットを取得する候補となるテストノードは、ビルドＡに含まれるテストノード３ａ、７ａ、１５ａであり、ビルドＢに含まれるテストノード０、１、２ｂ、３ｂ、・・・、１８ｂは対象とはならない。
【００６７】
一方、分岐パスを有するテストノードでスナップショットを取得した場合にテストを完了するまでに要する実行予測時間を算出する場合、又は該テストノードでスナップショットを取得することなくテストを完了するまでに要する実行時間を算出する場合には、ビルドＢに含まれるテストノード０、１、２ｂ、３ｂ、・・・、１８ｂも含めて算出する。これにより、例えばビルドＡだけである場合にはスナップショットを取得する対象ではなかったビルドＡのテストノード１についても、スナップショットを取得するテストノードとなる場合が生じる。ビルドＢのテストノード２ｂ以下のテストノードのみを実行すれば足りる場合も生じ、テストに要する総テスト時間を短縮することができるからである。
【００６８】
図１２は、本発明の実施の形態２に係る複数の類似するテストシナリオが存在する場合の状態遷移の例示図である。図１２の示す５つのテストシナリオは、テストノードの構成自体は同じである。上の３つのテストシナリオは、左から第一のテストシナリオを有するビルドＡをインストールし、次週には第二のテストシナリオを有するビルドＢをインストールし、さらに翌週には第三のテストシナリオを有するビルドＣをインストールして、テストを実行する。この場合、現時点でスナップショットを取得する候補となるテストノードは、ビルドＡに含まれるテストノード３ａ、７ａ、１５ａであり、ビルドＢに含まれるテストノード２ｂ、３ｂ、・・・、１８ｂ、及びビルドＣに含まれるテストノード２ｃ、３ｃ、・・・、１８ｃは対象とはならない。
【００６９】
また、下の２つのテストシナリオは、左から第三のテストシナリオを有するビルドＣに対してパッチＤをインストールしてビルドＤとして、また時期を変えて、第三のテストシナリオを有するビルドＣに対してパッチＥをインストールして、ビルドＥとしてテストを実行する。この場合も、現時点でスナップショットを取得する候補となるテストノードは、ビルドＡに含まれるテストノード３ａ、７ａ、１５ａであり、ビルドＤに含まれるテストノード２ｄ、３ｄ、・・・、１８ｄ、及びビルドＥに含まれるテストノード２ｅ、３ｅ、・・・、１８ｅは対象とはならない。
【００７０】
スナップショットを取得した場合にテストを完了するまでに要する実行予測時間を算出する場合、又はスナップショットを取得することなくテストを完了するまでに要する実行時間を算出する場合には、ビルドＢに含まれるテストノード２ｂ以下、ビルドＣに含まれるテストノード２ｃ以下、ビルドＤに含まれるテストノード２ｄ以下、ビルドＥに含まれるテストノード２ｅ以下も含めて算出する。これにより、例えばビルドＡだけである場合にはスナップショットを取得するテストノードとはならなかったビルドＡのテストノード１についても、スナップショットを取得するテストノードとなる場合が生じる。テストに要する総テスト時間を短縮することができるからである。
【００７１】
単純な例で、プロセスごとにエラーが発生する確率であるエラー発生率を記憶した時点における、テストシナリオの実行予測時間Ｔ１と実行時間Ｔ２との算出方法を説明する。説明を簡単にするために、テストノード４つからなるテストシナリオについて説明する。図１３は、本発明の実施の形態２に係るテストシナリオ上でエラーが発生した場合及び発生していない場合の、スナップショットを取得しないときの状態遷移の例示図である。
【００７２】
図１３（ａ）は、エラーが発生していない場合の状態遷移を、図１３（ｂ）は、エラーが発生した場合の状態遷移を、それぞれ示している。また、それぞれのパスに付記してある数字は、それぞれのパスのプロセスを実行するのに要する実行時間を示している。
【００７３】
図１３（ａ）では、一のビルドのテストノード１→２→３→４とテストシナリオに沿ってテストを実行するのに要する実行時間が（１０＋２０＋５０＝）８０ｓｅｃ．となるのに対し、図１３（ｂ）では、他のビルドのテストノード２へ遷移してテストを実行するため、テストノード１→２→３→３ｅ→２→３→４とテストシナリオに沿ってテストを実行するのに要する実行時間が（１０＋２０＋２５＋２０＋２０＋５０＝）１４５ｓｅｃ．となる。
【００７４】
テストノード３におけるエラー発生率が２０％である場合、全てのテストシナリオに沿ってテストを実行するのに要する実行時間Ｔ２は、期待値として、（８０ｓｅｃ．×０．８＋１４５ｓｅｃ．×０．２＝）９３ｓｅｃ．となる。
【００７５】
図１４は、本発明の実施の形態２に係るテストシナリオ上でエラーが発生した場合及び発生していない場合の、スナップショットを取得するときの状態遷移の例示図である。図１４（ａ）は、エラーが発生していない場合の状態遷移を、図１４（ｂ）は、エラーが発生した場合の状態遷移を、それぞれ示している。また、それぞれのパスに付記してある数字は、それぞれのパスのプロセスを実行するのに要する実行時間を示している。
【００７６】
図１４（ａ）に示すように、テストノード１→２→３→４とテストシナリオに沿ってテストを実行するのに要する実行予測時間には、実施の形態１とは異なり、テストノード３においてスナップショットを取得するのに要する時間は加算されない。テストを実行する時間が相違するからである。したがって、実行予測時間は（１０＋２０＋５０＝）８０ｓｅｃ．となる。
【００７７】
図１４（ｂ）では、テストノード３においてスナップショットを取得するため、テストノード２へ遷移する必要がない。そして、図１４（ａ）と同様、スナップショットを取得するのに要する時間は加算されない。したがって、テストノード１→２→３→３ｅ→３→４と全てのテストシナリオに沿ってテストを実行するのに要する実行予測時間は（１０＋２０＋２５＋５＋５０＝）１１０ｓｅｃ．となる。
【００７８】
テストノード３におけるエラー発生率が２０％である場合、全てのテストシナリオに沿ってテストを実行するのに要する実行予測時間Ｔ１は、期待値として、（８０ｓｅｃ．×０．８＋１１０ｓｅｃ．×０．２＝）８６ｓｅｃ．となる。実行予測時間Ｔ１の方が実行時間Ｔ２よりも短いことから、スナップショットを取得した場合の方が、総テスト時間を短縮することができる。
【００７９】
以上のように本実施の形態２によれば、分岐パスが存在するテストノードについて、スナップショットを取得することにより短縮することができる短縮時間が最も大きいテストノードを選択することができるので、選択したテストノードにおいてスナップショットを取得しておき、時間をおいて他のビルドにて同様のテストシナリオにてテストを実行する場合、エラーが発生した場合等に、スナップショットを取得したテストノードまで戻ることにより、無駄なく全てのテストを完了することができるとともに、テストに要する総テスト時間を最小にすることが可能となる。
【００８０】
なお、スナップショットを取得するテストノードの選択は、上述した実施例に示すように、短縮時間が最も大きいテストノードを１つ選択する方法に限定されるものではなく、短縮時間が大きいテストノードから順に所定数のテストノードを選択しても良い。また、複数のテストノードを選択した場合の短縮時間が最大となる組み合わせを選択しても良いことは言うまでもない。
【００８１】
さらに、結果として出力されたテストノードを識別する情報、すなわち選択されたスナップショットを取得するテストノードを識別する情報を取得したテスト装置（テスト支援装置１と一体であっても他のコンピュータであっても良い）は、取得したテストノードにおいてスナップショットを取得しつつ、テストシナリオに沿ってテストを実行する。テストシナリオが終端テストノードに到達した場合、又はエラーが発生した場合には、直近に存在するスナップショットを取得したテストノードまで戻って、テストを続行する。これにより、最短時間で全てのテストシナリオに沿って漏れなくテストを完了することが可能となる。
【００８２】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変更、改良等が可能である。
【符号の説明】
【００８３】
１  テスト支援装置
１１  ＣＰＵ
１２  メモリ
１３  記憶装置
１４  Ｉ／Ｏインタフェース
１５  ビデオインタフェース
１６  可搬型ディスクドライブ
１７  通信インタフェース
１８  内部バス
２３  表示装置
９０  可搬型記録媒体
１００  コンピュータプログラム
１３１  テストシナリオ情報記憶部
１３２  テストノード情報記憶部
【図１】
2011129028.tif 000003
【図２】
2011129028.tif 000004
【図３】
2011129028.tif 000005
【図４】
2011129028.tif 000006
【図５】
2011129028.tif 000007
【図６】
2011129028.tif 000008
【図７】
2011129028.tif 000009
【図８】
2011129028.tif 000010
【図９】
2011129028.tif 000011
【図１０】
2011129028.tif 000012
【図１１】
2011129028.tif 000013
【図１２】
2011129028.tif 000014
【図１３】
2011129028.tif 000015
【図１４】
2011129028.tif 000016