(57)【要約】      （修正有）【課題】仮想マシンの適切なスナップショットイメージを用いて、副作用なく効率的なテストを実行するテスト管理システムを提供する。【解決手段】テスト指示部４０１は、テストシナリオ４０５を読み込み、テストシナリオ４０５に含まれるテスト項目の実行を仮想マシン４０３に対して指示する。スナップショット管理部４０２は、テストシナリオに含まれるテスト項目に関する情報と、仮想マシン４０３におけるテスト実行状態に関する情報とに基づいて、スナップショットイメージを作成するか否かを判定する。スナップショット管理部４０２は更に、判定の結果に基づいて、仮想マシン４０３のスナップショットイメージを作成してイメージデータ保持部４０４に格納する。【選択図】図４
2016218714.tif 000002
【特許請求の範囲】
【請求項１】
１以上のテスト項目を実行可能なテスト対象の仮想マシンにおいて実行された、前記テスト項目の実行結果に関する情報と、前記テスト項目の実行に伴う副作用の有無に関する情報とを用いて、前記仮想マシンのスナップショットイメージを作成するか否かを判定するスナップショット管理手段を備える
テスト管理システム。
【請求項２】
前記副作用の有無に関する情報は、前記テスト項目が繰り返し実行されても実行結果が変わらないことを示す冪等性の有無を表す冪等性情報を含み、
前記テスト項目の実行結果に関する情報は、前記テスト項目の実行時間を表す情報と、前記テスト項目の実行回数に関する情報との少なくとも一方を含み、
前記スナップショット管理手段は、前記冪当性情報と、前記テスト項目の実行結果に関する情報とに基づいて、前記スナップショットイメージを作成するか否かを判定する、
請求項１に記載のテスト管理システム。
【請求項３】
１以上の前記テスト項目を含むテストの内容が設定されたテストシナリオを読み込み、当該テストシナリオに設定された１以上の前記テスト項目の実行順序に従って当該テスト項目を実行するよう、前記仮想マシンを制御するテスト指示手段を更に備え、
前記スナップショット管理手段は、
前記テストシナリオに従って前記テスト項目を実行した結果に関する情報と、実行された前記テスト項目に関する前記冪等性情報とに基づいて、前記スナップショットイメージを作成する条件が満たされたと判定した場合に、前記仮想マシンのスナップショットイメージを作成し、
当該作成したスナップショットイメージと、当該スナップショットイメージが作成されるまでに実行された前記テスト項目とを関連付けて、前記スナップショットイメージを記憶可能なイメージデータ保持手段に保存する、
請求項２に記載のテスト管理システム。
【請求項４】
前記テスト指示手段は、前記テストシナリオに含まれるテスト項目に関する前記冪等性情報に基づいて、前記仮想マシンを起動するイメージデータを、前記イメージデータ保持手段に保存されている特定の前記スナップショットイメージか、または、テストが実行されていない状態の仮想マシンのイメージデータである初期イメージから選択する、
請求項３に記載のテスト管理システム。
【請求項５】
前記スナップショット管理手段は、
前記テストシナリオに含まれる前記テスト項目のうち、第１のテスト項目までに実行された、当該第１のテスト項目を含む全ての前記テスト項目に関する冪等性の有無を表す情報と、
前記テストシナリオに含まれる前記テスト項目のうち、前記第１のテスト項目までに実行された、当該第１のテスト項目を含む少なくとも１以上の前記テスト項目の実行時間を表す情報と、に基づいて、前記スナップショットイメージを作成する条件が満たされたか否かを判定する、
請求項３または請求項４に記載のテスト管理システム。
【請求項６】
前記スナップショット管理手段は、
前記テストシナリオに含まれる前記テスト項目のうち、前記第１のテスト項目までに実行された、前記第１のテスト項目を含む全ての前記テスト項目が冪等性を有するとともに、前記第１のテスト項目の実行時間が第１の基準時間以上である場合に、前記スナップショットイメージを作成する条件が満たされたと判定し、
前記第１のテスト項目の実行した完了した状態の前記仮想マシンのスナップショットイメージを作成する、
請求項５に記載のテスト管理システム。
【請求項７】
前記スナップショット管理手段は、
前記テストシナリオに含まれる前記テスト項目のうち、前記第１のテスト項目までに実行された、前記第１のテスト項目を含む全ての前記テスト項目が冪等性を有するとともに、前記テストシナリオに含まれる前記テスト項目のうち、前記第１のテスト項目までに実行された１以上の前記テスト項目の実行時間の合計が第２の基準時間以上である場合に 前記スナップショットイメージを作成する条件が満たされたと判定し、
前記第１のテスト項目の実行した完了した状態の前記仮想マシンのスナップショットイメージを作成する、
請求項５に記載のテスト管理システム。
【請求項８】
前記テスト指示手段は、
前記テストシナリオに、冪等性を有さない第２のテスト項目が含まれる場合、
前記第２のテスト項目の実行した完了した状態の前記仮想マシンのイメージデータである仮イメージデータを作成するよう前記スナップショット管理手段に通知し、
前記仮イメージデータを用いて起動した前記仮想マシンが当該テストシナリオに含まれるテスト項目を実行した結果と、前記初期イメージデータを用いて起動した前記仮想マシンが当該テストシナリオに含まれるテスト項目を実行した結果とが等しい場合、前記仮イメージデータを、前記スナップショットイメージとして前記イメージデータ保持手段に保存する
請求項３乃至請求項７のいずれかに記載のテスト管理システム。
【請求項９】
１以上のテスト項目を実行するテスト対象の仮想マシンにおいて実行された、前記テスト項目の実行結果に関する情報と、前記テスト項目の実行に伴う副作用に関する情報とを用いて、少なくとも前記仮想マシンのスナップショットイメージを作成するか否かを判定する
テスト方法。
【請求項１０】
１以上のテスト項目を実行するテスト対象の仮想マシンにおいて実行された、前記テスト項目の実行結果に関する情報と、前記テスト項目の実行に伴う副作用に関する情報とを用いて、少なくとも前記仮想マシンのスナップショットイメージを作成するか否かを判定する処理をコンピュータに実行させる
コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンを用いたテストを効率的に実行可能なテスト管理システム等に関する。
【背景技術】
【０００２】
テスト対象の装置等を仮想化した仮想マシンを用いて、各種テストを実行する技術が知られている。係る技術は、スナップショットイメージや差分イメージなどを適宜使用することにより用意した仮想マシンを用いて、テストを実行する。仮想マシンのスナップショットイメージは、例えば、ある任意のタイミングにおける仮想マシンの状態を保持するデータである。また、差分イメージは、ある特定のタイミングにおけるスナップショットイメージと、他のタイミングにおけるスナップショットイメージとの差分を表すデータである。
【０００３】
係る仮想マシンを使用したテストに関連する技術が、例えば、以下の特許文献に開示されている。例えば、特許文献１は、仮想マシンを用いたテスト環境において、仮想マシンのイメージの保存コストを低減する技術を開示する。特許文献１に開示された技術は、仮想マシンにおいて実行される複数のテスト項目に紐づけた形で、仮想マシンの差分イメージを、ツリートポロジを用いて管理する。特許文献１に開示された技術は、実施するテストの内容に合わせて、係る差分イメージから仮想マシンを再構築する。これにより、特許文献１に開示された技術は、個々のテスト項目に対応した仮想マシンを保存する場合に比べて、保存する仮想マシンのイメージのサイズを低減可能である。
【０００４】
特許文献２は、仮想マシンのイメージを管理する管理サーバに関する技術を開示する。特許文献２に開示された技術は、仮想マシンのスナップショットイメージの構築に要する時間と、ストレージの使用量とを考慮して、中間マスタイメージを作成するか否かを決定する。特許文献２は、中間マスタイメージを使用することで、ストレージ容量を消費するかわりに、スナップショットイメージの構築に要する時間を削減する。
【０００５】
特許文献３は、仮想マシン環境において、全てのテストシナリオに沿ったテストを最小時間で完了させるよう、仮想マシンのスナップショットイメージを取得する技術を開示する。特許文献３に開示された技術は、分岐パスが存在するテストノードのうち、テストの実行時間を最も短縮可能なテストノードを選択し、当該テストノードのスナップショットイメージを取得する。
【０００６】
特許文献４は、複数の構成バリエーション毎に必要な仮想マシンの台数を特定し、運用系システム及びテスト系システムに仮想マシンを追加することで、システムの構成を変更しながらテストを実行する技術を開示する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−１２０４４０号公報
【特許文献２】国際公開ＷＯ２０１４／１５５６９３号
【特許文献３】特開２０１１−１２９０２８号公報
【特許文献４】特開２０１０−１１３３８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
複数のテスト項目から構成されるテストシナリオに従ってテストが実行される場合、特定のテスト項目のテスト結果は、その前のテスト項目のテスト結果に依存することがある。ここで、各テスト項目は、スナップショットイメージを用いて起動した仮想マシンにより実行されることを前提として設計されていない場合がある。この場合、例えば、あるテスト項目（例えば、テスト項目Ｘ）を実行した後に作成されたスナップショットイメージを用いて起動された仮想マシンにおいて、当該テスト項目Ｘの実行結果が反映されない可能性がある。一例として、テスト項目Ｘを実行した後のスナップショットイメージを用いて仮想マシンを起動した際に、係るテスト項目のＸの実行結果が消滅してしまう場合がある。この場合、当該テスト項目Ｘの実行結果に依存する他のテスト項目（例えば、テスト項目Ｙ）に関するテストを、正常に（問題無く）実行することができない可能性がある。
【０００９】
テスト項目を設計する際、上記のような状況が想定されているとは限らない。これより、例えば、あるテスト項目を実行するために、スナップショットイメージを用いて起動した仮想マシンに対して追加の処理（操作等）が必要となる場合がある。上記具体例においては、例えば、テスト項目Ｙを実行するために、テスト項目Ｘの実行結果を確認する処理の追加が必要となる場合がある。この場合、当該処理をテスト項目に個別に追加することになり、テストの実行に要するコスト（オペレーションコスト）が高くなるという問題が生じる。
【００１０】
スナップショットイメージを用いて仮想マシンを起動した場合、テストシナリオに含まれるテスト項目を最初から再実行すれば、テスト項目毎に個別の操作や処理等を追加する必要はない。しかしながら、スナップショットイメージを用いて起動された仮想マシンが、係るスナップショットイメージが作成されるまでに実行されたテスト項目を再度正常に実行可能であるとは限らない。換言すると、スナップショットイメージを用いて起動された仮想マシンが、係るスナップショットイメージが作成されるまでに実行されたテスト項目を再実行した場合、エラーの発生等により、テストが失敗する可能性がある。例えば、特定のテスト項目を実行した場合、何らかの副作用が発生することを想定する。係る副作用は、例えば、当該テスト項目を実行した仮想マシンの状態変化や、その他テストに関連する環境の変化等であってもよい。この場合、係る特定のテスト項目を実行した後に作成されたスナップショットイメージを用いて起動された仮想マシンが、当該特定のテスト項目を再度正常に実行できるとは限らない。即ち、スナップショットイメージを取得するタイミングによっては、係るスナップショットを利用して起動した仮想マシンがあるテスト項目を再実行した場合にテストが失敗する可能性が有る、という問題が生じる。
【００１１】
これに対して、上記各特許文献に開示された技術は、テスト項目の実行に伴う副作用を考慮していない。例えば、特許文献１あるいは特許文献２に開示された技術は、任意のタイミングで作成されたスナップショットイメージを、任意のテスト項目を実行する際に利用可能であることを前提としている。即ち、これらの技術は、任意のタイミングで作成されたスナップショットイメージを用いて起動された仮想マシンが、全てのテスト項目を副作用なく、正常に実行可能であることを前提とする。よって、これらの技術は、そもそも上記のような問題を解決可能な技術ではない。
【００１２】
本発明は上記のような事情を鑑みてなされたものである。即ち、本発明は、仮想マシンの適切なスナップショットイメージを用いて、副作用なく効率的なテストを実行可能なテスト管理システム等を提供することを主たる目的の一つとする。
【課題を解決するための手段】
【００１３】
上記の目的を達成すべく、本発明の一態様に係るテスト管理システムは、以下の構成を備える。即ち、本発明の一態様に係るテスト管理システムは、１以上のテスト項目を実行可能なテスト対象の仮想マシンにおいて実行された、上記テスト項目の実行結果に関する情報と、上記テスト項目の実行に伴う副作用の有無に関する情報とを用いて、上記仮想マシンのスナップショットイメージを作成するか否かを判定するスナップショット管理手段を備える。
【００１４】
また、本発明の一態様に係るテスト方法は、１以上のテスト項目を実行するテスト対象の仮想マシンにおいて実行された、上記テスト項目の実行結果に関する情報と、上記テスト項目の実行に伴う副作用に関する情報とを用いて、少なくとも上記仮想マシンのスナップショットイメージを作成するか否かを判定する。
【００１５】
また、同目的は、上記構成を有するテスト管理システム、あるいは、テスト方法を、コンピュータによって実現するコンピュータ・プログラム、及び、そのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記録媒体等によっても達成される。
【発明の効果】
【００１６】
本発明によれば、仮想マシンの適切なスナップショットイメージを用いて、副作用なく効率的なテストを実行可能である。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明を実現可能な一つの具体例であるテスト管理システムの機能的な構成を例示するブロック図である。
【図２】図２は、テストシナリオの具体例を示す説明図である。
【図３】図３は、テストシナリオの別の具体例を示す説明図である。
【図４】図４は、本発明の第１の実施形態におけるテスト管理システムの機能的な構成を例示するブロック図である。
【図５】図５は、各テスト項目に関する実行時間の具体例を示す説明図である。
【図６】図６は、イメージデータ保持部に保持されたデータの具体例を示す説明図である。
【図７】図７は、イメージデータ保持部に保持されたデータの別の具体例を示す説明図である。
【図８】図８は、本発明の第１の実施形態におけるテスト管理システムの動作を例示するフローチャート（１／２）である。
【図９】図９は、本発明の第１の実施形態におけるテスト管理システムの動作を例示するフローチャート（２／２）である。
【図１０】図１０は、本発明の第２の実施形態におけるテスト管理システムの機能的な構成を例示するブロック図である。
【図１１】図１１は、本発明の第２の実施形態におけるテストシナリオの具体例を示す説明図である。
【図１２】図１２は、本発明の第２の実施形態における各テスト項目に関する実行時間の具体例を示す説明図である。
【図１３】図１３は、本発明の第３の実施形態におけるテスト管理システムの機能的な構成を例示するブロック図である。
【図１４】図１４は、本発明の第３の実施形態の変形例におけるテスト管理システムの機能的な構成を例示するブロック図である。
【図１５】図１５は、本発明の第３の実施形態の変形例におけるテスト管理システムの機能的な構成を例示するブロック図である。
【図１６】図１６は、本発明の各実施形態に係るテスト管理システム（あるいはその構成要素）を実現可能なハードウェアの構成を例示する図である。
【発明を実施するための形態】
【００１８】
以下、本発明を実施する形態について図面を参照して詳細に説明する。以下の各実施形態に記載されている構成は例示であり、本発明の技術範囲はそれらには限定されない。
【００１９】
まず、本発明の各実施形態に関する説明に先立って、本発明の理解を容易にするため、本発明に関する技術的背景等について具体的に説明する。
【００２０】
近年、冪等性を考慮したテストの重要性が増している。冪等性とは、ある処理を何度実行しても処理結果がかわらない（即ち、副作用を生じない）性質を表す。また、近年では、Ｃｈｅｆ（参考文献１）、Ａｎｓｉｂｌｅ（参考文献２）、Ｐｕｐｐｅｔ（参考文献３）等の自動化ツール（あるいは構成管理ツール）を使うことで、テストを自動的に行うことが可能となっている。Ｃｈｅｆ、Ａｎｓｉｂｌｅ、Ｐｕｐｐｅｔなどの自動化ツールは、冪等性を考慮して設計されたツールであることが特徴である。
【００２１】
（参考文献１）”ＣＨＥＦ  ＤＯＣＵＭＥＮＴＳ”、［ｏｎｌｉｎｅ］、［平成２７年４月１６日検索］、インターネット（”ｈｔｔｐ：／／ｄｏｃｓ．ｃｈｅｆ．ｉｏ／”）
（参考文献２）”Ａｎｓｉｂｌｅ”、［ｏｎｌｉｎｅ］、Ａｎｓｉｂｌｅ，Ｉｎｃ、［平成２７年４月１６日検索］、インターネット（”ｈｔｔｐ：／／ｗｗｗ．ａｎｓｉｂｌｅ．ｃｏｍ／ｒｅｓｏｕｒｃｅｓ”）
（参考文献３）”Ｐｕｐｐｅｔ  Ｌａｂｓ”、［ｏｎｌｉｎｅ］、Ｐｕｐｐｅｔ  Ｌａｂｓ、［平成２７年４月１６日検索］、インターネット（”ｈｔｔｐｓ：／／ｐｕｐｐｅｔｌａｂｓ．ｃｏｍ／”）
例えば、Ａｎｓｉｂｌｅを使用した場合、Ａｎｓｉｂｌｅが提供する特定のモジュールを使って処理を行う際には、副作用が生じないことが保証されている。係る特定のモジュールにおいては、多くの場合、自動化される処理が、例えば、「パッケージＡがインストールされている」というように、満たすべき状態として定義される。この場合、既にパッケージ（パッケージＡ）がインストールされていなければ、Ａｎｓｉｂｌｅが、係るパッケージをインストールする処理を実行する。また、係るパッケージがインストールされていれば、Ａｎｓｉｂｌｅは、係るパッケージをインストールする処理を実行しない。どちらの場合も、パッケージＡがインストールされている状態が満たされることから、結果は変わらない。即ち、これにより冪等性が保たれる。
【００２２】
テストシナリオに含まれるテスト項目が冪等性を有する場合、係るテスト項目の実行による副作用は発生しない。よって、冪等性を有するテスト項目を実行した後に作成されたスナップショットイメージを用いて起動された仮想マシンは、係るテスト項目を再度実行することができる。例えば、Ａｎｓｉｂｌｅ等の冪等性を考慮した自動化ツールにおいて規定されたテスト項目が冪当性を有する場合、仮想マシンは、係るテスト項目を繰り返し正常に実行することができる。
【００２３】
例えば、仮想マシンが、テスト項目Ａと、テスト項目Ａの結果を使用するテスト項目Ｂとを含むテストシナリオに従ってテストを実行する際、テスト項目Ａの実行後にスナップショットイメージが作成されることを想定する。具体例として、テスト項目Ａは、例えば「サービスの起動」というテストでり、テスト項目Ｂは、例えば「サービスの利用」というテスト項目であることを想定する。
【００２４】
テスト項目Ａの実行後に作成されたスナップショットイメージを用いて起動された仮想マシンは、テスト項目Ｂを実行する際、テスト項目Ａの実行結果を使用する必要がある。このため、係る仮想マシンは、場合によっては、テスト項目Ａを再度実行する必要がある。テスト項目Ａが冪等性を有さない場合、仮想マシンが係るテスト項目Ａを再実行した際に問題（例えばテストの失敗）が発生し、結果として、テスト項目Ｂが正常に実行されない可能性がある。これに対して、テスト項目Ａが冪等性を有する場合、仮想マシンはテスト項目Ａを再実行可能であることから、仮想マシンはテスト項目Ｂを正常に実行可能である。
【００２５】
テスト項目Ｂに個別の処理（例えば、「サービスが起動されていれば、そのサービスを使用する。そうでない場合はサービスを起動し直す」処理等）を追加すると、テスト項目Ｂの設計（設定）が複雑になる。更に、テストシナリオに含まれる全てのテスト項目について、係る個別の処理を設定することは困難な場合がある。上記のような個別対応は、テストに要するコストを増大させる。
【００２６】
以上より、仮想マシンを用いてテストを実行する場合には、適切なタイミングにおいて取得されたスナップショットイメージを利用することが望ましい。より具体的には、あるテスト項目の実行により副作用を生じるか否かを考慮することにより、各テスト項目に対する個別の処理を追加する必要がなく、必要に応じて特定のテスト項目を再実行可能なスナップショットイメージを利用することが望ましい。あるテスト項目の実行により副作用を生じるか否かは、例えば、当該テスト項目が冪等性を有するか否かに基づいて判断可能である。例えば、Ａｎｓｉｂｌｅ等の自動化ツールを用いてテストシナリオを実行する場合、Ａｎｓｉｂｌｅにおいて冪等性が保障されているモジュールを使用して規定されたテスト項目については、冪等性を有すると判定することが可能である。
【００２７】
以下、各テスト項目の冪等性を考慮し、適切なタイミングでスナップショットイメージを取得することにより、効率的かつ低コストのテストを実現する具体的な構成について説明する。
【００２８】
＜発明の概要＞
まず、本発明の概要について、本発明を実現可能な一つの具体例であるテスト管理システムを例示して説明する。なお、以下において説明するテスト管理システムは、単体の装置（物理的あるいは仮想的な装置）により構成されてもよく、複数の装置（物理的あるいは仮想的な装置）により構成されてもよい。係るテスト管理システムは単体の装置として構成される場合、係るテスト管理システムは、単体のテスト管理装置として機能してもよい。また、係るテスト管理システムが複数の装置により構成される場合、係る複数の装置の間は、有線、無線、又はそれらを任意に組み合わせた通信ネットワーク（通信回線）により通信可能に接続されてもよい。なお、係る通信ネットワークは、物理的な通信ネットワークであってもよく、仮想的な通信ネットワークであってもよい。以下、係るテスト管理システムの構成について図１を参照して説明する。
【００２９】
図１に例示するように、テスト管理システム１００は、テスト指示部（テスト指示手段）１０１と、スナップショット管理部（スナップショット管理手段）１０２と、を少なくとも備える。テスト指示部１０１と、スナップショット管理部１０２との間は、任意の通信手段を用いて通信可能に接続されていてもよい。
【００３０】
テスト指示部１０１は、テストシナリオを読み込み、仮想マシン（不図示）を用いてテストを実行する。なお、テスト指示部１０１は、読み込んだテストシナリオに従ってテストを実行するよう、仮想マシンを制御してもよい。
【００３１】
スナップショット管理部１０２は、テスト項目の実行に伴う副作用を考慮して、適切なスナップショットイメージを作成する。より具体的には、スナップショット管理部１０２は、例えば、テスト項目の冪等性を考慮して、適切なスナップショットイメージを作成してもよい。
【００３２】
テスト指示部１０１は、まず、仮想マシンにおいて実行されるテスト項目が記載されたテストシナリオを読み込む。以下の説明では、図２及び、図３に例示する２つのテストシナリオが存在する場合を想定する。図２に例示するテストシナリオには、テスト１、テスト２−１、テスト３の順に、テスト項目の実行順序が設定されている。図３に例示するテストシナリオには、テスト１、テスト２−２、テスト３の順に、テスト項目の実行順序が設定されている。
【００３３】
最も副作用のないテスト方法は、テスト項目を実行する前（具体的には、テスト１を実行する前）の仮想マシンのイメージデータ（初期イメージ）を用いて、２つのテストシナリオをそれぞれ個別に実行する方法である。即ち、テスト指示部１０１は、初期イメージを用いて起動した仮想マシンを用いて、図２に例示するテストシナリオに従って、テスト１、テスト２−１、テスト３を実行する。また、テスト指示部１０１は、上記とは別に、初期イメージを用いて起動した仮想マシンを用いて、図３に例示するテストシナリオに従って、テスト１、テスト２−２、テスト３の順にテストを実行する。
【００３４】
この場合、テスト１及びテスト３はそれぞれ２回実行される。具体的には、テスト１については全く同じ内容のテストが２回実行され、この２回のテスト結果は同様となる。テスト３については、テスト２−１及びテスト２−２の影響をうける可能性があるので、２回のテスト結果が全く同じ結果になるとは限らない。テスト１については、全く同じテストが２回独立して実行されることから、係るテスト１に関するテストは、冗長なテストである。
【００３５】
上記の場合、それぞれのテストシナリオは独立した環境で実行されるので、片方のテストシナリオの実行（あるいはその結果）が、もう一方のテストシナリオの実行（あるいはその結果）に影響を与えない。即ち、上記したようなテスト方法は、副作用がないテスト方法である。
【００３６】
一方、上記のようなテスト方法は、冗長なテスト項目（例えばテスト１）を含むことから、テストを効率化する観点からは、改善の余地がある。係るテストの効率化は、例えば、テストの実行に要する時間（実行時間）の短縮、あるいは、テストに関連する各種資源（リソース）の使用量の低減等を含んでもよい。
【００３７】
ここで、仮想マシンのスナップショットイメージを活用することにより、効率的なテストを実行することが考えられる。例えば、スナップショット管理部１０２は、テスト１を実行した後のタイミングにおいて、仮想マシンのスナップショットイメージを作成する。係るタイミングは、例えば、仮想マシンがテスト１を実行した直後であってもよい。
【００３８】
テスト指示部１０１は、上記タイミングにて作成されたスナップショットイメージを用いて起動した仮想マシンに、テスト１が実行された後のテスト（具体的には、テスト２−１とテスト３、及び、テスト２−２とテスト３）を実行させる。これにより、テスト管理システム１００は、テスト１の実行回数を１回に抑えることが可能である。テスト１の実行時間が、スナップショットイメージ生成（作成）に要する時間に比べ大きい場合、テスト管理システム１００は、このスナップショットを利用することにより、テストの効率を改善可能である。また、テストシナリオが大量に存在し、テスト１の実行回数が多い場合も、係るスナップショットを利用することにより、テストの効率を改善可能である。
【００３９】
しかしながら、上記したように、任意のタイミングにおけるスナップショットイメージを利用して、任意のテスト項目を問題なく実行可能であるとは限らない。例えば、上記したテスト１を実行した後のスナップショットイメージを用いて起動した仮想マシンが、テスト１を再度実行する必要がある場合を想定する。テスト１が複数回実行されることを想定して設計されていなければ、仮想マシンがテスト１を再度実行した際、テストが失敗に終わる可能性がある。これに対して、テスト１が繰り返し実行されることを想定して設計され、冪等性を満たしている（有している）場合、仮想マシンがテスト１を再度実行しても、問題は発生しない（即ち、テストは失敗しない）。
【００４０】
なお、仮想マシンは、冪等性を有するテストを複数回実行可能であるが、同じテストを冗長に実行すると、スナップショットイメージを利用することによる利益（例えば、テストの実行時間あるいは実行回数の低減）を十分に得られない可能性がある。しかしながら、例えば、Ａｎｓｉｂｌｅなどの冪等性を考慮した自動化ツールは、多くの場合、当該自動化ツールにおいて定義された冪等性を有する同一のテスト項目の２回目以降の実行を、効率的に処理することができる。よって、同一のテスト項目が冗長に実行される場合であっても、全体としては、テストの効率を改善することができる。
【００４１】
以上より、仮想マシンのスナップショットイメージを活用して効率的なテストを実行するには、適切なタイミングにおいてスナップショットイメージを作成することが求められる。そこで、テスト管理システム１００は、各テスト項目の冪等性の有無に基づいて、仮想マシンのスナップショットイメージを作成するか否かを判断する。そして、テスト管理システム１００は、テストシナリオを実行する際に副作用に起こらないスナップショットイメージを用いて仮想マシンを起動し、係る仮想マシンを用いてテストを実行する。これにより、テスト管理システム１００は、効率的かつ副作用のないテストを実現することができる。
【００４２】
具体的には、例えば、図２においてテスト１と表されるテスト項目が冪等性を有する場合、テスト管理システム１００は、テスト１を実行した後の仮想マシンのスナップショットイメージを作成（取得）してもよい（作成可能である）と判定する。この場合、テスト管理システム１００は、スナップショットイメージを作成（取得）してよい。
【００４３】
テスト管理システム１００は、作成したスナップショットイメージを利用してテストを実行する際、既に実行されたテスト項目を再度実行する。係るテスト管理システム１００は、スナップショットイメージを利用して起動した仮想マシンにおいて、既に実行したテスト項目の実行結果が反映されていない場合であっても、係るテスト項目を再実行することにより、他のテスト項目を問題なく実行可能である。
【００４４】
係るテスト管理システム１００においては、テスト１を実行した後のスナップショットイメージを用いて起動した仮想マシンが使用される場合であっても、係る仮想マシンが、テスト１を再度実行してよい。テスト１は冪等性を有していることから、仮想マシンが係るテストを再度実行しても問題は起こらない（即ち、係る仮想マシンはテスト１を再実行可能である）。また、テスト１は１度実行されていることから、２度目以降のテストは、効率的に実行される可能性が高い。
【００４５】
テスト管理システム１００は、テスト１に冪等性がない（冪等性を有さない）場合、テスト１の実行が終了した後の仮想マシンのスナップショットイメージを作成しない（作成不可）と判定する。
【００４６】
テスト管理システム１００は、上記判定に加え、スナップショットイメージを作成するか否かを、スナップショットイメージの作成に要する時間に基づいて判断してもよい。また、テスト管理システム１００は、スナップショットイメージを作成するか否かを、テスト項目の実行に要する時間に基づいて判断してもよい。また、テスト管理システム１００は、スナップショットイメージを作成するか否かを、上記以外の他の基準に基づいて判断してもよい。
【００４７】
テスト管理システム１００は、複数のテスト項目を実行した後のタイミングにおいて、仮想マシンのスナップショットイメージを作成するか否かを、以下ように判定してもよい。即ち、テスト管理システム１００は、例えば、仮想マシンにおいて実行された全てのテスト項目が冪等性を有する場合、当該仮想マシンのスナップショットイメージを作成可能と判定してよい。また、テスト管理システム１００は、上記（冪等性の条件）に加え、更に以下の基準（条件）が満たされた場合に、仮想マシンのスナップショットイメージを作成可能と判定してもよい。即ち、テスト管理システム１００は、最後に実行されたテスト項目の実行に要した時間、または、全てのテスト項目の実行に要した時間がある基準時間以上である場合、当該仮想マシンのスナップショットイメージを作成可能と判定してよい。係る基準時間は、例えば、予め定められた値であってもよい。
【００４８】
また、テストシナリオに冪等性を有さないテスト項目が含まれている場合、テスト管理システム１００は、以下のような判断に基づいて、スナップショットイメージを作成してもよい。まず、テスト管理システム１００は、冪等性を有さないテスト項目を実行した後のタイミングにおける仮想マシンのスナップショットイメージを、仮イメージとして作成する。テスト管理システム１００は、係る仮イメージを用いて起動した仮想マシンを用いて、テストシナリオを実行する。テスト管理システム１００は、上記実行結果と、初期イメージを用いて起動した仮想マシンを用いてテストシナリオを実行した結果とを比較する。係る比較の結果、これらの結果が同一である場合、テスト管理システム１００は、上記仮イメージを正式なスナップショットイメージとする。換言すると、この場合、テスト管理システム１００は、スナップショットイメージを用いて起動した仮想マシンと、初期イメージを用いて起動した仮想マシンとのそれぞれにおけるテストシナリオの実行結果を比較する。これにより、テスト管理システム１００は、冪等性を有さないテスト項目を実行した後のスナップショットイメージを用いた仮想マシンにより、テストを問題なく実行可能であるか否かを判定する。この場合、テスト管理システム１００は同じテストシナリオを２度実行する必要があることから、結果として冗長なテストが実行される。しかしながら、冪等性を有さないテスト項目を実行した後のスナップショットイメージが、多くのテストにおいて使用可能であれば、テスト管理システム１００は、全体として効率的なテストを実行することが可能である。
【００４９】
以上により、本発明の実現可能な一つの具体例であるテスト管理システム１００は、仮想マシンのスナップショットイメージを利用することにより、効率的で、副作用のないテストを実現することが可能にする。また、係るテスト管理システム１００を利用した場合、例えば、テスト管理システム１００のユーザは、テスト項目に対して個別の処理を追加することなく、スナップショットイメージを利用したテストを実行可能である。上記具体例を用いて説明した本発明について、以下の各実施形態においてより詳細に説明する。
【００５０】
＜第１の実施形態＞
本発明の第１の実施形態について図面を参照して詳細に説明する。図４を参照すると、本発明の第１の実施形態におけるテスト管理システム４００は、テスト指示部（テスト指示手段）４０１と、スナップショット管理部（スナップショット管理手段）４０２と、を備える。また、テスト管理システム４００は、仮想マシン４０３と、イメージデータ保持部（イメージデータ保持手段）４０４と、を含んでもよい。テスト管理システム４００におけるこれらの要素の間は、任意の通信手段を用いて通信可能に接続されている。なお、テスト管理システム４００は、１以上のテストシナリオ４０５（例えば、４０５ａ、４０５ｂ）を、テスト指示部４０１から参照可能に保持してもよい。以下、それぞれの構成要素について説明する。
【００５１】
仮想マシン４０３は、仮想化基盤技術を用いて仮想化された、テスト対象の機器あるいはシステム等である。仮想マシン４０３は、例えば、任意の仮想化基盤技術を用いて構築された仮想的な情報処理装置（コンピュータ）、通信処理装置（ネットワーク機器等）、あるいは、それらの任意の組み合わせ等であってもよい。また、テスト管理システム４００は、複数の仮想マシン４０３を有してもよい。なお、仮想マシン４０３は公知の仮想化基盤技術を用いて実現可能であることから、詳細な説明を省略する。
【００５２】
テスト指示部４０１は、テストシナリオ４０５（４０５ａおよび４０５ｂ）を読み込み、テストシナリオ４０５に含まれるテスト項目の実行を仮想マシン４０３に対して指示する。より具体的には、テスト指示部４０１は、テストシナリオ４０５に含まれるテスト項目を実行するよう、仮想マシン４０３を制御する。以下、テスト指示部４０１の指示に基づいて、仮想マシン４０３がテストシナリオ４０５に含まれるテスト項目を実行することを、「仮想マシン４０３がテストシナリオ４０５を実行する」と称する場合がある。
【００５３】
スナップショット管理部４０２は、テストシナリオに含まれるテスト項目に関する情報と、仮想マシン４０３におけるテスト実行状態に関する情報とに基づいて、スナップショットイメージを作成（取得）するか否かを判定する。テスト項目に関する情報は、例えば、テスト項目の実行に伴う副作用の有無に関する情報であってもよい。また、係るテスト項目の実行に伴う副作用の有無に関する情報は、例えば、当該テスト項目が繰り返し実行されても実行結果が変わらないことを示す冪等性の有無を表す冪等性情報を含んでもよいテスト実行状態に関する情報は、例えばテスト項目の実行結果、テスト項目の実行に要した時間、あるいは、テスト項目の実行回数、等の情報を１以上含んでもよい。スナップショット管理部４０２は、これらの情報を、テスト指示部４０１から取得してもよい。また、スナップショット管理部４０２は、上記判定の結果に基づいて、仮想マシン４０３のスナップショットイメージを作成（取得）する。
【００５４】
スナップショットイメージは、例えば、仮想マシン４０３の状態を保持するデータである。係る仮想マシン４０３の状態には、例えば、仮想マシン４０３の実行状態、仮想マシン４０３を構成するソフトウェア及びハードウェア構成、仮想マシン４０３が保持するデータ等が含まれてもよい。また、係るスナップショットイメージは、仮想マシン４０３を起動（実行）可能なデータであってもよい。係るスナップショットイメージを用いることにより、例えば、あるタイミングにおける仮想マシンの状態を保存、あるいは、復元（再現）することが可能である。係るスナップショットイメージは、周知の仮想化基盤技術において提供される方法を使用して作成可能であることから、詳細な説明は省略する。
【００５５】
イメージデータ保持部４０４は、スナップショットイメージを記憶（格納）する。イメージデータ保持部４０４は、例えば、任意のファイルシステム、あるいはデータベース等を用いて構成されてもよい。なお、以下においては、イメージデータ保持部４０４を、「イメージデータベース４０４」と称する場合がある。
【００５６】
テストシナリオ４０５は、テスト対象の仮想マシン４０３において実行されるテスト項目を１以上含むデータである。また、テストシナリオ４０５は、各テスト項目に関連する情報を含んでもよい。図４においては、２つのテストシナリオ４０５（４０５ａ及び４０５ｂ）が例示されているが、本実施形態はこれには限定されず、テスト指示部４０１は、任意の数のテストシナリオを参照してよい。以下、本実形態においては、図４におけるテストシナリオ４０５ａに、図２に例示する内容が設定されており、図４におけるテストシナリオ４０５ｂに、図３に例示する内容が設定されていることを想定する。
【００５７】
図２、及び、図３に例示されるように、テストシナリオ（４０５ａ、４０５ｂ）には、テスト項目の実行順序（実行順序２０１）と、テスト項目を識別可能な情報（テスト項目２０２）と、テスト項目の冪等性を表す情報（冪等性２０３）とが設定されている。冪等性２０３は、例えば、テスト管理システム４００のユーザ等により、明示的に記載（設定）されてもよい。また、テスト管理システム４００（特には、テスト指示部４０１）が、周知の自動化ツール（例えば、Ａｎｓｉｂｌｅ等）の特定のモジュールを使用しているか否かに基づいて、冪等性２０３に適切なデータ（値）を設定してもよい。
【００５８】
テストシナリオ４０５ａに設定されたテスト項目のうち、テスト１及びテスト２−１は冪等性を有し、テスト３は冪等性を有さない。テストシナリオ４０５ｂに設定されたテスト項目のうち、テスト１とテスト３はテストシナリオ４０５ａと同様であり、テスト２−２は冪等性を有する。本実施形態において、テスト指示部４０１は、テストシナリオ４０５ａ、テストシナリオ４０５ｂの順にテストを実行する。
【００５９】
上記テストシナリオ４０５は、テスト管理システム４００の外部から、テスト管理システムのユーザ等により提供されてもよい。また、上記テストシナリオ４０５は、テスト指示部４０１から参照可能な任意の場所に配置されてよい。テストシナリオ４０５は、例えば、図４に示す具体例のように、テスト管理システム４００の内部（例えば、テストシナリオ保持部４０６）に保持されてもよい。また、テストシナリオ４０５は、例えば、イメージデータベース４０４に、スナップショットイメージとともに保存されてもよい。また、テストシナリオ４０５は、テスト指示部４０１から任意の通信手段等を介して参照可能な、テスト管理システム４００の外部に配置されてもよい。
【００６０】
以下、本実施形態における、仮想マシン４０３を用いたテストの実行、及び、スナップショットイメージの作成について説明する。
【００６１】
まず、仮想マシン４０３においてテストが実行されていない初期の状態（初期状態）を想定する。この場合、イメージデータベース４０４には、仮想マシン４０３の初期イメージが登録されていてもよい。係る初期イメージは、例えば、テストが実行される前の状態における仮想マシン４０３のスナップショットイメージであってもよい。
【００６２】
テスト指示部４０１は、初期イメージを用いて仮想マシン４０３を起動する。次に、テスト指示部４０１は、仮想マシン４０３に対して、テストシナリオ４０５ａに設定されたテスト項目を実行するよう指示する。テスト指示部４０１は、例えば、仮想マシン４０３に対して、テストシナリオに含まれるテスト項目を順次実行するよう、コマンド等を送信してもよい。そして、テスト指示部４０１は、仮想マシン４０３において各テスト項目の実行に要した時間を計測する。
【００６３】
仮想マシン４０３において、あるテスト項目（例えば、「第１のテスト項目」と称する）の実行が完了した際、テスト指示部４０１は、そのテスト項目の冪等性２０３と、そのテスト項目の実行に要した時間とをスナップショット管理部４０２へ通知する。
【００６４】
スナップショット管理部４０２は、テスト指示部４０１から上記通知を受け付けた際、係るタイミングにおける仮想マシン４０３のスナップショットイメージを構築（作成）するか否かを以下の基準（条件）に基づいて判定する。
【００６５】
一つ目の基準は、当該第１のテスト項目と、第１のテスト項目より前に実行されたテスト項目とが全て冪等性を有しているか否かである。二つ目の基準は、第１のテスト項目の実行に要した時間（実行時間）が、ある基準時間（例えば「第１の基準時間」と称する）以上か否かである。係る基準時間は、例えば、具体的な値（例えば、「秒単位」や「分単位」で表される値）により表されてもよい。
【００６６】
上記２つの基準を満たした場合、スナップショット管理部４０２は、仮想マシン４０３のスナップショットイメージを作成する。そして、スナップショット管理部４０２は、それまで（第１のテスト項目まで）に実行したテスト項目と、作成したスナップショットイメージと関連づけてイメージデータベース４０４へ保存（登録）する。この場合、スナップ所と管理部４０２は、実行されたテスト項目を識別可能な情報と、作成したスナップショットイメージと関連づけてイメージデータベース４０４へ保存（登録）してもよい。なお、本実施形態は上記に限定されず、スナップショット管理部４０２は、例えば、上記一つ目の基準が満たされた場合に、上記二つ目の基準を確認せずに、スナップショットイメージを作成してもよい。
【００６７】
具体例として、第１の基準時間を３００秒であり、各テスト項目の実行に要した時間（実行時間）が図５に例示する実行時間５０２であることを想定する。テスト１は冪等性を有し、テスト１の実行に要した時間（４００秒）は、３００秒を超える。よって、スナップショット管理部４０２は、テスト１が実行された後のタイミングにおける仮想マシン４０３のスナップショットイメージを作成してもよいと判定する。この場合、スナップショット管理部４０２は、テスト１が実行された直後のタイミングにおける仮想マシン４０３のスナップショットイメージを作成してもよい。スナップショット管理部４０２は、作成したスナップショットイメージを、イメージデータベース３０１に保存（登録）する。この際のイメージデータベース４０４の内容（テーブル）を図６に例示する。
【００６８】
図６に例示するように、イメージデータベース４０４には、スナップショットイメージを識別可能なスナップショット名（６０１）と、当該スナップショットイメージに関連付けされたテスト項目（６０２）と、当該スナップショットの配置場所（６０３）とが、登録される。イメージデータベース４０４には、上記以外の任意のデータが登録されてもよい。以下においては、図６に例示される、テスト１が実行された後に作成されたスナップショットイメージを、「ｓｎａｐ１」と称する場合がある。
【００６９】
イメージデータベース４０４にｓｎａｐ１が登録された場合、テスト指示部４０１は、仮想マシンを起動するスナップショットイメージとして、係るｓｎａｐ１を利用可能である。より具体的には、テスト指示部４０１は、あるテストシナリオ４０５においてテスト１からテストを実行する際、ｓｎａｐ１を用いて起動した仮想マシンを使用してよい。
【００７０】
テスト２−１は、冪等性を有するものの、テスト２−１の実行に要した時間は、３００秒未満である。よって、スナップショット管理部４０２は、テスト２−１を実行した後の仮想マシン４０３のスナップショットイメージを作成しない。
【００７１】
テスト３は、冪等性を有さないことから、スナップショット管理部４０２は、テスト３を実行した後の仮想マシン４０３のスナップショットイメージを作成しない。
【００７２】
テスト指示部４０１は、次に、仮想マシン４０３に対して、テストシナリオ４０５ｂに設定されたテスト項目を実行するよう指示する。具体的には、テストシナリオ４０５ｂはテスト１より開始されるので、テスト指示部４０１は、テストシナリオ４０５ａを実行した時に保存されたスナップショットイメージ（ｓｎａｐ１）を用いて、仮想マシン４０３を起動する。そして、テスト指示部４０１は、係る仮想マシン４０３に対してテスト項目の実行を指示する。複数のスナップショットイメージが使用可能な場合、テスト指示部４０１は、関連付けられたテスト項目が多い（即ち、テスト項目６０２に設定されたテスト項目が多い）スナップショットイメージを使用してよい。
【００７３】
スナップショットイメージ（ｓｎａｐ１）を用いる場合、テスト指示部４０１は、テストシナリオ４０５を実行する際に、テスト１を再度実行可能である。テスト１は、冪等性が考慮されたテスト項目（冪等性を有するテスト項目）であることから、複数回実行されても問題が発生しない。また、テスト１は、仮想マシン４０３によって一度実行された処理であることから、例えば、特定の自動化ツール等を使用した場合、テスト１に関する２度目以降の処理が早期に完了することを期待できる。
【００７４】
仮想マシン４０３は、テスト１に続けてテスト２−２を実行する。テスト２−２の実行時間は３５０秒であり、３００秒を超える。また、テスト２−２は、冪等性を有する。よって、スナップショット管理部４０２は、テスト２−２の実行が完了したタイミングにおける仮想マシン４０３のスナップショットイメージを作成する。スナップショット管理部４０２は、作成したスナップショットイメージを、イメージデータベース４０４に保存（登録）する。この際のイメージデータベース４０４の内容（テーブル）を図７に例示する。以下においては、図７に例示される、テスト２−２が実行された後に作成されたスナップショットイメージを、「ｓｎａｐ２」と称する場合がある。
【００７５】
仮想マシン４０３は、最後にテスト３を実行する。テスト３は、冪等性を有さないテスト項目であることから、スナップショット管理部４０２は、スナップショットイメージを作成しない。次回以降、テスト１、テスト２−２から開始されるテストを実行する場合、テスト指示部４０１は、このスナップショットイメージ（ｓｎａｐ２）を用いて起動した仮想マシン４０３を使用してテストを実行する。
【００７６】
以上のように、テスト管理システム４００は、適切なタイミングで作成したスナップショットイメージを用いることにより、副作用なく効率的にテストを実行することが可能である。
【００７７】
次に、図８、及び、図９に例示するフローチャートを参照して、テスト管理システム４００の動作について詳細に説明する。
【００７８】
図８を参照すると、テスト指示部４０１は、まず、テストシナリオを読み込む（ステップＳ８０１）。テスト指示部４０１は、初期イメージを、仮想マシン４０３の起動イメージの候補（起動イメージ候補）として選択する（ステップＳ８０２）。
【００７９】
次に、テスト指示部４０１は、テストシナリオに設定されたテスト項目を順に読みこみ、次のテスト項目の有無を確認する（ステップＳ８０３）。なお、テスト指示部４０１は、テストシナリオを読み込んで（ステップＳ８０１）テストを開始した時点で、テストシナリオに設定された最初のテスト項目の有無を確認してもよい。
【００８０】
テスト項目が存在しない場合（ステップＳ８０４においてＮＯ）、テスト指示部４０１は、そのタイミングで選択された起動イメージ候補を仮想マシン４０３の起動イメージとして決定し、当該起動イメージを用いて仮想マシンを起動する（Ｓ８０８）。
【００８１】
テスト項目が存在する場合（Ｓ８０４においてＹＥＳ）、テスト指示部４０１は、当該テスト項目に関する冪等性の有無（当該テスト項目が冪等性を有するか否か）を確認する（ステップＳ８０５）。当該テスト項目が冪等性を有さない場合（ステップＳ８０５においてＮＯ）、テスト指示部４０１は、そのタイミングで選択されていた起動イメージ候補を、仮想マシン４０３の起動イメージとして決定する。そして、テスト指示部４０１は、当該起動イメージを用いて仮想マシンを起動する（Ｓ８０８）。
【００８２】
当該テスト項目が冪等性を有する場合（ステップＳ８０５においてＹＥＳ）、テスト指示部４０１は、当該テスト項目に関連付けられたスナップショットイメージが存在か否かを確認する（ステップＳ８０６）。この場合、テスト指示部４０１は、イメージデータベース４０４を参照して、当該テスト項目に関連付けされたスナップショットイメージが存在するか否かを確認してもよい。より具体的には、テスト指示部４０１は、例えば、イメージデータベース当該テスト項目に相当するテスト項目６０２を検索し、当該テスト項目６０２に関連付けされたスナップショット６０１が存在するか確認してもよい。
【００８３】
当該テスト項目に関連付けされたスナップショットイメージが存在する場合（ステップＳ８０６においてＹＥＳ）、テスト指示部４０１は、そのスナップショットイメージを仮想マシンの起動イメージ候補として選択する（ステップＳ８０７）。そして、テスト指示部４０１はステップＳ８０３に戻って処理を継続し、次のテスト項目を確認する。また、当該テスト項目に関連付けされたスナップショットイメージが存在しない場合（ステップＳ８０６においてＮＯ）、テスト指示部４０１はステップＳ８０３に戻って処理を継続し、次のテスト項目を確認する。
【００８４】
次に、図９を参照して、テスト項目の実行、及び、適切なタイミングにおける仮想マシンのスナップショットイメージの作成等について説明する。
【００８５】
まず、テスト指示部４０１は、最初のテスト項目を読み込む。そして、テスト指示部４０１はそのタイミングにおけるテストシナリオに関する冪等性を「有（有り）」と設定する（ステップＳ９０１）。
【００８６】
次に、テスト指示部４０１は、実行すべきテスト項目が存在するか確認する（ステップＳ９０２）。
【００８７】
テスト項目が存在する場合（ステップＳ９０３においてＹＥＳ）、テスト指示部４０１は、そのテスト項目を実行するよう、仮想マシン４０３に指示する（ステップＳ９０４）。係る仮想マシンは、図８におけるステップＳ８０８において起動された仮想マシンである。なお、テスト指示部４０１は、最初のテスト項目を読み込んだ場合（ステップＳ９０１）には、ステップＳ９０２を実行せず、ステップＳ９０３においてＹＥＳと判定してもよい。
【００８８】
次に、テスト指示部４０１は、テスト項目の冪等性を確認する。テスト項目が冪等性を有さない場合、テスト指示部４０１は、テストシナリオに関する冪等性を「無（無し）」に変更する（ステップＳ９０５）。
【００８９】
なお、テスト指示部４０１は、仮想マシン４０３が当該テスト項目を実行する時間を計測し、係る計測結果を、スナップショット管理部４０２に通知する。また、テスト指示部４０１は、仮想マシン４０３におけるテストの実行結果を、スナップショット管理部４０２に通知してもよい。また、テスト指示部４０１は、テスト項目あるいはテストシナリオの冪当性の有無に関する情報を、スナップショット管理部４０２に通知してもよい。
【００９０】
スナップショット管理部４０２は、テストシナリオの冪等性を確認する（ステップＳ９０６）。スナップショット管理部４０２は、テスト指示部４０１から通知された、テストシナリオの冪当性の有無に関する情報を確認してもよい。テストシナリオ４０５を直接参照することにより、テストシナリオの冪等性の有無を判定してもよい。テストシナリオの冪等性が「無」に設定されている場合（ステップＳ９０６においてＮＯ）、スナップショット管理部４０２は、スナップショットイメージを作成しないと判定する。この場合、ステップＳ９０２から処理が続行され、テスト指示部４０１が次のテスト項目を確認する。
【００９１】
一方、テストシナリオの冪等性が「有」に設定されている場合（ステップＳ９０６においてＹＥＳ）、スナップショット管理部４０２は、テスト指示部４０１から通知されたテスト項目の実行時間を確認する（ステップＳ９０７）。この場合、スナップショット管理部４０２は、当該テスト項目の実行結果を併せて確認してもよい。
【００９２】
テスト項目の実行に要した時間が基準時間未満の場合（ステップＳ９０８においてＮＯ）、スナップショット管理部４０２は、スナップショットイメージを作成しないと判定する。この場合、ステップＳ９０２から処理が続行され、テスト指示部４０１が、次のテスト項目を確認する。
【００９３】
テスト項目の実行時間が基準時間以上である場合（ステップＳ９０８においてＹＥＳ）、スナップショット管理部４０２は、仮想マシン４０３のスナップショットイメージを作成する（ステップＳ９０９）。スナップショット管理部４０２は、作成したスナップショットイメージと、実行されたテスト項目とを関連付けて、イメージデータベース４０４に保存（登録）してもよい。その後、ステップＳ９０２に戻って処理が続行され、テスト指示部４０１が、次のテスト項目を確認する。
【００９４】
ステップＳ８０１において読み込んだテストシナリオに含まれる全てのテスト項目に関するテストが完了するまで、ステップＳ９０２乃至ステップＳ９０９が繰り返される。全てのテスト項目に関するテストが完了した際（即ち、次のテスト項目が存在しない場合、ステップＳ９０３においてＮＯ）、テスト管理システム４００は、テストシナリオに関する処理を完了する。
【００９５】
上記のように構成されたテスト管理システム４００は、適切なタイミングにおいて作成（取得）したスナップショットイメージを用いて、副作用なく、効率的にテストを実行可能である。上記したように、テスト管理システム４００は、テスト項目の冪等性を考慮してスナップショットイメージを作成する。このため、当該スナップショットイメージを用いて起動した仮想マシン４０３は、スナップショットが作成されたタイミングまでに実行されたテスト項目を副作用なく再度実行可能である。また、スナップショットイメージを用いて起動した仮想マシン４０３は、多くの場合、当該スナップショットイメージを取得したタイミング以前に実行されたテストを効率よく再度実行可能である。また、当該スナップショットイメージを取得したタイミング以前に実行されたテストの結果を再利用可能な場合、係る仮想マシン４０３はそれらテストを再実行する必要がない。これより、テストに要する各種リソース（例えば、テストの実行時間、テストの実行に要する処理能力等）が削減される。
【００９６】
また、仮想マシン４０３は、スナップショットイメージが作成されたタイミングまでに実行されたテスト項目を副作用なく実行可能である。これより、テスト管理システム４００においては、各テスト項目に対して個別の処理を追加する必要がない。即ち、テスト管理システム４００のユーザは、例えば、各テスト項目に対して、当該テスト項目より前に実行されたテスト項目の実行結果に応じた個別の処理を追加する必要はない。係るユーザは、単に、それらのテスト項目を必要に応じて再実行するよう、テストシナリオを作成するか、テスト指示部４０１に指示すればよい。
【００９７】
以上より、本実施形態におけるテスト管理システム４００は、仮想マシンの適切なスナップショットイメージを用いて、副作用なく効率的なテストを実行可能である。
【００９８】
＜第１の実施形態に関する第１の変形例＞
次に、上記第１の実施形態に関する第１の変形例について説明する。本変形例の機能的な構成は、上記第１の実施形態と同様としてよい。以下、本変形例におけるテスト指示部４０１、及び、スナップショット管理部４０２の動作について説明する。
【００９９】
上記第１の実施形態におけるスナップショット管理部４０２は、テストシナリオの冪等性と、特定のテスト項目の実行時間が基準時間（第１の基準時間）とに基づいて、スナップショットイメージを作成するか否かを判定する。そしして、スナップショット管理部４０２は、その判定結果に基づいて、スナップショットイメージを作成する（図９に例示するステップＳ９０６乃至Ｓ９０９）。
【０１００】
これに対して、本変形例においては、スナップショット管理部４０２は、特定のテスト項目までに実行された全テスト項目（当該特定のテスト項目を含む）のうち、１以上のテスト項目の実行時間の合計がある基準時間（例えば、第２の基準時間と称する）以上であるか否かを確認する。そして、その確認結果と、テストシナリオの冪等性とに基づいてスナップショットイメージを作成するか否かを判定する。即ち、本変形例におけるスナップショット管理部４０２は、テストシナリオに含まれる１以上のテスト項目の実行時間の合計が第２の基準時間以上であり、実行された全てのテスト項目が冪等性を有する場合に、スナップショットイメージを作成してよいと判定する。
【０１０１】
また、本変形例においては、スナップショット管理部４０２は、特定のテスト項目までに実行された全テスト項目の実行時間の合計が、ある基準時間（例えば、第３の基準時間と称する）以上であるか否かを確認してもよい。そして、係る実行時間の総和と、テストシナリオの冪等性とに基づいてスナップショットイメージを作成するか否かを判定してもよい。この場合、本変形例におけるスナップショット管理部４０２は、実行された全テスト項目の実行時間の合計が第２の基準時間以上であり、実行された全テスト項目が冪等性を有する場合に、スナップショットイメージを作成してよいと判定する。
【０１０２】
また、本変形例においては、スナップショット管理部４０２は、テストシナリオが複数存在する場合に、複数のテストシナリオに共通して含まれる１以上のテスト項目（以下、「共通テスト項目」と称する）が、ある基準回数以上、実行されるか否かを確認してもよい。換言すると、スナップショット管理部４０２は、複数のテストシナリオが実行される実行過程において、係る共通テスト項目が実行される回数が、基準回数以上であるか否かを確認してもよい。
【０１０３】
係る確認の結果、スナップショット管理部４０２は、共通テスト項目の実行回数が基準回数以上であり、係る共通テスト項目が冪等性を有する場合、スナップショットイメージを作成してよいと判定する。この場合、スナップショット管理部４０２は、例えば、予め複数のテストシナリオを解析することにより、共通テスト項目の実行回数を確認してもよい。また、例えば、テスト指示部４０１が、複数のテストシナリオを実行する際に共通テスト項目の実行回数をカウントし、スナップショット管理部４０２に通知してもよい。共通テスト項目の実行回数をカウントする方法は任意に選択してよい。
【０１０４】
上記のように構成された本変形例におけるテスト管理システム４００は、例えば、１以上のテスト項目（あるは全テスト項目）の実行に長時間を要する場合に、スナップショットイメージを作成する。係るスナップショットイメージを用いて起動した仮想マシン４０３は、テストの実行時間を短縮可能である。
【０１０５】
以上より、本変形例におけるテスト管理システム４００は、仮想マシンと適切なスナップショットイメージとを用いて、副作用なく効率的なテストを実行可能である。
【０１０６】
＜第２の実施形態＞
次に、本発明の第２の実施形態について図面を参照して詳細に説明する。本実施形態におけるテスト管理システム（図１０の１０００）は、冪等性を有さないテスト項目がテストシナリオに含まれる場合であっても、必要に応じてスナップショットイメージの作成を可能とするよう構成される。以下、本実施形態におけるテスト管理システムの係る構成について説明する。なお、上記第１の実施形態と同様の構成については、同様の参照符号を付すことにより、詳細な説明を省略する。
【０１０７】
図１０は、本実施形態におけるテスト管理システム１０００の機能的な構成を例示するブロック図である。図１０に例示するように、本実施形態におけるテスト管理システム１０００の基本的な構成は、第１の実施形態におけるテスト管理システム４００と同様である。
【０１０８】
本実施形態におけるテスト指示部（テスト指示手段）１００１は、上記第１の実施形態におけるテスト指示部４０１と同様の機能を有してもよい。テスト指示部１００１は、更に、冪等性を有さないテスト項目がテストシナリオに含まれる場合に、当該テスト項目を実行した後の仮想マシンのスナップショットイメージを作成するか否かを判定する。
【０１０９】
本実施形態におけるスナップショット管理部（スナップショット管理手段）１００２は、上記第１の実施形態におけるスナップショット管理部４０２と同様の機能を有してもよい。スナップショット管理部１００２は、更に、冪等性を有さないテスト項目を実行した後の仮想マシンのスナップショットイメージを作成するとともに、係るスナップショットイメージを保存する。
【０１１０】
本実施形態におけるテストシナリオ１００５は、上記第１の実施形態におけるテストシナリオ４０５と同様に構成される。
【０１１１】
本実施形態におけるテスト管理システム１０００を構成するその他の構成要素は、上記第１の実施形態と同様としてもよい。
【０１１２】
以下、本実施形態における、仮想マシン４０３を用いたテストの実行、及び、スナップショットイメージの作成について説明する。図１１は、仮想マシン４０３を用いて実行するテストシナリオ１００５の具体例を示す図である。また、図１２は、各テスト項目の実行に要する時間の具体例を示す図である。
【０１１３】
テストシナリオ１００５は複数存在し、それらのテストシナリオに共通する共通テスト項目（あるいは、共通テスト項目の集合）として、テスト１とテスト２とを含む。また、複数のテストシナリオ１００５は、それぞれ、上記共通のテスト項目に続いて実行されるテスト項目として、テスト３−１、テスト３−２、テスト３−３等の様々なバリエーションのテスト項目を含む。即ち、図１１に例示するように、テストシナリオ１００５は、テスト１、テスト２、テスト３−１を含むテストシナリオ１００５ａ、テスト１、テスト２、テスト３−２を含むテストシナリオ１００５ｂ、テスト１、テスト２、テスト３−３を含むテストシナリオ１００５ｃ、など、複数のバリエーションを有する。なお、以下、係るバリエーションを省略して、以下「３−Ｘ」と表記する場合がある。
【０１１４】
テスト指示部１００１は、複数のテストシナリオにおいて共通するテスト項目が冪等性を有さない場合、当該テスト項目を実行した後の仮想マシン４０３の一時的なスナップショットイメージを作成するか否かを、以下の基準（条件）に基づいて判定する。なお、以下において、係る一時的なスナップショットイメージを、「仮イメージデータ」あるいは「仮イメージ」と称する場合がある。
【０１１５】
一つ目の基準は、冪等性を有さないテスト項目の実行に要した時間（実行時間）が、ある基準時間（例えば「第４の基準時間」と称する）以上か否かである。二つ目の基準は、複数のテストシナリオに共通に含まれるテスト項目（あるいはテスト項目の集合）が、ある基準回数以上実行されることである。なお、複数のテストシナリオに共通に含まれるテスト項目には、当冪性を有さないテスト項目を含む。
【０１１６】
図１１に例示する具体例を参照すると、「テスト１」は冪当性を有するテスト項目であり、「テスト２」は特冪性を有さないテスト項目である。テスト指示部１００１は、この場合、例えば、テスト２を実行した後の仮想マシン４０３の仮イメージデータを作成するか否かを、以下のように判定する。まず、テスト指示部１００１は、一つ目の基準として、テスト２の実行時間が第４の基準時間（例えば、「３００秒」）以上であるか否かを判定する。また、テスト指示部１００１は、二つ目の基準として、複数のテストシナリオ１００５において共通するテスト項目の集合（この場合、テスト１、及び、テスト２）が基準回数（例えば「３回」）以上実行されるか否かを判定する。なお、上記第４の基準時間（「３００秒」）と、基準回数（「３回」）は例示であり、テスト指示部１００１は、これらの値として任意の値を採用してよい。
【０１１７】
以下、テスト指示部１００１、及び、スナップショット管理部１００２の動作について説明する。なお、以下においては、テスト指示部１００１は、図１１に例示するテストシナリオ１００５ａ、１００５ｂ、１００５ｃの順に、１００５ｘまで順次テストシナリオ１００５を読み込むことを前提とする。
【０１１８】
まず、テスト指示部１００１は、テストシナリオ１００５ａ（テスト１、テスト２、テスト３−１）、及び、テストシナリオ１００５ｂ（テスト１、テスト２、テスト３−２）を実行する。具体的には、テスト指示部１００１は、例えば、初期イメージを用いて起動した仮想マシン４０３に対して、上記各テストシナリオに設定されたテスト項目の実行を指示する。この際、テスト指示部１００１は、各テストシナリオ１００５に含まれる共通のテスト項目（テスト１、及び、テスト２）の実行回数をカウントしてもよい。また、テスト指示部１００１は、当該カウントした回数を、スナップショット管理部１００２に通知してもよい。
【０１１９】
テスト指示部１００１は、テスト２の実行時間（図１２より「１０００秒」）が第４の基準時間（「３００秒」）以上であると判定する。しかしながら、図１１に例示する通り、テスト２は冪当性を有さず、また、各テストシナリオ１００５に含まれる共通のテスト項目（テスト１、及び、テスト２）の実行回数は、基準回数（「３回」）以下（このタイミングでは「２回」）である。これより、テスト指示部１００１は、このタイミングでは、テスト２を実行した後の仮想マシン４０３の仮イメージデータを作成しないと判定する。なお、テスト１は冪等性を有する。しかしながら、テスト１の実行時間は第１の基準時間（例えば「３００秒」）未満であることから、スナップショット管理部１００２は、上記第１の実施形態において説明したように、スナップショットイメージを作成しないと判定してもよい。
【０１２０】
次に、テスト指示部１００１は、テストシナリオ１００５ｃ（テスト１、テスト２、テスト３−３）を実行する。具体的には、テスト指示部１００１は、例えば、初期イメージを用いて起動した仮想マシン４０３に対して、テストシナリオ１００５ｃに設定されたテスト項目の実行を指示する。この際、テスト指示部１００１は、各テストシナリオ１００５に含まれる共通のテスト項目（テスト１、及び、テスト２）が基準回数（「３回」）以上実行されると判定する。また、テスト指示部１００１は、テスト２の実行時間（図１２より「１０００秒」）は、第４の基準時間（「３００秒」）以上であると判定する。この場合、テスト指示部１００１は、テスト２を実行した後の仮想マシン４０３の仮イメージデータを作成してよいと判定する。この場合、テスト指示部１００１は、テスト１、及び、テスト２を実行する。そして、テスト指示部１００１は、テスト２の実行が終了した後の仮想マシン４０３のスナップショットイメージ（仮イメージデータ）を作成するよう、スナップショット管理部１００２へ指示（通知）する。なお、テスト指示部１００１は、テストシナリオ１００５ｃの実行が一度完了した後、再度初期イメージを用いて起動した仮想マシン４０３に対して、テスト１及びテスト２を実行するよう指示してもよい。そして、テスト指示部１００１は、係る仮想マシン４０３におけるテスト２の実行が終了した後、仮イメージデータの作成をスナップショット管理部１００２へ通知してもよい。
【０１２１】
スナップショット管理部１００２は、係る通知を受け付けた際、テスト２を実行した後の仮想マシン４０３の仮イメージデータを作成し、イメージデータベース４０４へ仮登録する。
【０１２２】
次に、テスト指示部１００１は、その仮登録された仮イメージデータを用いて仮想マシン４０３を起動する。そして、テスト指示部１００１は、仮イメージデータを用いて起動した仮想マシン４０３を用いて、テストシナリオ１００５ｃ（テスト１、テスト２、テスト３−３）を再度実行する。
【０１２３】
テスト指示部１００１は、初期イメージを用いて起動した仮想マシン４０３を用いてテストシナリオ１００５ｃを実行した結果と、仮イメージデータを用いて起動した仮想マシン４０３を用いてテストシナリオ１００５ｃを実行した結果とを比較する。係る比較の結果、これらのテストの実行結果が同一である場合、テスト指示部１００１は、仮イメージデータを正式なスナップショットイメージとしてイメージデータベース４０４へ登録する。この場合、テスト指示部１００１は、スナップショット管理部に対して、仮イメージデータを正式なスナップショットデータとして登録するよう通知してもよい。
【０１２４】
また、上記比較の結果、これらのテストの実行結果が同一ではない場合、テスト指示部１００１は、仮イメージデータを破棄する。この場合、テスト指示部１００１は、スナップショット管理部１００２に対して、仮イメージデータの破棄を通知してもよい。
【０１２５】
以上のように構成された本実施形態におけるテスト管理システム１０００は、冪等性を有さないテスト項目が存在する場合であっても、スナップショットイメージを作成することが可能である。
【０１２６】
複数のテストシナリオに共通テスト項目が含まれる場合、係る共通テスト項目を実行した後の仮想マシンのスナップショットイメージを使用することにより、テスト管理システム１０００は、共通テスト項目の実行に要する各種リソースを削減可能である。以上より、本実施形態におけるテスト管理システム１０００は、仮想マシンの適切なスナップショットイメージを用いて、副作用なく効率的なテストを実行可能である。
【０１２７】
＜第３の実施形態＞
次に、本発明の第３の実施形態について、図面を参照して説明する。図１３は、本実施形態におけるテスト管理システム１３００の機能的な構成を例示するブロック図である。
【０１２８】
図１３に例示するように、本実施形態におけるテスト管理システム１３００は、スナップショット管理部（スナップショット管理手段）１３０１を備える。
【０１２９】
係るスナップショット管理部１３０１は、１以上のテスト項目を実行可能なテスト対象の仮想マシンにおいて実行された、当該テスト項目の実行結果に関する情報と、当該テスト項目の実行に伴う副作用の有無に関する情報とを用いて、仮想マシンのスナップショットイメージを作成するか否かを判定する。
【０１３０】
上記テスト項目の実行に伴う副作用の有無に関する情報は、例えば、当該テスト項目が繰り返し実行されても実行結果が変わらないことを示す冪等性の有無を表す冪等性情報を含んでもよい。上記テスト項目の実行結果に関する情報は、例えば、当該テスト項目の実行時間を表す情報と、当該テスト項目の実行回数に関する情報との少なくとも一方を含んでもよい。この場合、スナップショット管理部１３０１は、例えば、上記冪当性情報と、上記テスト項目の実行結果に関する情報とに基づいて、上記スナップショットイメージを作成するか否かを判定してもよい。
【０１３１】
上記のように構成された本実施形態におけるテスト管理システム１３００は、テスト項目の実行に伴う副作用の有無を考慮してスナップショットイメージを作成する。このため、テスト管理システム１３００は、例えば、あるタイミングまでに実行されたテスト項目を副作用なく再度実行可能な仮想マシンのスナップショットを作成可能である。また、そのようなスナップショットイメージを用いて起動した仮想マシンは、多くの場合、当該スナップショットイメージを取得したタイミング以前に実行されたテストを効率よく再度実行可能である。また、例えば、当該スナップショットイメージを取得したタイミング以前に実行されたテストの結果を再利用可能な場合、当該スナップショットイメージを用いた起動した仮想マシンはそれらテストを再実行する必要がない。よって、この場合、テストに要する各種リソース（例えば、テストの実行時間、テストの実行に要する処理能力等）が削減される。以上より、本実施形態におけるテスト管理システム１３００は、仮想マシンの適切なスナップショットイメージを用いて、副作用なく効率的なテストを実行可能である。
【０１３２】
＜第３の実施形態の変形例＞
次に、上記第３の実施形態の変形例について説明する。本変形例の機能的な構成は、上記第３の実施形態と同様としてよい。以下、本変形例の構成について説明する。
【０１３３】
本実施形態におけるテスト管理システム１３００は、図１４に例示するように、テスト指示部１４０１を更に備えてもよい。
【０１３４】
係るテスト指示部１４０１は、例えば、１以上のテスト項目を含むテストの内容が設定されたテストシナリオを読み込み、当該テストシナリオに設定された１以上のテスト項目の実行順序に従ってテスト項目を実行するよう、仮想マシンを制御する。
【０１３５】
この場合、スナップショット管理部１３０１は、上記テストシナリオに従ってテスト項目を実行した結果に関する情報と、実行されたテスト項目に関する冪等性情報とに基づいて、スナップショットイメージを作成する条件が満たされたか否かを判定してもよい。
【０１３６】
また、スナップショット管理部１３０１は、スナップショットイメージを作成した場合には、当該作成したスナップショットイメージと、当該スナップショットイメージが作成されるまでに実行されたテスト項目とを関連付けて、イメージデータ保持部１４０２に保存（登録）してもよい。イメージデータ保持部（イメージデータ保持手段）１４０２は、例えば、スナップショットイメージを保持（格納）可能な、任意のデータベースやファイルシステム等により実現されてもよい。
【０１３７】
また、本変形例におけるテスト管理システム１３００は、図１５に例示するように、テスト選択インタフェース１５０１を更に備えてもよい。係るテスト選択インタフェース１５０１は、上記テストシナリオを選択可能なインタフェースである。より具体的には、係るテスト選択インタフェース１５０１は、例えば、テスト管理システム１３００のユーザに対して提供されるユーザインタフェースであってもよい。
【０１３８】
上記のように構成された本実施形態におけるテスト管理システム１３００は、選択されたテストシナリオに従ってテストの実行を制御可能である。また、テスト管理システム１３００は、テストシナリオを実行する過程で、テスト項目の冪当性を考慮した適切なスナップショットイメージを取得可能である。また、本変形例は、上記第３の実施形態と同様の構成を有することから、本本変形例におけるテスト管理システム１３００は、仮想マシンの適切なスナップショットイメージを用いて、副作用なく効率的なテストを実行可能である。
【０１３９】
＜ハードウェア及びソフトウェア・プログラム（コンピュータ・プログラム）の構成＞
以下、上記説明した各実施形態を実現可能なハードウェア構成について説明する。
【０１４０】
以下の説明においては、上記各実施形態において説明したテスト管理システム（１００、４００、１０００、１３００）、単に「テスト管理システム」と称する。またこれらテスト管理システムの各構成要素を、単に「テスト管理システムの構成要素」と称する。
【０１４１】
上記各実施形態において説明したテスト管理システムは、１つ又は複数の専用のハードウェア装置により構成されてもよい。その場合、上記各図（図１、図４、図１０、並びに、図１３乃至図１５）に示した各構成要素は、一部又は全部を統合したハードウェア（処理ロジックを実装した集積回路あるいは記憶デバイス等）として実現されてもよい。
【０１４２】
例えば、テスト管理システムを専用のハードウェアにより実現する場合、係るテスト管理システムの構成要素は、それぞれの機能を提供可能な集積回路（例えば、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）等）を用いて実装されてもよい。この場合、テスト管理システムの構成要素が保持するデータは、例えば、ＳｏＣとして統合されたＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）領域やフラッシュメモリ領域、あるいは、当該ＳｏＣに接続された記憶デバイス（磁気ディスク等）に記憶されてもよい。また、この場合、テスト管理システムの各構成要素を接続する通信回線としては、周知の通信バスを採用してもよい。また、各構成要素を接続する通信回線はバス接続に限らず、それぞれの構成要素間をピアツーピアで接続してもよい。テスト管理システムを複数のハードウェア装置により構成する場合、それぞれのハードウェア装置の間は、任意の通信手段（有線、無線、またはそれらの組み合わせ）により通信可能に接続されていてもよい。
【０１４３】
また、上述したテスト管理システム又はその構成要素は、図１６に例示するような汎用のハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム（コンピュータ・プログラム）とによって構成されてもよい。この場合、テスト管理システムは、任意の数の、汎用のハードウェア装置及びソフトウェア・プログラムにより構成されてもよい。
【０１４４】
図１６における演算装置１６０１は、汎用のＣＰＵ（中央処理装置：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やマイクロプロセッサ等の演算処理装置である。演算装置１６０１は、例えば後述する不揮発性記憶装置１６０３に記憶された各種ソフトウェア・プログラムを記憶装置１６０２に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。例えば、上記各実施形態におけるテスト管理システムの構成要素（テスト指示部（１０１、４０１、１００１、１４０１）あるいはスナップショット管理部（１０２、４０２、１００２、１３０１等））は、演算装置１６０１により実行されるソフトウェア・プログラムとして実現可能である。
【０１４５】
記憶装置１６０２は、演算装置１６０１から参照可能な、ＲＡＭ等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置１６０２は、揮発性のメモリ装置であってもよい。例えば、上記各実施形態におけるメモリ部２０４は、記憶装置１６０２を用いて実現可能である。
【０１４６】
不揮発性記憶装置１６０３は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置である。不揮発性記憶装置１６０３は、各種ソフトウェア・プログラムやデータ等を記憶可能である。上記各実施形態におけるイメージデータ保持部（４０４、１４０２）が保持するデータは、例えば、不揮発性記憶装置１６０３に格納されてもよい。
【０１４７】
ネットワークインタフェース１６０６は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）接続用インタフェース装置や、ＳＡＮ接続用インタフェース装置等を採用してもよい。
【０１４８】
ドライブ装置１６０４は、例えば、後述する記録媒体１６０５に対するデータの読み込みや書き込みを処理する装置である。
【０１４９】
記録媒体１６０５は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
【０１５０】
入出力インタフェース１６０７は、外部装置との間の入出力を制御する装置である。
【０１５１】
上述した各実施形態を例に説明した本発明におけるテスト管理システム（あるいはその構成要素）は、例えば、図１６に例示するハードウェア装置に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムを供給することにより、実現されてもよい。より具体的には、例えば、係る装置に対して供給したソフトウェア・プログラムを、演算装置１６０１が実行することによって、本発明が実現されてもよい。この場合、係るハードウェア装置で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト等のミドルウェアなどが各処理の一部を実行してもよい。
【０１５２】
更に、上記ソフトウェア・プログラムは記録媒体１６０５に記録されてもよい。この場合、上記ソフトウェア・プログラムは、上記テスト管理システム等の出荷段階、あるいは運用段階等において、適宜ドライブ装置１６０４を通じて不揮発性記憶装置１６０３に格納されるよう構成されてもよい。
【０１５３】
なお、上記の場合において、上記ハードウェアへの各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
【０１５４】
そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記録媒体によって構成されると捉えることができる。この場合、係る記録媒体は、ハードウェア装置と独立した媒体に限らず、ＬＡＮやインターネットなどにより伝送されたソフトウェア・プログラムをダウンロードして記憶又は一時記憶した記憶媒体を含む。
【０１５５】
また、上述したテスト管理システムは、図１６に例示するハードウェア装置を仮想化した仮想化環境と、当該仮想化環境において実行される各種ソフトウェア・プログラム（コンピュータ・プログラム）とによって構成されてもよい。この場合、図１６に例示するハードウェア装置の構成要素は、当該仮想化環境における仮想デバイスとして提供される。なお、この場合も、図１６に例示するハードウェア装置を物理的な装置として構成した場合と同様の構成にて、本発明を実現可能である。
【０１５６】
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。更に、上述した各実施形態、あるいは、係る変更又は改良を加えた新たな実施形態を組み合わせた実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。
【０１５７】
なお、上記の各実施形態の一部又は全部は、以下の付記のようにも記載されうる。なお、以下の付記は本発明をなんら限定するものではない。
【０１５８】
（付記１）
１以上のテスト項目を実行可能なテスト対象の仮想マシンにおいて実行された、上記テスト項目の実行結果に関する情報と、上記テスト項目の実行に伴う副作用の有無に関する情報とを用いて、上記仮想マシンのスナップショットイメージを作成するか否かを判定するスナップショット管理手段を備える
テスト管理システム。
【０１５９】
（付記２）
上記副作用の有無に関する情報は、上記テスト項目が繰り返し実行されても実行結果が変わらないことを示す冪等性の有無を表す冪等性情報を含み、
上記テスト項目の実行結果に関する情報は、上記テスト項目の実行時間を表す情報と、上記テスト項目の実行回数に関する情報との少なくとも一方を含み、
上記スナップショット管理手段は、上記冪当性情報と、上記テスト項目の実行結果に関する情報とに基づいて、上記スナップショットイメージを作成するか否かを判定する、
付記１に記載のテスト管理システム。
【０１６０】
（付記３）
１以上の上記テスト項目を含むテストの内容が設定されたテストシナリオを読み込み、当該テストシナリオに設定された１以上の上記テスト項目の実行順序に従って当該テスト項目を実行するよう、上記仮想マシンを制御するテスト指示手段を更に備え 、
上記スナップショット管理手段は、
上記テストシナリオに従って上記テスト項目を実行した結果に関する情報と、実行された上記テスト項目に関する上記冪等性情報とに基づいて、上記スナップショットイメージを作成する条件が満たされたと判定した場合に、上記仮想マシンのスナップショットイメージを作成し、
当該作成したスナップショットイメージと、当該スナップショットイメージが作成されるまでに実行された上記テスト項目とを関連付けて、上記スナップショットイメージを記憶可能なイメージデータ保持手段に保存する、
付記２に記載のテスト管理システム。
【０１６１】
（付記４）
上記テスト指示手段は、上記テストシナリオに含まれるテスト項目に関する上記冪等性情報に基づいて、上記仮想マシンを起動するイメージデータを、上記イメージデータ保持手段に保存されている特定の上記スナップショットイメージか、または、テストが実行されていない状態の仮想マシンのイメージデータである初期イメージから選択する、
付記３に記載のテスト管理システム。
【０１６２】
（付記５）
上記スナップショット管理手段は、
上記テストシナリオに含まれる上記テスト項目のうち、第１のテスト項目までに実行された、当該第１のテスト項目を含む全ての上記テスト項目に関する冪等性の有無を表す情報と、
上記テストシナリオに含まれる上記テスト項目のうち、上記第１のテスト項目までに実行された、当該第１のテスト項目を含む少なくとも１以上の上記テスト項目の実行時間を表す情報と、に基づいて、上記スナップショットイメージを作成する条件が満たされたか否かを判定する、
付記３又は付記４に記載のテスト管理システム
（付記６）
上記スナップショット管理手段は、
上記テストシナリオに含まれる上記テスト項目のうち、上記第１のテスト項目までに実行された、上記第１のテスト項目を含む全ての上記テスト項目が冪等性を有するとともに、上記第１のテスト項目の実行時間が第１の基準時間以上である場合に、上記スナップショットイメージを作成する条件が満たされたと判定し、
上記第１のテスト項目の実行した完了した状態の上記仮想マシンのスナップショットイメージを作成する、
付記５に記載のテスト管理システム。
【０１６３】
（付記７）
上記スナップショット管理手段は、
上記テストシナリオに含まれる上記テスト項目のうち、上記第１のテスト項目までに実行された、上記第１のテスト項目を含む全ての上記テスト項目が冪等性を有するとともに、上記テストシナリオに含まれる上記テスト項目のうち、上記第１のテスト項目までに実行された１以上の上記テスト項目の実行時間の合計が第２の基準時間以上である場合に 上記スナップショットイメージを作成する条件が満たされたと判定し、
上記第１のテスト項目の実行した完了した状態の上記仮想マシンのスナップショットイメージを作成する、
付記５に記載のテスト管理システム。
【０１６４】
（付記８）
上記テスト指示手段は、
上記テストシナリオに、冪等性を有さない第２のテスト項目が含まれる場合、
上記第２のテスト項目の実行した完了した状態の上記仮想マシンのイメージデータである仮イメージデータを作成するよう上記スナップショット管理手段に通知し、
上記仮イメージデータを用いて起動した上記仮想マシンが当該テストシナリオに含まれるテスト項目を実行した結果と、上記初期イメージデータを用いて起動した上記仮想マシンが当該テストシナリオに含まれるテスト項目を実行した結果とが等しい場合、上記仮イメージデータを、上記スナップショットイメージとして上記イメージデータ保持手段に保存する
付記３乃至付記７のいずれかに記載のテスト管理システム。
【０１６５】
（付記９）
１以上のテスト項目を実行するテスト対象の仮想マシンにおいて実行された、上記テスト項目の実行結果に関する情報と、上記テスト項目の実行に伴う副作用に関する情報とを用いて、少なくとも上記仮想マシンのスナップショットイメージを作成するか否かを判定する
テスト管理方法。
【０１６６】
（付記１０）
１以上のテスト項目を実行するテスト対象の仮想マシンにおいて実行された、上記テスト項目の実行結果に関する情報と、上記テスト項目の実行に伴う副作用に関する情報とを用いて、少なくとも上記仮想マシンのスナップショットイメージを作成するか否かを判定する処理をコンピュータに実行させる
コンピュータ・プログラム。
【０１６７】
（付記１１）
上記テスト指示手段は、
上記テストシナリオにおいて、特定の上記テスト項目より前に実行されるよう実行順序が設定された全ての上記テスト項目が冪等性を有する場合には、それらの上記テスト項目の実行が完了した状態の上記仮想マシンの上記スナップショットイメージを上記イメージデータ保持手段から取得し、
当該取得した上記スナップショットイメージを、特定の上記テスト項目を実行する上記仮想マシンを起動するイメージデータとして選択する
付記４に記載のテスト管理システム。
【０１６８】
（付記１２）
上記スナップショット管理手段は、
上記テストシナリオに含まれる上記テスト項目のうち、上記第１のテスト項目までに実行された、上記第１のテスト項目を含む全ての上記テスト項目が冪等性を有するとともに、上記テストシナリオに含まれる上記テスト項目のうち、上記第１のテスト項目までに実行された全ての上記テスト項目の実行時間の合計が第３の基準時間以上である場合に 上記スナップショットイメージを作成する条件が満たされたと判定し、
上記第１のテスト項目の実行した完了した状態の上記仮想マシンのスナップショットイメージを作成する、
付記５に記載のテスト管理システム。
【０１６９】
（付記１３）
上記テストシナリオが複数存在し、１以上の上記テスト項目が当該複数のテストシナリオに共通して含まれる場合において、
上記スナップショット管理手段は、
上記複数のテストシナリオに共通して含まれるテスト項目である共通テスト項目が冪等性を有するとともに、上記複数のテストシナリオの実行過程において、共通テスト項目が実行される回数が基準回数以上である場合に、上記スナップショットイメージを作成する条件が満たされたと判定し、
上記第１のテスト項目の実行した完了した状態の上記仮想マシンのスナップショットイメージを作成する、
付記５に記載のテスト管理システム。
【０１７０】
（付記１４）
上記テスト指示手段は、
上記第２のテスト項目までに実行された１以上の上記テスト項目の実行時間の合計が第４の基準時間以上か否かを判定するとともに、当該実行時間の合計が第４の基準時間以上の場合に、上記仮イメージデータを作成するよう上記スナップショット管理手段に通知する、
付記８に記載のテスト管理システム。
【０１７１】
（付記１５）
上記テストシナリオが複数存在し、１以上の上記テスト項目が当該複数のテストシナリオに共通して含まれる場合において、
上記テスト指示手段は、
上記複数のテストシナリオの実行過程において、上記第２のテスト項目が実行される回数が基準回数以上である場合に、上記仮イメージデータを作成するよう上記スナップショット管理手段に通知する、
付記８に記載のテスト管理システム。
【０１７２】
（付記１６）
１以上のテスト項目を含むテストの内容が設定されたテストシナリオを選択可能なテスト選択インタフェースと、
上記テスト項目の冪等性の有無を表す情報と、テスト対象の仮想マシンにおいて実行された上記テスト項目の実行結果に関する情報と、を受け付け、それらの情報に基づいて、冪等性を有する上記テスト項目を実行した後の上記仮想マシンのスナップショットイメージを作成する、スナップショット管理部と、を備える
テスト管理装置。
【０１７３】
（付記１７）
テスト対象の仮想マシンとテストする内容が記載されたテストシナリオを読み込み、仮想マシンに上記テストシナリオ記載のテスト項目を実行するように制御するテスト指示部と、テスト指示部からテスト項目の実行結果及び冪等性情報を受けとり、仮想マシンのスナップショットを行うか否かを判断し、行うと判断した場合に仮想マシンのスナップショットを作成するスナップショット管理部から構成されるテスト管理システム。
【０１７４】
（付記１８）
上記テスト項目の冪等性情報は、テスト項目が繰り返し実行された場合においても結果が変わらないことを示す属性であることを特徴とする付記１７に記載のテスト管理システム。
【０１７５】
（付記１９）
上記テスト項目の冪等性情報は、ユーザが明示的に指定してもよいし、テスト項目が既存のテスト実行ツールの特定の機能を使う場合に自動的に冪等性有と判断してもよいことを特徴とする付記１８記載のテスト管理システム。
【０１７６】
（付記２０）
上記テスト指示部は、テスト項目をテストシナリオ記載の実行順序に基づいて仮想マシンに対して実行するとともに、所定のスナップショット構築条件を満たした際に、仮想マシンのスナップショットを構築し、今まで実行したテスト項目と紐づけてイメージデータベースへ格納することを特徴とする付記１９記載のテスト管理システム。
【０１７７】
（付記２１）
上記テスト指示部は、テストシナリオの実行をする際の仮想マシンの起動イメージを、テストシナリオを構成するテスト項目の冪等性に基づいて、イメージデータベースに登録されている仮想マシンのスナップショットイメージ又はテストが実行されていない状態の仮想マシンのイメージである初期イメージのいずれかから選択することを特徴とする付記１９記載のテスト管理システム。
【０１７８】
（付記２２）
上記所定のスナップショット構築条件は、今まで実行した全てのテスト項目の冪等性が有であり、今実行が完了したテスト項目が一定時間以上要した場合に、スナップショットを作成することを特徴とする付記１８乃至付記２０の何れかに記載のテスト管理システム。
【０１７９】
（付記２３）
上記所定のスナップショット構築条件は、今まで実行した全てのテスト項目の冪等性が有であり、今まで実行した全てのテスト項目の総所要時間が一定値以上の場合に、スナップショットを作成することを特徴とする付記１８乃至付記２０のいずれかに記載のテスト管理システム。
【０１８０】
（付記２４）
上記所定のスナップショット構築条件は、今まで実行したテスト項目に冪等性のないテスト項目が含まれている場合、今まで実行した全てのテスト項目の総所要時間が一定値以上の場合に、冪等性判断を行い、冪等性ありと判断された場合にスナップショットを作成することを特徴とする付記１８乃至付記２０のいずれかに記載のテスト管理システム。
【０１８１】
（付記２５）
上記冪等性判断は、その時点で構築したスナップショットを用いてテストシナリオを実行した際の結果と、用いなかった場合のテストシナリオの実行結果が同一の場合に、冪等性ありと判断し、それ以外の場合には冪等性なしと判断することを特徴とする付記２４記載のテスト管理システム。
【符号の説明】
【０１８２】
１００  テスト管理システム
１０１  テスト指示部
１０２  スナップショット管理部
４００  テスト管理システム
４０１  テスト指示部
４０２  スナップショット管理部
４０３  仮想マシン
４０４  イメージデータ保持部
４０５  テストシナリオ
１０００  テスト管理システム
１００１  テスト指示部
１００２  スナップショット管理部
１００５  テストシナリオ
１３００  テスト管理システム
１３０１  スナップショット管理部
１４０１  テスト指示部
１４０２  イメージデータ保持部
１５０１  テスト選択インタフェース
１６０１  演算装置
１６０２  記憶装置
１６０３  不揮発性記憶装置
１６０４  ドライブ装置
１６０５  記録媒体
１６０６  ネットワークインタフェース
１６０７  入出力インタフェース
【図１】
2016218714.tif 000003
【図２】
2016218714.tif 000004
【図３】
2016218714.tif 000005
【図４】
2016218714.tif 000006
【図５】
2016218714.tif 000007
【図６】
2016218714.tif 000008
【図７】
2016218714.tif 000009
【図８】
2016218714.tif 000010
【図９】
2016218714.tif 000011
【図１０】
2016218714.tif 000012
【図１１】
2016218714.tif 000013
【図１２】
2016218714.tif 000014
【図１３】
2016218714.tif 000015
【図１４】
2016218714.tif 000016
【図１５】
2016218714.tif 000017
【図１６】
2016218714.tif 000018