(57)【特許請求の範囲】
【請求項１】
テスト対象のプログラムにおける複数の入力変数が満たすべき１以上の条件式に基づいて、前記入力変数間の依存関係の有無を判定し、前記依存関係の有無に基づいて前記複数の入力変数を複数のグループに分類して、前記各条件式を当該条件式に関連する入力変数が属するグループに関連付ける変数分類部と、
前記グループごとに、当該グループに関連付けられた前記条件式に基づいて、当該グループに属する入力変数の値の候補を生成する値候補生成部と、
前記各条件式について、当該条件式に関連する入力変数が属する第一のグループに関して生成された候補のうち、前記第一のグループに関連付けられたいずれかの条件式を満たさない前記候補ごとに、前記第一のグループ以外の第二のグループのそれぞれから、当該第二のグループに関連付けられた全ての条件式を満たす前記候補を１つずつ選択して、前記候補の組み合わせを生成する組み合わせ生成部とを有し、
前記組み合わせ生成部が一つの前記条件式について前記第二のグループから選択する前記候補は、当該条件式に関して生成される全ての前記組み合わせに対して共通である、
ことを特徴とするテストデータ生成装置。
【請求項２】
前記値候補生成部は、複数の入力変数が含まれる前記グループと、一つの入力変数が含まれる前記グループとについて、相互に異なる方法によって前記入力変数の値の候補を生成する、
ことを特徴とする請求項１記載のテストデータ生成装置。
【請求項３】
前記値候補生成部は、複数の入力変数が含まれる前記グループについては、当該グループに関連付けられた前記条件式に基づくｏｎポイント、ｏｕｔポイント、ｉｎポイント、及びｏｆｆポイントを前記入力変数の値の候補として求め、
前記組み合わせ生成部は、前記複数の入力変数が含まれるグループが前記第一のグループである場合は、前記ｏｕｔポイント、前記ｏｎポイント、及び前記ｏｆｆポイントのうち、当該グループに関連付けられたいずれかの前記条件式を満たない候補ごとに前記組み合わせを生成し、前記複数の入力変数が含まれるグループが前記第二のグループである場合は、前記ｏｎポイント、前記ｉｎポイント、及び前記ｏｆｆポイントのうち、当該グループに関連付けられた全ての前記条件式を満たす候補を選択する、
ことを特徴とする請求項１又は２記載のテストデータ生成装置。
【請求項４】
コンピュータが、
テスト対象のプログラムにおける複数の入力変数が満たすべき１以上の条件式に基づいて、前記入力変数間の依存関係の有無を判定し、前記依存関係の有無に基づいて前記複数の入力変数を複数のグループに分類して、前記各条件式を当該条件式に関連する入力変数が属するグループに関連付ける変数分類手順と、
前記グループごとに、当該グループに関連付けられた前記条件式に基づいて、当該グループに属する入力変数の値の候補を生成する値候補生成手順と、
前記各条件式について、当該条件式に関連する入力変数が属する第一のグループに関して生成された候補のうち、前記第一のグループに関連付けられたいずれかの条件式を満たさない前記候補ごとに、前記第一のグループ以外の第二のグループのそれぞれから、当該第二のグループに関連付けられた全ての条件式を満たす前記候補を１つずつ選択して、前記候補の組み合わせを生成する組み合わせ生成手順とを実行し、
前記組み合わせ生成手順において一つの前記条件式について前記第二のグループから選択される前記候補は、当該条件式に関して生成される全ての前記組み合わせに対して共通である、
ことを特徴とするテストデータ生成方法。
【請求項５】
コンピュータに、
テスト対象のプログラムにおける複数の入力変数が満たすべき１以上の条件式に基づいて、前記入力変数間の依存関係の有無を判定し、前記依存関係の有無に基づいて前記複数の入力変数を複数のグループに分類して、前記各条件式を当該条件式に関連する入力変数が属するグループに関連付ける変数分類手順と、
前記グループごとに、当該グループに関連付けられた前記条件式に基づいて、当該グループに属する入力変数の値の候補を生成する値候補生成手順と、
前記各条件式について、当該条件式に関連する入力変数が属する第一のグループに関して生成された候補のうち、前記第一のグループに関連付けられたいずれかの条件式を満たさない前記候補ごとに、前記第一のグループ以外の第二のグループのそれぞれから、当該第二のグループに関連付けられた全ての条件式を満たす前記候補を１つずつ選択して、前記候補の組み合わせを生成する組み合わせ生成手順とをコンピュータに実行させ、
前記組み合わせ生成手順において一つの前記条件式について前記第二のグループから選択される前記候補は、当該条件式に関して生成される全ての前記組み合わせに対して共通である、
ことを特徴とするテストデータ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数入力変数に対する異常系テストデータ生成装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、プログラムのブラックボックステストのためにプログラムの入力変数に対して入力されるテストデータを、ソフトウェア設計に基づいて自動生成する技術が有る（例えば、特許文献１及び特許文献２参照）。
【０００３】
このような技術を利用することで、プログラムのテストに効果的、かつ、効率的なテストデータを導出することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２６７０２３号公報
【特許文献２】特開２０１２−１８１７８２号公報
【特許文献３】特開２０１２−２２１３１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来において、相互に依存関係を有する２以上の入力変数を含む複数の入力変数に関して、効率的、かつ、効果的なテストデータを生成するのは困難であった。
【０００６】
ここで、入力変数の依存関係とは、入力変数が満たすべき制約において、一方の入力変数の値が、他方の入力変数の値に依存する関係をいう。斯かる制約の一例として、入力変数がＸ及びＹである場合に、Ｘ＋Ｙ≦１００であるといったような制約が挙げられる。この場合、当該制約を満たすために、入力変数Ｘの値と入力変数Ｙの値とは相互に依存する。
【０００７】
そして、テスト対象のプログラムに対し異常なテストデータを入力した際に、入力チェックが正しく動作することを確認するテストにおいて、適切で、かつ、バグが発生したときにどの変数に由来するバグかを特定可能とするために、異常系のテストデータの生成は重要である。
【０００８】
本発明は、上記の点に鑑みてなされたものであって、相互に依存関係を有する入力変数を含む複数の入力変数に関する異常系のテストデータを生成することを目的とする。
【課題を解決するための手段】
【０００９】
そこで上記課題を解決するため、開示のテストデータ生成装置は、テスト対象のプログラムにおける複数の入力変数が満たすべき１以上の条件式に基づいて、前記入力変数間の依存関係の有無を判定し、前記依存関係の有無に基づいて前記複数の入力変数を複数のグループに分類して、前記各条件式を当該条件式に関連する入力変数が属するグループに関連付ける変数分類部と、前記グループごとに、当該グループに関連付けられた前記条件式に基づいて、当該グループに属する入力変数の値の候補を生成する値候補生成部と、前記各条件式について、当該条件式に関連する入力変数が属する第一のグループに関して生成された候補のうち、前記第一のグループに関連付けられたいずれかの条件式を満たさない前記候補ごとに、前記第一のグループ以外の第二のグループのそれぞれから、当該第二のグループに関連付けられた全ての条件式を満たす前記候補を１つずつ選択して、前記候補の組み合わせを生成する組み合わせ生成部とを有し、前記組み合わせ生成部が一つの前記条件式について前記第二のグループから選択する前記候補は、当該条件式に関して生成される全ての前記組み合わせに対して共通である。
【発明の効果】
【００１０】
相互に依存関係を有する入力変数を含む複数の入力変数に関する異常系のテストデータを生成することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態におけるテストデータ生成システムの構成例を示す図である。
【図２】本発明の実施の形態におけるテストデータ生成装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態におけるテストデータ生成装置の機能構成例を示す図である。
【図４】テストデータ生成装置が実行する処理手順の一例を説明するためのフローチャートである。
【図５】設計モデルのデータ構造の定義の一例を示す図である。
【図６】設計モデルの一例を示す図である。
【図７】テスト項目一覧の抽出例を示す図である。
【図８】一つのテスト項目に関するテストデータ生成条件の一例を示す図である。
【図９】テストデータ生成条件が各変数集合に振り分けられた例を示す図である。
【図１０】変数集合ごとの値候補の生成例を示す図である。
【図１１】テストモデルの一例を示す図である。
【図１２】テストモデルのデータ構造の定義の一例を示す図である。
【図１３】入力変数の分類処理の処理手順の一例を説明するためのフローチャートである。
【図１４】ドメインテスト技法を用いた値候補の生成処理の処理手順の一例を説明するためのフローチャートである。
【図１５】値候補の生成処理の処理手順の一例を説明するためのフローチャートである。
【図１６】ｉｎポイントの値候補の生成処理の処理手順の一例を説明するためのフローチャートである。
【図１７】ｏｕｔポイントの値候補の生成処理の処理手順の一例を説明するためのフローチャートである。
【図１８】テストケースの生成処理の処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるテストデータ生成システムの構成例を示す図である。図１において、テストデータ生成装置１０は、ＬＡＮ（Local Area Network）又はインターネット等のネットワークを介して１以上のユーザ端末２０に通信可能に接続されている。
【００１３】
テストデータ生成装置１０は、プログラムのブラックボックステストに利用される、プログラムの入力変数に対する入力用のテストデータを生成するコンピュータである。ユーザ端末２０は、テストデータ生成装置１０に対するユーザインタフェースとして機能する端末である。なお、テストデータ生成装置１０が、ディスプレイ等の表示装置や、マウス及びキーボート等の入力装置を備え、ユーザによって直接操作可能とされてもよい。
【００１４】
図２は、本発明の実施の形態におけるテストデータ生成装置のハードウェア構成例を示す図である。図２のテストデータ生成装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００１５】
テストデータ生成装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１６】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってテストデータ生成装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１７】
図３は、本発明の実施の形態におけるテストデータ生成装置の機能構成例を示す図である。図３において、テストデータ生成装置１０は、設計モデル抽出部１１、設計モデル分析部１２、テスト項目抽出部１３、条件抽出部１４、変数分類部１５、値候補生成部１６、及び組み合わせ生成部１７等を有する。これら各部は、テストデータ生成装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。テストデータ生成装置１０は、また、値候補記憶部１１１を利用する。値候補記憶部１１１は、メモリ装置１０３若しくは補助記憶装置１０２、又はテストデータ生成装置１０にネットワークを介して接続される記憶装置等を用いて実現可能である。
【００１８】
設計モデル抽出部１１は、ユーザ端末２０から設計書データを受信し、設計書データから設計モデルを抽出する。設計書データとは、ソフトウェアの設計書を示すデータをいう。また、設計モデルとは、ソフトウェアの仕様に関する情報をいう。例えば、設計モデルには、入力変数に関する制約等が含まれている。設計モデル分析部１２は、設計モデルを分析し、設計モデルに含まれる１以上のビジネスロジックのそれぞれを、テスト対象として抽出する。ビジネスロジックとは、例えば、ソフトウェアが有する機能群のうちの一つの機能、又はソフトウェアがコンピュータに実行させる複数の処理手順のうちの一つの処理手順に対応する概念、又は当該処理手順をコンピュータに実行させるプログラムに対応する概念等である。また、設計モデル内には、ビジネスロジックごとに、当該ビジネスロジックに対する入力変数や、各入力変数に対する制約等が定義されている。
【００１９】
テスト項目抽出部１３は、各テスト対象（各ビジネスロジック）からテスト項目の一覧（以下、「テスト項目一覧」という。）を抽出する。テスト項目一覧は、各テスト対象に含まれる入力変数に関する制約等に基づいて抽出される。条件抽出部１４は、テスト項目ごとに、当該テスト項目において着目される入力変数に対するテストデータを生成するための条件式（以下、「テストデータ生成条件」という。）を設計モデルから抽出する。
【００２０】
変数分類部１５は、テスト項目ごとに、当該テスト項目に関するテストデータ生成条件を解析し、当該テスト項目に関する入力変数を、依存関係の有無に基づいて分類する。分類の結果生成されるグループを、以下、「変数集合」という。変数分類部１５は、また、各テストデータ生成条件を、当該テストデータ生成条件に関係する入力変数が属する変数集合に振り分ける（関連付ける）。
【００２１】
値候補生成部１６は、変数集合ごとに、当該変数集合に振り分けられたテストデータ生成条件に基づいて、当該変数集合に属する各入力変数のテストデータの候補（以下、「値候補」という。）を生成する。なお、値候補生成部１６は、変数集合の特徴（変数集合に含まれる入力変数間の依存関係の有無）に基づいて、値候補の生成方法を切り替える。値候補記憶部１１１は、値候補生成部１６によって生成された値候補を記憶する。
【００２２】
組み合わせ生成部１７は、各入力変数の値候補の組み合わせに関して１通り以上の組みをテストデータとして生成する。組み合わせ生成部１７は、生成されたテストデータを含むテストモデルを生成し、当該テストモデルの内容をテストケース表としてユーザ端末２０に出力する。
【００２３】
以下、テストデータ生成装置１０が実行する処理手順について説明する。図４は、テストデータ生成装置が実行する処理手順の一例を説明するためのフローチャートである。
【００２４】
ユーザ端末２０に対するユーザによる指示入力に応じ、ユーザ端末２０は、ソフトウェアの設計書データを、テストデータ生成装置１０に送信する。当該設計書データは、テストデータ生成装置１０において設計モデル抽出部１１によって受信される。設計モデル抽出部１１は、図５に示されるような設計モデルのデータ構造の定義に基づいて設計書データを分析して、図６に示されるような設計モデルを抽出する（Ｓ１００）。
【００２５】
図５は、設計モデルのデータ構造の定義の一例を示す図である。図５では、設計モデルのデータ構造が、ＢＮＦ（Backus-Naur Form）によって定義されている。
【００２６】
図５によれば、本実施の形態において、設計モデルは、１以上のビジネスロジックを含む。ビジネスロジックは、ビジネスロジックＩＤ、１以上の入力変数、１以上の入力制約、及び１以上のドメイン定義等を含む。入力変数とは、ビジネスロジックに対して入力される変数である。入力制約とは、入力変数に関する制約情報である。ドメイン定義とは、ビジネスロジックの振る舞いごと（出力結果ごと）に、当該振る舞いを引き起こすために入力変数が満たすべき条件の定義である。
【００２７】
なお、入力変数、入力制約、及びドメイン定義より下層の構造に関する説明については省略する。
【００２８】
図６は、設計モデルの一例を示す図である。図６に示されるように、本実施の形態では、設計モデルに二つのビジネスロジックが含まれている。一つは、「夫婦型保険の加入判定処理」であり、もう一つは、「夫婦型保険の料金計算処理」である。「夫婦型保険の加入判定処理」は、夫婦型保険への加入の可否を判定する処理（ビジネスロジック）である。「夫婦型保険の料金計算処理」は、「夫婦型保険の加入判定処理」において加入が可能であると判定された場合に、加入対象の夫婦型保険の料金を計算する処理（ビジネスロジック）である。なお、本実施の形態において、「夫婦型保険の料金計算処理」に関するテストデータの生成の説明については、便宜上、省略される。
【００２９】
「夫婦型保険の加入判定処理」には、夫年齢、妻年齢、プラン名、又は備考を変数ＩＤとする４つの入力変数が有る。夫年齢は、夫の年齢が入力される整数型の変数である。妻年齢は、妻の年齢が入力される整数型の入力変数である。プラン名は、夫婦型保険に属する複数のプランのうち、加入対象とするプランのプラン名が入力される列挙型の入力変数である。備考は、任意の文字列が入力される文字列型の変数である。なお、夫年齢、妻年齢、及びプラン名については、入力が必須とされている。一方、備考については、入力は必須とされていない。
【００３０】
入力制約としては、それぞれ制約（１）、制約（２）、制約（３）、制約（４）を入力制約ＩＤとする４つの入力制約が有る。制約（１）は、式（１）を含む。式（１）は、夫年齢が１８歳以上であることを示す。制約（２）は、式（２）を含む。式（２）は、妻年齢が１６歳以上であることを示す。なお、制約（１）及び制約（２）の少なくともいずれか一方に違反した場合、「年齢不正」のエラーメッセージが表示される。制約（３）は、式（３）を含む。式（３）は、備考の長さが１０文字以下であることを示す。制約（４）は、式（４）を含む。式（４）は、備考の各文字が、全角の漢字又は全角のカタカナであることを示す。なお、制約（３）及び制約（４）の少なくともいずれか一方に違反した場合、「備考不正」のエラーメッセージが表示される。
【００３１】
ドメイン定義としては、それぞれドメイン１、ドメイン２をドメインＩＤとする２つのドメイン定義が有る。ドメイン１は、式（５）を含む。式（５）は、夫年齢と妻年齢との差が２０歳以下であることを示す。式（５）が満たされる場合、加入は可能であると判定され、「夫婦型保険の料金計算処理」を起動させるためのボタンが表示される。ドメイン２は、式（６）を含む。式（６）は、夫年齢と妻年齢との差が２０歳を超えることを示す。式（６）が満たされる場合、加入はできないと判定され、個人型保険へのリンクが表示される。
【００３２】
上記の式（５）及び式（６）から明らかなように、本実施の形態において、夫年齢と妻年齢とが、相互に依存関係を有する入力変数の一例である。すなわち、式（５）又は式（６）を満たすために、夫年齢の値と妻年齢との値は、他方の値に依存する。
【００３３】
なお、設計モデルは、例えば、特許文献２に示されるように、表形式のデータによって与えられてもよい。
【００３４】
続いて、設計モデル分析部１２は、設計モデルを分析し、設計モデルに含まれる各ビジネスロジックを、それぞれテスト対象として抽出する（Ｓ１１０）。すなわち、本実施の形態において、１つのビジネスロジックは、１つのテスト対象となる。続くステップＳ１２０〜Ｓ１８０は、テスト対象ごと（ビジネスロジックごと）に実行される。以下、処理対象とされているテスト対象を、「着目テスト対象」という。
【００３５】
ステップＳ１２０において、テスト項目抽出部１３は、着目テスト対象からテスト項目一覧を抽出する。具体的には、テスト項目抽出部１３は、着目テスト対象に含まれる、各入力制約、各ドメイン定義に対するテスト項目をそれぞれ生成する。例えば、着目テスト対象に、入力制約がｎ個、ドメイン定義がｍ個含まれる場合、ａｎ＋ｂｍ件のテスト項目が抽出される。係数ａ及びｂは、１つの設計要素（入力制約又はドメイン定義等）に関して複数の観点から複数件のテスト項目が生成されてもよいことを示す。本実施の形態では、ａ＝１、ｂ＝１であるとする。
【００３６】
図７は、テスト項目一覧の抽出例を示す図である。図７には、テスト項目ＩＤが１〜６の６個のテスト項目を含むテスト項目一覧が抽出された例が示されている。各テスト項目は、テスト項目ＩＤ、着目設計要素、及びテスト項目内容等を含む。テスト項目ＩＤは、各テスト項目の識別情報である。着目設計要素は、当該テスト項目の抽出元となった設計要素（入力制約又はドメイン定義）である。テスト項目内容は、テスト項目の内容を示す情報である。
【００３７】
図７において、テスト項目ＩＤが１であるテスト項目（以下、「テスト項目１」といい、他のテスト項目も同様の命名規則に従う。）は、図６に示される設計モデルの入力制約の制約（１）に基づいて抽出されたテスト項目である。テスト項目２、テスト項目３、テスト項目４は、それぞれ、制約（２）、制約（３）、制約（４）に基づいて抽出されたテスト項目である。テスト項目５は、ドメイン定義のドメイン１に基づいて抽出されたテスト項目である。テスト項目６は、ドメイン２に基づいて抽出されたテスト項目である。
【００３８】
続くステップＳ１３０〜Ｓ１８０は、ステップＳ１２０において抽出されたテスト項目ごとに実行される。以下、処理対象とされているテスト項目を「着目テスト項目」という。
【００３９】
ステップＳ１３０において、条件抽出部１４は、着目テスト項目に対応するテストデータの生成条件（以下、「テストデータ生成条件」という。）を抽出する（Ｓ１３０）。具体的には、着目テスト項目が、入力制約に基づいて抽出されたテスト項目１〜４のいずれかである場合、着目テスト項目の入力制約に加え、他の全ての入力制約の式も取得され、テストデータ生成条件が生成される。したがって、テスト項目１〜４に関しては、それぞれ制約（１）〜制約（４）のそれぞれの式を含むテストデータ生成条件が生成される。一方、着目テスト項目が、ドメイン定義に基づいて抽出されたテスト項目５又は６である場合、当該テスト項目において着目されているドメイン定義に加え、全ての入力制約の式も取得され、テストデータ生成条件が生成される。したがって、例えば、テスト項目５に関しては、図８に示されるようなテストデータ生成条件が生成される。
【００４０】
図８は、一つのテスト項目に関するテストデータ生成条件の一例を示す図である。図８に示されるようにテスト項目５に関しては、式（１）〜式（５）の５つのテストデータ生成条件が生成される。式（１）〜式（４）は、制約（１）〜制約（４）に関するテストデータ生成条件であり、式（５）は、ドメイン１に関するテストデータ生成条件である。
【００４１】
なお、テスト項目６に関しては、式（５）の代わりにドメイン２に関する式（６）を含むテストデータ生成条件が生成される。ドメイン定義に基づくテスト項目に関して全ての入力制約のそれぞれに関するテストデータ生成条件が生成されるのは、全ての入力制約が満たされていないと、ドメイン定義に関するテストを正しく実行することができないからである。
【００４２】
続いて、変数分類部１５は、各テストデータ生成条件を解析し、各テストデータ生成条件に関する入力変数を、依存関係の有無に基づいて変数集合に分類し、各テストデータ生成条件を各変数集合に振り分ける（Ｓ１４０）。
【００４３】
図９は、テストデータ生成条件が各変数集合に振り分けられた例を示す図である。図９には、図８に示したテストデータ生成条件が、変数集合１〜３の３つの変数集合に振り分けられた例が示されている。
【００４４】
変数集合１は、夫年齢及び妻年齢を含む変数集合である。すなわち、夫年齢と妻年齢とは相互に依存関係を有するため、同じ変数集合に含まれる。変数集合２は、プラン名を含む変数集合である。変数集合３は、備考を含む変数集合である。プラン名及び備考のそれぞれは、他の入力変数と依存関係を有さないため、それぞれ単独で変数集合を形成する。
【００４５】
各変数集合には、当該変数集合に含まれる入力変数に関する式を含むテストデータ生成条件が振り分けられる。したがって、変数集合１には式（１）、式（２）、及び式（５）が振り分けられ、変数集合３には式（３）及び式（４）が振り分けられている。なお、プラン名に関する式は無いため、変数集合２に振り分けられるテストデータ生成条件は無い。
【００４６】
続くステップＳ１５０〜Ｓ１７０は、変数集合ごとに実行される。以下、処理対象とされている変数集合を、「着目変数集合」という。
【００４７】
ステップＳ１５０において、値候補生成部１６は、着目変数集合に２以上の入力変数が含まれているか否かを判定する。例えば、着目変数集合が変数集合１であれば、２以上の入力変数が含まれていると判定される。着目変数集合が変数集合２又は３であれば、２以上の入力変数は含まれていないと判定される。
【００４８】
着目変数集合に２以上の変数集合が含まれていない場合（Ｓ１５０でＮＯ）、値候補生成部１６は、着目変数集合に含まれる１つの入力変数に関する値候補を、例えば、特許文献１又は特許文献２に記載された手法を用いて生成する（Ｓ１６０）。値候補生成部１６は、生成された値候補を、当該値候補の特徴を示す情報に関連付けて、値候補記憶部１１１に記憶する。
【００４９】
一方、着目変数集合に２以上の変数集合が含まれている場合（Ｓ１５０でＹＥＳ）、値候補生成部１６は、着目変数集合に含まれる入力変数に関する値候補を、ドメインテスト技法を用いて生成する（Ｓ１７０）。値候補生成部１６は、生成された値候補を、当該値候補の特徴を示す情報に関連付けて、値候補記憶部１１１に記憶する。なお、ステップＳ１７０の詳細については後述される。
【００５０】
変数集合１〜３に関して、ステップＳ１５０〜Ｓ１７０が実行されると、値候補記憶部１１１には、図１０に示されるような値候補が記憶される。
【００５１】
図１０は、変数集合ごとの値候補の生成例を示す図である。図１０には、変数集合１に含まれる夫年齢及び妻年齢の組に関して、ｉｎポイント、ｏｕｔポイント、ｏｎポイント、並びに２つの正常値のｏｆｆポイント及び２つの異常値のｏｆｆポイントの７通りの値候補が生成され、変数集合２に含まれるプラン名に関して、２つの正常値及び１つの異常値を含む３通りの値候補が生成され、変数集合３に含まれる備考に関して４つの正常値及び４つの異常値を含む８通りの値候補が生成された例が示されている。
【００５２】
本実施の形態において、変数集合２及び変数集合３については、ステップＳ１６０において正常値及び異常値が値候補として生成されるため、これらの入力変数の値候補の特徴には、「正常値」又は「異常値」が含まれている。また、変数集合１については、ステップＳ１７０において、正常値及び異常値が値候補として生成されるため、これらの入力変数の値候補の特徴には「正常値」又は「異常値」が含まれている。
【００５３】
また、変数集合１の値候補については、（ｉｎポイント）、（ｏｕｔポイント）、（ｏｎポイント）、又は（ｏｆｆポイント）が特徴に含まれている。「ｏｎポイント」は、当該値候補が、ｏｎポイントであることを示す。ｏｎポイントとは、入力制約又はドメイン定義に基づいて求まる同値クラスの境界上の値である。「ｏｕｔポイント」は、当該値候補が、ｏｕｔポイントであることを示す。ｏｕｔポイントとは、同値クラス外の値である。「ｉｎポイント」は、当該値候補が、ｉｎポイントであることを示す。ｉｎポイントは、同値クラス内の値である。「ｏｆｆポイント」は、当該値候補が、ｏｆｆポイントであることを示す。ｏｆｆポイントとは、ｏｎポイントがのる境界を、変数ごとにプラス側およびマイナス側にずらして得られる境界近傍の値である。但し、式（５）のように、ｏｎポイントが一つである場合、ｏｎポイントからプラス側及びマイナス側のそれぞれに１ずれた値がｏｆｆポイントとなる。
【００５４】
また、変数集合１のｉｎポイント若しくはｏｕｔポイントの値候補及び変数集合３の値候補については、（境界値分析）又は（同値分割）が特徴に含まれている。「境界値分析」は、境界値分析に基づく値候補であることを示す。「同値分割」は、同値分割に基づく値候補であることを示す。
【００５５】
続いて、組み合わせ生成部１７は、着目テスト項目に関して生成された値候補を組み合わせてテストケースを生成する（Ｓ１８０）。具体的には、組み合わせ生成部１７は、着目テスト項目に関する変数集合のうち、テスト項目の着目設計要素の式が属している変数集合の異常値の値候補ごとに、その他の各変数集合から１つの正常値の値候補を選択して、テストデータを生成する。但し、正常値であっても境界値は選択対象から除かれる。例えば、着目テスト項目がテスト項目５であれば、その着目設計要素がドメイン１であり、ドメイン１の式（５）は変数集合１の条件であるため、図１０における、変数集合１の３通りの異常値の値候補ごとに、変数集合２及び変数集合３のそれぞれから１つの正常値の値候補が選択されて、値候補の組み合わせがテストデータとして生成される。したがって、この場合、３通りの組み合わせが生成される。
【００５６】
テストケースの生成の結果、全ての入力変数に対して具体値が割り当てられる。組み合わせ生成部１７は、生成された組み合わせごとにテストケースを生成する。
【００５７】
ステップＳ１３０〜ステップＳ１８０が全てのテスト項目について実行され、更に、ステップＳ１２０〜ステップＳ１８０が全てのテスト対象（ビジネスロジック）について実行されると、組み合わせ生成部１７は、ステップＳ１８０において生成されたテストケースに基づいてテストモデルを生成し、生成されたテストモデルの内容をテストケース表として、ユーザ端末２０に送信する（Ｓ１９０）。
【００５８】
図１１は、テストモデルの一例を示す図である。図１１に示されるように、テストモデルは、テスト対象ごとに、テスト項目を含む。また、テスト項目ごとに、１以上のテストケースが含まれる。１つのテスト項目に対応するテストケースは、ステップＳ１８０において生成される。
【００５９】
１つのテストケースは、テストケースＩＤ、入力変数ごとの具体値、期待結果、及びテストケース特徴を含む。テストケースＩＤは、テストケースごとの識別情報である。入力変数ごとの具体値は、ステップＳ１８０において生成される値候補の組み合わせである。１つのテスト項目に対して複数のテストケースが生成されるのは、当該組み合わせが複数有るためである。期待結果は、テストによって期待される結果である。期待結果の内容は、設計モデルの入力制約又はドメイン定義に基づいて生成される。すなわち、入力制約に基づくテスト項目に関するテストケースの期待結果は、当該入力制約の「結果」に基づいて生成される。ドメイン定義に基づくテスト項目に関するテストケースの期待結果は、当該ドメイン定義の「結果」に基づいて生成される。テストケース特徴は、テストケースの特徴である。テストケース特徴の内容は、当該テストケースにおいて選択された値候補に関して値候補記憶部１１１に記憶されている特徴に基づいて生成される。
【００６０】
テストモデルの内容を示すテストケース表は、例えば、特許文献２に記載された手法を用いて生成されてもよい。
【００６１】
なお、上記において説明したテストモデルの構造を厳密に定義すると、例えば、図１２に示されるようになる。
【００６２】
図１２は、テストモデルのデータ構造の定義の一例を示す図である。図１２では、テストモデルのデータ構造がＢＮＦによって定義されている。
【００６３】
続いて、ステップＳ１４０の詳細について説明する。図１３は、入力変数の分類処理の処理手順の一例を説明するためのフローチャートである。
【００６４】
ステップＳ２００において、変数分類部１５は、ステップＳ１３０において条件抽出部１４によって抽出されたテストデータ生成条件を条件抽出部１４から取得する。続くステップＳ２１０〜Ｓ２６０は、テストデータ生成条件ごとに実行される。以下、処理対象とされているテストデータ生成条件を、「着目条件」という。
【００６５】
ステップＳ２１０において、変数分類部１５は、着目条件が扱う入力変数ｘ１〜ｘｎ（ｎは、着目条件が扱う入力変数の個数）を特定する。続いて、変数分類部１５は、ｘ１〜ｘｎの全てを含む変数集合Ａが生成済みであるか否かを判定する（Ｓ２２０）。変数集合Ａが生成済みでない場合（Ｓ２２０でＮＯ）、変数分類部１５は、変数集合Ａを生成し、着目条件を、変数集合Ａに振り分ける（Ｓ２３０）。続いて、変数分類部１５は、変数集合Ａの部分集合となる変数集合Ｂが生成済みであるか否かを判定する（Ｓ２４０）。変数集合Ｂが生成されている場合（Ｓ２４０でＹＥＳ）、変数分類部１５は、変数集合Ｂに振り分けられているテストデータ生成条件を、変数集合Ａに振り分け、変数集合Ｂを削除する（Ｓ２５０）。
【００６６】
一方、ｘ１〜ｘｎの全てを含む変数集合Ａが生成済みである場合（Ｓ２２０でＹＥＳ）、変数分類部１５は、着目条件を変数集合Ａに振り分ける（Ｓ２６０）。
【００６７】
全てのテストデータ生成条件に関してステップＳ２１０〜Ｓ２６０が実行されると、変数分類部１５は、設計モデルに含まれる入力変数の中で、既に生成されたいずれの変数集合にも含まれていない入力変数の有無を判定する（Ｓ２７０）。該当する入力変数が１以上有る場合（Ｓ２７０でＹＥＳ）、変数分類部１５は、該当する入力変数ごとに、変数集合を生成する（Ｓ２８０）。例えば、本実施の形態において、プラン名は、いずれのテストデータ生成条件にも含まれない。したがって、プラン名が属する変数集合は、ステップＳ２３０では生成されず、ステップＳ２８０において生成される。
【００６８】
図８に示したテストデータ生成条件を、図１３の処理手順に当てはめて説明する。まず、式（１）が着目条件とされる。式（１）が扱う入力変数は、夫年齢であることが特定される（Ｓ２１０）。夫年齢を含む変数集合は生成されていないため（Ｓ２２０でＮＯ）、夫年齢を含む変数集合が生成され、当該変数集合に式（１）が振り分けられる（Ｓ２３０）。当該変数集合の部分集合となる変数集合は生成されていない。したがって、式（２）が着目条件とされる。式（２）〜式（４）についても、同様の手順で、それぞれの変数集合が生成される。
【００６９】
式（５）が着目条件とされた場合、式（５）が扱う入力変数は、夫年齢及び妻年齢であることが特定される（Ｓ２１０）。夫年齢及び妻年齢の双方を含む変数集合は生成されていないため（Ｓ２２０でＮＯ）、夫年齢及び妻年齢の双方を含む変数集合（以下、「変数集合（５）」という。）が生成され、変数集合５に式（５）が振り分けられる（Ｓ２３０）。変数集合（５）の部分集合となる変数集合としては、式（１）に関して生成された変数集合（以下、「変数集合（１）」という。）と式（２）に関して生成された変数集合（以下、「変数集合（２）」という。）とが有る（Ｓ２４０でＹＥＳ）。そこで、式（１）と式（２）とが、変数集合（５）に統合され、変数集合（１）及び変数集合（２）は削除される（Ｓ２５０）。その結果、図９に示したような変数集合が生成される。
【００７０】
続いて、図４のステップＳ１７０の詳細について説明する。図１４は、ドメインテスト技法を用いた値候補の生成処理の処理手順の一例を説明するためのフローチャートである。
【００７１】
ステップＳ３００において、値候補生成部１６は、１以上のテストデータ生成条件を読み込む。ここで読み込まれるテストデータ生成条件（以下、「着目条件」という。）は、図４のステップＳ１７０の時点の着目変数集合に振り分けられたテストデータ生成条件である。続いて、値候補生成部１６は、着目条件が属する着目変数集合に含まれている入力変数のデータ型に基づいて処理を分岐させる（Ｓ３１０）。
【００７２】
着目変数集合に含まれている各入力変数の全てが整数型である場合、値候補生成部１６は、着目条件に関するｉｎポイント、ｏｕｔポイント、ｏｎポイント、及びｏｆｆポイントを当該各入力変数の値候補として求める（Ｓ３２０）。
【００７３】
なお、本実施の形態において、テスト項目５が着目テスト項目であり、図９の変数集合１（夫年齢、妻年齢）が着目変数集合である場合に、ステップＳ３２０が実行される。
【００７４】
一方、着目変数集合に含まれている各入力変数の全てが文字列型である場合、値候補生成部１６は、着目条件の中で当該入力変数の文字列長に関するテストデータ生成条件を抽出する（Ｓ３３０）。続いて、値候補生成部１６は、抽出されたテストデータ生成条件に基づいて、ｉｎポイント、ｏｕｔポイント、ｏｎポイント、及びｏｆｆポイントを求める（Ｓ３４０）。続いて、値候補生成部１６は、ｉｎポイント、ｏｕｔポイント、ｏｎポイント、及びｏｆｆポイントごとに、文字列長以外の着目条件も満たすような文字列を値候補として生成する（Ｓ３５０）。なお、例えば、「ｓｔｒｉｎｇ１の長さ＞＝ｓｔｒｉｎｇ２の長さ」といったような入力制約を有する入力変数（ここでは、ｓｔｒｉｎｇ１及びｓｔｒｉｎｇ２）が有る場合に、ステップＳ３５０が実行される。なお、着目条件の中に、文字列長に関するテストデータ生成条件が無い場合、ステップＳ３４０は実行されなくてよい。
【００７５】
また、着目変数集合に含まれている各入力変数の全てが実数型、列挙型、日付型、又は時刻型等、整数型及び文字列型のいずれでもない場合、値候補生成部１６は、着目条件の境界値を、整数型に変換する（Ｓ３６０）。例えば、実数型であれば当該境界値に１０ｎ（ｎは、当該境界値の小数点以下の桁数）を乗ずることにより整数型に変換することができる。また、列挙型であれば、列挙される値を列挙の順序関係を保持したまま、整数に置換してもよい。例えば、列挙される値が｛社長、部長、課長、係長、社員｝であれば、これらは、｛５、４、３、２、１｝に置換されてもよい。その上で、着目条件の境界値が、置換後の整数に置き換えられればよい。また、日付型や時刻型については、ＵＮＩＸ（登録商標）時刻等のシステム時刻に変換してもよい。例えば、日本標準時の「２００１−０９−０９  １０：４６：４０」という値は、「１０００００００００」というＵＮＩＸ（登録商標）時刻に変換されてもよい。
【００７６】
続いて、値候補生成部１６は、境界値が整数型に変換された着目条件に基づいて、ｉｎポイント、ｏｕｔポイント、ｏｎポイント、及びｏｆｆポイントを求める（Ｓ３７０）。続いて、値候補生成部１６は、求められたｉｎポイント、ｏｕｔポイント、ｏｎポイント、及びｏｆｆポイントを、ステップＳ３６０とは逆の変換を行うことにより、元のデータ型に復元する。復元後の値が、値候補である。
【００７７】
ステップＳ３２０、Ｓ３５０、又はＳ３８０に続いて、値候補生成部１６は、生成された値候補を、値候補記憶部１１１に記憶する（Ｓ３９０）。
【００７８】
なお、着目変数集合に属する各入力変数のデータ型が相互に異なる場合は、ステップＳ３１０の前において、ステップＳ３６０において説明したように、全ての着目条件の境界値が整数型に変換されてもよい。この場合、ステップＳ３２０の実行後に、各値候補に関して、ステップＳ３８０と同様の逆変換が行われればよい。
【００７９】
続いて、ステップＳ３２０、ステップＳ３４０、及びステップＳ３７０の詳細について説明する。
【００８０】
図１５は、値候補の生成処理の処理手順の一例を説明するためのフローチャートである。
【００８１】
ステップＳ５１０において、値候補生成部１６は、着目条件のｉｎポイントを求めて値候補とし、当該値候補に、特徴として「正常値（同値分割）」を付与する。続いて、値候補生成部１６は、着目条件のｏｕｔポイントを求めて値候補とし、当該値候補に、特徴として「異常値（同値分割）」を付与する（Ｓ５２０）。続いて、値候補生成部１６は、着目条件のｏｎポイントを求めて値候補とし、当該値候補に、特徴として「正常値（境界値分析）」又は「異常値（境界値分析）」を付与する（Ｓ５３０）。続いて、値候補生成部１６は、着目条件のｏｆｆポイントを求めて値候補とし、当該値候補に、特徴として「異常値（境界値分析）」又は「正常値（境界値分析）」を付与する（Ｓ５４０）。
【００８２】
ステップＳ５３０及びステップＳ５４０に関して、付与される特徴が「正常値」又は「異常値」のいずれか一方に固定されないのは、ｏｎポイント及びｏｆｆポイントについては、着目条件によって、正常値又は異常値のいずれかに変化するからである。したがって、ｏｎポイント又はｏｆｆポイントが、全ての着目条件を満たす場合、当該ｏｎポイント又は当該ｏｆｆポイントは正常値とされ、ｏｎポイント又はｏｆｆポイントが、いずれかの着目条件を満たさない場合、当該ｏｎポイント又は当該ｏｆｆポイントは異常値とされればよい。
【００８３】
なお、ステップＳ５３０及びステップＳ５４０では、公知の方法を用いてｏｎポイント又はｏｆｆポイントが求められてもよい。例えば、特許文献３に記載された方法が用いられてもよい。特許文献３に記載された方法によれば、ｏｎポイントが正常値であるか若しくは異常値であるか、ｏｆｆポイントが正常値であるか若しくは異常値であるかについても得ることができる。
【００８４】
続いて、ステップＳ５１０の詳細について説明する。図１６は、ｉｎポイントの値候補の生成処理の処理手順の一例を説明するためのフローチャートである。
【００８５】
ステップＳ６００において、値候補生成部１６は、１以上のテストデータ生成条件を読み込む（Ｓ６００）。ここで読み込まれるテストデータ生成条件は、図１５のステップＳ５１０の時点における着目条件である。
【００８６】
続いて、値候補生成部１６は、ｉｎポイントを求めるための制約式を生成する（Ｓ６１０）。具体的には、着目条件を構成する式Ｅ１〜Ｅｍ（ｍは、着目条件の個数）が取得され、「Ｅ１  ａｎｄ  Ｅ２  ａｎｄ  …  ａｎｄ  Ｅｍ」というような、正常値（ドメイン内に収まる値）を得るための制約式が生成される。例えば、着目変数集合が、図９の変数集合１である場合、「夫年齢＞＝１８  ａｎｄ  妻年齢＞＝１６  ａｎｄ  ｜夫年齢−妻年齢｜＜＝２０」という制約式が生成される。
【００８７】
続いて、値候補生成部１６は、公知の制約ソルバを用いて制約式の解を得て、任意の１つの解を、ｉｎポイントの値候補として生成する（Ｓ６２０）。なお、着目変数集合に複数の入力変数が属する場合、複数の入力変数に関してｉｎポイントの値候補が生成される。
【００８８】
続いて、ステップＳ５２０の詳細について説明する。図１７は、ｏｕｔポイントの値候補の生成処理の処理手順の一例を説明するためのフローチャートである。
【００８９】
ステップＳ７００において、値候補生成部１６は、１以上のテストデータ生成条件を読み込む（Ｓ７００）。ここで読み込まれるテストデータ生成条件は、図１５のステップＳ５２０の時点における着目条件である。
【００９０】
続いて、値候補生成部１６は、ｏｕｔポイントを求めるための制約式を生成する（Ｓ７１０）。具体的には、着目条件を構成する式Ｅ１〜Ｅｍ（ｍは、着目条件の個数）が取得され、「Ｎｏｔ（Ｅ１  ａｎｄ  Ｅ２  ａｎｄ  …  ａｎｄ  Ｅｍ）」というような、異常値（ドメイン外となる値）を得るための制約式が生成される。例えば、着目変数集合が、図９の変数集合１である場合、「Ｎｏｔ（夫年齢＞＝１８  ａｎｄ  妻年齢＞＝１６  ａｎｄ  ｜夫年齢−妻年齢｜＜＝２０）」という制約式が生成される。
【００９１】
続いて、値候補生成部１６は、公知の制約ソルバを用いて制約式の解を得て、任意の１つの解を、ｏｕｔポイントの値候補として生成する（Ｓ７２０）。なお、着目変数集合に複数の入力変数が属する場合、複数の入力変数に関してｏｕｔポイントの値候補が生成される。
【００９２】
続いて、図４のステップＳ１８０の詳細について説明する。図１８は、テストケースの生成処理の処理手順の一例を説明するためのフローチャートである。
【００９３】
ステップＳ４００において、組み合わせ生成部１７は、１以上のテストデータ生成条件を読み込む。ここで読み込まれるテストデータ生成条件は、図４のステップＳ１８０の時点の着目テスト項目に関する全てのテストデータ生成条件である。例えば、テスト項目５が着目テスト項目である場合、図８に示される式（１）〜式（５）が読み込まれる。
【００９４】
続いて、組み合わせ生成部１７は、着目テスト項目に関する各変数集合に関して生成された全ての値候補を値候補記憶部１１１から取得する（Ｓ４１０）。続いて、組み合わせ生成部１７は、ステップＳ４００において読み込まれたテストデータ生成条件のうち、着目テスト項目において着目されているテストデータ生成条件を取得する（Ｓ４２０）。着目テスト項目において着目されているテストデータ生成条件とは、着目テスト項目の生成の元となったテストデータ生成条件をいう。例えば、テスト項目５において着目されているテストデータ生成条件は、式（５）である。以下、ステップＳ４２０において取得されたテストデータ生成条件を、「着目条件」という。
【００９５】
続いて、組み合わせ生成部１７は、着目条件が扱う１以上の入力変数（以下、当該１以上の入力変数をまとめて「変数ｘ」という。）が属する変数集合の値候補を、ステップＳ４１０において取得された値候補の中から取得する（Ｓ４３０）。例えば、着目条件が式（５）であれば、変数集合１の値候補（図１０参照）が取得される。続いて、組み合わせ生成部１７は、ステップＳ４３０において取得された値候補の中から、異常値である全ての値候補を選択する（Ｓ４４０）。異常値であるか否かは、値候補の特徴に「異常値」が含まれているか否かに基づいて特定可能である。
【００９６】
続いて、組み合わせ生成部１７は、変数ｘ以外の残りの入力変数（以下、「変数ｙ１〜ｙｍ」という。ｍは、変数ｘ以外の入力変数の個数である。）のそれぞれが属する変数集合の値候補を、ステップＳ４１０において取得された値候補の中から取得する（Ｓ４５０）。続いて、組み合わせ生成部１７は、ステップＳ４５０において取得された値候補の中から、変数ｙ１〜ｙｍのそれぞれごとに、任意の一つの正常値の値候補を選択する（Ｓ４６０）。したがって、ｍ個の値候補が取得される。但し、境界値である正常値は極力除かれる。変数ｘに関するテストデータを生成する際に、変数ｙ１〜ｙｍに関して境界値が選択された場合、バグ発生時にどの入力変数に起因したバグかの原因の切り分けが困難になってしまうからである。なお、境界値であることは、値候補の特徴に「境界値分析」が含まれていることに基づいて特定可能である。また、組み合わせ生成部１７は、設計モデル（図６）において、入力が必須とされていない入力変数の値候補は、空欄とする。
【００９７】
続いて、組み合わせ生成部１７は、変数ｘに関してステップＳ４４０において選択された１以上の異常値の値候補と、変数ｙ１〜ｙｍに関して、ステップＳ４６０において一つずつ選択された正常値の値候補との全ての組み合わせをテストケースとして生成する（Ｓ４７０）。この際、変数ｘが複数の場合、変数ｘごとに値候補の組み合わせが生成されるが、変数ｙ１〜ｙｍについては、各組み合わせに対して共通の値候補が選択される。
【００９８】
例えば、着目テスト項目がテスト項目５であり、着目条件が式（５）である場合、変数ｘは、夫年齢及び妻年齢である。また、変数ｙ１〜ｙｍは、プラン名及び備考である。したがって、夫年齢及び妻年齢に関しては、図１０に示される７通りの値候補のうち、３通りの異常値の値候補が選択される。プラン名に関しては、図１０に示される３通りの値候補のうち、任意の一つの正常値の値候補が、夫年齢及び妻年齢に関する３通りの異常値に対して共通に（固定的に）選択される。備考に関しては、必須ではないため空欄とされる。すなわち、備考についても、夫年齢及び妻年齢に関する３通りの異常値に対して共通の値となる。したがって、これらの入力変数の値候補の全ての組み合わせは、３通りとなる。斯かる３通りの組み合わせが、図１１において、テスト項目５に対するテストケース５−１〜５−３として示されている。図１１に示されるテストケース５−１〜５−３において、プラン名の値及び備考の値は、それぞれ共通である。
【００９９】
なお、図１８の処理は、テスト項目ごとに実行される。各テスト項目は、入力制約又はドメイン定義の式ごとに生成される。したがって、図１８の処理は、入力制約又はドメイン定義の各式について、当該式（着目条件）が扱う（当該式に関連する）入力変数（変数ｘ）が属する第一の変数集合に関連付けられたいずれかの式を満たさない（すなわち、異常値の）値候補ごとに、前記第一の変数集合以外の第二の変数集合のそれぞれから、当該第二の変数集合に関連付けられた全ての条件式を満たす（すなわち、正常値の）値候補を１つずつ選択して、値候補の組み合わせを生成する処理に相当する。更に、一つの式について前記第二のグループから選択される値候補は、当該式に関して生成される全ての前記組み合わせに対して共通である。
【０１００】
上述したように、本実施の形態によれば、設計モデルからテストデータ生成条件が抽出され、テストデータ生成条件に基づいて、入力変数間の相互依存関係の有無が判定され、当該判定結果に基づいて、入力変数が変数集合に分類される。変数集合ごとに候補値が生成される際、一つの入力変数のみが属する変数集合と、相互に依存関係を有する複数の変数が属する変数集合とでは、相互に異なる方法によって値候補が生成される。
【０１０１】
また、本実施の形態によれば、テスト項目ごとにテストデータを生成する際に、当該テスト項目の生成元となったテストデータ生成条件（図１８における着目条件）が扱う入力変数（図１８における変数ｘ）に関しては、値候補の中から異常値の値候補が網羅的に選択され、当該入力変数以外の入力変数（図１８における変数ｙ１〜ｙｍ）に関しては、値候補の中から１つの正常値が固定的に選択されて、当該異常値の値候補ごとに、値候補の組み合わせが生成される。
【０１０２】
その結果、相互に依存関係の有る入力変数、依存関係を有さない入力変数を含んだ複数の入力変数に関して、異常系のテストデータを網羅的に生成することができる。
【０１０３】
したがって、例えば、プログラムに対し異常なテストデータを入力した際に、入力チェックが正しく動作することを確認するテストにおいて、適切で、かつ、バグが発生したときにどの変数に由来するバグかを特定可能な異常系のテストデータを得ることができる。
【０１０４】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１０５】
１０          テストデータ生成装置
１１          設計モデル抽出部
１２          設計モデル分析部
１３          テスト項目抽出部
１４          条件抽出部
１５          変数分類部
１６          値候補生成部
１７          組み合わせ生成部
２０          ユーザ端末
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１１１        値候補記憶部
Ｂ            バス
【図１】
0006007221.tif 000002
【図２】
0006007221.tif 000003
【図３】
0006007221.tif 000004
【図４】
0006007221.tif 000005
【図５】
0006007221.tif 000006
【図６】
0006007221.tif 000007
【図７】
0006007221.tif 000008
【図８】
0006007221.tif 000009
【図９】
0006007221.tif 000010
【図１０】
0006007221.tif 000011
【図１１】
0006007221.tif 000012
【図１２】
0006007221.tif 000013
【図１３】
0006007221.tif 000014
【図１４】
0006007221.tif 000015
【図１５】
0006007221.tif 000016
【図１６】
0006007221.tif 000017
【図１７】
0006007221.tif 000018
【図１８】
0006007221.tif 000019