(57)【特許請求の範囲】
【請求項１】
初期ＶＭイメージを有する仮想マシンに対して所定の順序に従って実行される複数のテスト項目の各々を、ルートノードを起点とした各ノードに前記所定の順序に従って対応付けることにより、各テスト項目のテスト実行前に実行が必要な他のテスト項目を示した木構造を記憶するテストツリー記憶手段と、
前記複数のテスト項目の各々の実行前の前記仮想マシンのＶＭイメージと実行後のＶＭイメージとの差分である差分イメージを、前記複数のテスト項目の各々に対応付けて記憶する差分イメージ記憶手段と、
前記仮想マシンを用いてテストを実行するテスト項目が指定された場合、前記初期ＶＭイメージ、及び、前記木構造上の前記ルートノードから前記指定されたテスト項目の親のテスト項目までの各テスト項目に対応する差分イメージをもとに、前記指定されたテスト項目の親のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元するテスト実行手段と、
を含むテストシステム。
【請求項２】
前記テスト実行手段は、前記仮想マシンにおいて、前記木構造に従って前記複数のテスト項目の各々のテスト実行後に、前記複数のテスト項目の各々について前記差分イメージを取得し、前記差分イメージ記憶手段に保存する
請求項１に記載のテストシステム。
【請求項３】
前記テスト実行手段は、前記仮想マシンにおいて、第１のテスト項目のテスト実行後に、前記木構造上の前記ルートノードから前記第１のテスト項目の親のテスト項目までのテスト項目の内の第２のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元する場合、前記第１のテスト項目実行後のＶＭイメージと、前記第２のテスト項目の子のテスト項目から前記第１のテスト項目までの各テスト項目に対応する差分イメージと、をもとに、前記第２のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元する
請求項１に記載のテストシステム。
【請求項４】
複数の前記テスト実行手段を含み、
さらに、前記仮想マシンを用いてテストを実行する複数のテスト項目が指定された場合、前記指定された複数のテスト項目の内、前記木構造上のルートノードから親のテスト項目までに、共通なテスト項目を持つテスト項目の組を抽出し、抽出された組の各々を、前記複数の前記テスト実行手段の内の異なるテスト実行手段に割り当てるテスト管理手段を含む
請求項１に記載のテストシステム。
【請求項５】
初期ＶＭイメージを有する仮想マシンに対して所定の順序に従って実行される複数のテスト項目の各々を、ルートノードを起点とした各ノードに前記所定の順序に従って対応付けることにより、各テスト項目のテスト実行前に実行が必要な他のテスト項目を示した木構造を記憶し、
前記複数のテスト項目の各々の実行前の前記仮想マシンのＶＭイメージと実行後のＶＭイメージとの差分である差分イメージを、前記複数のテスト項目の各々に対応付けて記憶し、
前記仮想マシンを用いてテストを実行するテスト項目が指定された場合、前記初期ＶＭイメージ、及び、前記木構造上の前記ルートノードから前記指定されたテスト項目の親のテスト項目までの各テスト項目に対応する差分イメージをもとに、前記指定されたテスト項目の親のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元する
テスト方法。
【請求項６】
さらに、前記仮想マシンにおいて、前記木構造に従って前記複数のテスト項目の各々のテスト実行後に、前記複数のテスト項目の各々について前記差分イメージを取得する
請求項５に記載のテスト方法。
【請求項７】
さらに、前記仮想マシンにおいて、第１のテスト項目のテスト実行後に、前記木構造上の前記ルートノードから前記第１のテスト項目の親のテスト項目までのテスト項目の内の第２のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元する場合、前記第１のテスト項目実行後のＶＭイメージと、前記第２のテスト項目の子のテスト項目から前記第１のテスト項目までの各テスト項目に対応する差分イメージと、をもとに、前記第２のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元する
請求項５に記載のテスト方法。
【請求項８】
コンピュータに、
初期ＶＭイメージを有する仮想マシンに対して所定の順序に従って実行される複数のテスト項目の各々を、ルートノードを起点とした各ノードに前記所定の順序に従って対応付けることにより、各テスト項目のテスト実行前に実行が必要な他のテスト項目を示した木構造を記憶し、
前記複数のテスト項目の各々の実行前の前記仮想マシンのＶＭイメージと実行後のＶＭイメージとの差分である差分イメージを、前記複数のテスト項目の各々に対応付けて記憶し、
前記仮想マシンを用いてテストを実行するテスト項目が指定された場合、前記初期ＶＭイメージ、及び、前記木構造上の前記ルートノードから前記指定されたテスト項目の親のテスト項目までの各テスト項目に対応する差分イメージをもとに、前記指定されたテスト項目の親のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元する
処理を実行させるテストプログラム。
【請求項９】
さらに、前記仮想マシンにおいて、前記木構造に従って前記複数のテスト項目の各々のテスト実行後に、前記複数のテスト項目の各々について前記差分イメージを取得する
請求項８に記載のテストプログラム。
【請求項１０】
さらに、前記仮想マシンにおいて、第１のテスト項目のテスト実行後に、前記木構造上の前記ルートノードから前記第１のテスト項目の親のテスト項目までのテスト項目の内の第２のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元する場合、前記第１のテスト項目実行後のＶＭイメージと、前記第２のテスト項目の子のテスト項目から前記第１のテスト項目までの各テスト項目に対応する差分イメージと、をもとに、前記第２のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元する
請求項８に記載のテストプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムのテストを行うテストシステム、テスト方法、及び、プログラムに関する。
【背景技術】
【０００２】
プログラムの開発プロセスでは、結合テストやシステムテストを行うためのテスト環境、障害発生時の再現環境、パッチ適用時のテスト環境、機能更新時のテスト環境等、さまざまなテスト環境が必要である。
【０００３】
テスト環境の準備を効率的に行う技術として、仮想マシン（ＶＭ（Virtual Machine））の利用が提案されている。例えば、特許文献１には、テスト対象システムのＶＭイメージを物理サーバに配備することにより、テスト環境を構築する技術が開示されている。テスト環境に仮想マシンを用いる利点として、データや設定の初期化が容易となる、オペレーティングシステム、アプリケーション、及び、データを含む環境を短時間で生成できる、１台の装置上で複数のテストを同時に実行できる、テスト途中のメモリ状態を保存し、テスト後にテスト結果を検証できる等が挙げられる。テスト環境の準備作業はプログラムの開発プロセスで繰り返し行われるため、仮想マシンの利用は、開発スピード向上やプログラム開発のコスト低減への効果が大きい。
【０００４】
ところで、プログラム開発においては、複数のテスト項目から成るテストシナリオの最初のテスト項目からのテストではなく、あるテスト項目が終了した時点のテスト環境を復元し、当該テスト項目の次のテスト項目からテストを実行する場合がある。例えば、特許文献２には、プログラムの動作時のある時点のコンテキストを保存し、当該コンテキストをもとにプログラムの状態を復元し、所定のテストを行う開発支援装置が開示されている。
【０００５】
上述の仮想マシンによるテスト環境において、テストシナリオの内の任意のテスト項目からのテストを可能にするためには、テストシナリオ内の各テスト項目に対してＶＭイメージを予め保存し、テストを行うたびに、必要なＶＭイメージを物理サーバに転送する必要がある。しかしながら、ＶＭイメージのサイズは、１つの仮想マシンあたり数ＧＢから数十ＧＢと大きいため、ＶＭイメージの保存にコストがかかる。
【０００６】
このような、メモリイメージの保存コストを低減可能な技術として、プログラムのメモリイメージの差分をもとにメモリイメージを復元する技術が提案されている。例えば、特許文献３には、プログラムのメモリ情報を時間的経過に従って収集し、収集されたメモリ情報間の差分を保存し、保存された差分をもとにある時点のメモリ情報を復元するメモリ情報保存方法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０‐１１３３８１号公報
【特許文献２】特開２０１０‐１１３３８１号公報
【特許文献３】特開昭６３‐１１８８４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
プログラムのテストシナリオが多岐にわたる場合、あるテスト項目が終了した時点の同一の状態に対して、複数の異なるテスト項目を実行する必要がある。しかしながら、上述の特許文献３の技術は、連続した時間経過に従って、メモリ情報の差分を検出、保存する技術であり、あるテスト項目が終了した時点の同一の状態に対して、複数の異なるテスト項目を実行する場合については考慮されていない。
【０００９】
本発明の目的は、上述の課題を解決し、仮想マシンに用いたテスト環境において、テストシナリオが多岐にわたる場合であっても、ＶＭイメージの保存コストを低減できるテストシステム、テスト方法、及び、プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明のテストシステムは、初期ＶＭイメージを有する仮想マシンに対して実行される複数のテスト項目の各々を、ルートノードを起点とした各ノードに対応付けることにより、各テスト項目のテスト実行前に実行が必要な他のテスト項目を示した木構造を記憶するテストツリー記憶手段と、前記複数のテスト項目の各々の実行前の前記仮想マシンのＶＭイメージと実行後のＶＭイメージとの差分である差分イメージを、前記複数のテスト項目の各々に対応付けて記憶する差分イメージ記憶手段と、前記仮想マシンを用いてテストを実行するテスト項目が指定された場合、前記初期ＶＭイメージ、及び、前記木構造上の前記ルートノードから前記指定されたテスト項目の親のテスト項目までの各テスト項目に対応する差分イメージをもとに、前記指定されたテスト項目の親のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元するテスト実行手段と、を含む。
【００１１】
本発明のテスト方法は、初期ＶＭイメージを有する仮想マシンに対して実行される複数のテスト項目の各々を、ルートノードを起点とした各ノードに対応付けることにより、各テスト項目のテスト実行前に実行が必要な他のテスト項目を示した木構造を記憶し、前記複数のテスト項目の各々の実行前の前記仮想マシンのＶＭイメージと実行後のＶＭイメージとの差分である差分イメージを、前記複数のテスト項目の各々に対応付けて記憶し、前記仮想マシンを用いてテストを実行するテスト項目が指定された場合、前記初期ＶＭイメージ、及び、前記木構造上の前記ルートノードから前記指定されたテスト項目の親のテスト項目までの各テスト項目に対応する差分イメージをもとに、前記指定されたテスト項目の親のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元する。
【００１２】
本発明のテストプログラムは、コンピュータに、初期ＶＭイメージを有する仮想マシンに対して実行される複数のテスト項目の各々を、ルートノードを起点とした各ノードに対応付けることにより、各テスト項目のテスト実行前に実行が必要な他のテスト項目を示した木構造を記憶し、前記複数のテスト項目の各々の実行前の前記仮想マシンのＶＭイメージと実行後のＶＭイメージとの差分である差分イメージを、前記複数のテスト項目の各々に対応付けて記憶し、前記仮想マシンを用いてテストを実行するテスト項目が指定された場合、前記初期ＶＭイメージ、及び、前記木構造上の前記ルートノードから前記指定されたテスト項目の親のテスト項目までの各テスト項目に対応する差分イメージをもとに、前記指定されたテスト項目の親のテスト項目のテスト実行後の前記仮想マシンのＶＭイメージを復元する処理を実行させる。
【発明の効果】
【００１３】
本発明の効果は、仮想マシンに用いたテスト環境において、テストシナリオが多岐にわたる場合であっても、ＶＭイメージの保存コストを低減できることである。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【図２】本発明の第１の実施の形態における、テストシステム１の構成を示すブロック図である。
【図３】本発明の第１の実施の形態におけるテストツリー１２１の例を示す図である。
【図４】本発明の第１の実施の形態におけるテスト情報１２２の例を示す図である。
【図５】本発明の第１の実施の形態におけるＶＭイメージの変化の例を示す図である。
【図６】本発明の第１の実施の形態における初期イメージ情報１２３の例を示す図である。
【図７】本発明の第１の実施の形態における差分イメージ情報１２４の例を示す図である。
【図８】本発明の第１の実施の形態における差分イメージ生成処理を示すフローチャートである。
【図９】本発明の第１の実施の形態におけるＶＭイメージ復元処理を示すフローチャートである。
【図１０】本発明の第２の実施の形態における、テストシステム１の構成を示すブロック図である。
【図１１】本発明の第２の実施の形態におけるＶＭイメージ復元処理を示すフローチャートである。
【発明を実施するための形態】
【００１５】
（第１の実施の形態）
次に、本発明の第１の実施の形態について説明する。
【００１６】
はじめに、本発明の第１の実施の形態の構成について説明する。図２は、本発明の第１の実施の形態における、テストシステム１の構成を示すブロック図である。
【００１７】
図２を参照すると、テスト実行システム１は、テスト管理装置１００と１以上のテスト実行装置２００とを含む。テスト管理装置１００とテスト実行装置２００とは、ネットワーク等により接続される。
【００１８】
テスト管理装置１００は、テスト実行装置２００にテストの実行を指示する。テスト実行装置２００は、テスト対象である（テストを行うプログラムを含む）仮想マシンのＶＭイメージを生成し、仮想マシンを用いてテストを行う。
【００１９】
テスト管理装置１００は、テスト管理部１０１、テストツリー記憶部１１１、テスト情報記憶部１１２、初期イメージ記憶部１１３、及び、差分イメージ記憶部１１４を含む。
【００２０】
テスト管理部１０１は、テスト項目に応じて、初期ＶＭイメージ、及び、差分イメージをテスト実行装置２００に送信する。また、テスト管理部１０１は、テスト実行装置２００にテストの実行を指示する。
【００２１】
ここで、テストツリー記憶部１１１は、テストツリー１２１を記憶する。テストツリー１２１は、テスト実行装置２００において、テスト対象の仮想マシンの初期状態（初期ＶＭイメージ）から実行される複数のテスト項目の各々の実行順序をツリー（木構造）形式で示す情報である。
【００２２】
図３は、本発明の第１の実施の形態におけるテストツリー１２１の例を示す図である。テストツリー１２１のルートノードは、上述の初期状態に対応する。そして、テストツリー１２１上のルートノードを起点とした各ノードには、上述の初期状態から実行される複数のテスト項目の各々の識別子が、実行順序に従って付与される。テストツリー１２１上の親のノードのテスト項目は、子のノードのテスト項目のテスト実行前に実行が必要なテスト項目を示す。
【００２３】
図３の例では、上述の初期状態から、例えば、テスト項目「テスト１」、「テスト１−１」、「テスト１−１−１」の順序、テスト項目「テスト２」、「テスト２−１」、「テスト２−１−１」の順序等でテストが実行される。
【００２４】
テスト情報記憶部１１２は、テスト情報１２２を記憶する。図４は、本発明の第１の実施の形態におけるテスト情報１２２の例を示す図である。テスト情報１２２は、テスト識別子対応に、テストの内容を含む。
【００２５】
ここで、本発明の実施の形態におけるＶＭイメージの変化について説明する。図５は、本発明の第１の実施の形態におけるＶＭイメージの変化の例を示す図である。図５の例は、図３のテストツリー１２１に従ってテスト項目のテストが行われた場合の、ＶＭイメージの変化を示す。
【００２６】
図５に示すように、初期ＶＭイメージに対して、例えば、「テスト１」、「テスト１−１」、の順にテストが実行されると、ＶＭイメージは、初期ＶＭイメージから、「ＶＭＩ１」、「ＶＭＩ１−１」の順に変化する。
【００２７】
初期イメージ記憶部１１３は、初期イメージ情報１２３を記憶する。図６は、本発明の第１の実施の形態における初期イメージ情報１２３の例を示す図である。初期イメージ情報１２３には、初期ＶＭイメージが登録される。
【００２８】
差分イメージ記憶部１１４は、差分イメージ情報１２４を記憶する。図７は、本発明の第１の実施の形態における差分イメージ情報１２４の例を示す図である。差分イメージ情報１２４には、テスト識別子対応に、差分イメージが登録される。ここで、差分イメージは、対応するテスト識別子で示されるテスト項目のテスト前後のＶＭイメージの差分である。差分イメージは、例えば、ＶＭイメージにおける、テストにより変更されたデータのアドレスと、当該アドレスにおける変更前、及び、変更後のデータの値を含む。差分イメージは、例えば、後述する処理部２０２のＶＭ制御手段により生成される。
【００２９】
テスト実行装置２００は、テスト制御部２０１、及び、処理部２０２を含む。
【００３０】
テスト制御部２０１は、テスト管理装置１００から受信した、初期ＶＭイメージ、及び、差分イメージから、テスト対象の仮想マシンのＶＭイメージを生成する。テスト制御部２０１は、生成した仮想マシンを処理部２０２に配備し、テストを実行する。
【００３１】
処理部２０２は、図示しないＣＰＵ（Central Processing Unit）、及び、ＣＰＵ上で１以上の仮想マシンの動作を制御するＶＭ制御手段を含む。ＶＭ制御手段は、例えば、ＶＭモニタやハイパーバイザである。ＶＭ制御手段は、テスト対象である仮想マシンのＶＭイメージを用いて、仮想マシンを起動、実行する。ここで、ＶＭイメージは、アプリケーション、ミドルウェア、及び、ＯＳのイメージを含む。また、ＶＭイメージは、データベースファイルを含んでいてもよい。さらに、ＶＭイメージは、アプリケーションの変数領域等、ＲＡＭ（Random Access Memory）上のデータを含んでいてもよい。
【００３２】
なお、テスト管理部１０１と、テスト制御部２０１とは、ＣＰＵとプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。また、テストツリー記憶部１１１、テスト情報記憶部１１２、初期イメージ記憶部１１３、及び、差分イメージ記憶部１１４は、それぞれ個別の記憶媒体でも、１つの記憶媒体によって構成されてもよい。
【００３３】
また、テスト管理部１０１、テストツリー記憶部１１１、テスト情報記憶部１１２、初期イメージ記憶部１１３、差分イメージ記憶部１１４、テスト制御部２０１、及び、処理部２０２の内の１つまたは複数が、１つの装置を構成し、他の装置とネットワークを介して接続されていてもよい。
【００３４】
次に、本発明の第１の実施の形態におけるテストシステム１の動作について説明する。
【００３５】
＜差分イメージ生成処理＞
はじめに、差分イメージ情報１２４を生成する差分イメージ生成処理について説明する。図８は、本発明の第１の実施の形態における差分イメージ生成処理を示すフローチャートである。
【００３６】
ここでは、テストツリー記憶部１１１、テスト情報記憶部１１２には、図４、図５のテストツリー１２１、テスト情報１２２がそれぞれ設定されており、初期イメージ記憶部１１３には、図６の初期イメージ情報１２３が設定されていると仮定する。
【００３７】
テスト管理装置１００のテスト管理部１０１は、テストシステム１のユーザから、テストを実行するテスト項目の範囲の指定を、テストツリー１２１上のルートノードを起点とした部分木により受け付ける（ステップＳ１０１）。
【００３８】
例えば、テスト管理部１０１は、テスト範囲として、図４のテストツリー１２１上の「部分木Ａ」を受け付ける。
【００３９】
テスト管理部１０１は、テスト制御部２０１に、ステップＳ１０１で指定されたテスト項目の範囲（部分木）を送信し、テストの実行を指示する。テスト制御部２０１は、部分木におけるルートノードの子ノードからテスト項目を１つ選択し、対象テスト項目に設定する（ステップＳ１０２）。
【００４０】
例えば、テスト制御部２０１は、「部分木Ａ」におけるルートノードの子ノードからテスト項目「テスト１」を選択し、対象テスト項目に設定する。
【００４１】
テスト管理部１０１は、初期イメージ情報１２３から初期ＶＭイメージを取得し、テスト実行装置２００のテスト制御部２０１に送信する（ステップＳ１０３）。
【００４２】
テスト制御部２０１は、処理部２０２に初期ＶＭイメージを配備し、仮想マシンを起動する（ステップＳ１０４）。
【００４３】
例えば、テスト制御部２０１は、図６の初期ＶＭイメージを処理部２０２に配備する。
【００４４】
テスト制御部２０１は、処理部２０２上の仮想マシンを用いて、対象テスト項目のテストを実行する（ステップＳ１０５）。ここで、テスト制御部２０１は、テスト情報記憶部１１２のテスト情報１２２を参照し、対象テスト項目の処理を実行させるためのデータや指示を仮想マシンに入力し、当該入力に対する応答を検出する。
【００４５】
例えば、テスト管理部１０１は、図５のテスト情報１２２を参照し、対象テスト項目「テスト１」に対する指示「データＡ追加」を仮想マシンに入力し、処理結果を検出する。
【００４６】
テスト制御部２０１は、対象テスト項目の実行前のＶＭイメージと実行後のＶＭイメージとを比較することにより差分イメージを生成し、差分イメージ情報１２４に登録する（ステップＳ１０６）。ここで、テスト制御部２０１は、差分イメージを対象テスト項目の識別子に対応付けて登録する。
【００４７】
例えば、テスト制御部２０１は、初期ＶＭイメージと、対象テスト項目「テスト１」のテスト実行後のＶＭイメージ「ＶＭＩ１」とから、差分イメージ「Ｄ１」を取得し、図７に示すように、テスト項目「テスト１」に対応付けて、差分イメージ情報１２４に登録する。
【００４８】
次に、テスト制御部２０１は、部分木の範囲内の全てのテスト項目についてテストが実行されたかどうかを判定する（ステップＳ１０７）。
【００４９】
ステップＳ１０７で全てのノードのテスト項目についてテストが実行されている場合（ステップＳ１０７／Ｙｅｓ）、テスト制御部２０１は、処理を終了する。
【００５０】
ステップＳ１０７でテストが実行されていないテスト項目がある場合（ステップＳ１０７／Ｎｏ）、テスト制御部２０１は、テスト範囲で指定された部分木内でテストが実行されていないテスト項目であり、かつ、対象テスト項目の子（次）のテスト項目があるかどうかを判定する（ステップＳ１０８）。
【００５１】
ステップＳ１０８において、子のテスト項目がある場合（ステップＳ１０８／Ｙｅｓ）、テスト制御部２０１は、子のテスト項目からテスト項目を１つ選択して対象テスト項目に設定し（ステップＳ１１１）、ステップＳ１０５からの処理を実行する。
【００５２】
例えば、テスト制御部２０１は、対象テスト項目「テスト１」のテスト実行後に、テスト項目「テスト１−１」を対象テスト項目に設定する。テスト制御部２０１は、対象テスト項目「テスト１−１」に対応する指示「データＢ追加」を仮想マシンに入力し、処理結果を検出する。テスト制御部２０１は、対象テスト項目「テスト１−１」の実行前後のＶＭイメージ「ＶＭＩ１」「ＶＭＩ１−１」から、差分イメージ「Ｄ１−１」を取得し、図７に示すように、テスト項目「テスト１−１」に対応付けて、差分イメージ情報１２４に登録する。
【００５３】
ステップＳ１０８において、子のテスト項目がない場合（ステップＳ１０８／Ｎｏ）、テスト制御部２０１は、対象テスト項目のテスト実行前の仮想システムのＶＭイメージを復元する（ステップＳ１０９）。ここで、テスト制御部２０１は、現在のＶＭイメージと、差分イメージ情報１２４の対象テスト項目に対する差分イメージとをもとに、対象テスト項目のテスト実行前の仮想システムのＶＭイメージを復元する。テスト制御部２０１は、例えば、現在のＶＭイメージのデータの内、差分イメージにより示されるアドレスのデータを、当該アドレスにおける変更前のデータの値で置き換えることにより、テスト実行前のＶＭイメージを復元する。
【００５４】
そして、テスト制御部２０１は、対象テスト項目の親（前）のテスト項目を対象テスト項目に設定し（ステップＳ１１０）、ステップＳ１０８からの処理を実行する。
【００５５】
例えば、テスト制御部２０１は、対象テスト項目「テスト１−１」のテスト実行後に、現在のＶＭイメージ「ＶＭＩ１−１」と、図７の差分イメージ情報１２４のテスト項目「テスト１−１」に対する差分イメージ「Ｄ１−１」とをもとに、対象テスト項目「テスト１−１」のテスト実行前のＶＭイメージ「ＶＭＩ１」を復元する。そして、テスト制御部２０１は、対象テスト項目「テスト１」を対象テスト項目に設定する。
【００５６】
そして、テスト制御部２０１は、テスト項目「テスト１−２」を対象テスト項目に設定し、テストを実行する。テスト制御部２０１は、対象テスト項目「テスト１−２」の実行前後のＶＭイメージ「ＶＭＩ１」「ＶＭＩ１−２」から、差分イメージ「Ｄ１−２」を取得し、図７に示すように、テスト項目「テスト１−２」に対応付けて、差分イメージ情報１２４に登録する。
【００５７】
そして、テスト制御部２０１は、対象テスト項目「テスト１−２」のテスト実行後に、現在のＶＭイメージ「ＶＭＩ１−２」と、図７の差分イメージ情報１２４のテスト項目「テスト１−２」に対する差分イメージ「Ｄ１−２」とをもとに、対象テスト項目「テスト１−２」のテスト実行前のＶＭイメージ「ＶＭＩ１」を復元する。テスト制御部２０１は、対象テスト項目「テスト１」を対象テスト項目に設定する。
【００５８】
さらに、テスト制御部２０１は、現在のＶＭイメージ「ＶＭＩ１」と、図７の差分イメージ情報１２４のテスト項目「テスト１」に対する差分イメージ「Ｄ１」とをもとに、対象テスト項目「テスト１」のテスト実行前の初期ＶＭイメージを復元する。
【００５９】
そして、テスト制御部２０１は、テスト項目「テスト２」「テスト２−１」「テスト２−２」の順序でテストを実行し、図７に示すように、差分イメージ「Ｄ２」「Ｄ２−１」「Ｄ２−２」を、それぞれ、差分イメージ情報１２４に登録する。
【００６０】
このように、テスト制御部２０１は、ステップＳ１０１で指定された部分木の範囲内の全テスト項目について、テストを実行し、差分イメージを差分イメージ情報１２４に登録する。
【００６１】
＜ＶＭイメージ復元処理＞
次に、指定されたテスト項目を実行するときに、差分イメージ情報１２４をもとに、仮想マシンのＶＭイメージを復元する処理について説明する。
【００６２】
図９は、本発明の第１の実施の形態におけるＶＭイメージ復元処理を示すフローチャートである。
【００６３】
ここでは、上述の差分イメージ生成処理によって、差分イメージ記憶部１１４に図７の差分イメージ情報１２４が登録されていると仮定する。
【００６４】
テスト管理装置１００のテスト管理部１０１は、テストシステム１のユーザから、テストツリー１２１上で、テストを実行するテスト項目の指定を受け付ける（ステップＳ２０１）。テスト管理部１０１は、テスト制御部２０１に、ステップＳ２０１で指定されたテスト項目を送信し、テストの実行を指示する。
【００６５】
例えば、テスト管理部１０１は、テスト項目として、図４のテストツリー１２１上のテスト項目「テスト１−１−１」を受け付ける。
【００６６】
テスト管理部１０１は、初期イメージ情報１２３の初期ＶＭイメージを取得し、テスト実行装置２００のテスト制御部２０１に送信する（ステップＳ２０２）。
【００６７】
例えば、テスト管理部１０１は、図６の初期ＶＭイメージをテスト制御部２０１に送信する。
【００６８】
テスト管理部１０１は、テストツリー１２１上のルートノードから、指定されたテスト項目の親（前）のテスト項目までの各テスト項目に対応する差分イメージを差分イメージ情報１２４から取得し、テスト制御部２０１に送信する（ステップＳ２０３）。
【００６９】
例えば、テスト管理部１０１は、図７の差分イメージ情報１２４から、テスト項目「テスト１」「テスト１−１」に対応する差分イメージ「Ｄ１」「Ｄ１−１」を取得し、テスト制御部２０１に送信する。
【００７０】
テスト制御部２０１は、テスト管理部１０１から受信した初期ＶＭイメージと各テスト項目に対応する差分イメージとをもとに、指示されたテスト項目の親（前）のテスト項目のテスト実行後のＶＭイメージを復元する（ステップＳ２０４）。ここで、テスト制御部２０１は、初期ＶＭイメージに、各テスト項目に対応する差分イメージをテストツリー１２１上の実行順序に従って適用して、ＶＭイメージを復元する。テスト制御部２０１は、例えば、ＶＭイメージのデータの内、差分イメージにより示されるアドレスのデータを、当該アドレスにおける変更後のデータの値で置き換えることにより、各テスト実行後のＶＭイメージを復元する。
【００７１】
例えば、テスト制御部２０１は、初期ＶＭイメージに、テスト項目「テスト１」「テスト１−１」に対応する差分イメージ「Ｄ１」「Ｄ１−１」を順番に適用し、テスト項目「テスト１−１」のテスト実行後のＶＭイメージ「ＶＭＩ１−１」を復元する。
【００７２】
テスト制御部２０１は、復元したＶＭイメージを処理部２０２に配備し、仮想マシンを起動する（ステップＳ２０５）。
【００７３】
例えば、テスト制御部２０１は、ＶＭイメージ「ＶＭＩ１−１」を処理部２０２に配備する。
【００７４】
テスト制御部２０１は、処理部２０２上の仮想マシンを用いて、指示されたテスト項目のテストを実行する（ステップＳ２０６）。
【００７５】
例えば、テスト制御部２０１は、仮想マシン（ＶＭイメージ「ＶＭＩ１−１」）を用いて、テスト項目「テスト１−１−１」のテストを実行する。
【００７６】
なお、テスト制御部２０１は、上述の差分イメージ生成処理と同様に、さらに、指定されたテスト項目を起点とする部分木の範囲のテスト項目のテストを実行し、差分イメージ情報１２４を更新してもよい。
【００７７】
以上により、本発明の第１の実施の形態の動作が完了する。
【００７８】
次に、本発明の第１の実施の形態の特徴的な構成を説明する。図１は、本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【００７９】
図１を参照すると、テストシステム１は、テストツリー記憶部１１１、差分イメージ記憶部１１４、及び、テスト制御部２０１を含む。
【００８０】
テストツリー記憶部１１１は、初期ＶＭイメージを有する仮想マシンに対して実行される複数のテスト項目の各々を、ルートノードを起点とした各ノードに対応付けることにより、各テスト項目のテスト実行前に実行が必要な他のテスト項目を示した木構造を記憶する。
【００８１】
差分イメージ記憶部１１４は、複数のテスト項目の各々の実行前の仮想マシンのＶＭイメージと実行後のＶＭイメージとの差分である差分イメージを、複数のテスト項目の各々に対応付けて記憶する。
【００８２】
テスト制御部２０１は、仮想マシンを用いてテストを実行するテスト項目が指定された場合、初期ＶＭイメージ、及び、木構造上のルートノードから指定されたテスト項目の親のテスト項目までの各テスト項目に対応する差分イメージをもとに、指定されたテスト項目の親のテスト項目のテスト実行後の仮想マシンのＶＭイメージを復元する。
【００８３】
本発明の第１の実施の形態によれば、仮想マシンに用いたテスト環境において、テストシナリオが多岐にわたる場合であっても、ＶＭイメージの保存コストを低減できる。その理由は、テストツリー記憶部１１１が、仮想マシンに対して実行される複数のテスト項目の実行順序を示す木構造を記憶し、テスト制御部２０１が、初期ＶＭイメージ、及び、木構造上のルートノードから指定されたテスト項目の親のテスト項目までの各テスト項目実行前後の差分イメージをもとに、指定されたテスト項目の親のテスト項目のテスト実行後の仮想マシンのＶＭイメージを復元するためである。これにより、テスト項目の各々に対して仮想マシンのＶＭイメージを保存する場合よりも、ＶＭイメージを保存するためのコストが低減される。
【００８４】
また、本発明の第１の実施の形態によれば、テストシナリオが多岐にわたる場合であっても、ＶＭイメージの転送コストを低減できる。その理由は、テスト制御部２０１が、テスト項目のテスト実行後に、当該テスト項目を実行前のＶＭイメージを復元する場合、差分イメージをもとに、実行前のＶＭイメージを復元するためである。これにより、テスト項目の各々に対して仮想マシンのＶＭイメージを転送する場合よりも、ＶＭイメージを転送するためのコストが低減される。
【００８５】
（第２の実施の形態）
次に、本発明の第２の実施の形態について説明する。
【００８６】
本発明の第２の実施の形態においては、複数のテスト実行装置２００で異なる複数のテスト項目のテストを行う場合に、同じ差分データを用いたテストが、同じテスト実行装置２００で行われるように、各テスト実行装置２００にテスト項目が割り当てられる。
【００８７】
次に、本発明の第２の実施の形態の構成について説明する。図１０は、本発明の第２の実施の形態における、テストシステム１の構成を示すブロック図である。
【００８８】
図１０を参照すると、テスト実行システム１は、テスト管理装置１００と複数のテスト実行装置２００（２００ａ、２００ｂ、…）とを含む。
【００８９】
次に、本発明の第２の実施の形態におけるテストシステム１の動作について説明する。
【００９０】
＜ＶＭイメージ復元処理＞
複数のテスト項目を実行するときに、テスト実行装置２００にテスト項目を割り当て、各テスト実行装置２００で仮想マシンのＶＭイメージを復元する処理について説明する。
【００９１】
図１１は、本発明の第２の実施の形態におけるＶＭイメージ復元処理を示すフローチャートである。
【００９２】
はじめに、上述の差分イメージ生成処理によって、差分イメージ記憶部１１４に図７の差分イメージ情報１２４が登録されていると仮定する。
【００９３】
テスト管理装置１００のテスト管理部１０１は、テストシステム１のユーザから、テストツリー１２１上で、テストを実行する複数のテスト項目の指定を受け付ける（ステップＳ３０１）。
【００９４】
例えば、テスト管理部１０１は、テスト項目として、図４のテストツリー１２１上の「テスト１−１−１」「テスト１−２−１」「テスト２−１−１」「テスト２−２−１」を受け付ける。
【００９５】
テスト管理部１０１は、指定されたテスト項目の各々のテストを実行するテスト実行装置２００を決定する。ここで、テスト管理部１０１は、指定されたテスト項目の内、テストツリー１２１上のルートノードから親（前）のテスト項目までに、共通なテスト項目を持つテスト項目の組を抽出し、抽出された組のテスト項目のテストが同じテスト実行装置２００で実行されるように、テスト実行装置２００を決定する（ステップＳ３０２）。テスト管理部１０１は、決定したテスト実行装置２００の各々のテスト制御部２０１に、実行するテスト項目を送信し、テストの実行を指示する。
【００９６】
例えば、テスト管理部１０１は、ルートノードから親（前）のテスト項目までに、共通なテスト項目「テスト１」を持つ、テスト項目「テスト１−１−１」「テスト１−２−１」の組、及び、共通なテスト項目「テスト２」を持つ、テスト項目「テスト２−１−１」「テスト２−２−１」の組を抽出する。そして、テスト管理部１０１は、テスト項目「テスト１−１−１」「テスト１−２−１」をテスト実行装置２００ａ、テスト項目「テスト２−１−１」「テスト２−２−１」をテスト実行装置２００ｂに割り当てる。
【００９７】
テスト管理部１０１は、初期イメージ情報１２３の初期ＶＭイメージ取得し、各組のテストを実行するテスト実行装置２００のテスト制御部２０１に送信する（ステップＳ３０３）。
【００９８】
例えば、テスト管理部１０１は、図６の初期ＶＭイメージをテスト実行装置２００ａ、２００ｂのテスト制御部２０１ａ、２００ｂに送信する。
【００９９】
テスト管理部１０１は、ステップＳ３０２で抽出されたテスト項目の組の各々について、テストツリー１２１上のルートノードのテスト項目から指定されたテスト項目の親（前）のテスト項目までの各テスト項目に対応する差分イメージを差分イメージ情報１２４から取得し、各組のテストを実行するテスト実行装置２００のテスト制御部２０１に送信する（ステップＳ３０４）。ここで、テスト管理部１０１は、ステップＳ３０２で抽出されたテスト項目の組の各々において、共通なテスト項目に対応する差分イメージについては、１つだけ送信する。
【０１００】
例えば、テスト管理部１０１は、共通なテスト項目「テスト１」に対応する差分イメージ「Ｄ１」、及び、「テスト１−１」「テスト１−２」に対応する差分イメージ「Ｄ１−１」「Ｄ１−２」をテスト制御部２０１ａに送信する。また、テスト管理部１０１は、共通なテスト項目「テスト２」に対応する差分イメージ「Ｄ２」、及び、「テスト２−１」「テスト２−２」に対応する差分イメージ「Ｄ２−１」「Ｄ２−２」をテスト制御部２０１ｂに送信する。
【０１０１】
各テスト制御部２０１は、テスト管理部１０１から受信した初期ＶＭイメージと差分イメージとをもとに、指示されたテスト項目の親（前）のテスト項目のテスト実行後のＶＭイメージを復元する（ステップＳ３０５）。
【０１０２】
例えば、テスト制御部２０１ａは、初期ＶＭイメージと差分イメージ「Ｄ１」「Ｄ１−１」からテスト項目「テスト１−１」のテスト実行後のＶＭイメージ「ＶＭＩ１−１」、初期ＶＭイメージと差分イメージ「Ｄ１」「Ｄ１−２」からテスト項目「テスト１−２」のテスト実行後のＶＭイメージ「ＶＭＩ１−２」を復元する。また、テスト制御部２０１ｂは、初期ＶＭイメージと差分イメージ「Ｄ２」「Ｄ２−１」からテスト項目「テスト２−１」のテスト実行後のＶＭイメージ「ＶＭＩ２−１」、初期ＶＭイメージと差分イメージ「Ｄ２」「Ｄ２−２」からテスト項目「テスト２−２」のテスト実行後のＶＭイメージ「ＶＭＩ２−２」を復元する。
【０１０３】
テスト制御部２０１は、処理部２０２に復元したＶＭイメージを配備し、仮想マシンを起動する（ステップＳ３０６）。
【０１０４】
例えば、図１０に示すように、テスト制御部２０１ａは、ＶＭイメージ「ＶＭＩ１−１」「ＶＭＩ１−２」を用いた２つの仮想マシンを処理部２０２ａに配備する。また、テスト制御部２０１ｂは、ＶＭイメージ「ＶＭＩ２−１」「ＶＭＩ２−２」を用いた２つの仮想マシンを処理部２０２ｂに配備する。
【０１０５】
テスト制御部２０１は、処理部２０２上の仮想マシンを用いて、指示されたテスト項目のテストを実行する（ステップＳ３０７）。
【０１０６】
例えば、テスト制御部２０１ａは、２つの仮想マシン（ＶＭイメージ「ＶＭＩ１−１」「ＶＭＩ１−２」）を用いて、テスト項目「テスト１−１−１」「テスト１−２−１」を、それぞれ実行する。また、テスト制御部２０１ｂは、２つの仮想マシン（ＶＭイメージ「ＶＭＩ２−１」「ＶＭＩ２−２」）を用いて、テスト項目「テスト２−１−１」「テスト２−２−１」を、それぞれ実行する。
【０１０７】
以上により、本発明の第２の実施の形態の動作が完了する。
【０１０８】
本発明の第２の実施の形態によれば、複数のテスト実行装置２００で異なる複数のテスト項目のテストを行う場合に、ＶＭイメージの転送コストを低減できる。その理由は、テスト管理部１０１が、同じ差分データを用いたテストが、同じテスト実行装置２００で行われるように、各テスト実行装置２００にテスト項目を割り当てるためである。
【０１０９】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１１０】
例えば、本発明の実施の形態では、テスト実行装置２００のテスト制御部２０１が、処理部２０２上の仮想マシンに対してテストを行っているが、テスト実行装置２００の外部の装置が処理部２０２上の仮想マシンに対してテストを実行してもよい。この場合、テスト制御部２０１が、仮想マシンにおける各テスト項目のテスト終了を検出し、テスト実行前後の差分イメージを生成する。
【０１１１】
また、本発明の実施の形態では、テスト制御部２０１が、生成した差分イメージを、差分イメージ記憶部１１４の差分イメージ情報１２４に登録しているが、テスト制御部２０１は、差分イメージを、テスト実行装置２００の図示しない一時的な記憶部に保存し、テスト実行前のＶＭイメージの復元に用いてもよい。この場合、テスト制御部２０１は、複数の差分イメージをまとめて差分イメージ記憶部１１４の差分イメージ情報１２４に登録してもよい。
【符号の説明】
【０１１２】
１    テスト実行システム
１００    テスト管理装置
１０１    テスト管理部
１１１    テストツリー記憶部
１１２    テスト情報記憶部
１１３    初期イメージ記憶部
１１４    差分イメージ記憶部
１２１    テストツリー
１２２    テスト情報
１２３    初期イメージ情報
１２４    差分イメージ情報
２００    テスト実行装置
２０１    テスト制御部
２０２    処理部
【図１】
0005906705.tif 000002
【図２】
0005906705.tif 000003
【図３】
0005906705.tif 000004
【図４】
0005906705.tif 000005
【図５】
0005906705.tif 000006
【図６】
0005906705.tif 000007
【図７】
0005906705.tif 000008
【図８】
0005906705.tif 000009
【図９】
0005906705.tif 000010
【図１０】
0005906705.tif 000011
【図１１】
0005906705.tif 000012