(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンを用いて構成される計算機システムに対してプラットフォームレベルのテストを実施する仮想マシンテストシステムであって、
前記計算機システムを構成する複数の仮想マシンのネットワークトポロジーのタイプ、および前記タイプに対応する前記計算機システムにおいて各前記仮想マシンが提供する役割の組み合わせについてのテンプレートを定義するシステムテンプレート、
前記タイプを指定して前記計算機システムを構築するよう指示する命令を受け取り、指定された前記タイプに対応する前記テンプレートにしたがって、前記計算機システムにおける前記役割を提供するソフトウェアを搭載した前記仮想マシンを構築する、仮想マシン構築部、
前記計算機システムに対するプラットフォームレベルのテスト項目を前記タイプと前記役割の組み合わせ毎に定義するテスト項目リスト、
前記指定されたタイプに対応するテスト項目を前記テスト項目リストから読み出してテストケースを生成するテストケース生成部、
前記テストケース生成部が生成したテストケースにしたがって前記計算機システムに対してプラットフォームレベルのテストを実施しその結果を記憶装置に格納するテスト実施部、
を備えることを特徴とする仮想マシンテストシステム。
【請求項２】
前記テスト項目リストは、各前記仮想マシンの役割毎に、その仮想マシンまたは前記計算機システムが提供するプラットフォームレベルのシステム機能に対するテスト項目を定義しており、
前記仮想マシン構築部は、前記タイプに対する指定と併せて、各前記仮想マシンまたは前記計算機システムが備えるべきプラットフォームレベルのシステム機能に対する指定を受け取り、指定された前記システム機能を備えた前記計算機システムを構築し、
前記テストケース生成部は、前記指定されたシステム機能に対応するテスト項目を前記テスト項目リストから読み出してそのシステム機能に対するテストケースを生成する
ことを特徴とする請求項１記載の仮想マシンテストシステム。
【請求項３】
前記テスト項目リストは、前記システム機能に対するテスト項目として、複数の前記仮想マシンを用いて負荷分散する負荷分散機能に対するテスト項目、複数の前記仮想マシンを用いて前記仮想マシンを多重化する多重化機能に対するテスト項目、前記仮想マシンが搭載しているデータベースを複製するレプリケーション機能に対するテスト項目、および仮想マシンが搭載しているデータベースのバックアップを作成するバックアップ機能に対するテスト項目を定義しており、
前記仮想マシン構築部は、各前記仮想マシンまたは前記計算機システムが備えるべきプラットフォームレベルのシステム機能として、前記負荷分散機能、前記多重化機能、前記レプリケーション機能、および前記バックアップ機能のうち少なくともいずれかを指定する命令を受け取り、
前記テストケース生成部は、前記指定された負荷分散機能、多重化機能、レプリケーション機能、またはバックアップ機能に対応するテスト項目を前記テスト項目リストから読み出してそのシステム機能に対するテストケースを生成する
ことを特徴とする請求項２記載の仮想マシンテストシステム。
【請求項４】
前記テスト項目リストは、前記タイプによらず実施すべき共通テスト項目を定義しており、
前記テストケース生成部は、前記共通テスト項目の記述にしたがって、全ての前記仮想マシンについて実施すべき共通テストケースを生成する
ことを特徴とする請求項１記載の仮想マシンテストシステム。
【請求項５】
前記仮想マシン構築部は、構築した前記仮想マシン間の接続関係を記述する仮想マシン接続データを前記記憶装置に格納し、
前記テスト項目リストは、前記共通テスト項目として、前記仮想マシン間の接続性に対するテスト項目を定義しており、
前記テストケース生成部は、前記仮想マシン接続データの記述および前記共通テスト項目にしたがって、前記仮想マシン間の接続性をテストするテストケースを生成する
ことを特徴とする請求項４記載の仮想マシンテストシステム。
【請求項６】
前記テスト項目リストは、前記共通テスト項目として、前記仮想マシンの応答性能に対するテスト項目を定義しており、
前記テストケース生成部は、前記共通テスト項目にしたがって、前記仮想マシンの応答性能をテストするテストケースを生成する
ことを特徴とする請求項４記載の仮想マシンテストシステム。
【請求項７】
前記仮想マシン構築部は、前記役割を提供するソフトウェアが備える固有機能をテストするため実装した、前記固有機能を利用するテスト用アプリケーションを、前記仮想マシン上に構築し、
前記テストケース生成部は、前記テスト用アプリケーションに対するテストを実施することにより前記役割を提供するソフトウェアが正常に動作しているか否かをテストするためのテストケースを生成する
ことを特徴とする請求項１記載の仮想マシンテストシステム。
【請求項８】
前記仮想マシン構築部は、前記仮想マシンが構築されている物理マシンを特定する情報を記述した仮想マシンデータを前記記憶装置に格納し、
前記テストケース生成部は、前記仮想マシンが前記システム機能として前記負荷分散機能または前記多重化機能を備えている場合は、前記負荷分散機能または前記多重化機能を提供する複数の前記仮想マシンが少なくとも２台以上の物理マシン上に構築されていることを確認するためのテストケースを生成し、
前記テスト実施部は、前記仮想マシンデータの記述にしたがって、前記負荷分散機能または前記多重化機能を提供する複数の前記仮想マシンが少なくとも２台以上の物理マシン上に構築されているか否かをテストする
ことを特徴とする請求項３記載の仮想マシンテストシステム。
【請求項９】
前記仮想マシン構築部は、前記負荷分散機能または前記多重化機能を提供する複数の前記仮想マシンが構築される物理マシンの最小台数を指定する命令を受け取り、その命令にしたがって前記仮想マシンを構築し、
前記テスト実施部は、前記仮想マシンデータの記述にしたがって、前記負荷分散機能または前記多重化機能を提供する複数の前記仮想マシンが少なくとも前記最小台数以上の物理マシン上に構築されているか否かをテストする
ことを特徴とする請求項８記載の仮想マシンテストシステム。
【請求項１０】
複数の仮想マシンを用いて構成される計算機システムに対してプラットフォームレベルのテストを実施する仮想マシンテスト方法であって、
前記計算機システムを構成する複数の仮想マシンのネットワークトポロジーのタイプ、および前記タイプに対応する前記計算機システムにおいて各前記仮想マシンが提供する役割の組み合わせについてのテンプレートを定義するシステムテンプレートを読み取るステップ、
前記タイプを指定して前記計算機システムを構築するよう指示する命令を受け取り、指定された前記タイプに対応する前記テンプレートにしたがって、前記計算機システムにおける前記役割を提供するソフトウェアを搭載した前記仮想マシンを構築する、仮想マシン構築ステップ、
前記計算機システムに対するプラットフォームレベルのテスト項目を前記タイプと前記役割の組み合わせ毎に定義するテスト項目リストを読み取るステップ、
前記指定されたタイプに対応するテスト項目を前記テスト項目リストから読み出してテストケースを生成するテストケース生成ステップ、
前記テストケース生成ステップにおいて生成したテストケースにしたがって前記計算機システムに対してプラットフォームレベルのテストを実施しその結果を記憶装置に格納するテスト実施ステップ、
を有することを特徴とする仮想マシンテスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンを用いて構成される計算機システムに対してプラットフォームレベルのテストを実施する技術に関する。
【背景技術】
【０００２】
クラウド環境においては、仮想化したサーバ、ストレージ、ネットワーク等の計算機リソースを一括調達／プールしておき、このリソースプールから必要に応じてリソースを切り出して、システム構築に活用することが一般的となっている。【０００３】
下記非特許文献１には、システムのひな型（システムテンプレート）となる「仮想アプリケーションパターン」にしたがって、クラウド環境上に、複数の仮想マシン（以下、ＶＭ）から構成される計算機システムを構築する技術が記載されている。同文献に記載されている技術においては、計算機システムを構成する仮想マシンシステムの構成パターンをテンプレートとしてあらかじめ定義しておき、テンプレートを選択するとその定義にしたがって自動的に仮想マシンが構築される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｍａｎａｇｅ  ａｐｐｌｉｃａｔｉｏｎ  ｓｅｒｖｉｃｅｓ  ｗｉｔｈ  ｖｉｒｔｕａｌ  ａｐｐｌｉｃａｔｉｏｎ  ｐａｔｔｅｒｎｓ，ＵＲＬ：http://www.ibm.com/developerworks/cloud/library/cl-puresystem-vap/（２０１３年８月２３日取得）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記非特許文献１に記載されている技術によれば、あらかじめ定義したシステムテンプレートにしたがって、仮想マシンによって構成された計算機システムを迅速に構築することができる。他方、構築した計算機システムに対するテストは個別に実施する必要があるため、作業効率やテスト項目漏れなどの観点において課題があると考えられる。以下にその例について説明する。【０００６】
上記非特許文献１記載の技術によって構築する計算機システムは、規定のシステムテンプレートにしたがって自動的に生成されるものであるため、そのシステムテンプレートについてあらかじめテストを実施しておけば足りるようにも思われる。しかし同文献記載の技術は、サーバ機器をユーザ環境内に設置するタイプのクラウド環境を提供するものであるため、具体的なシステム環境はユーザ毎に異なる。そのため、システムテンプレートについてはあらかじめテスト済であるとしても、構築した計算機システムを実際のユーザ環境内で改めてテストする必要があると考えられる。【０００７】
例えば、実際のユーザ環境においては他の計算機システムと共有するリソース（ネットワーク帯域など）が存在し、その影響をテストする必要が生じるような場合がある。このような物理環境に関連するテストは、計算機システムを実際に構築したユーザ環境上で実施する必要がある。このようなテストは、プラットフォームレベルのテスト（システムテストとも呼ぶ）として、アプリケーションレベルのテストとは別に実施される。非特許文献１記載の技術は、このプラットフォームレベルのテストをマニュアル実施する必要がある点において、課題があると考えられる。【０００８】
本発明は、上記のような課題に鑑みてなされたものであり、あらかじめ定義されたテンプレートにしたがって自動構築された仮想マシンによって構成されている計算機システムに対して、プラットフォームレベルのテストを効率よく実施することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る仮想マシンテストシステムは、仮想マシンのネットワークトポロジーのタイプと各前記仮想マシンの役割との組み合わせを定義するシステムテンプレートにしたがって仮想マシンを生成し、前記組み合わせ毎に定義されたテスト項目にしたがってプラットフォームレベルのテストを実施する。
【発明の効果】
【００１０】
本発明に係る仮想マシンテストシステムによれば、システムテンプレートにしたがって自動構築した仮想マシンによって構成される計算機システムに対して、プラットフォームレベルのテストを自動的に実施することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１に係る仮想マシンテストシステム１０００の構成図である。
【図２】システムオーケストレータ１００の構成図である。
【図３】システムテンプレート１６１１の構成例を示す模式図である。
【図４】システムデータ１６１２の構成例を示す図である。
【図５】ＶＭデータ１６１３の構成例を示す図である。
【図６】ＶＭ間接続データ１６１４の構成例を示す図である。
【図７】システム要件データ１６１５の構成例を示す図である。
【図８】ＶＭソフトデータ１６１７の構成例を示す図である。
【図９】テスト項目データ１６１６の構成例を示す図である。
【図１０】システムオーケストレータ１００の動作を説明するフローチャートである。
【図１１】ステップＳ１００４の詳細を説明するフローチャートである。
【図１２】ステップＳ１１０２の詳細を説明するフローチャートである。
【図１３】ステップＳ１００２においてシステムオーケストレータ１００が提示する画面例を示す図である。
【図１４】ステップＳ１００４においてシステムオーケストレータ１００が提示する画面例を示す図である。
【発明を実施するための形態】
【００１２】
＜実施形態１：システム構成＞
図１は、本発明の実施形態１に係る仮想マシンテストシステム１０００の構成図である。仮想マシンテストシステム１０００は、仮想マシンを用いて構成されるシステムであり、システムオーケストレータ１００、リソースプール管理部２００、リソースプール３００を有する。
【００１３】
リソースプール３００は、ネットワーク機器３１０、サーバ３２０、ストレージ３３０などの計算機リソースの集合である。ストレージ３３０は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）／ミドルウェア３３１を格納している。リソースプール管理部２００は、リソースプール３００内の計算機リソースを切り出し、仮想マシンを構築するために提供する。システムオーケストレータ１００は、システム構築者５００からの指示にしたがって、仮想マシンを用いたシステムを構築し、構築したシステムに対してテストを実施する。ネットワーク４００は、システムオーケストレータ１００、リソースプール管理部２００、リソースプール３００を互いに接続する。
【００１４】
＜実施形態１：システムオーケストレータの構成＞
図２は、システムオーケストレータ１００の構成図である。システムオーケストレータ１００は、仮想マシンを用いた計算機システムを構築してシステムテストを実施するコンピュータである。ここでいうシステムテストとは、仮想マシンを用いて構成された計算機システムのプラットフォームレベルのテストである。テスト項目の具体例については後述する。システムオーケストレータ１００は、ＣＰＵ１１０、メモリ１２０、表示装置１３０、入力装置１４０、通信装置１５０、記憶装置１６０を備える。
【００１５】
ＣＰＵ１１０は、記憶装置１６０が格納している各プログラムを実行する。以下では記載の便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのはＣＰＵ１１０である。メモリ１２０は、ＣＰＵ１１０が一時的に使用するデータを記憶する。表示装置１３０は、ディスプレイなどの画面表示装置である。入力装置１４０は、キーボードやマウスなどの操作装置である。通信装置１５０は、システムオーケストレータ１００をネットワーク４００に接続するインターフェースである。
【００１６】
記憶装置１６０は、システム構成プログラム１６２１、仮想マシン構築プログラム１６２２、テストケース生成プログラム１６２３、システムテスト実行プログラム１６２４、テスト結果集計プログラム１６２５、テスト環境構築プログラム１６２６、システムテンプレート１６１１、システムデータ１６１２、ＶＭデータ１６１３、ＶＭ間接続データ１６１４、システム要件データ１６１５、テスト項目データ１６１６、ＶＭソフトデータ１６１７を格納している。各プログラムおよびデータの詳細については後述する。
【００１７】
各プログラムが実装している機能は、同様の機能を実現する回路デバイスなどのハードウェアを用いて構成することもできる。以下ではプログラムとして実装されていることを前提とする。これらプログラムまたはハードウェアは、必ずしも単一の装置上に実装する必要はなく、仮想マシンテストシステム１０００内の複数のコンピュータ上に分散して配置することもできる。リソースプール管理部２００についても同様である。
【００１８】
＜実施形態１：データ構成＞
図３は、システムテンプレート１６１１の構成例を示す模式図である。図３（ａ）はＷｅｂ３階層システムのテンプレート例を示す。システムオーケストレータ１００は、本テンプレートにしたがって計算機システムを構築する場合、各仮想マシンに対して、Ｗｅｂサーバ、アプリケーション（ＡＰ）サーバ、データベース（ＤＢ）サーバの３つの役割のうちいずれかを割り当てる。システムオーケストレータ１００は、Ｗｅｂサーバをネットワーク４００と接続する位置に配置し、Ｗｅｂサーバの配下にＡＰサーバ、ＤＢサーバを順次配置するように、ネットワークトポロジーを形成する。
【００１９】
図３に例示する基本的なネットワークトポロジーに加えて、様々な設定パラメータを付与することにより、さらに詳細なネットワークトポロジーを形成することもできる。例えば、システム構築者５００がシステムオーケストレータ１００に対して以下の設定パラメータを指定したものと仮定する。
【００２０】
（設定パラメータ１）Ｗｅｂサーバは３台とし、負荷分散を実施する；
（設定パラメータ２）ＡＰサーバはＷｅｂサーバと同じＶＭ上に構築する；
（設定パラメータ３）ＤＢサーバは２台とし、多重化する。
【００２１】
図３（ｂ）は、上記設定パラメータをＷｅｂ３階層システムのテンプレートに対して適用したシステム構成を例示する図である。Ｗｅｂサーバは負荷分散構成とすることを指定したので、ロードバランサＬＢが新たに追加されている。ＡＰサーバはＷｅｂサーバと同じＶＭ上に構築することを指定したので、ＡＰサーバは省略されている。ＷｅｂサーバとＤＢサーバはそれぞれ複数台設置することを指定したので、これらサーバはそれぞれスイッチＳＷ１とＳＷ２の配下に接続されている。
【００２２】
ロードバランサＬＢと各スイッチＳＷは、リソースプール３００から構築される仮想マシンを用いて構成することもできるし、ロードバランサ装置とスイッチ装置をリソースプール３００内にあらかじめ配置しておき、各仮想マシンとこれら装置との間の接続関係を規定することにより、同様のネットワークトポロジーを形成することもできる。
【００２３】
システムテンプレート１６１１は、例えばシステム構築者５００があらかじめ作成して記憶装置１６０内に格納しておく。図３においてはＷｅｂ３階層システムのネットワークトポロジーを例示したが、その他タイプのネットワークトポロジーをテンプレートとして定義し、いずれかのテンプレートを選択できるようにすることもできる。
【００２４】
システムテンプレート１６１１に対して上記例のような設定パラメータが与えられたときどのようなネットワークトポロジーを形成するかについては、あらかじめ設定データとして記述して記憶装置１６０内に格納しておくこともできるし、システム構成プログラム１６２１または仮想マシン構築プログラム１６２２の機能として実装することもできる。
【００２５】
図４は、システムデータ１６１２の構成例を示す図である。システムデータ１６１２はシステムオーケストレータ１００が生成した計算機システムを管理するデータテーブルであり、システムＩＤ１６１２１、システムタイプ１６１２２、ＶＬＡＮ１６１２３、システム名称１６１２４を有する。
【００２６】
システムＩＤ１６１２１は、システムオーケストレータ１００が生成した計算機システムを識別するためのＩＤである。システムタイプ１６１２２は、当該システムのテンプレートタイプを示す。ＶＬＡＮ１６１２３は、当該システムがリソースプール３００内で使用しているＶＬＡＮのＩＤを示す。システム名称１６１２４は、当該システムの名称を示す。図４の１行目のレコードは、システムＩＤ「１」の計算機システム「ＲＵ＿ｗｅｂ」がＷｅｂ３階層システムテンプレートを用いて構築され、ＶＬＡＮ「１」「２」を使用していることを示す。
【００２７】
図５は、ＶＭデータ１６１３の構成例を示す図である。ＶＭデータ１６１３は、システムオーケストレータ１００が生成した仮想マシンを管理するデータであり、ＶＭＩＤ１６１３１、システムＩＤ１６１３２、役割１６１３３、コア数１６１３４、メモリ量１６１３５、ネットワークインターフェース１６１３６、ストレージリソース１６１３７、物理サーバ１６１３８を有する。
【００２８】
ＶＭＩＤ１６１３１は、仮想マシンを識別するＩＤである。システムＩＤ１６１３２は、システムＩＤである。１６１２１に対応する。役割１６１３３は、当該仮想マシンが割り当てられている役割を示す。コア数１６１３４は、当該仮想マシンが割り当てられているＣＰＵコア数を示す。メモリ量１６１３５は、当該仮想マシンが割り当てられているメモリ容量を示す。ネットワークインターフェース１６１３６は、当該仮想マシンが有しているネットワークインターフェースの番号とＩＰアドレスを示す。ストレージリソース１６１３７は、当該仮想マシンが割り当てられているストレージリソースの識別子と容量を示す。物理サーバ１６１３８は、当該仮想マシンが動作する物理サーバの識別子を示す。
【００２９】
図５に示すデータ例は、システムＩＤ「１」に属するＶＭがＶＭＩＤ「１」〜「６」までの６個あることを示す。さらに、ＶＭＩＤ「１」のＶＭはロードバランサ（ＬＢ）としての役割を有し、ＣＰＵコア１個、メモリ２ＧＢ、ネットワークインターフェース２つ（ＩＰアドレス「１０．１．１．１」とＩＰアドレス「１０．２．２．１」）を備え、ストレージ装置「Ｓｔ１」上に１０ＧＢ分のストレージ容量を有し、物理サーバ「Ｓｖ０−１」上に構築されていることを示す。
【００３０】
図６は、ＶＭ間接続データ１６１４の構成例を示す図である。ＶＭ間接続データ１６１４は、システムオーケストレータ１００が生成した仮想マシン間の接続関係を管理するデータであり、接続ＩＤ１６１４１、ネットワークインターフェース番号１６１４２、スイッチＩＤ１６１４３を有する。
【００３１】
接続ＩＤ１６１４１は、個々のＶＭ間接続を識別するためのＩＤである。ネットワークインターフェース番号１６１４２は、ＶＭＩＤ１６１３１とネットワークインターフェース１６１３６内のインターフェース番号とのペアを示す。スイッチＩＤ１６１４３は、当該ネットワークインターフェースが接続されているスイッチの識別子を示す。
【００３２】
図６に示す１行目のレコードは、ＶＭＩＤ「１」のＶＭが備えるネットワークインターフェース番号「２」のネットワークインターフェースが、スイッチＩＤ「１」のスイッチに接続していることを示す。
【００３３】
図７は、システム要件データ１６１５の構成例を示す図である。システム要件データ１６１５は、システムオーケストレータ１００が構築した計算機システムを構成する各仮想マシンが備えるシステム機能を管理するデータである。ここでいうシステム機能とは、計算機システムまたは各仮想マシンがプラットフォームレベルで備える機能であり、一般的には個々のアプリケーションをインストールする前の時点において備えられている共通的な機能を指す。システム機能の具体例については後述する。システム要件データ１６１５は、要件ＩＤ１６１５１、システムＩＤ１６１５２、ＶＭＩＤ１６１５３、役割１６１５４、システム機能１６１５５を有する。
【００３４】
要件ＩＤ１６１５１は、個々のレコードを識別するためのＩＤである。システムＩＤ１６１５２は、システムＩＤ１６１２１に対応する。ＶＭＩＤ１６１５３は、当該計算機システムが有するＶＭのＩＤである。役割１６１５４は、ＶＭＩＤ１６１５３が指定する各ＶＭの役割を示す。システム機能１６１５５は、ＶＭＩＤ１６１５３が指定する各ＶＭが備える（または利用する）システム機能を示す。
【００３５】
図７の１行目のレコードによれば、システムＩＤ「１」の計算機システムにおいて、ＶＭＩＤ「２」「３」「４」の３つのＶＭはＷｅｂサーバであり、システム機能として負荷分散機能（ＬＢ）を備えていることが分かる。このシステム機能は、先に例示したように、システムテンプレート１６１１に付与する設定パラメータとして指定することができる。仮想マシンが備えるシステム機能に応じて、システムテストにおいて実施すべきテスト項目が異なる。システム機能は、例えばＯＳ、ミドルウェア、ネットワーク機器（例えば負荷分散装置やスイッチ）などによって提供される。システム機能として、例えば以下の機能を指定することができる。
【００３６】
（システム機能の例その１）複数の仮想マシンを用いて負荷分散された仮想マシンを構築する負荷分散機能（ＬＢ）；
（システム機能の例その２）複数の仮想マシンを用いて多重化された仮想マシンを構築する多重化機能（ＨＡ）；
（システム機能の例その３）仮想マシンを複製するレプリケーション機能（Ｒｅｐｌｉｃａ）；
（システム機能の例その４）仮想マシンをバックアップするバックアップ機能（Ｂａｃｋｕｐ）。
【００３７】
図８は、ＶＭソフトデータ１６１７の構成例を示す図である。ＶＭソフトデータ１６１７は、仮想マシン上にインストールされるソフトウェアを管理するデータであり、ＶＭＩＤ１６１７１、ＯＳタイプ１６１７２、ソフトウェ１６１７３を有する。
【００３８】
ＶＭＩＤ１６１７１は、ＶＭＩＤ１６１３１に対応する。ＯＳタイプ１６１７２は、当該ＶＭのＯＳ種別を示す。ソフトウェ１６１７３は、当該ＶＭにインストールされるソフトウェアを示す。図８の１行目のレコードによれば、ＶＭＩＤ「１」のＶＭはＯＳとして「Ｌｉｎｕｘ（登録商標）」を用い、「ＬＶＳ」という名称のソフトウェアがインストールされることが分かる。
【００３９】
図９は、テスト項目データ１６１６の構成例を示す図である。テスト項目データ１６１６は、システムオーケストレータ１００が実施すべきシステムテストの項目を管理するテーブルである。テスト項目データ１６１６は、例えばシステム構築者５００があらかじめ作成して記憶装置１６０内に格納しておく。テスト項目データ１６１６は、テスト項目ＩＤ１６１６１、システムタイプ１６１６２、役割１６１６３、テスト項目１６１６４、引数１６１６５を有する。
【００４０】
テスト項目ＩＤ１６１６１は、各レコードを識別するためのＩＤである。システムタイプ１６１６２は、システムタイプ１６１２２に対応する。役割１６１６３は、役割１６１３３に対応する。テスト項目１６１６４は、各システムタイプにおけるＶＭの役割毎に実施すべきテスト項目を指定する。引数１６１６５は、個々のテストケースに応じて指定される引数であり、例えば仮想マシンを構築するときに指定するパラメータに応じて設定される。
【００４１】
図９に示すデータ例によれば、システムタイプが「Ｗｅｂ３（Ｗｅｂ３階層システム）」である計算機システムに対しては、テスト項目ＩＤ「１」〜「５」を実施すべきであることが分かる。これに加え、全てのシステムタイプに対して実施すべきテスト項目を定義することもできる。図９においてはテスト項目ＩＤ「６」「７」がこれに相当する。これらレコードのシステムタイプ１６１６２は「Ａｌｌ」になっている。
【００４２】
計算機システムを構成する仮想マシンに対して実施すべきシステムテスト項目は、当該計算機システム内における各仮想マシンの役割に応じて異なると考えられる。そこでテスト項目データ１６１６は、役割１６１６３毎にテスト項目１６１６４を定義している。例えばＷｅｂサーバとＤＢサーバは実施すべきテスト項目が異なると考えられるので、役割「Ｗｅｂ」と「ＤＢ」に対してそれぞれ異なるテスト項目１６１６４を割り当てることができる。
【００４３】
さらに、計算機システム内における役割が同一であっても、各仮想マシンが備えるシステム機能に応じてテスト項目が異なる場合もある。そこでテスト項目データ１６１６は、システムタイプ１６１６２と役割１６１６３が同じであっても、異なるテスト項目１６１６４を定義することができる。図９に示すデータ例においては、役割「Ｗｅｂ」に対してテスト項目「ＬＢ」「ＨＡ」が割り当てられている。同様に役割「ＤＢ」に対して３つのテスト項目が割り当てられている。１つの役割に対して複数のテスト項目が存在する場合においてシステムオーケストレータ１００がテスト項目を選択する手順は、後述のフローチャートで説明する。
【００４４】
テスト項目１６１６４は、仮想マシンが備えるシステム機能に応じて実施すべきテスト項目を定義しているので、システム機能のタイプ毎にそれぞれ対応する値を有する。具体的には、先に説明したシステム機能の例に応じて、（１）「負荷分散テスト」を意味する「ＬＢ」、（２）「多重化テスト」を意味する「ＨＡ」、（３）「レプリケーションテスト」を意味する「Ｒｅｐｌｉｃａ」、（４）「バックアップテスト」を意味する「Ｂａｃｋｕｐ」、などの値が考えられる。
【００４５】
さらに全ての仮想マシンに対して実施すべきテスト項目として、（５）「接続性テスト」を意味する「Ｃｏｎｎｅｃｔ」、（６）「応答性能テスト」を意味する「Ｐｅｒｆ」、を定義することができる。接続性テストは、各仮想マシンが使用するネットワーク接続が正常動作していることを確認するテストである。応答性能テストは、例えば仮想マシンに対してリクエストを発行してから応答を受け取るまでの時間をテストするものである。
【００４６】
仮想マシンを構築するとき、例えばシステム構築者５００がＷｅｂサーバの最小台数と最大台数を指定した場合、その最小台数と最大台数を引数１６１６５として指定することができる。図９における「Ｗｅｂ：Ｍｉｎ」「Ｗｅｂ：Ｍａｘ」がこれに相当する。また、各仮想マシンのＩＤは計算機システム毎に異なるので、これを引数１６１６５として指定することもできる。図９における「ＶＭＩＤｓ」がこれに相当する。システムオーケストレータ１００は、これらのパラメータを用いてテストケースを生成することもできる。
【００４７】
仮想マシンの最小台数と最大台数を指定した場合、システム要件データ１６１５のＶＭＩＤ１６１５３において、その旨を記載することもできる。例えば、ＶＭＩＤ「２」〜「４」は必ず構築し、ＶＭＩＤ「１０」〜「１５」は予備的に構築する旨を示す情報を記述することができる。
【００４８】
システムオーケストレータ１００が実際に実施するテスト項目は多数あり、また当該分野の技術者であれば具体的なテスト項目を容易に把握できるため、ここでは個々のテスト項目そのものについては説明しない。個々のテスト項目は、テスト項目１６１６４内に記述することもできるし、テスト項目データ１６１６の各レコードに対応して別データとして記述し、記憶装置１６０に格納しておくこともできる。
【００４９】
＜実施形態１：システム動作＞
図１０は、システムオーケストレータ１００の動作を説明するフローチャートである。以下、図１０の各ステップについて説明する。
【００５０】
（図１０：ステップＳ１００１）
システム構築者５００は、システムオーケストレータ１００が以後のステップにおいて構築する計算機システムの要件を決定する。例えば、計算機システムが実現すべき機能集合を規定する機能要件、性能や可用性などについての要件である非機能要件、などを決定する。
【００５１】
（図１０：ステップＳ１００２）
システム構築者５００は、ステップＳ１００１で決定したシステム要件にしたがって、システムテンプレート１６１１を選択する。さらに、先に設定パラメータ１〜３として例示したような設定パラメータを決定する。システム構築者５００は、選択したシステムテンプレート１６１１と設定パラメータを、システム構成プログラム１６２１に通知する。システム構成プログラム１６２１は、指定されたシステムテンプレートと設定パラメータを用いて、計算機システムを構成する仮想マシンのネットワークトポロジーを仮想的に生成する。例えば、図３（ｂ）に示すようなネットワークトポロジーが生成される。
【００５２】
（図１０：ステップＳ１００３）
システム構築者５００は、システム構成プログラム１６２１が生成したネットワークトポロジー上における各ＶＭの具体的な仕様を決定する。仮想マシン構築プログラム１６２２は、システム構成プログラム１６２１が生成したネットワークトポロジー、および指定された各ＶＭの仕様にしたがって、リソースプール管理部２００を介してリソースプール３００から計算機リソースを切り出して仮想マシンを構築し、必要なソフトウェアをインストールし、ネットワーク接続を設定する。仮想マシン構築プログラム１６２２は、構築した仮想マシンの接続関係、インストールしたソフトウェアなどについての情報を、それぞれシステムデータ１６１２、ＶＭデータ１６１３、ＶＭ間接続データ１６１４、システム要件データ１６１５、ＶＭソフトデータ１６１７に格納する。
【００５３】
（図１０：ステップＳ１００３：補足）
本ステップにおいては、必ずしもＶＭを構築した後にそのＶＭ上にソフトウェアを改めてインストールする必要はなく、よく利用するＯＳ、ソフトウェアの組み合わせをインストール／設定したＶＭイメージをあらかじめ準備しておき、そのＶＭイメージを用いてＶＭを構築してもよい。さらに、必要に応じてそのＶＭに対して必要なソフトウェアを追加したり、不要なソフトウェアを削除したりしてもよい。
【００５４】
（図１０：ステップＳ１００４〜Ｓ１００５）
システムテスト実行プログラム１６２４は、後述の図１１で説明するフローチャートにしたがって、システムテストを実施する（Ｓ１００４）。システムテスト実行プログラム１６２４は、システム構築者５００に対してテスト結果を提示し、システム構築者５００が「問題なし」と判定すれば本フローチャートを終了し、「問題あり」と判定した場合はステップＳ１００２に戻って別の設定パラメータなどを用いて同様の処理を繰り返す（Ｓ１００５）。
【００５５】
図１１は、ステップＳ１００４の詳細を説明するフローチャートである。以下、図１１の各ステップについて説明する。
【００５６】
（図１１：ステップＳ１１０１）
テスト環境構築プログラム１６２６は、システムテストを実施するためのテスト環境を構築する。具体的には、以下の処理を実施する：
（構築処理その１）リソースプール管理部２００に対して、テストトラフィックを生成するためのＶＭとテスト結果を収集するためのＶＭを、テストを実施する計算機システムと通信可能な領域に作成するように依頼する；
（構築処理その２）リソースプール管理部２００が上記依頼にしたがって作成したＶＭ上において、テストトラフィックを生成するためのプログラムとテスト結果を収集するためのプログラムを稼働させる；
（構築処理その３）テストを実施する計算機システムのシステムタイプ毎にあらかじめ構築したテスト用アプリケーションを、テストを実施する計算機システム上において稼働させる；
（構築処理その４）当該テスト用アプリケーションに対するテストのためにあらかじめ準備したテスト用データを、テストを実施する計算機システム上で利用可能とする。
【００５７】
（図１１：ステップＳ１１０１：補足その１）
システムオーケストレータ１００はプラットフォームレベルのテストを実施することを目的としているので、アプリケーションレベルのテストは必ずしも実施する必要はない。ただし各仮想マシンが計算機システム上で提供する役割を実装したソフトウェア（例えばＷｅｂサーバ機能、ＡＰサーバ機能、データベース機能などを提供するミドルウェア）は、アプリケーションを介してその機能を提供することが多いため、何らのアプリケーションもインストールされていないとその機能をテストすることが難しい場合がある。そこで本ステップにおいては、各仮想マシンがその役割を正常に提供していることを確認するため、テスト用アプリケーションを稼動させることにした。
【００５８】
（図１１：ステップＳ１１０１：補足その２）
テスト用アプリケーションは、各仮想マシンが提供する役割を実装したソフトウェア固有の機能（例えばＷｅｂサーバ機能、ＡＰサーバ機能、データベース機能）を利用するように構成されている。したがって、テスト用アプリケーションを介して、各仮想マシンがその役割を正常に提供していることを確認することができる。
【００５９】
（図１１：ステップＳ１１０２）
テストケース生成プログラム１６２３は、後述の図１２で説明するフローチャートにしたがって、テストケースを生成する。
【００６０】
（図１１：ステップＳ１１０３）
システムテスト実行プログラム１６２４は、ステップＳ１１０２において生成されたテストケースにしたがって、システムテストを実行する。テスト結果集計プログラム１６２５は、システムテストの処理時間、計算機負荷などの情報を収集する。
【００６１】
（図１１：ステップＳ１１０４〜Ｓ１１０５）
テスト結果集計プログラム１６２５は、システムテスト実行中に取得した、システムテストの処理時間、計算機負荷などの情報を、システム構築者５００に提示する（Ｓ１１０４）。テスト環境構築プログラム１６２６は、今回のシステムテストのために構築したテスト環境を廃棄する（Ｓ１１０５）。
【００６２】
図１２は、ステップＳ１１０２の詳細を説明するフローチャートである。以下、図１２の各ステップについて説明する。
【００６３】
（図１２：ステップＳ１２０１）
テストケース生成プログラム１６２３は、テストを実施する計算機システムのシステムタイプを例えばシステムデータ１６１２から取得し、そのシステムタイプに合致するテスト項目をテスト項目データ１６１６から抽出する。さらに、全てのシステムタイプに対して実施すべきテスト項目を、テスト項目データ１６１６から抽出する。
【００６４】
（図１２：ステップＳ１２０２〜Ｓ１２０４）
テストケース生成プログラム１６２３は、ステップＳ１２０１において抽出したテスト項目を先頭から取り出す（Ｓ１２０２）。テストケース生成プログラム１６２３は、システム要件に合わせてテスト項目を抽出し（Ｓ１２０３）、実行するテストケースのリストに追加する（Ｓ１２０４）。ステップＳ１２０３の具体例については後述する。
【００６５】
（図１２：ステップＳ１２０５〜Ｓ１２０６）
テストケース生成プログラム１６２３は、ステップＳ１２０１において抽出したテスト項目の最後に到達したか否かを確認する（Ｓ１２０５）。到達している場合は本フローチャートを終了する。到達していない場合は次のテスト項目を取り出し（Ｓ１２０６）、ステップＳ１２０３に戻って同様の処理を繰り返す。
【００６６】
（図１２：ステップＳ１２０３：具体例）
テストケース生成プログラム１６２３は、システム要件データ１６１５を参照し、テストを実施する計算機システムのシステムタイプに対応する役割１６１５４／システム機能１６１５５のペアを取得する。図７のデータ例によれば、例えばシステムＩＤ「１」の計算機システムをテストする場合、「Ｗｅｂ／ＬＢ」と「ＤＢ／ＨＡ」が取得される。テストケース生成プログラム１６２３は、取得した役割／要件種別のペアに対応する、テスト項目データ１６１６内の役割１６１６３／テスト項目１６１６４を抽出する。図９のデータ例によれば、テスト項目ＩＤ「１」「３」がこれに相当する。このとき、全てのシステムタイプに対して実施すべきテスト項目（テスト項目ＩＤ「６」「７」）も併せて抽出する。結果、ＶＭＩＤ「２」〜「４」に対しては負荷分散テスト（ＬＢ）を実施し、ＶＭＩＤ「５」「６」に対しては多重化テスト（ＨＡ）を実施し、全てのＶＭに対して接続性テスト（Ｃｏｎｎｅｃｔ）と応答性能テスト（Ｐｅｒｆ）を実施することが分かる。
【００６７】
（図１２：ステップＳ１２０３：補足）
テストケース生成プログラム１６２３は本ステップにおいて、テストケースの具体的なパラメータをカスタマイズすることもできる。例えば各仮想マシンのＩＤ、ＩＰアドレスなどの値は、個々の計算機システム毎に異なる。このような具体的なパラメータについては、カスタマイズ可能パラメータとしてテスト項目内に定義しておき、実際の値をこれに適用することによりテストケースをカスタマイズすることができる。実際の値については記憶装置１６０内の各データから取得すればよい。
【００６８】
＜実施形態１：まとめ＞
以上のように、本発明に係る仮想マシンテストシステムにおいて、システムオーケストレータ１００は、システムテンプレート１６１１が定義しているネットワークトポロジーと各仮想マシンの役割に基づいて計算機システムを自動生成する。さらにシステムオーケストレータ１００は、ネットワークトポロジーと各仮想マシンの役割の組み合わせ毎に定義されているテスト項目にしたがって、構築した計算機システムに対してプラットフォームレベルのテストを自動実施する。これにより、システム構築者５００が意図したシステム要件を満たすシステム構成が構築されていることを確認するためのテスト負担を軽減することができる。ユーザが有する物理環境を利用して計算機システムを利用する場合において、プラットフォームレベルのテストを自動実施できるため、システムテストの効率や品質を向上させることができる。
【００６９】
＜実施形態２＞
本発明の実施形態２では、システムオーケストレータ１００がシステム管理者５００に対して提示する画面例について説明する。さらに、テスト項目の具体例について併せて説明する。
【００７０】
＜実施形態２：画面例＞
図１３は、ステップＳ１００２においてシステムオーケストレータ１００が提示する画面例を示す図である。システム管理者５００は、本画面を用いてシステムテンプレート１６１１と設定パラメータを入力する。システムオーケストレータ１００は、入力された情報をシステム構成プログラム１６２１に通知する。
【００７１】
システム名称欄１３０１は、これらか構築する計算機システムの名称（本例においては「ＲＵ＿ｗｅｂ」）を入力する欄である。テンプレート選択欄１３０２は、システムテンプレート１６１１を選択（本例においてはＷｅｂ３階層システムを意味する「Ｗｅｂ＿３ｔｉｅｒ」）する欄である。システム管理者５００がシステムテンプレート１６１１を選択すると、設定パラメータ欄１３０３は選択されたテンプレートに対応する設定パラメータを入力するための欄を表示する。図１３に示す例においては、Ｗｅｂ３階層システムの設定パラメータとして、Ｗｅｂサーバに対する設定パラメータ１３１１、ＡＰサーバに対する設定パラメータ１３１２、ＤＢサーバに対する設定パラメータ１３１３が表示されている。
【００７２】
Ｗｅｂサーバについては、負荷分散機能（ＬＢ）または多重化機能（ＨＡ）を用いるか否かを選択することができる。負荷分散機能を用いる場合は、サーバの最少台数と最大台数を指定することができる。ＡＰサーバについては、Ｗｅｂサーバと一体的に構成するか否か、および多重化機能を用いるか否かを選択することができる。ＤＢサーバについては、バックアップ機能、レプリケーション機能、多重化機能を用いるか否かを選択することができる。レプリケーション機能を用いる場合は、サーバ台数を指定することができる。
【００７３】
図１３の画面上でシステム管理者５００が各設定パラメータを入力してＯＫボタンを押すと、システム構成プログラム１６２１と仮想マシン構築プログラム１６２２は、システムテンプレート１６１１および各設定パラメータにしたがって仮想マシンを構築し、記憶装置１６０が格納する各データ内に構築結果を反映する。
【００７４】
図１４は、ステップＳ１００４においてシステムオーケストレータ１００が提示する画面例を示す図である。システム名称欄１４０１とテンプレート欄１４０２は、それぞれテスト対象である計算機システムの名称とシステムテンプレートの種別を表示する。テスト項目欄１４０２は、実施したテスト項目を表示する。結果欄１４０３は、テスト結果を表示する。
【００７５】
テスト結果１４１１は、Ｗｅｂサーバに対する負荷分散（ＬＢ）テストをサーバ台数３台〜９台まで実施した結果、問題がなかった旨を示している。テスト結果１４１２は、ＤＢサーバに対して多重化（ＨＡ）テストを実施した結果、問題がなかったことを示している。テスト結果１４１３は、全ＶＭに対して接続性テスト（Ｃｏｎｎｅｃｔ）を実施した結果、問題がなかったことを示している。テスト結果１４１４は、３台のＷｅｂサーバに対して応答性能テスト（Ｐｅｒｆ）を実施した結果を、応答時間（ＴＡＴ）の分布図によって表示している。テスト結果１４１４によれば、３秒を超える応答がほとんどなかったことが分かる。これが目標応答性能を満たしていれば、当該システム構成は問題ないことが分かる。目標応答性能を満たしていない場合、システム構築者５００は、例えばＷｅｂサーバの最少台数を増加させるなど、なんらかの構成変更をすることができる。
【００７６】
＜実施形態２：テスト項目例＞
負荷分散テスト（ＬＢ）においては、（ａ）リクエストが各ＶＭに対して均等に割り振られているか、（ｂ）各ＶＭが処理したリクエスト数の合計が送信された全リクエスト数に等しいか、などについてのテスト項目を定義することができる。サーバの最小台数と最大台数を指定する場合においては、（ｃ）ＶＭ数を最小台数から最大台数まで増加させると応答性能が向上することを確認するためのテスト項目を定義することができる。さらには、ＳＰＯＦ（Ｓｉｎｇｌｅ  Ｐｏｉｎｔ  Ｏｆ  Ｆａｉｌｕｒｅ）を作らないようにする観点から、（ｄ）負荷分散されているＶＭ群が少なくとも２台の物理マシン上に分けて構築されていることを確認するテスト項目を定義することができる。仮想マシンがいずれの物理サーバ上に構築されているかについては、システムテスト実行プログラム１６２４がＶＭデータ１６１３を参照することによって確認することができる。
【００７７】
多重化テスト（ＨＡ）においては、（ａ）リクエストの処理中に主系を停止させても副系が主系の動作を正しく引き継ぐこと、（ｂ）副系から主系に復帰したとき主副関係を正しく再構築できること、などについてのテスト項目を定義することができる。さらには、負荷分散テストと同様に、（ｃ）多重化されているＶＭ群が少なくとも２台の物理マシン上に分けて構築されていることを確認するテスト項目を定義することができる。
【００７８】
図１３の画面において、負荷分散機能（ＬＢ）または多重化機能（ＨＡ）を指定する場合は、仮想マシンが構築される物理マシンの最小台数を併せて指定できるようにしてもよい。この場合、負荷分散テストまたは多重化テストにおいては、負荷分散または多重化されているＶＭ群が、指定された台数以上の物理マシン上に構築されていることを確認するテスト項目を定義することもできる。
【００７９】
レプリケーションテスト（Ｒｅｐｌｉｃａ）においては、例えば複製元ＤＢサーバ上のデータが複製先ＤＢサーバ上に正しく複製されているか否かを確認するテスト項目を定義することができる。バックアップテスト（Ｂａｃｋｕｐ）においては、例えばバックアップしたデータを正常にリストアすることができるか否かを確認するテスト項目を定義することができる。
【符号の説明】
【００８０】
１００：システムオーケストレータ、１６１１：システムテンプレート、１６１２：システムデータ、１６１３：ＶＭデータ、１６１４：ＶＭ間接続データ、１６１５：システム要件データ、１６１６：テスト項目データ、１６１７：ＶＭソフトデータ、１６２１：システム構成プログラム、１６２２：仮想マシン構築プログラム、１６２３：テストケース生成プログラム、１６２４：システムテスト実行プログラム、１６２５：テスト結果集計プログラム、１６２６：テスト環境構築プログラム、２００：リソースプール管理部、３００：リソースプール、１０００：仮想マシンテストシステム。
【図１】
0005976946.tif 000002
【図２】
0005976946.tif 000003
【図３】
0005976946.tif 000004
【図４】
0005976946.tif 000005
【図５】
0005976946.tif 000006
【図６】
0005976946.tif 000007
【図７】
0005976946.tif 000008
【図８】
0005976946.tif 000009
【図９】
0005976946.tif 000010
【図１０】
0005976946.tif 000011
【図１１】
0005976946.tif 000012
【図１２】
0005976946.tif 000013
【図１３】
0005976946.tif 000014
【図１４】
0005976946.tif 000015