(57)【要約】【課題】偽の失敗が発生しないように配慮された回帰テストコードを実行する操作が含まれる変更手順を生成できるテスト手順生成システムを提供する。【解決手段】テスト手順生成システム１０は、変更対象システムを構成する要素を表す状態モデルを変更対象システムが変更される時に実行される変更手順に含まれる要素に対する変更操作を用いて更新する更新手段１１と、更新手段１１が回帰テスト対象の要素を表す状態モデルの状態を稼働状態に更新した時に用いた変更操作の次の操作として回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加する追加手段１２とを含む。【選択図】図１８
2018097658.tif 000002
【特許請求の範囲】
【請求項１】
変更対象システムを構成する要素を表す状態モデルを前記変更対象システムが変更される時に実行される変更手順に含まれる前記要素に対する変更操作を用いて更新する更新手段と、
前記更新手段が回帰テスト対象の要素を表す状態モデルの状態を稼働状態に更新した時に用いた変更操作の次の操作として前記回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加する追加手段とを含む
ことを特徴とするテスト手順生成システム。
【請求項２】
追加手段は、更新手段が回帰テスト対象の要素を表す状態モデルの状態を稼働状態から更新しなかった時に用いた変更操作の次の操作として前記回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加する
請求項１記載のテスト手順生成システム。
【請求項３】
回帰テストが実行される操作が追加された変更手順を実行することによって変更対象システムを変更する変更手段を含む
請求項１または請求項２記載のテスト手順生成システム。
【請求項４】
変更される前の変更対象システムの構成定義と変更された後の前記変更対象システムの構成定義とを用いて変更手順を生成する生成手段を含む
請求項１から請求項３のうちのいずれか１項に記載のテスト手順生成システム。
【請求項５】
回帰テスト対象の要素を表す状態モデルの状態が稼働状態に更新されたことを追加手段に通知する通知手段を含み、
前記追加手段は、前記通知手段からの通知を受けて回帰テストが実行される操作を変更手順に追加する
請求項１から請求項４のうちのいずれか１項に記載のテスト手順生成システム。
【請求項６】
変更対象システムを構成する要素を表す状態モデルを前記変更対象システムが変更される時に実行される変更手順に含まれる前記要素に対する変更操作を用いて更新し、
回帰テスト対象の要素を表す状態モデルの状態が稼働状態に更新された時に用いられた変更操作の次の操作として前記回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加する
ことを特徴とするテスト手順生成方法。
【請求項７】
回帰テスト対象の要素を表す状態モデルの状態が稼働状態から更新されなかった時に用いられた変更操作の次の操作として前記回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加する
請求項６記載のテスト手順生成方法。
【請求項８】
コンピュータに、
変更対象システムを構成する要素を表す状態モデルを前記変更対象システムが変更される時に実行される変更手順に含まれる前記要素に対する変更操作を用いて更新する更新処理、および
前記更新処理で回帰テスト対象の要素を表す状態モデルの状態が稼働状態に更新された時に用いられた変更操作の次の操作として前記回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加する追加処理
を実行させるためのテスト手順生成プログラム。
【請求項９】
コンピュータに、
更新処理で回帰テスト対象の要素を表す状態モデルの状態が稼働状態から更新されなかった時に用いられた変更操作の次の操作として前記回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加する追加処理を実行させる
請求項８記載のテスト手順生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト手順生成システム、テスト手順生成方法およびテスト手順生成プログラムに関し、特にシステム構成の変更作業における変更手順にテスト実行用のコードを適切に挿入できるテスト手順生成システム、テスト手順生成方法およびテスト手順生成プログラムに関する。
【背景技術】
【０００２】
非特許文献１および非特許文献２に、システム構成の変更作業で使用されるテスト実行システムの一例が記載されている。図１９は、非特許文献１および非特許文献２に記載されているテスト実行システムの構成例を示すブロック図である。図１９に示すテスト実行システム９００は、変更手順実行手段９１０と、回帰テスト実行手段９２０とで構成されている。また、テスト実行システム９００は、変更対象システム８００に対して回帰テストを実行する。
【０００３】
図１９に示すテスト実行システム９００は、例えば以下のように動作する。最初に変更手順実行手段９１０が、変更手順を読み出す。変更手順実行手段９１０は、読み出された変更手順に従って、変更対象システム８００の構成を変更する。
【０００４】
変更手順実行手段９１０が変更対象システム８００の構成を変更している間に、回帰テスト実行手段９２０は、変更対象システム８００が対象である回帰テストを実行する。回帰テストを実行することによって、回帰テスト実行手段９２０は、システム構成の変更を起因とする不具合が発生していないか否かを確認する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Andrew Whitaker, Richard S. Cox, and Steven D. Gribble, ”Configuration Debugging as Search: Finding the Needle in the Haystack,” OSDI '04.
【非特許文献２】Ya-Yunn Su, Mona Attariyan, and Jason Flinn, ”AutoBash: improving configuration management with operating system causality analysis,” SOSP2007.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
図１９に示すテスト実行システム９００による回帰テストの実行には、システム構成の変更作業中に構成が正しく変更されているか否かを確認するための回帰テストを回帰テスト実行手段９２０が実行する際に、偽の失敗(Spurious failure)が発生する可能性があるという問題が存在する。問題が存在する理由は、変更対象システム８００がどのような状態であっても、回帰テスト実行手段９２０が変更対象システム８００に対して回帰テストを実行するためである。
【０００７】
以下、偽の失敗が発生する例を、図２０〜図２２を参照して説明する。図２０は、変更対象システム８００の構成例を示すブロック図である。
【０００８】
図２０に示すように、変更対象システム８００は、Webサーバ「web」と、データベースサーバ「db」とを含む。webは、dbと通信可能に接続されている。また、webにおいてサービス「s1」が稼働している。
【０００９】
以下、webにモジュールAをインストールする場合を考える。なお、webにモジュールAをインストールするためには、事前にwebにモジュールBを、dbにモジュールCをそれぞれインストールすることが求められる。
【００１０】
また、webにモジュールAおよびモジュールBをインストールするためには、s1を停止させることが求められる。また、dbにモジュールCをインストールするためには、dbを停止させることが求められる。図２０に示す変更対象システム８００の構成は、変更手順実行手段９１０により変更された後の構成である。
【００１１】
本例では、変更手順実行手段９１０に図２１に示す変更手順が与えられ、変更手順実行手段９１０が与えられた変更手順に従って変更対象システム８００の構成を変更する。図２１は、変更対象システム８００の構成の変更に使用される変更手順の例を示す説明図である。
【００１２】
変更手順実行手段９１０が変更手順を実行している間に、回帰テスト実行手段９２０は、変更対象システム８００がどのような状態であっても変更対象システム８００に対して回帰テストを実行する。
【００１３】
図２２は、変更対象システム８００の構成の変更に使用される変更手順の他の例を示す説明図である。図２２に示す下線が付された操作が、回帰テスト実行手段９２０がs1に対する回帰テストを呼び出す操作である。図２２に示す下線が付された操作は、例えば回帰テストコードを実行する操作である。
【００１４】
s1が停止している時に回帰テスト実行手段９２０がs1に対する回帰テストを実行すると、変更作業自体に問題がなくてもエラー、すなわち偽の失敗が生じる。図２２に示す例の場合、”not ok”のコメントが記載されている操作が実行されると偽の失敗が発生する。
【００１５】
偽の失敗が発生すると、変更対象システム８００の運用管理者は、発生原因の特定等の、当初想定されていなかった業務に従事する。すなわち、変更作業全体に要する工期が延び構築コストが増大する可能性がある。
【００１６】
［発明の目的］
そこで、本発明は、上述した課題を解決する、偽の失敗が発生しないように配慮された回帰テストコードを実行する操作が含まれる変更手順を生成できるテスト手順生成システム、テスト手順生成方法およびテスト手順生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明によるテスト手順生成システムは、変更対象システムを構成する要素を表す状態モデルを変更対象システムが変更される時に実行される変更手順に含まれる要素に対する変更操作を用いて更新する更新手段と、更新手段が回帰テスト対象の要素を表す状態モデルの状態を稼働状態に更新した時に用いた変更操作の次の操作として回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加する追加手段とを含むことを特徴とする。
【００１８】
本発明によるテスト手順生成方法は、変更対象システムを構成する要素を表す状態モデルを変更対象システムが変更される時に実行される変更手順に含まれる要素に対する変更操作を用いて更新し、回帰テスト対象の要素を表す状態モデルの状態が稼働状態に更新された時に用いられた変更操作の次の操作として回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加することを特徴とする。
【００１９】
本発明によるテスト手順生成プログラムは、コンピュータに、変更対象システムを構成する要素を表す状態モデルを変更対象システムが変更される時に実行される変更手順に含まれる要素に対する変更操作を用いて更新する更新処理、および更新処理で回帰テスト対象の要素を表す状態モデルの状態が稼働状態に更新された時に用いられた変更操作の次の操作として回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加する追加処理を実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、偽の失敗が発生しないように配慮された回帰テストコードを実行する操作が含まれる変更手順を生成できる。
【図面の簡単な説明】
【００２１】
【図１】本発明によるテスト手順生成システム１００の第１の実施形態の構成例を示すブロック図である。
【図２】第１の実施形態における初期状態定義および状態変更定義の例を示す説明図である。
【図３】更新対象システム２００を構成するコンポーネントを表す状態モデルの例を示す説明図である。
【図４】第１の実施形態のテスト手順生成システム１００による回帰テスト付変更手順生成処理の動作を示すフローチャートである。
【図５】更新対象システム２００の構成の変更に使用される変更手順の例を示す説明図である。
【図６】第１の実施形態における初期状態定義および状態変更定義の他の例を示す説明図である。
【図７】更新対象システム２００の構成例を示すブロック図である。
【図８】第１の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の生成例を示す説明図である。
【図９】第１の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の他の生成例を示す説明図である。
【図１０】本発明によるテスト手順生成システム１００の第２の実施形態の構成例を示すブロック図である。
【図１１】第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順生成処理の動作を示すフローチャートである。
【図１２】更新対象システム２００を構成するコンポーネントを表す状態モデルの例を示す説明図である。
【図１３】第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の生成例を示す説明図である。
【図１４】第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の他の生成例を示す説明図である。
【図１５】第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の他の生成例を示す説明図である。
【図１６】第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の他の生成例を示す説明図である。
【図１７】第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の他の生成例を示す説明図である。
【図１８】本発明によるテスト手順生成システムの概要を示すブロック図である。
【図１９】非特許文献１および非特許文献２に記載されているテスト実行システムの構成例を示すブロック図である。
【図２０】変更対象システム８００の構成例を示すブロック図である。
【図２１】変更対象システム８００の構成の変更に使用される変更手順の例を示す説明図である。
【図２２】変更対象システム８００の構成の変更に使用される変更手順の他の例を示す説明図である。
【発明を実施するための形態】
【００２２】
［第１の実施形態］
［構成の説明］
以下、本発明の実施形態を、図面を参照して説明する。図１は、本発明によるテスト手順生成システム１００の第１の実施形態の構成例を示すブロック図である。
【００２３】
図１に示すように、本実施形態のテスト手順生成システム１００は、状態モデル更新手段１１０と、状態確認手段１２０と、状態モデル格納手段１３０と、回帰テスト挿入手段１４０と、変更手順実行手段１５０とを含む。
【００２４】
本実施形態のテスト手順生成システム１００は、更新対象システム２００の変更作業中に実行される回帰テストにおいて偽の失敗が発生しないような回帰テスト付変更手順を生成できる。
【００２５】
その理由は、更新対象システム２００の変更作業中に状態確認手段１２０が更新対象システム２００を構成するコンポーネントを表す状態モデル格納手段１３０に格納されている状態モデルを確認する。次いで、状態確認手段１２０が、回帰テスト対象のコンポーネントが起動していると確認された時点で回帰テストが実行されるように変更手順に回帰テストコードを実行する操作を挿入するよう回帰テスト挿入手段１４０に指示するためである。
【００２６】
状態モデル更新手段１１０は、初期状態定義および状態変更定義を参照して、変更手順を用いて状態モデル格納手段１３０に格納されている状態モデルを更新する機能を有する。
【００２７】
本実施形態の状態モデル更新手段１１０は、更新対象システム２００の構成を変更せずに、状態モデル格納手段１３０に格納されている更新対象システム２００を構成するコンポーネントを表す状態モデルを更新することによって、システム構成を模擬的に変更する。すなわち、システム構成を模擬的に変更する時、状態モデル更新手段１１０は、変更手順内の操作を論理的に実行する。
【００２８】
図２は、第１の実施形態における初期状態定義および状態変更定義の例を示す説明図である。図２（ａ）は、第１の実施形態における初期状態定義の例を示す。また、図２（ｂ）は、第１の実施形態における状態変更定義の例を示す。
【００２９】
図２（ａ）に示すように、初期状態定義では、コンポーネント(component)ごとに初期状態(initial)が定義されている。例えば、コンポーネントdbを表す状態モデルの初期状態は、「稼働中」を意味する”t”である。
【００３０】
また、図２（ｂ）に示すように、状態変更定義では、コンポーネント(component)に対する変更操作(command)に状態変更(state_change)が対応付けられている。すなわち、各状態変更定義は、変更操作が実行されると、コンポーネントを表す状態モデルの状態が、対応付けられている状態変更に従って遷移することを意味する。
【００３１】
例えば、図２（ｂ）に示す３番目の状態変更定義では、コンポーネントs1に対して、コマンド”service s1 down”が発行されることが定義されている。また、コマンドが発行されると、コンポーネントs1を表す状態モデルの状態が「稼働中」を意味する”t”または「停止中」を意味する”u”であれば、状態モデルにおいて”u”への状態遷移が実行されることが定義されている。
【００３２】
なお、状態変更定義のcomponentには、特定のコンポーネントが記載されてもよいし、コンポーネントのデータ型が記載されてもよい。componentにコンポーネントのデータ型が記載されている場合、変更操作が実行されると、データ型に属するコンポーネントを表す状態モデルにおいて状態遷移が実行される。
【００３３】
例えば、図２（ｂ）に示す最初の状態変更定義では、コンポーネントのデータ型DBに属するコンポーネントに対して、コマンド”service DB down”が発行されることが定義されている。また、コマンドが発行されると、データ型DBに属するコンポーネントを表す状態モデルの状態が「稼働中」を意味する”t”または「停止中」を意味する”u”であれば、状態モデルにおいて”u”への状態遷移が実行されることが定義されている。
【００３４】
状態確認手段１２０は、状態モデル格納手段１３０に格納されている状態モデルを参照して、回帰テスト対象のコンポーネントを表す状態モデルの状態が稼働状態である時に回帰テスト挿入手段１４０を起動させる機能を有する。
【００３５】
状態確認手段１２０は、起動した回帰テスト挿入手段１４０に、変更手順に回帰テストが実行される操作を挿入するという指示を入力する。なお、回帰テスト挿入手段１４０が常に稼働している場合、状態確認手段１２０は、回帰テスト挿入手段１４０に指示を入力する処理のみを行えばよい。
【００３６】
状態モデル格納手段１３０は、更新対象システム２００を構成するコンポーネントを表す状態モデルを格納する機能を有する。図３は、更新対象システム２００を構成するコンポーネントを表す状態モデルの例を示す説明図である。
【００３７】
図３に示す状態モデルは、図２０に示すサービス「s1」を表す。図３に示す矩形が状態モデルを表す。また、図３に示す矩形内の楕円が状態を表す。図３に示す楕円「t」が稼働状態（以下、状態tという。）を表し、楕円「u」が非稼働状態（以下、状態uという。）を表す。
【００３８】
また、図３に示す楕円間の矢印は、状態間の遷移を表す。本実施形態において状態間の遷移は、変更操作に対応する。例えば、コマンド”service s1 start”が発行されると、s1の状態は、状態uから状態tに遷移する。また、コマンド”service s1 down”が発行されると、s1の状態は、状態tから状態uに遷移する。
【００３９】
回帰テスト挿入手段１４０は、状態確認手段１２０から出力された指示に従って変更手順に回帰テストが実行される操作を挿入する機能を有する。回帰テストが実行される操作は、例えば回帰テストコードを実行する操作である。
【００４０】
変更手順に回帰テストが実行される操作を挿入することによって、回帰テスト挿入手段１４０は、回帰テスト付変更手順を生成する。なお、回帰テスト挿入手段１４０は、状態確認手段１２０から稼働状態である状態モデルを通知されるだけで、変更手順に回帰テストが実行される操作を挿入するように構成されていてもよい。
【００４１】
変更手順実行手段１５０は、生成された回帰テスト付変更手順に従って更新対象システム２００を変更する機能を有する。
【００４２】
図１に示すテスト手順生成システム１００は、システム構成の変更作業中にシステムが正しく変更されているか否かを確認するための回帰テストが実行される場合に、偽の失敗が発生するという課題を解決できるテスト手順生成システムである。
【００４３】
テスト手順生成システム１００が上記の課題を解決できる理由は、変更手順を基に状態モデル更新手段１１０が更新した状態モデルを状態確認手段１２０が参照して、状態モデルの状態が稼働状態である時に回帰テスト挿入手段１４０を起動させる。起動した回帰テスト挿入手段１４０は、回帰テスト対象のコンポーネントが稼働状態であると想定されている段階に対応する変更手順の箇所に回帰テストコードを実行する操作を挿入するので、偽の失敗が発生しないテストコード付変更手順が得られるためである。
【００４４】
［動作の説明］
以下、本実施形態のテスト手順生成システム１００の回帰テスト付変更手順を生成する動作を図４を参照して説明する。図４は、第１の実施形態のテスト手順生成システム１００による回帰テスト付変更手順生成処理の動作を示すフローチャートである。
【００４５】
最初に、状態モデル更新手段１１０が初期状態定義に基づいて、状態モデル格納手段１３０に格納されている状態モデルを初期化する（ステップS101）。
【００４６】
次いで、状態モデル更新手段１１０は、変更手順内のシステム変更操作を全て処理したか否かを確認する（ステップS102）。変更手順内のシステム変更操作を全て処理済である場合（ステップS103におけるYes）、テスト手順生成システム１００は、回帰テスト付変更手順生成処理を終了する。
【００４７】
変更手順内に未処理のシステム変更操作が残っている場合（ステップS103におけるNo）、状態モデル更新手段１１０は、変更手順内の未処理の１つのシステム変更操作を論理的に実行する。操作の実行に伴い、状態モデル更新手段１１０は、状態変更定義に基づいて、状態モデル格納手段１３０に格納されている状態モデルの状態を変更する（ステップS104）。
【００４８】
次いで、状態確認手段１２０は、状態モデル格納手段１３０に格納されている状態モデルを確認し、状態モデルが表すコンポーネントが稼働状態であるか否かを確認する（ステップS105）。コンポーネントが稼働状態でない場合（ステップS106におけるNo）、テスト手順生成システム１００は、再度ステップS102の処理を行う。
【００４９】
コンポーネントが稼働状態である場合（ステップS106におけるYes）、回帰テスト挿入手段１４０は、回帰テスト付変更手順、または変更手順に回帰テストコードを実行する操作を挿入する（ステップS107）。回帰テストコードを実行する操作を挿入した後、テスト手順生成システム１００は、再度ステップS102の処理を行う。
【００５０】
上記の処理で生成された回帰テスト付変更手順は、変更手順実行手段１５０により実行される。回帰テスト付変更手順が実行されると、更新対象システム２００の構成が変更される。
【００５１】
［効果の説明］
本実施形態では、状態モデル格納手段１３０に格納されている状態モデルの状態が、更新対象システム２００を構成するコンポーネントの状態を表す。また、状態確認手段１２０は、コンポーネントを表す状態モデルの状態を参照して、コンポーネントが稼働状態である時に回帰テスト挿入手段１４０を介して回帰テスト付変更手順に回帰テストコードを実行する操作を挿入する。よって、回帰テスト付変更手順に従ってシステム構成の変更作業が実行されると、停止しているコンポーネントに対して回帰テストが実行されないため、偽の失敗の発生が防止される。
【００５２】
以下、本実施形態の変形例を示す。本実施形態の変更手順を構成する実行コードは、例えば図２１に示すようなスクリプトである。図２１に示すスクリプト以外に、本実施形態の変更手順を構成する実行コードは、Ansible（登録商標）等の構成変更自動化ツール用のコードでもよい。
【００５３】
図５は、更新対象システム２００の構成の変更に使用される変更手順の例を示す説明図である。図５に示す実行コードは、Ansibleの構成変更コードであるPlaybook（登録商標）のコードが簡略化された例である。状態モデル更新手段１１０は、状態変更定義を参照して、図５に示す変更手順を用いて状態モデルを更新する。
【００５４】
変更手順を構成する実行コードにAnsibleの構成変更コードが含まれる場合、状態変更定義も変更される。図６は、第１の実施形態における初期状態定義および状態変更定義の他の例を示す説明図である。図６（ａ）は、第１の実施形態における初期状態定義の他の例を示す。また、図６（ｂ）は、第１の実施形態における状態変更定義の他の例を示す。
【００５５】
図６（ｂ）に示すように、一部の状態変更定義の”command”には、Ansibleの命令が指定されている。Ansibleの命令が完了した時点で、状態モデルでは”state_change”で指定されている状態への状態遷移が行われる。
【００５６】
例えば、図６（ｂ）に示すコマンド”ansible A_playbook.yml”に対応する処理である、構成変更自動化ツールのA_playbook.ymlに対する処理が完了した時点で、コンポーネントAの状態は、稼働状態である状態tに遷移する。
【００５７】
上述したように、本変形例の変更手順は、スクリプトの代わりにAnsibleの構成変更コード等で構成されている。また、本変形例の状態変更定義の一部のcommandには、ansibleコマンド等の構成変更コードが指定されている。
【００５８】
本変形例によれば、Ansible等の構成変更自動化ツールが回帰テスト付変更手順に従って、偽の失敗を発生させずにシステム構成の変更作業を自動的に実行できる。
【００５９】
［具体例１］
以下、本実施形態の具体例を図を参照して説明する。
【００６０】
図７は、更新対象システム２００の構成例を示すブロック図である。図７に示す更新対象システム２００の構成は、図２０に示す変更対象システム８００の構成と同様である。すなわち、図７に示すように、更新対象システム２００は、Webサーバ「web」と、データベースサーバ「db」とを含む。webは、dbと通信可能に接続されている。また、webにおいてサービス「s1」が稼働している。
【００６１】
以下、webにモジュールAをインストールする場合を考える。なお、図２０に示す変更対象システム８００と同様に、webにモジュールAをインストールするためには、事前にwebにモジュールBを、dbにモジュールCをそれぞれインストールすることが求められる。
【００６２】
また、図２０に示す変更対象システム８００と同様に、webにモジュールAおよびモジュールBをインストールするためには、s1を停止させることが求められる。また、dbにモジュールCをインストールするためには、dbを停止させることが求められる。図７に示す更新対象システム２００の構成は、変更手順実行手段１５０により変更された後の構成である。
【００６３】
本具体例では、図２に示す初期状態定義および状態変更定義と、図２１に示す変更手順とがテスト手順生成システム１００に与えられ、変更手順実行手段１５０が最終的に生成された回帰テスト付変更手順を実行する。
【００６４】
上記の場合におけるテスト手順生成システム１００による回帰テスト付変更手順の生成例を図８に示す。図８は、第１の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の生成例を示す説明図である。
【００６５】
図８（ａ）は、各段階のdbを表す状態モデルとs1を表す状態モデルを示す。なお、図８（ａ）に示す二重線の楕円は、状態モデルの現在の状態を表す。また、図８（ｂ）は、各段階（図８（ａ）に示す下向きの各矢印に対応する段階）で回帰テスト挿入手段１４０が生成する回帰テスト付変更手順である。すなわち、変更手順実行手段１５０が実行する手順である。
【００６６】
最初に、状態モデル更新手段１１０が初期状態定義に基づいて、状態モデル格納手段１３０に格納されている状態モデルを初期化する（ステップS101）。図２（ａ）を参照すると、データベースサーバdbの初期状態とサービスs1の初期状態は、共に状態tである。すなわち、図８（ａ）の１番目に示す状態モデルが、初期化された状態モデルである。
【００６７】
次いで、状態モデル更新手段１１０は、図２１に示す変更手順内の１つのシステム変更操作”service s1 down”を論理的に実行する。操作の実行に伴い、状態モデル更新手段１１０は、状態変更定義に基づいて、状態モデル格納手段１３０に格納されている状態モデルの状態を変更する（ステップS104）。
【００６８】
図２（ｂ）を参照すると、”service s1 down”が実行されるとs1の状態は、状態uに遷移する。すなわち、図８（ａ）の２番目に示す状態モデルが、”service s1 down”が論理的に実行された後の状態モデルである。
【００６９】
次いで、状態確認手段１２０は、状態モデル格納手段１３０に格納されている状態モデルを確認し、状態モデルが表すコンポーネントが稼働状態であるか否かを確認する（ステップS105）。
【００７０】
図８（ａ）の２番目に示す状態モデルを参照すると、s1は停止状態である状態uであり、dbは稼働状態である状態tである。すなわち、dbが稼働状態であるため（ステップS106におけるYes）、回帰テスト挿入手段１４０は、回帰テスト付変更手順にdbに対する回帰テストコードを実行する操作を挿入する（ステップS107）。図８（ｂ）の２番目に示す変更手順内の下線が付された最初の”test_db”が、挿入された操作である。
【００７１】
次いで、状態モデル更新手段１１０は、図２１に示す変更手順内の１つのシステム変更操作”apt-get install b”を論理的に実行する。”apt-get install b”が論理的に実行されても、状態モデルの状態は変更されない。
【００７２】
すなわち、dbが稼働状態のままであるため（ステップS106におけるYes）、回帰テスト挿入手段１４０は、回帰テスト付変更手順にdbに対する回帰テストコードを実行する操作を挿入する（ステップS107）。図８（ｂ）の２番目に示す変更手順内の下線が付された２つ目の”test_db”が、挿入された操作である。
【００７３】
次いで、状態モデル更新手段１１０は、図２１に示す変更手順内の１つのシステム変更操作”service db down”を論理的に実行する。操作の実行に伴い、状態モデル更新手段１１０は、状態変更定義に基づいて、状態モデル格納手段１３０に格納されている状態モデルの状態を変更する（ステップS104）。
【００７４】
図２（ｂ）を参照すると、”service db down”が実行されると、データ型DBに属するdbの状態は、状態uに遷移する。すなわち、図８（ａ）の３番目に示す状態モデルが、”service db down”が論理的に実行された後の状態モデルである。
【００７５】
図８（ａ）の３番目に示す状態モデルを参照すると、s1とdbは共に停止状態である状態uであり、稼働状態であるコンポーネントが存在しない（ステップS106におけるNo）。よって、状態モデル更新手段１１０は、図２１に示す変更手順内の１つのシステム変更操作”apt-get install c”を論理的に実行する。
【００７６】
”apt-get install c”が論理的に実行されても、状態モデルの状態は変更されない。すなわち、稼働状態であるコンポーネントが存在しないため（ステップS106におけるNo）、状態モデル更新手段１１０は、図２１に示す変更手順内の１つのシステム変更操作”service db start”を論理的に実行する。
【００７７】
図２（ｂ）を参照すると、”service db start”が実行されると、データ型DBに属するdbの状態は、状態tに遷移する。すなわち、dbが稼働状態であるため（ステップS106におけるYes）、回帰テスト挿入手段１４０は、回帰テスト付変更手順にdbに対する回帰テストコードを実行する操作を挿入する（ステップS107）。図８（ｂ）の４番目に示す変更手順内の下線が付された”test_db”が、挿入された操作である。
【００７８】
次いで、状態モデル更新手段１１０は、図２１に示す変更手順内の１つのシステム変更操作”apt-get install a”を論理的に実行する。”apt-get install a”が論理的に実行されても、状態モデルの状態は変更されない。
【００７９】
次いで、状態モデル更新手段１１０は、図２１に示す変更手順内の１つのシステム変更操作”service s1 start”を論理的に実行する。図２（ｂ）を参照すると、”service s1 start”が実行されるとs1の状態は、状態tに遷移する。すなわち、図８（ａ）の４番目に示す状態モデルが、”service s1 start”が論理的に実行された後の状態モデルである。
【００８０】
図８（ａ）の４番目に示す状態モデルを参照すると、s1とdbは共に稼働状態である状態tであり、稼働状態であるコンポーネントが存在する。よって、回帰テスト挿入手段１４０は、回帰テスト付変更手順にdbに対する回帰テストコードを実行する操作と、s1に対する回帰テストコードを実行する操作を挿入する（ステップS107）。図８（ｂ）の４番目に示す変更手順内の下線が付された”test_db; test_s1”が、挿入された操作である。
【００８１】
以上で変更手順内のシステム変更操作が全て処理されたため（ステップS103におけるYes）、テスト手順生成システム１００は、回帰テスト付変更手順生成処理を終了する。本具体例では変更手順を基に、図８（ｂ）に示す下線が付された回帰テストコードを実行する操作が挿入された回帰テスト付変更手順が生成される。
【００８２】
次に、図６に示す初期状態定義および状態変更定義と、図５に示す構成変更自動化ツール用のコードとがテスト手順生成システム１００に与えられ、図７に示す更新対象システム２００のwebにモジュールAをインストールする場合の回帰テスト付変更手順を変更手順実行手段１５０が実行する場合を考える。
【００８３】
上記の場合におけるテスト手順生成システム１００による回帰テスト付変更手順の生成例を図９に示す。図９は、第１の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の他の生成例を示す説明図である。
【００８４】
図８に示す例と同様に、テスト手順生成システム１００は、回帰テスト付変更手順を生成する。回帰テスト付変更手順生成処理が実行された結果、構成変更自動化ツール用のコードを基に、図９（ｂ）に示す下線が付された回帰テストコードを実行する操作が挿入された回帰テスト付変更手順が生成される。
【００８５】
［第２の実施形態］
［構成の説明］
次に、本発明の第２の実施形態を、図面を参照して説明する。図１０は、本発明によるテスト手順生成システム１００の第２の実施形態の構成例を示すブロック図である。
【００８６】
図１０に示すように、本実施形態のテスト手順生成システム１００は、状態モデル更新手段１１０と、状態確認手段１２０と、状態モデル格納手段１３０と、回帰テスト挿入手段１４０と、変更手順実行手段１５０と、変更手順生成手段１６０とを含む。状態モデル更新手段１１０および変更手順生成手段１６０以外の第２の実施形態の構成は、第１の実施形態の構成と同様である。
【００８７】
図１０に示すように、本実施形態の状態モデル更新手段１１０には、システムの初期状態に対応する状態モデルを示す状態モデル（更新前構成）が入力される。また、本実施形態の変更手順生成手段１６０には、システムの変更目的の状態に対応する状態モデルを示す状態モデル（更新後構成）が入力される。
【００８８】
変更手順生成手段１６０は、状態モデル（更新後構成）および状態モデル（更新前構成）に基づいて、変更手順を構成するシステム変更操作を生成する機能を有する。すなわち、本実施形態のテスト手順生成システム１００の利用者は、第１の実施形態と異なり、変更手順を用意せずに済む。
【００８９】
［動作の説明］
以下、本実施形態のテスト手順生成システム１００の回帰テスト付変更手順を生成する動作を図１１を参照して説明する。図１１は、第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順生成処理の動作を示すフローチャートである。
【００９０】
最初に、状態モデル更新手段１１０は、状態モデル（更新前構成）に基づいて、状態モデル格納手段１３０に格納されている状態モデルを初期化する（ステップS201）。
【００９１】
次いで、変更手順生成手段１６０は、状態モデル格納手段１３０に格納されている状態モデルが、状態モデル（更新後構成）が示す状態モデルであるか否かを確認する（ステップS202）。
【００９２】
既に状態モデル（更新後構成）が示す状態モデルである場合（ステップS203におけるYes）、変更処理が完了している。すなわち、テスト手順生成システム１００は、回帰テスト付変更手順生成処理を終了する。
【００９３】
状態モデル（更新後構成）が示す状態モデルでない場合（ステップS203におけるNo）、変更手順生成手段１６０は、状態モデル（更新後構成）および状態モデル更新手段１１０に入力された状態モデル（更新前構成）に基づいて、システム変更操作を１つ生成する（ステップS204）。
【００９４】
次いで、状態モデル更新手段１１０は、生成されたシステム変更操作に従って、状態モデル格納手段１３０に格納されている状態モデルの状態を変更する（ステップS205）。
【００９５】
次いで、状態確認手段１２０は、状態モデル格納手段１３０に格納されている状態モデルを確認し、状態モデルが表すコンポーネントが稼働状態であるか否かを確認する（ステップS206）。コンポーネントが稼働状態でない場合（ステップS207におけるNo）、テスト手順生成システム１００は、再度ステップS202の処理を行う。
【００９６】
コンポーネントが稼働状態である場合（ステップS207におけるYes）、回帰テスト挿入手段１４０は、回帰テスト付変更手順、または変更手順に回帰テストコードを実行する操作を挿入する（ステップS208）。回帰テストコードを実行する操作を挿入した後、テスト手順生成システム１００は、再度ステップS202の処理を行う。
【００９７】
上記の処理で生成された回帰テスト付変更手順は、変更手順実行手段１５０により実行される。回帰テスト付変更手順が実行されると、更新対象システム２００の構成が変更される。
【００９８】
［効果の説明］
本実施形態では、第１の実施形態と同様に、状態モデル格納手段１３０に格納されている状態モデルの状態が、更新対象システム２００を構成するコンポーネントの状態を表す。また、状態確認手段１２０は、コンポーネントを表す状態モデルの状態を参照して、コンポーネントが稼働状態である時に回帰テスト挿入手段１４０を介して回帰テスト付変更手順に回帰テストコードを実行する操作を挿入する。よって、回帰テスト付変更手順に従ってシステム構成の変更作業が実行されると、停止しているコンポーネントに対して回帰テストが実行されないため、偽の失敗の発生が防止される。
【００９９】
また、第１の実施形態と異なり、本実施形態のテスト手順生成システム１００には、変更手順生成手段１６０が含まれている。変更手順生成手段１６０がシステム変更操作を生成するため、利用者は、変更手順を用意しなくてよい。
【０１００】
［具体例２］
以下、本実施形態の具体例を図を参照して説明する。
【０１０１】
図１２は、更新対象システム２００を構成するコンポーネントを表す状態モデルの例を示す説明図である。図１２に示す状態モデルの集合は、図７に示す更新対象システム２００に対応する。図１２に示す二重線の楕円は、現在の状態を表す。また、図１２に示す黒色の楕円は、目的状態を表す。
【０１０２】
また、図１２に示す破線の矢印は、コンポーネント間の依存関係を表す。破線の矢印の根元の白丸が付与されている要素は、依存関係における依存元の要素である。
【０１０３】
例えば、図１２に示すように、モジュールBとサービスs1との間に依存関係が存在する。依存関係は、例えばモジュールBがインストールされる、すなわちモジュールBが未実装状態である状態fから稼働状態である状態tに変更されるためには、サービスs1が停止状態である状態uであることを要することを示す。
【０１０４】
以下、図７に示す更新対象システム２００のwebにモジュールAをインストールする場合の回帰テスト付変更手順を変更手順実行手段１５０が実行する場合を考える。なお、本具体例における回帰テスト対象のコンポーネントは、dbとs1のみである。
【０１０５】
最初に、状態モデル更新手段１１０は、状態モデル（更新前構成）に基づいて、状態モデル格納手段１３０に格納されている状態モデルを初期化する（ステップS201）。本具体例における初期化された状態モデルは、図１２に示す状態モデルである。
【０１０６】
次いで、変更手順生成手段１６０は、状態モデル（更新前構成）および状態モデル（更新後構成）に基づいて、システム変更操作を１つ生成する（ステップS204）。
【０１０７】
図１３は、第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の生成例を示す説明図である。図１３（ａ）は、変更手順生成手段１６０が生成するシステム変更操作を示す。また、図１３（ｂ）は、更新対象システム２００に対応する状態モデルの集合を示す。
【０１０８】
例えば、図１３（ａ）に示すように、変更手順生成手段１６０は、システム変更操作として命令「s1をshutdown」、および命令「dbをshutdown」を生成する。生成された各命令は、並列に実行されてもよい。本具体例において、変更手順生成手段１６０は、並列に実行される２つの命令を１つ分の命令として生成する。
【０１０９】
次いで、状態モデル更新手段１１０は、生成されたシステム変更操作に従って、状態モデル格納手段１３０に格納されている状態モデルの状態を変更する（ステップS205）。生成された各命令を並列に実行する場合、状態モデル更新手段１１０は、dbを表す状態モデルの状態およびs1を表す状態モデルの状態を、共に停止状態である状態uに変更する。図１３（ｂ）は、dbを表す状態モデルおよびs1を表す状態モデルが変更された後の状態モデルの集合を示す。
【０１１０】
次いで、状態確認手段１２０は、状態モデル格納手段１３０に格納されている状態モデルを確認し、状態モデルが表すコンポーネントが稼働状態であるか否かを確認する（ステップS206）。
【０１１１】
図１３（ｂ）に示す状態モデルの集合を参照すると、s1とdbは共に停止状態である状態uであり、稼働状態であるコンポーネントが存在しない（ステップS207におけるNo）。よって、変更手順生成手段１６０は、再度システム変更操作を１つ生成する（ステップS204）。
【０１１２】
図１４は、第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の他の生成例を示す説明図である。図１４（ａ）に示すように、変更手順生成手段１６０は、命令「モジュールBをインストール」、および命令「モジュールCをインストール」を生成する。
【０１１３】
生成された各命令を並列に実行する場合、状態モデル更新手段１１０は、モジュールBを表す状態モデルの状態およびモジュールCを表す状態モデルの状態を、共に稼働状態である状態tに変更する。図１４（ｂ）は、モジュールBを表す状態モデルおよびモジュールCを表す状態モデルが変更された後の状態モデルの集合を示す。
【０１１４】
図１４（ｂ）に示す状態モデルの集合を参照すると、s1とdbは共に停止状態である状態uであり、稼働状態であるコンポーネントが存在しない（ステップS207におけるNo）。よって、変更手順生成手段１６０は、再度システム変更操作を１つ生成する（ステップS204）。
【０１１５】
図１５は、第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の他の生成例を示す説明図である。図１５（ａ）に示すように、変更手順生成手段１６０は、命令「dbを再起動」を生成する。
【０１１６】
生成された命令を実行する場合、状態モデル更新手段１１０は、dbを表す状態モデルの状態を、稼働状態である状態tに変更する。図１５（ｂ）は、dbを表す状態モデルが変更された後の状態モデルの集合を示す。
【０１１７】
次いで、状態確認手段１２０は、状態モデル格納手段１３０に格納されている状態モデルを確認し、状態モデルが表すコンポーネントが稼働状態であるか否かを確認する（ステップS206）。
【０１１８】
図１５（ｂ）に示す状態モデルの集合を参照すると、dbは稼働状態である状態tであり、稼働状態であるコンポーネントが存在する（ステップS207におけるYes）。よって、回帰テスト挿入手段１４０は、回帰テスト付変更手順にdbに対する回帰テストコードを実行する操作を挿入する（ステップS208）。
【０１１９】
次いで、変更手順生成手段１６０は、再度システム変更操作を１つ生成する（ステップS204）。図１６は、第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の他の生成例を示す説明図である。図１６（ａ）に示すように、変更手順生成手段１６０は、命令「モジュールAをインストール」を生成する。
【０１２０】
生成された命令を実行する場合、状態モデル更新手段１１０は、モジュールAを表す状態モデルの状態を、稼働状態である状態tに変更する。図１６（ｂ）は、モジュールAを表す状態モデルが変更された後の状態モデルの集合を示す。
【０１２１】
図１６（ｂ）に示す状態モデルの集合を参照すると、dbは稼働状態である状態tのままである。よって、回帰テスト挿入手段１４０は、回帰テスト付変更手順にdbに対する回帰テストコードを実行する操作を挿入する（ステップS208）。
【０１２２】
次いで、変更手順生成手段１６０は、再度システム変更操作を１つ生成する（ステップS204）。図１７は、第２の実施形態のテスト手順生成システム１００による回帰テスト付変更手順の他の生成例を示す説明図である。図１７（ａ）に示すように、変更手順生成手段１６０は、命令「s1を再起動」を生成する。
【０１２３】
生成された命令を実行する場合、状態モデル更新手段１１０は、s1を表す状態モデルの状態を、稼働状態である状態tに変更する。図１７（ｂ）は、s1を表す状態モデルが変更された後の状態モデルの集合を示す。
【０１２４】
図１７（ｂ）に示す状態モデルの集合を参照すると、s1とdbは共に稼働状態である状態tである。よって、回帰テスト挿入手段１４０は、回帰テスト付変更手順にs1に対する回帰テストコードを実行する操作、およびdbに対する回帰テストコードを実行する操作を挿入する（ステップS208）。
【０１２５】
次いで、変更手順生成手段１６０は、状態モデル格納手段１３０に格納されている状態モデルが、状態モデル（更新後構成）が示す状態モデルであるか否かを確認する（ステップS202）。既に状態モデル（更新後構成）が示す状態モデルである（ステップS203におけるYes）、すなわち変更処理が完了しているため、テスト手順生成システム１００は、回帰テスト付変更手順生成処理を終了する。
【０１２６】
なお、各実施形態のテスト手順生成システム１００は、例えば、記憶媒体に格納されているプログラムに従って処理を実行するCPU(Central Processing Unit)によって実現される。すなわち状態モデル更新手段１１０、状態確認手段１２０、回帰テスト挿入手段１４０、変更手順実行手段１５０、および変更手順生成手段１６０は、例えば、プログラム制御に従って処理を実行するCPUによって実現される。
【０１２７】
また、状態モデル格納手段１３０は、例えばRAM(Random Access Memory)で実現される。
【０１２８】
また、各実施形態のテスト手順生成システム１００における各部は、ハードウェア回路によって実現されてもよい。一例として、状態モデル更新手段１１０、状態確認手段１２０、状態モデル格納手段１３０、回帰テスト挿入手段１４０、変更手順実行手段１５０、および変更手順生成手段１６０が、それぞれLSI(Large Scale Integration)で実現される。また、それらが１つのLSIで実現されていてもよい。
【０１２９】
次に、本発明の概要を説明する。図１８は、本発明によるテスト手順生成システムの概要を示すブロック図である。本発明によるテスト手順生成システム１０は、変更対象システムを構成する要素（例えば、コンポーネント）を表す状態モデルを変更対象システムが変更される時に実行される変更手順に含まれる要素に対する変更操作を用いて更新する更新手段１１（例えば、状態モデル更新手段１１０）と、更新手段１１が回帰テスト対象の要素を表す状態モデルの状態を稼働状態に更新した時に用いた変更操作の次の操作として回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加する追加手段１２（例えば、回帰テスト挿入手段１４０）とを含む。
【０１３０】
そのような構成により、テスト手順生成システムは、偽の失敗が発生しないように配慮された回帰テストコードを実行する操作が含まれる変更手順を生成できる。
【０１３１】
また、追加手段１２は、更新手段１１が回帰テスト対象の要素を表す状態モデルの状態を稼働状態から更新しなかった時に用いた変更操作の次の操作として回帰テスト対象の要素に対する回帰テストが実行される操作を変更手順に追加してもよい。
【０１３２】
そのような構成により、テスト手順生成システムは、偽の失敗が発生しないように配慮された回帰テストコードを実行する操作が含まれる変更手順を生成できる。
【０１３３】
また、テスト手順生成システム１０は、回帰テストが実行される操作が追加された変更手順を実行することによって変更対象システムを変更する変更手段（例えば、変更手順実行手段１５０）を含んでもよい。
【０１３４】
そのような構成により、テスト手順生成システムは、システム構成の変更作業中に偽の失敗を発生させずに回帰テストを実行できる。
【０１３５】
また、テスト手順生成システム１０は、変更される前の変更対象システムの構成定義と変更された後の変更対象システムの構成定義とを用いて変更手順を生成する生成手段（例えば、変更手順生成手段１６０）を含んでもよい。
【０１３６】
また、変更対象システムの構成定義には、変更対象システムを構成する要素を表す状態モデルが含まれていてもよい。
【０１３７】
そのような構成により、テスト手順生成システムは、変更手順が与えられなくても回帰テスト付変更手順を生成できる。
【０１３８】
また、テスト手順生成システム１０は、回帰テスト対象の要素を表す状態モデルの状態が稼働状態に更新されたことを追加手段１２に通知する通知手段（例えば、状態確認手段１２０）を含み、追加手段１２は、通知手段からの通知を受けて回帰テストが実行される操作を変更手順に追加してもよい。
【０１３９】
そのような構成により、テスト手順生成システムは、更新された状態モデルの確認処理を減らすことができる。
【０１４０】
また、変更手順は、構成変更自動化ツール用の表記方法で記述されてもよい。
【０１４１】
また、テスト手順生成システム１０は、変更対象システムを構成する要素を表す状態モデルを格納する格納手段（例えば、状態モデル格納手段１３０）を含んでもよい。
【０１４２】
また、更新手段１１は、初期状態定義および状態変更定義を参照して、格納手段に格納されている状態モデルを変更操作を用いて更新してもよい。
【０１４３】
また、通知手段は、格納手段に格納されている状態モデルを参照して、回帰テスト対象の要素を表す状態モデルの状態が稼働状態である時に追加手段１２を起動してもよい。
【産業上の利用可能性】
【０１４４】
本発明は、ICT(Information and Communication Technology)システムの更新作業の信頼度を向上させるために更新作業中に回帰テスト等の適切なテストを実行する用途に好適に適用される。
【符号の説明】
【０１４５】
１０、１００  テスト手順生成システム
１１  更新手段
１２  追加手段
１１０  状態モデル更新手段
１２０  状態確認手段
１３０  状態モデル格納手段
１４０  回帰テスト挿入手段
１５０  変更手順実行手段
１６０  変更手順生成手段
２００  更新対象システム
８００  変更対象システム
９００  テスト実行システム
９１０  変更手順実行手段
９２０  回帰テスト実行手段
【図１】
2018097658.tif 000003
【図２】
2018097658.tif 000004
【図３】
2018097658.tif 000005
【図４】
2018097658.tif 000006
【図５】
2018097658.tif 000007
【図６】
2018097658.tif 000008
【図７】
2018097658.tif 000009
【図８】
2018097658.tif 000010
【図９】
2018097658.tif 000011
【図１０】
2018097658.tif 000012
【図１１】
2018097658.tif 000013
【図１２】
2018097658.tif 000014
【図１３】
2018097658.tif 000015
【図１４】
2018097658.tif 000016
【図１５】
2018097658.tif 000017
【図１６】
2018097658.tif 000018
【図１７】
2018097658.tif 000019
【図１８】
2018097658.tif 000020
【図１９】
2018097658.tif 000021
【図２０】
2018097658.tif 000022
【図２１】
2018097658.tif 000023
【図２２】
2018097658.tif 000024