(57)【要約】【課題】システムにおける計算資源を削減する検証情報生成装置、検証情報生成方法、及び検証情報生成プログラムを提供する。【解決手段】システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する状態遷移検出部２と、状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する状態遷移ペア管理部３と、状態遷移検出部２で検出した遷移のうち、まだ選択していない遷移を実行した場合に検出される状態遷移ペア情報の数が最も多い遷移を選択する遷移選択部４と、遷移選択部４が選択した遷移に基づいてテストケースを生成する、テストケース生成部５と、を有する検証情報生成装置１である。【選択図】図３
2020009271.tif 000002
【特許請求の範囲】
【請求項１】
システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する、状態遷移検出手段と、
状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する、状態遷移ペア管理手段と、
前記状態遷移検出手段で検出した前記遷移のうち、まだ選択していない遷移を実行した場合に検出される前記状態遷移ペア情報の数が最も多い遷移を選択する、遷移選択手段と、
前記遷移選択手段が選択した前記遷移に基づいてテストケースを生成する、テストケース生成手段と、
を有することを特徴とする検証情報生成装置。
【請求項２】
請求項１に記載の検証情報生成装置であって、
状態遷移検出手段は、遷移選択手段により選択された前記遷移を実行した次の状態を、新しい前記対象とする状態とする、
ことを特徴とする検証情報生成装置。
【請求項３】
請求項１又は２に記載の検証情報生成装置であって、
前記状態遷移ペア情報は、前記状態要素と異なる状態要素の状態と、前記遷移とを関連付けた情報である
ことを特徴とする検証情報生成装置。
【請求項４】
請求項１から３のいずれか一つに記載の検証情報生成装置であって、
前記状態遷移ペア管理手段は、前記遷移を実行した場合、検出される状態遷移ペア情報にチェック情報を関連付ける、
ことを特徴とする検証情報生成装置。
【請求項５】
（ａ）システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する、ステップと、
（ｂ）状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する、ステップと、（ｃ）前記（ａ）のステップにおいて検出した前記遷移のうち、まだ選択していない遷移を実行した場合に検出される前記状態遷移ペア情報の数が最も多い遷移を選択する、ステップと、
（ｄ）前記（ｃ）のステップにおいて選択した前記遷移に基づいてテストケースを生成する、ステップと、
を有することを特徴とする検証情報生成方法。
【請求項６】
コンピュータに
（ａ）システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する、ステップと、
（ｂ）状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する、ステップと、（ｃ）前記（ａ）のステップにおいて検出した前記遷移のうち、まだ選択していない遷移を実行した場合に検出される前記状態遷移ペア情報の数が最も多い遷移を選択する、ステップと、
（ｄ）前記（ｃ）のステップにおいて選択した前記遷移に基づいてテストケースを生成する、ステップと、
を実行させることを特徴とする検証情報生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムの検証に用いる検証情報を生成する検証情報生成装置、検証情報生成方法、及び検証情報生成プログラムに関する。
【背景技術】
【０００２】
近年、情報通信技術システム（ＩＣＴ（Information and Communication Technology）システム）などは社会を支えるインフラの一つとなっており、その重要性は増している。一方で、ＩＣＴシステムの大規模化、複雑化が進んでおり、その構築又は変更の実施は困難である。そこで、ＩＣＴシステムの構築又は変更を効率的に行うことを目的とした、構成管理技術が注目されている。
【０００３】
例えば、ＩＣＴシステムの構成管理技術は、一般的に、ＩＣＴシステムのモデルを開発し、開発したモデルを用いて、ＩＣＴシステムの構築又は変更をする。モデル開発を伴うＩＣＴシステムの構成管理技術の一つに、ＩＣＴシステムが有する部品（状態要素）の構築又は変更する手順を、自動的に生成する技術が知られている。
【０００４】
特許文献１及び非特許文献１には、システムの構築又は変更後の状態がモデルとして宣言的に記述された情報を用いて、システムの現在の状態と、システムの構築後又は変更後の状態との差分を計算し、システムを構築又は変更する手順を自動的に算出する技術が開示されている。
【０００５】
なお、特許文献１及び非特許文献１で開示されている、システムの状態をモデルとして宣言的に記述する状態モデルについて説明する。なお、特許文献１では、「状態モデル」を「状態マシン群」と呼び、「状態要素」を「状態マシン」と呼んでいる。
【０００６】
状態モデルは、システムを変更する手順において、手順を計算するのに必要な情報を表したデータモデルで、状態要素と状態要素間の依存性とにより構成される。
【０００７】
状態要素は、独立して状態を持つシステム構成中の部品を表し、手順の計算において考慮される最小の構成単位となる。また、状態要素は、排他的な複数の状態と、その複数の状態間の状態遷移（遷移）により定義される。状態は、システムがとり得る状態を表す。また、状態は、複数の状態を定義でき、必ず一つの現在の状態（現在状態）と、現在の状態から要求により変化する任意の数の状態（要求状態）を含む。
【０００８】
遷移は、システムがどの状態からどの状態へ変化可能かを表し、同一の状態要素における任意の状態間の変化と定義できる。
【０００９】
次に、依存性は、ある状態要素における遷移から、他の状態要素の状態に対して定義される。すなわち、前者の状態要素がその遷移を行うためには、後者の状態要素がその状態でなければならないという条件を表す。
【００１０】
なお、状態要素はシステム構成中の部品に対応する。そして、状態要素が行う遷移は、システム構築又は変更の全体の手順のうち部品が行う単一の工程と同義である。
【００１１】
図１を用いて状態モデルについて具体的に説明をする。図１は、状態モデルを説明するための図である。図１では、状態要素ＴＣ、ＵＶ（例えば、ソフトウェアなどの部品）は長方形で表し、状態ｆ、ｔは楕円形で表している。なお、状態要素ＴＣ、ＵＶは、状態要
素それぞれを識別する識別情報である。
【００１２】
また、図１では、現在状態ｆを二重線の楕円形で表し、要求状態ｔを黒塗りの楕円形で表している。現在状態ｆは、例えば、ソフトウェアがインストールされていない状態を表し、要求状態ｔは、例えば、ソフトウェアがインストールされている状態を表している。
【００１３】
更に、状態遷移を実線の矢印線で表し、依存性を破線の矢印線で表している。なお、図１では、依存性は、状態要素ＴＣから要求状態ｔへ至る矢印線で表している。これは、状態要素ＴＣにおける状態遷移が、要求状態ｔに依存していることを表す。言い換えれば、ある状態要素ＴＣが、他の状態要素ＵＶの状態に依存する状態遷移を含む場合、状態要素ＴＣは状態要素ＵＶに依存する。又は、状態要素ＴＣは状態要素ＵＶへの依存性を持つ。
【００１４】
続いて、モデル開発の検証に関するテスト技術について説明する。システムの構成管理におけるモデル開発では、モデルの妥当性を確認するために、ソフトウェア開発と同様に、開発物が期待通りのものかを検証する必要がある。しかし、モデル開発の検証に関するテスト技術には、現状デファクトが存在しないため、モデル開発者がソフトウェアテスト技術を流用するなどして、独自のテストを行うにとどまる。
【００１５】
テストケース（検証情報）は一般的に、ソフトウェアが多様な入力内容や利用環境に対して適切に動作することを確認するため、それらの多くのパラメータの組み合わせを網羅するよう作成する。ところが、その組み合わせの数は膨大であるため、テスト工数を現実的なものに抑えるためには、組み合わせの取捨選択が必要となる。
【００１６】
そこで、モデル開発への適用が見込めるソフトウェアテスト技術の一つとしてペアワイズ法がある。ペアワイズ法は、テストの品質（例えば、バグを発見できる精度）を大きく損ねることなく、テストケースに採用する組み合わせを削減できる技術である。具体的には、全てのパラメータ間で全ての値の組み合わせを網羅するテストケースを作成するのではなく、任意の二つのパラメータに着目したとき、その二つのパラメータ間で全ての値の組み合わせが網羅されるテストケースを作成する。
【００１７】
ウェブサイトのテストケースの作成を例に説明する。図２は、ペアワイズ法を説明するための図である。具体的には、図２は、ユーザがウェブサイトにアクセスする際に利用する、オペレーティングシステム、ブラウザ、検索エンジンを組み合わせた、テストケースを示している。すなわち、ユーザが使用するパラメータの候補として、オペレーティングシステムではＯＳ＿Ｗ又はＯＳ＿Ｌを、ブラウザではＢＲ＿Ｃ又はＢＲ＿Ｆ、検索エンジンではＳＥ＿Ｇ又はＳＥ＿Ｙを想定したテストケースを示している。
【００１８】
この場合、パラメータそれぞれがとり得る値は二種類であるため、全てのパラメータ間での全ての値の組み合わせを網羅するテストケースを作成すると、８個（２の３乗個）のテストケースが作成される。
【００１９】
しかし、ペアワイズ法では、図２に示すように、４個のテストケースのみが作成される。理由は、図２のどの二つのパラメータ（列）に着目しても、それらのパラメータ間で全ての値を組み合わせた４種類（２の２乗）が網羅されている。このように、任意の二つのパラメータに着目したとき、その二つのパラメータ間で全ての値の組み合わせが網羅されるテストケースを作成するのがペアワイズ法である。
【００２０】
また、ペアワイズ法では、ソフトウェアの不具合は、多くの場合、少ない要素（例えば、二つか三つの要素）間の組み合わせの問題により発生するという経験則に基づいている。従って、ペアワイズ法では、上述したテストの品質を大きく損ねることなく、テストケ
ース数を削減できる。
【００２１】
更に、一般的なペアワイズ法は、入力や環境をパラメータとしたテスト技術であるため、状態モデルのテストには適さない。対して、状態遷移系を対象としたペアワイズ法は、状態モデルの基本的な概念は状態遷移系と同様であるため、状態モデルのテストに親和性があると考えられる。
【００２２】
関連する技術として、非特許文献２には、状態をパラメータとし、遷移を値として、特定の条件を満たしたパスを全て列挙し、列挙したすべてのパスをテストケースとする技術が開示されている。
【００２３】
また、非特許文献３には、テスト対象をモデル化した状態遷移系のパスを通るイベント列を列挙し、各イベント列に含まれるイベントの各パラメータの値をクラス分割し、イベント列ごとに、イベントをパラメータとし、クラスを値としたペアワイズ法を用いてテストケースを生成する技術が開示されている。
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】特開２０１５−２１５８８５号公報
【非特許文献】
【００２５】
【非特許文献１】Kuroda T，et al.，“Model-based IT Change Management for Large System Definitions with State-related Dependencies”，Proc. of EDOC 2014，2014.
【非特許文献２】鶴巻敏郎，“オープンソースの組み合わせテストツールの開発−組み合わせにおける制約の表形式でのモデル化−”，JaSST 2009，2009.
【非特許文献３】Cu D. Nguyen，et al.，“Combining Model-Based and Combinatorial Testing for Effective Test Case Generation”，Proc. of ISSTA 2012，2012.
【発明の概要】
【発明が解決しようとする課題】
【００２６】
しかしながら、非特許文献２、３に開示されている、上述したモデル開発の検証に関するテスト技術では、例えば、ＩＣＴシステムがとり得る状態の数が膨大であるにもかかわらず、それら膨大な状態を予め全て用意した上で、テスト処理を行う必要がある。また、実際のシステムは非常に大規模なため、それを現実的な時間で処理するためには、膨大な計算資源が必要になる。
【００２７】
例えば、ＩＣＴシステムがとり得る状態を全て記憶できるサイズの記憶部などが必要になるが、通常そのような条件を満たすことは難しい。仮に、そのような条件を満たせたとしても、構築又は変更に関する処理の処理速度は大幅に低下してしまう。
【００２８】
また、非特許文献２、３に開示されている、上述したモデル開発の検証に関するテスト技術では、システム全体から見た状態が異なる場合、部品をペアワイズ法における異なるパラメータとして扱う。そのため、ＩＣＴシステムを構成する殆どの部品の状態が同じだとしても、部品の一部でも状態が異なる場合、パラメータ間で全てのパラメータ値（ＩＣＴシステムに対する操作）の組み合わせを網羅する検証を行う。
【００２９】
ペアワイズ法における、ＩＣＴシステムの不具合は、少数の部品間における状態と、操作の組み合わせとにより発生するケースが多いという考え方からすれば、上述したテスト技術における検証は、粒度が細かすぎるため、テストケースが膨大になる。そのため、膨大な計算資源が必要になる。
【００３０】
本発明の目的の一例は、システムにおける計算資源を削減する検証情報生成装置、検証情報生成方法、及び検証情報生成プログラムを提供することにある。
【課題を解決するための手段】
【００３１】
上記目的を達成するため、本発明の一側面における検証情報生成装置は、
システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する、状態遷移検出部と、
状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する、状態遷移ペア管理部と、
前記状態遷移検出部で検出した前記遷移のうち、まだ選択していない遷移を実行した場合に検出される前記状態遷移ペア情報の数が最も多い遷移を選択する、遷移選択部と、
前記遷移選択部が選択した前記遷移に基づいてテストケースを生成する、テストケース生成部と、
を有することを特徴とする。
【００３２】
また、上記目的を達成するため、本発明の一側面における検証情報生成方法は、
（ａ）システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する、ステップと、
（ｂ）状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する、ステップと、（ｃ）前記（ａ）のステップにおいて検出した前記遷移のうち、まだ選択していない遷移を実行した場合に検出される前記状態遷移ペア情報の数が最も多い遷移を選択する、ステップと、
（ｄ）前記（ｃ）のステップにおいて選択した前記遷移に基づいてテストケースを生成する、ステップと、
を有することを特徴とする。
【００３３】
更に、上記目的を達成するため、本発明の一側面における検証情報生成プログラムは、
コンピュータに
（ａ）システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する、ステップと、
（ｂ）状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する、ステップと、（ｃ）前記（ａ）のステップにおいて検出した前記遷移のうち、まだ選択していない遷移を実行した場合に検出される前記状態遷移ペア情報の数が最も多い遷移を選択する、ステップと、
（ｄ）前記（ｃ）のステップにおいて選択した前記遷移に基づいてテストケースを生成する、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００３４】
以上のように本発明によれば、システムにおける計算資源を削減することができる。
【図面の簡単な説明】
【００３５】
【図１】図１は、状態モデルを説明するための図である。
【図２】図２は、ペアワイズ法を説明するための図である。
【図３】図３は、検証情報生成装置の一例を示す図である。
【図４】図４は、検証情報生成装置を有するシステムを示す図である。
【図５】図５は、状態モデルの一例を示す図である。
【図６】図６は、状態モデルの一例を示す図である。
【図７】図７は、テストケース（遷移列）の一例を示す図である。
【図８】図８は、検証情報生成装置の動作の一例を示す図である。
【図９】図９は、ステップＡ３の疑似コードの一例を示す図である。
【図１０】図１０は、ステップＡ３の動作の一例を示す図である。
【図１１】図１１は、検証情報生成装置を実現するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００３６】
（実施の形態）
以下、本発明の実施の形態について、図３から図１１を参照しながら説明する。
【００３７】
［装置構成］
最初に、図３を用いて、本実施の形態における検証情報生成装置の構成について説明する。図３は、検証情報生成装置の一例を示す図である。
【００３８】
図３に示すように、検証情報生成装置１は、システム（例えば、ＩＣＴシステムなど）における計算資源を削減するための装置である。検証情報生成装置１は、状態遷移検出部２と、状態遷移ペア管理部３と、遷移選択部４と、テストケース生成部５とを有する。
【００３９】
このうち、状態遷移検出部２は、システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する。状態遷移ペア管理部３は、状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する。遷移選択部４は、状態遷移検出部２で検出した遷移のうち、まだ選択していない遷移を実行した場合に検出される状態遷移ペア情報の数が最も多い遷移を選択する。テストケース生成部５は、遷移選択部４が選択した遷移に基づいてテストケースを生成する。
【００４０】
このように、本実施の形態では、ペアワイズ法の考えに則り、予め生成した状態遷移ペア情報を用いて、必要な範囲のテストケースを生成する。そのため、従来のようにシステムがとり得る膨大な数の状態を、予め全て用意してからシステムの構築又は変更に関する処理を行う必要がないので、処理に必要な計算資源を削減することができる。また、計算資源を削減できるため、より大規模なシステムの検証ができる。更に、テストケースの数を削減できるので、検証をする工数も削減できる。
【００４１】
続いて、図４を用いて、本実施の形態における検証情報生成装置１の構成をより具体的に説明する。図４は、検証情報生成装置を有するシステムを示す図である。
【００４２】
図４に示すように、本実施の形態における検証情報生成装置１は、状態遷移検出部２と、状態遷移ペア管理部３と、遷移選択部４と、テストケース生成部５とに加えて、入力装置６と、出力装置７、記憶部８とを有する。
【００４３】
状態遷移検出部２は、対象とする状態ＣＳ１が遷移できる遷移を検出する。具体的には、状態遷移検出部２は、システムに対応する、複数の状態要素を有する状態モデルを取得し、取得した状態モデルを用いて、システム全体の現在の状態ＣＳ１を検出する。続いて、状態遷移検出部２は、検出した状態ＣＳ１を、検出済みの状態として、検出済みの状態を記憶する状態集合部ＥＳ１に記憶する。状態集合部ＥＳ１は、検証情報生成装置１内部に設けられている記憶部８、又は、その外部に設けられている不図示の記憶部に設けられる。続いて、状態遷移検出部２は、状態ＣＳ１から実行可能な遷移を全て取得する。
【００４４】
また、状態遷移検出部２は、対象とする状態ＣＳ１が遷移することで得られる状態ＮＳ１を検出し、検出した状態ＮＳ１を次の対象とする状態ＣＳ１とする。
【００４５】
状態遷移ペア管理部３は、状態遷移ペア管理部３内部の記憶部、又は、上述した記憶部８などに予め設けられる状態遷移ペア記憶部ＭＩ１を管理する。状態遷移ペア記憶部ＭＩ１は、状態要素が状態を遷移した場合における、遷移の主体と異なる状態要素の状態と、遷移の主体となる状態要素の遷移とを関連付けた状態遷移ペア情報を、複数有する。
【００４６】
具体的には、状態遷移ペア管理部３は、状態遷移検出部２が状態ＣＳ１を遷移させる場合、状態遷移ペア記憶部ＭＩ１を参照して、遷移の主体と異なる状態要素ごとに、遷移させる前の状態要素の状態と、遷移の主体となる状態要素の遷移とに一致する、状態遷移ペア情報を検出する。なお、状態遷移ペア情報を検出した場合、状態遷移ペア管理部３は、状態遷移ペア情報に検出したことを示すチェック情報を関連付ける（チェックする）。
【００４７】
更に、図５、図６を用いて具体的に状態遷移ペア情報の生成方法について説明する。図５、図６は、状態モデルの一例を示す図である。図５に示すシステムは、状態要素（部品）Ａ、Ｂを有している。部品Ａ、Ｂそれぞれは、状態ｆと状態ｔとを有する。また、部品Ａ、Ｂが有する状態ｆ、ｔは、状態ｆから状態ｔへ遷移（ｆ→ｔ）する。また、状態ｔから状態ｆへ遷移（ｔ→ｆ）する。
【００４８】
図５、６では、状態要素Ａ、Ｂ、Ｃ（例えば、ソフトウェアなどの部品）は長方形で表し、状態ｆ、ｔは楕円形で表している。また、図５、６では、現在状態ｆを二重線の楕円形で表し、要求状態ｔを黒塗りの楕円形で表している。例えば、現在状態ｆは、例えば、ソフトウェアがインストールされていない状態を表し、要求状態ｔは、例えば、ソフトウェアがインストールされている状態を表している。なお、状態遷移を実線の矢印線で表し、依存性を破線の矢印線で表している。
【００４９】
例えば、部品Ａ、Ｂそれぞれの初期状態が状態ｆである場合に、部品Ａが状態ｆから状態ｔへ遷移（Ａ：ｆ→ｔ）したとする。この場合、状態遷移ペア管理部３は、部品Ｂの状態ｆと、部品Ａの遷移（Ａ：ｆ→ｔ）とを関連付けて状態遷移ペア情報として、状態遷移ペア記憶部ＭＩ１に記憶する。
【００５０】
続けて、部品Ａが状態ｔで、部品Ｂが状態ｆである場合、部品Ｂが状態ｆから状態ｔへ遷移（Ｂ：ｆ→ｔ）したとする。この場合、状態遷移ペア管理部３は、部品Ａの状態ｆと、部品Ｂの遷移（Ｂ：ｆ→ｔ）とを関連付けて状態遷移ペア情報として、状態遷移ペア記憶部ＭＩ１に記憶する。
【００５１】
このように、状態遷移ペア情報の全ての組み合わせを、予め状態遷移ペア記憶部ＭＩ１に記憶する。ただし、状態遷移ペア管理部３は、依存関係により、成立しない状態遷移ペア情報は状態遷移ペア記憶部ＭＩ１に記憶しない。図５において、予め状態遷移ペア記憶部ＭＩ１に記憶する状態遷移ペア情報の組み合わせを以下に示す。
【００５２】
（Ａ：ｆ，Ｂ：ｆ→ｔ）
（Ａ：ｆ，Ｂ：ｔ→ｆ）
（Ａ：ｔ，Ｂ：ｆ→ｔ）
（Ｂ：ｆ，Ａ：ｆ→ｔ）
（Ｂ：ｆ，Ａ：ｔ→ｆ）
（Ｂ：ｔ，Ａ：ｆ→ｔ）
（Ｂ：ｔ，Ａ：ｔ→ｆ）
【００５３】
なお、状態遷移ペア情報（Ａ：ｔ，Ｂ：ｔ→ｆ）は、図５に示すように、依存関係が存在するため、部品Ａが状態ｔのとき、部品Ｂは遷移ｔ→ｆを実行できないからである。
【００５４】
また、システム全体を構成する部品の数が増えても、状態遷移ペア情報の形式には変化はない。図６に示すシステムは、状態要素（部品）Ａ、Ｂ、Ｃを有する。部品Ａ、Ｂ、Ｃそれぞれの初期状態が状態ｆである場合、部品Ａが状態ｆから状態ｔへ遷移（Ａ：ｆ→ｔ）したとする。この場合、部品Ｂの状態ｆと、部品Ａの遷移（Ａ：ｆ→ｔ）とを関連付けて状態遷移ペア情報として、状態遷移ペア記憶部ＭＩ１に記憶する。
【００５５】
図６のシステムの部品Ａ、Ｂ、Ｃそれぞれの初期状態が状態ｆである場合には、いずれも初期状態状態ｆから部品Ａが状態ｔへ遷移（ｆ→ｔを実行）した場合、チェックされる状態遷移ペア情報は（Ｂ：ｆ，Ａ：ｆ→ｔ）と（Ｃ：ｆ，Ａ：ｆ→ｔ）である。
【００５６】
なお、上述した状態遷移検出部２が検出する状態及び状態集合部ＥＳ１が記憶する状態と、状態遷移ペア情報として記憶される状態とは、同じ粒度ではない。すなわち、状態遷移検出部２が検出する状態及び状態集合部ＥＳ１が記憶する状態は、システム全体の状態である。図６の例であれば、部品Ａが状態ｔかつ部品Ｂが状態ｆかつ部品Ｃが状態ｆと表される情報である。対して、状態遷移ペアとして保持される状態は、任意の一つの部品の状態を示す。
【００５７】
続いて、状態遷移ペア管理部３が予め生成する状態遷移ペア情報の生成方法について説明する。システムに含まれる任意の状態要素（部品）のペアについて、一方の状態要素の状態と、他方の状態要素の遷移の組み合わせとを全て生成する。ただし、依存性の都合で実現し得ない状態遷移ペア情報は除外する。
【００５８】
例えば、図５における任意の部品の状態遷移ペア情報の一例として、部品Ａと部品Ｂのペアの場合であれば、生成する状態遷移ペア情報は上述した通りである。
【００５９】
これは、部品Ａの状態ｆ及びｔと部品Ｂの遷移ｆ→ｔ及びｔ→ｆ、並びに部品Ｂの状態ｆ及びｔと部品Ａの遷移ｆ→ｔ及びｔ→ｆの全てのペアを列挙している。ただし、依存性の都合で実現し得ない（Ａ：ｔ，Ｂ：ｔ→ｆ）は除く。これを、任意の部品のペア全てについて作成する。例えば、図５のシステムにおける部品のペアはＡとＢのみだが、図６のシステムにおける部品のペアはＡとＢ、ＡとＣ、ＢとＣである。
【００６０】
なお、パラメータの全ての組み合わせについてテストするのではなく、任意の二つのパラメータの組み合わせについてテストするのがペアワイズ法である。
【００６１】
遷移選択部４は、状態遷移検出部２により抽出した遷移のうちで、まだ選択していない遷移から実行することで、チェックされる状態遷移ペア情報の数が最も多い遷移Ｔ１を選択する。具体的には、遷移選択部４は、現在の対象である状態ＣＳ１から各部品（状態要素）が遷移可能な候補のうち、実行することで状態遷移ペア管理部３が管理するチェック済みの状態遷移ペアが最も多くなる遷移を選択する。
【００６２】
テストケース生成部５は、状態遷移検出部２が状態遷移系を探索した範囲において、システムを検証するためのテストケース（検証情報）を生成する。テストケースは、例えば、システムの初期状態からある状態まで、部品ごとに実行した遷移の列である。部品の遷移は、システム構築又は変更の全体の手順のうち、部品が行う単一の工程と同義であり、遷移の列は、システム構築又は変更の全体の手順と同義である。
【００６３】
図３のシステムにおいて、部品Ａが遷移（Ａ：ｆ→ｔ）を実行した後、部品Ｂが遷移（Ｂ：ｆ→ｔ）を実行するという遷移列は、テストケースの一つである。図７は、テストケース（遷移列）の一例を示す図である。なお、図７はイメージであり、図７の形式に限定されるものではない。
【００６４】
入力装置６は、検証情報生成装置１に接続され、状態モデルを検証情報生成装置１へに出力する装置である。出力装置７は、検証情報生成装置１に接続され、検証情報生成装置１から出力されるテストケースを取得する装置である。
【００６５】
［装置動作］
次に、本発明の実施の形態における検証情報生成装置１の動作について図８を用いて説明する。図８は、検証情報生成装置の動作の一例を示す図である。以下の説明においては、適宜図３から図７を参酌する。また、本実施の形態では、検証情報生成装置１を動作させることによって、検証情報生成方法が実施される。よって、本実施の形態における検証情報生成方法の説明は、以下の検証情報生成装置の動作説明に代える。
【００６６】
まず、検証情報生成装置１は、検証対象のシステムの状態モデルＭ１を取得する（ステップＡ１）。具体的には、検証情報生成装置１は、入力装置６から出力された状態モデルＭ１を取得する。続いて、検証情報生成装置１は、状態モデルＭ１からシステム全体の初期状態ＩＳ１を検出する（ステップＡ２）。
【００６７】
その後、検証情報生成装置１は、初期状態ＩＳ１を最初の探索対象とし、再帰的に深さ優先探索を行う（ステップＡ３）。ステップＡ３の処理については後述する。続いて、検証情報生成装置１は、ステップＡ３で記憶した全てのテストケースを出力する（ステップＡ４）。具体的には、検証情報生成装置１は、出力装置７へテストケースを出力する。
【００６８】
続いて、図９、図１０を用いて、ステップＡ３の動作について詳細に説明する。図９は、ステップＡ３の疑似コードの一例を示す図である。図１０は、ステップＡ３の動作の一例を示す図である。
【００６９】
最初に、状態遷移検出部２は、現在の対象である状態ＣＳ１が検出済みか、又は、状態遷移ペア情報の全てがチェック済みであるか否かを判定する（ステップＡ１３１）。
【００７０】
テストケース生成部５は、現在探索対象の状態ＣＳ１が状態集合部ＥＳ１に記憶されているか、又は、状態遷移ペア管理部３が管理する状態遷移ペア情報の全てがチェック済みである場合（ステップＡ１３１：Ｙｅｓ）、その時点における、遷移を記憶する遷移スタックＴＳ１の内容をテストケースとして、上述した記憶部８などに記憶する（ステップＡ１３２）。
【００７１】
その後、状態遷移検出部２は、現在のステップＡ３の再帰処理を終了する。
【００７２】
なお、ステップＡ３は、ステップ全体で、上述した再帰的な深さ優先探索における再帰一段分の処理を表している。また、後述するステップＡ１４１で次の段の再帰に進む。また、ステップＡ１３２は、再帰処理全体を終了するのではなく、再帰一段分（ステップＡ３一つ分）を終了する。従って、次の処理は、一つ前の段の再帰のステップＡ１４１となる。なお、ステップＡ１４１において、最初の段の再帰であった場合、再帰処理全体が終了する。
【００７３】
続いて、状態遷移検出部２は、現在探索対象の状態ＣＳ１が状態集合部ＥＳ１に含まれているか、又は、状態遷移ペア管理部３が管理する状態遷移ペア情報の全てがチェック済みでない場合（ステップＡ１３１：Ｎｏ）、状態ＣＳ１を状態集合部ＥＳ１に記憶する（ステップＡ１３３）。
【００７４】
具体的には、対象とする状態ＣＳ１が初期状態に最初に訪れる場合、現在探索対象の状
態ＣＳ１が状態集合部ＥＳ１に含まれず、かつ状態遷移ペア情報全てがチェック済みではないので、状態遷移検出部２はステップＡ１３３の処理を実行する。一方、現在探索対象の状態ＣＳ１が初期状態に戻る（二回目以降訪れる）場合、初期状態は必ず最初に探索済みなので、状態集合部ＥＳ１に含まれており、再帰を一段終了する。
【００７５】
なお、状態遷移検出部２は、現在探索対象の状態ＣＳ１を探索した場合に、記憶部８に検出済み状態であることを記憶する。例えば、対象とする状態ＣＳ１を、状態集合部ＥＳ１に追加する。
【００７６】
続いて、状態遷移検出部２は、対象とする状態ＣＳ１から実行可能な遷移全て抽出する（ステップＡ１３４）。続いて、状態遷移検出部２は、抽出した遷移に、まだ選ばれていない遷移があるか否かを判定する（ステップＡ１３５）。状態遷移検出部２は、選ばれていない遷移がある場合（ステップＡ１３５：Ｙｅｓ）、ステップＡ１３６の処理を実行する。また、選ばれていない遷移がない場合（ステップＡ１３５：Ｎｏ）、状態遷移検出部２は、ステップＡ１４２の処理を実行する。
【００７７】
続いて、状態遷移検出部２は、選ばれていない遷移がある場合、残りの遷移において新たにチェックされる状態遷移ペア情報があるか否かを判定する（ステップＡ１３６）。
【００７８】
残りの遷移において新たにチェックされる状態遷移ペア情報がある場合（ステップＡ１３６：Ｙｅｓ）、状態遷移検出部２は、ステップＡ１３７の処理を実行する。また、残りの遷移で新たにチェックされる状態遷移ペア情報がない場合（ステップＡ１３６：Ｎｏ）、状態遷移検出部２は、ステップＡ１４２の処理を実行する。
【００７９】
ステップＡ１３７においては、遷移選択部４が、ステップＡ１３４において状態遷移検出部２により抽出した遷移のうち、まだ選択していない遷移から実行することで、チェックされる状態遷移ペア情報の数が最も多い遷移Ｔ１を選択する。具体的には、遷移選択部４は、現在の対象である状態ＣＳ１から各部品が遷移可能な候補のうち、実行することで状態遷移ペア管理部３が管理するチェック済みの状態遷移ペアが最も多くなる遷移を選択する。
【００８０】
続いて、状態遷移検出部２は、例えば、遷移スタックＴＳ１に選択した遷移Ｔ１をプッシュする（ステップＡ１３８）。続いて、状態遷移検出部２は、対象とする状態ＣＳ１が遷移することで得られる状態ＮＳ１を検出し、検出した状態ＮＳ１を、次の対象とする状態ＣＳ１とする。
【００８１】
続いて、状態遷移ペア管理部３は、部品の状態と遷移Ｔ１との状態遷移ペア情報をチェック済みにする（ステップＡ１３９）。具体的には、状態遷移ペア管理部３は、遷移Ｔ１を遷移させる主体である部品と異なる部品それぞれの状態を列挙し、その中の任意の一つの状態と遷移Ｔ１と一致する状態遷移ペア情報を全て検出する。そして、状態遷移ペア管理部３は、状態遷移ペア情報に検出したことを示すチェック情報を関連付ける。
【００８２】
続いて、状態遷移検出部２は、現在探索対象の状態ＣＳ１が遷移Ｔ１することで得られる状態ＮＳ１を探索対象として、再帰的に深さ優先探索を行う（ステップＡ１４０）。ただし、状態遷移検出部２は、再帰的な深さ優先探索が完了した場合（再帰処理がここまで戻ってきた場合）、遷移スタックＴＳ１から遷移Ｔ１をポップする（ステップＡ１４１）。
【００８３】
続いて、状態遷移検出部２は、ステップＡ１３７において一度も遷移を選んでいないか否かを判定する（ステップＡ１４２）。ステップＡ１３７において一度も遷移を選んでい
ない場合（ステップＡ１４２：Ｙｅｓ）、状態遷移検出部２は、ステップＡ１３２の処理を実行する。ステップＡ１３７において一度でも遷移を選んでいる場合（ステップＡ１４２：Ｎｏ）、状態遷移検出部２は、ステップＡ３の処理を終了する（再帰一段分の処理を終了する）。
【００８４】
そして、状態遷移検出部２は、ステップＡ１３７で選択していない遷移がなくなるまで、ステップＡ１３５からＡ１４１の処理を繰り返し実行する（ステップＡ１３５：Ｙｅｓ）。また、ステップＡ１３７で遷移を選択する際、新たにチェックされる状態遷移ペア情報がない遷移だけの場合、ステップＡ１３５からＡ１４１の繰り返し処理を抜ける（ステップＡ１３６：Ｎｏ）。
【００８５】
更に、ステップＡ１３５又はステップＡ１３６で繰り返し処理を抜けた際、ステップＡ１３７で一つも遷移を選択しなかった場合、テストケース生成部５は、その時点での遷移スタックＴＳ１の内容を、テストケースとして記憶部８などに記憶する。すなわち、ステップＡ１３４で取得した遷移全てが、新たにチェックされる状態遷移ペア情報がない場合、テストケース生成部５は、その時点での遷移スタックＴＳ１の内容を、テストケースとして記憶部８などに記憶する。そして、状態遷移検出部２は、ステップＡ３の処理を終了する（再帰一段分の処理を終了する）。
【００８６】
［本実施の形態の効果］
以上のように、本実施の形態によれば、ペアワイズ法の考えに則り、予め生成した状態遷移ペア情報を用いて、必要な範囲のテストケースを生成する。そのため、従来のようにシステムがとり得る膨大な数の状態を、予め全て用意してからシステムの構築又は変更に関する処理を行う必要がないので、処理に必要な計算資源を削減することができる。また、計算資源を削減できるため、より大規模なシステムの検証ができる。更に、テストケースの数を削減できるので、検証をする工数も削減できる。
【００８７】
例えば、状態遷移検出部２は、複数の部品から構成されるＩＣＴシステムの状態遷移系を探索するにあたって、遷移選択部４の出力に従い次に実行する遷移を決定しながら探索を行う。また、状態遷移ペア管理部３は、状態遷移検出部２が状態遷移系の遷移を実行する際、遷移の動作主体と異なるＩＣＴシステム部品毎に、遷移実行前のＩＣＴシステム部品の状態と、実行する遷移とのペア（状態遷移ペア）をチェックする。また、遷移選択部４は、状態遷移検出部２が探索中の状態遷移系の現在状態から実行する遷移を決定するにあたって、遷移の候補のうち、実行することで状態遷移ペア管理部３が管理するチェック済み状態遷移ペアが最も多くなる遷移を選択する。そして、テストケース生成部５は、状態遷移検出部２が状態遷移系を探索した範囲をカバーするテストケースを生成する。
【００８８】
そうすることで、ＩＣＴシステムがとり得る膨大な数の状態を、予め全て用意してからＩＣＴシステムの構築又は変更に関する処理を行う必要がないので、処理に必要な計算資源を削減することができる。また、計算資源を削減できるため、より大規模なシステムの検証ができる。更に、テストケースの数を削減できるので、検証をする工数も削減できる。
【００８９】
［プログラム］
本発明の実施の形態におけるプログラムは、コンピュータに、図８に示すステップＡ１からＡ４、及び、図９、１０に示すステップＡ１３１からＡ１４２を実行させるプログラムであればよい。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態における検証情報生成装置と検証情報生成方法とを実現することができる。この場合、コンピュータのプロセッサは、状態遷移検出部２と、状態遷移ペア管理部３と、遷移選択部４と、テストケース生成部５として機能し、処理を行なう。
【００９０】
また、本実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されてもよい。この場合は、例えば、各コンピュータが、それぞれ、状態遷移検出部２と、状態遷移ペア管理部３と、遷移選択部４と、テストケース生成部５のいずれかとして機能してもよい。
【００９１】
［物理構成］
ここで、実施の形態におけるプログラムを実行することによって、検証情報生成装置を実現するコンピュータについて図１１を用いて説明する。図１１は、検証情報生成装置を実現するコンピュータの一例を示す図である。
【００９２】
図１１に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。なお、コンピュータ１１０は、ＣＰＵ１１１に加えて、又はＣＰＵ１１１に代えて、ＧＰＵ（Graphics Processing Unit）、又はＦＰＧＡ（Field-Programmable Gate Array）を備えていてもよい。
【００９３】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであってもよい。
【００９４】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置があげられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【００９５】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【００９６】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記録媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記録媒体があげられる。
【００９７】
［付記］
以上の実施の形態に関し、更に以下の付記を開示する。上述した実施の形態の一部又は全部は、以下に記載する（付記１）から（付記１２）により表現することができるが、以下の記載に限定されるものではない。
【００９８】
（付記１）
システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する、状態遷移検出部と、
状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する、状態遷移ペア管理部と、
検出した前記遷移のうち、まだ選択していない遷移を実行した場合に検出される前記状態遷移ペア情報の数が最も多い遷移を選択する、遷移選択部と、
前記遷移選択部が選択した前記遷移に基づいてテストケースを生成する、テストケース生成部と、
を有することを特徴とする検証情報生成装置。
【００９９】
（付記２）
付記１に記載の検証情報生成装置であって、
状態遷移検出部は、遷移選択部により選択された前記遷移を実行した次の状態を、新しい前記対象とする状態とする、
ことを特徴とする検証情報生成装置。
【０１００】
（付記３）
付記１又は２に記載の検証情報生成装置であって、
前記状態遷移ペア情報は、前記状態要素と異なる状態要素の状態と、前記遷移とが関連付けた情報である、
ことを特徴とする検証情報生成装置。
【０１０１】
（付記４）
付記１から３のいずれか一つに記載の検証情報生成装置であって、
前記状態遷移ペア管理部は、前記遷移を実行した場合、検出される状態遷移ペア情報にチェック情報を関連付ける、
ことを特徴とする検証情報生成装置。
【０１０２】
（付記５）
（ａ）システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する、ステップと、
（ｂ）状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する、ステップと、（ｃ）前記（ａ）のステップにおいて検出した前記遷移のうち、まだ選択していない遷移を実行した場合に検出される前記状態遷移ペア情報の数が最も多い遷移を選択する、ステップと、
（ｄ）前記（ｃ）のステップにおいて選択した前記遷移に基づいてテストケースを生成する、ステップと、
を有することを特徴とする検証情報生成方法。
【０１０３】
（付記６）
付記５に記載の検証情報生成方法であって、
前記（ａ）のステップにおいて、前記（ｃ）のステップにより選択された前記遷移を実行した次の状態を、新しい前記対象とする状態とする、
ことを特徴とする検証情報生成方法。
【０１０４】
（付記７）
付記５又は６に記載の検証情報生成方法であって、
前記状態遷移ペア情報は、前記状態要素と異なる状態要素の状態と、前記遷移とを関連付けた情報である、
ことを特徴とする検証情報生成方法。
【０１０５】
（付記８）
付記５から７のいずれか一つに記載の検証情報生成方法であって、
前記（ｂ）のステップにおいて、前記遷移を実行した場合、検出される状態遷移ペア情報にチェック情報を関連付ける、
ことを特徴とする検証情報生成方法。
【０１０６】
（付記９）
コンピュータに
（ａ）システムに対応する状態モデルの状態要素から抽出した、対象とする状態から実行できる一つ以上の遷移を検出する、ステップと、
（ｂ）状態と遷移とが関連付けられた複数の状態遷移ペア情報を管理する、ステップと、（ｃ）前記（ａ）のステップにおいて検出した前記遷移のうち、まだ選択していない遷移を実行した場合に検出される前記状態遷移ペア情報の数が最も多い遷移を選択する、ステップと、
（ｄ）前記（ｃ）のステップにおいて選択した前記遷移に基づいてテストケースを生成する、ステップと、
を実行させることを特徴とする検証情報生成プログラム。
【０１０７】
（付記１０）
付記９に記載の検証情報生成プログラムであって、
前記（ａ）のステップにおいて、前記（ｃ）のステップにより選択された前記遷移を実行した次の状態を、新しい前記対象とする状態とする、
ことを特徴とする検証情報生成プログラム。
【０１０８】
（付記１１）
付記９又は１０に記載の検証情報生成プログラムであって、
前記状態遷移ペア情報は、前記状態要素と異なる状態要素の状態と、前記遷移とを関連付けた情報である、
ことを特徴とする検証情報生成プログラム。
【０１０９】
（付記１２）
付記９から１１のいずれか一つに記載の検証情報生成プログラムであって、
前記（ｂ）のステップにおいて、前記遷移を実行した場合、検出される状態遷移ペア情報にチェック情報を関連付ける、
ことを特徴とする検証情報生成プログラム。
【産業上の利用可能性】
【０１１０】
以上のように本発明によれば、システムにおける計算資源を削減することができる。本発明は、状態モデルを検証する分野において有用である。
【符号の説明】
【０１１１】
１  検証情報生成装置
２  状態遷移検出部
３  状態遷移ペア管理部
４  遷移選択部
５  テストケース生成部
６  入力装置
７  出力装置
８  記憶部
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
【図１】
2020009271.tif 000003
【図２】
2020009271.tif 000004
【図３】
2020009271.tif 000005
【図４】
2020009271.tif 000006
【図５】
2020009271.tif 000007
【図６】
2020009271.tif 000008
【図７】
2020009271.tif 000009
【図８】
2020009271.tif 000010
【図９】
2020009271.tif 000011
【図１０】
2020009271.tif 000012
【図１１】
2020009271.tif 000013