(57)【要約】【課題】  発生頻度の高い不具合を重点的に検出することが可能で、不具合の原因となる変数を一意に特定することが可能なテストデータを生成する。【解決手段】  本発明は、入力（因子と水準の組み合わせ）と期待値のペアからなるテストデータを生成する際に、因子に対して、有り得る全ての水準の組み合わせではなく、各因子における全ての水準が少なくとも１回はテストで使用されるように、入力の組み合わせを生成する。入力の組み合わせとして、全て正常水準からなる組み合わせ（正常入力）と、該因子と異常水準を一つのみ含む水準の組み合わせ（異常入力）を生成する。【選択図】  図１
2010267022.tif 000002
【特許請求の範囲】
【請求項１】
システムの設計情報を形式的な言語で記述した設計モデルの設計意図に沿って構築されたか否かを確認するためのテストデータを生成するテストデータ生成装置であって、
ユーザ端末より、ＵＭＬクラス図とアクティビティ図のみで記述した設計モデルを読み込む設計モデル読込手段と、
読み込まれた前記設計モデルからアクティビティ図をテスト対象として抽出する設計モデル分析手段と、
前記テスト対象から実行経路を抽出する実行経路抽出手段と、
テストデータ仕様が格納されたテストデータ仕様記憶手段と、
前記実行経路抽出手段から抽出された各実行経路を持つアクティビティの入力パラメータを変数（実験計画法でいう「因子」）が満たすべき実行経路の始点ノードから終点ノードを走査することにより抽出した制約条件に基づいて、前記テストデータ仕様記憶手段に格納されているテストデータ仕様を更新するテストデータ仕様生成手段と、
前記テストデータ仕様記憶手段から前記テストデータ仕様を読み込み、該テストデータ仕様の値に応じて、前記因子のとる値（実験計画法でいう「水準」）として、実行経路にとって許容する正常水準と、実行経路にとって許容しない異常水準を生成し、前記実行経路に対応させて該因子と該水準を実行経路・水準記憶手段に格納する水準生成手段と、
前記実行経路・水準記憶手段から前記因子と前記水準と前記実行経路を取得して、該因子と前記正常水準のみの組み合わせである正常入力と、該因子と異常水準を一つのみ含む水準の組み合わせである異常入力を生成し、該実行経路中に事後条件が含まれるか否かにより期待値を求め、該入力に該期待値を付与したテストデータを生成し、テストデータ記憶手段に格納するテストデータ生成手段と、
前記テストデータを前記ユーザ端末に出力する出力手段と、
を有することを特徴とするテストデータ生成装置。
【請求項２】
システムの設計情報を形式的な言語で記述した設計モデルの設計意図に沿って構築されたか否かを確認するためのテストデータを生成するテストデータ生成方法であって、
ユーザ端末より、ＵＭＬクラス図とアクティビティ図のみで記述した設計モデルを読み込む設計モデル読込ステップと、
読み込まれた前記設計モデルからアクティビティ図をテスト対象として抽出する設計モデル分析ステップと、
前記テスト対象から実行経路を抽出する実行経路抽出ステップと、
前記実行経路抽出ステップで抽出された各実行経路を持つアクティビティの入力パラメータを変数（実験計画法でいう「因子」）が満たすべき実行経路の始点ノードから終点ノードを走査することにより抽出した制約条件に基づいて、テストデータ仕様記憶手段に格納されているテストデータ仕様を更新するテストデータ仕様生成ステップと、
前記テストデータ仕様記憶手段から前記テストデータ仕様を読み込み、該テストデータ仕様の値に応じて、前記因子のとる値（実験計画法でいう「水準」）として、実行経路にとって許容する正常水準と、実行経路にとって許容しない異常水準を生成し、前記実行経路に対応させて該因子と該水準を実行経路・水準記憶手段に格納する水準生成ステップと、
前記実行経路・水準記憶手段から前記因子と前記水準と前記実行経路を取得して、該因子と前記正常水準のみの組み合わせである正常入力と、該因子と異常水準を一つのみ含む水準の組み合わせである異常入力を生成し、該実行経路中に事後条件が含まれるか否かにより期待値を求め、該入力に該期待値を付与したテストデータを生成し、テストデータ記憶手段に格納するテストデータ生成ステップと、
前記テストデータを前記ユーザ端末に出力する出力ステップと、
を行うことを特徴とするテストデータ生成方法。
【請求項３】
請求項１記載のテストデータ生成装置を構成する各手段としてコンピュータを機能させるためのテストデータ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストデータ生成方法及び装置及びプログラムに係り、特に、システムが、設計モデルに記述された設計意図の通りに、構築されたか否かを、確認するためのテストで用いるテストデータを人手により作成するのではなく、設計モデルにより自動的に作成するためのテストデータ生成方法及び装置及びプログラムに関する。詳しくは、不具合の原因特定を行うためのテストデータ生成方法及び装置及びプログラムに関する。
【背景技術】
【０００２】
プログラム開発工程におけるテストでは、システムが設計通りに構築されたか否かという確認を行うため、その際にテストデータが必要となる。人手に代わり、自動でテストデータを準備できれば、開発のコスト改善につながる。また、少ないテストデータで効果的にテストを実施できればテストのコストを更に削減することができる。
【０００３】
効果的にテストを実施できるテストデータとは、不具合をより検出しやすいテストデータ、不具合が検出された場合に原因特定を容易にするテストデータであると考える。
【０００４】
テストデータは、複数の変数がとる値の組合せからなる。あり得る全ての組合せをテストデータとして生成すると、変数が増えた場合に組合せ爆発により処理不能になってしまうという問題がある。そのため、通常は全組合せの一部のみをテストデータとするが、この際に組み合わせ数を絞り込む手法が必要となる。
【０００５】
テストデータの自動生成技術としては、例えば、階層構造を持つデータ型を基本型まで分解し、その基本型に所定の値を与える方法や、単独の変数に割り当てる値を生成する技術がある（例えば、特許文献１、非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−２３１１０３号公報
【非特許文献】
【０００７】
【非特許文献１】Jon Edvardsson.  "A Survey on Automatic Test Data Generation".  In Proceedings of the 2nd Conference on Computer Science and Engineering, Pages 21-28, 1999.  http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.20.963
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来のテストデータの自動生成技術では、上記の複数の変数がとる値の組み合わせの問題に対して言及しない、もしくはポリシーがないままランダムに組み合わせを生成するものが多い。上記の特許文献１や非特許文献１の技術には、単独の変数に割り当てる値の生成については述べられているが、複数の変数がある場合に組み合わせを具体的にどう生成するかについては言及していない。
【０００９】
このように、従来のテストデータの自動生成技術を組み合わせても、少ないテストデータでも不具合の検出が容易で、また、不具合を検出した場合に原因の特定を容易にすることができないという問題がある。
【００１０】
本発明は、上記の点に鑑みなされたもので、構造体やオブジェクト型データを含む設計モデルに基づくシステムへのテストデータの自動生成において、発生頻度の高い不具合を重点的に検出することが可能で、さらに、不具合の原因となる変数を一意に特定することが可能なテストデータ生成方法及び装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
図１は、本発明の原理構成図である。
【００１２】
本発明（請求項１）は、システムの設計情報を形式的な言語で記述した設計モデルの設計意図に沿って構築されたか否かを確認するためのテストデータを生成するテストデータ生成装置であって、
ユーザ端末２０より、ＵＭＬクラス図とアクティビティ図のみで記述した設計モデルを読み込む設計モデル読込手段１と、
読み込まれた設計モデルからアクティビティ図をテスト対象として抽出する設計モデル分析手段２と、
テスト対象から実行経路を抽出する実行経路抽出手段３と、
テストデータ仕様が格納されたテストデータ仕様記憶手段１２と、
実行経路抽出手段４から抽出された各実行経路を持つアクティビティの入力パラメータを変数（実験計画法でいう「因子」）が満たすべき実行経路の始点ノードから終点ノードを走査することにより抽出した制約条件に基づいて、テストデータ仕様記憶手段１２に格納されているテストデータ仕様を更新するテストデータ仕様生成手段４と、
テストデータ仕様記憶手段１２から前記テストデータ仕様を読み込み、因子のとる値（実験計画法でいう「水準」）として、該テストデータ仕様の値に応じて、実行経路にとって許容する正常水準と、実行経路にとって許容しない異常水準を生成し、実行経路に対応させて該因子と該水準を実行経路・水準記憶手段１１に格納する水準生成手段５と、
実行経路・水準記憶手段１１から因子と水準と前記実行経路を取得して、該因子と前記正常水準のみの組み合わせである正常入力と、該因子と異常水準を一つのみ含む水準の組み合わせである異常入力を生成し、該実行経路中に事後条件が含まれるか否かにより期待値を求め、該入力に該期待値を付与したテストデータを生成し、テストデータ記憶手段１３に格納するテストデータ生成手段６と、
テストデータをユーザ端末２０に出力する出力手段７と、を有する。
【００１３】
図２は、本発明の原理を説明するための図である。
【００１４】
本発明（請求項２）は、システムの設計情報を形式的な言語で記述した設計モデルの設計意図に沿って構築されたか否かを確認するためのテストデータを生成するテストデータ生成方法であって、
ユーザ端末より、ＵＭＬクラス図とアクティビティ図のみで記述した設計モデルを読み込む設計モデル読込ステップ（ステップ１）と、
読み込まれた設計モデルからアクティビティ図をテスト対象として抽出する設計モデル分析ステップ（ステップ２）と、
テスト対象から実行経路を抽出する実行経路抽出ステップ（ステップ３）と、
実行経路抽出ステップで抽出された各実行経路を持つアクティビティの入力パラメータを変数（実験計画法でいう「因子」）が満たすべき実行経路の始点ノードから終点ノードを走査することにより抽出した制約条件に基づいて、テストデータ仕様記憶手段に格納されているテストデータ仕様を更新するテストデータ仕様生成ステップ（ステップ４）と、
テストデータ仕様記憶手段から前記テストデータ仕様を読み込み、前記因子のとる値（実験計画法でいう「水準」）として、該テストデータ仕様の値に応じて、実行経路にとって許容する正常水準と、実行経路にとって許容しない異常水準を生成し、実行経路に対応させて該因子と該水準を実行経路・水準記憶手段に格納する水準生成ステップ（ステップ５）と、
実行経路・水準記憶手段から因子と前記水準と実行経路を取得して、該因子と前記正常水準のみの組み合わせである正常入力と、該因子と異常水準を一つのみ含む水準の組み合わせである異常入力を生成し（ステップ６）、該実行経路中に事後条件が含まれるか否かにより期待値を求め、該入力に該期待値を付与したテストデータを生成し（ステップ７）、テストデータ記憶手段に格納するテストデータ生成ステップと、
テストデータをユーザ端末に出力する出力ステップ（ステップ８）と、を行う。
【００１５】
本発明（請求項３）は、請求項１記載のいずれか１項記載のテストデータ生成装置を構成する各手段としてコンピュータを機能させるためのテストデータ生成プログラムである。
【発明の効果】
【００１６】
上記のように本発明によれば、テストにおいては、複数の変数（実験計画法の用語で「因子」）の値（実験計画法の用語で「値」）の組み合わせに起因する不具合よりも、１つの変数の値に起因する不具合が多いという経験的事実（例えば、文献：R.D. Kuhn et al. "Software Fault Interactions and Implications for Software Testing." IEEE Transactions on Softweare Engineering, 30(6), June 2004.）に基づいて、因子と正常水準のみの組み合わせの「正常入力」と、該因子と異常水準を一つのみ含む水準の組み合わせである「異常入力」を生成し、テストデータ生成で効果的にテストデータの数を絞ることで、より少数のテストデータにより発生頻度の高い不具合を検出することができる。すなわち、自動生成したテストデータによって発生頻度の高い不具合を重点的に検出できる。
【００１７】
また、本発明によれば、不具合の原因特定を容易にするような、有用性の高いテストデータを生成することで、不具合の原因となる変数を一意に特定することが可能となる。すなわち、システムに入力したあるテストデータによって不具合が検出された場合、テストデータを構成する変数のうち、どの変数に原因があるかを特定できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の原理構成図である。
【図２】本発明の原理を説明するための図である。
【図３】本発明の一実施の形態におけるテストデータ生成装置の構成図である。
【図４】本発明で用いるＵＭＬ設計モデルイメージを示す図である。
【図５】本発明の一実施の形態におけるテストデータ仕様のフォーマットを示す図である。
【図６】本発明の一実施の形態におけるテストデータ生成装置の入出力イメージである。
【図７】本発明の一実施の形態におけるテストデータ生成処理概要のフローチャートである。
【図８】本発明の一実施の形態における実行経路抽出部で抽出される実行経路の例である。
【図９】本発明の一実施の形態におけるテストデータ仕様生成部のフローチャートである。
【図１０】本発明の一実施の形態における実行経路を説明するための図である。
【図１１】本発明の一実施の形態における正常入力と異常入力の生成方法を示す図である。
【図１２】本発明の一実施の形態におけるテストデータ生成部のフローチャートである。
【図１３】本発明の一実施の形態におけるテストデータ生成部の「正常入力の生成」処理のフローチャートである。
【図１４】本発明の一実施の形態におけるテストデータ生成部の「正常入力の生成」処理のプログラムレベルのフローチャートである。
【図１５】本発明の一実施の形態におけるテストデータ生成部の「異常入力の生成」処理のフローチャートである。
【図１６】本発明の一実施の形態におけるテストデータ生成部の「異常入力の生成」処理のプログラムレベルのフローチャートである。
【図１７】本発明の一実施の形態におけるテストデータ生成部野「入力への期待値付与」処理のフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面と共に本発明の実施の形態を説明する。
【００２０】
最初に、以下の実施の形態で用いる用語について説明する。
【００２１】
「設計モデル」とは、システムの設計情報を、曖昧性をもつ自然言語ではなく、何らかの形式的な記述言語により厳密的・形式的に記述したものである。
【００２２】
「制約条件」とは、設計モデルから抽出された実行経路に含まれ、『ａ＞３』のようなある因子（ここではａ）の取り得る値に関する条件を指す。『ａ＞３』の例では、制約条件は因子の名前（ａ）、オペレータ（＞）、オペランド（３）から成り、当該制約条件が付けられている場所により、「不変条件」、「事前条件」、「分岐条件」の３種類に分かれる。制約条件のオペレータには、不等号や文字列比較等通常使われる記法を用いる。
【００２３】
「テストデータ仕様」とは、設計モデル中の特定の実行経路を通るための因子（変数）が満たすべき性質を集めたもので、テストデータが満たすべき「仕様」を指す。
【００２４】
「テストデータ仕様の更新」とは、テストデータ仕様を、生成直後の初期値から実行経路中の制約条件の処理に従って上書きしていくことである。
【００２５】
「正常水準」とは、実行経路にとって許容する入力値である。
【００２６】
「異常水準」とは、実行経路にとって許容しない入力値である。
【００２７】
「正常入力」とは、因子と正常水準のみから構成される入力である。
【００２８】
「異常水準」とは、因子と１つの異常水準を含む入力である。
【００２９】
図３は、本発明の一実施の形態におけるテストデータ生成装置の構成を示す。
【００３０】
同図に示すテストデータ生成装置１０は、設計モデル読込部１、設計モデル分析部２、実行経路抽出部３、テストデータ仕様生成部４、水準生成部５、テストデータ生成部６、出力部７、実行経路・水準記憶部１１、テストデータ仕様記憶部１２、テストデータ記憶部１３から構成される。
【００３１】
このうち、設計モデル読込部１、設計モデル分析部２、実行経路抽出部３、テストデータ仕様生成部４、水準生成部５、テストデータ生成部６、出力部７は、ＣＰＵ上の機能であり、実行経路・水準記憶部１１、テストデータ仕様記憶部１２、テストデータ記憶部１３は、ハードディスク装置等の記憶媒体である。
【００３２】
ユーザ端末２０は、モデリングツール２１とビューワ２２を有し、モデルリングツール２１より設計モデルをテストデータ生成装置の設計モデル読込部１にエクスポートする。ビューワ２２は、テストデータ生成装置１０からテストデータを取得する。
【００３３】
設計モデル読込部１は、ユーザ端末２０のモデリングツール２１からエクスポートされた図４に示すようなＸＭＬ形式のＵＭＬモデル（クラス図、アクティビティ図）を読み込む。
【００３４】
設計モデル分析部２は、読み込まれたＵＭＬモデルを分析して、アクティビティをテスト対象として抽出する。
【００３５】
実行経路抽出部３は、テスト対象から実行経路（Path）を抽出し、抽出した実行経路をテストデータ生成部４と実行経路・水準記憶部１１に出力する。
【００３６】
テストデータ仕様生成部４は、実行経路抽出部３で抽出された全実行経路から、特定の実行経路を通るための、変数（実験計画法でいう「因子」）が満たすべき性質を集め、テストデータ仕様記憶部１２に格納する。テストデータ仕様は、図５に示すように、データ型（Integer型、Enum型、Object型、Boolean型、String型Collection型）毎に異なり、因子を規定するドメインをもつ。ドメインは更新（上書き）されるに従い、範囲が狭められていくものとする。例えば、String型の因子に対するテストデータ仕様は、長さ下限、長さ上限、部分文字列などの値を含んでおり、"name:String"という因子は、長さ０〜３０までであり、文字列"Ｍ"を含むというように、テストデータ仕様は因子（ここでは、「name」）の取り得る値を制限するものである。
【００３７】
水準生成部５は、テストデータ仕様記憶部１２からテストデータ仕様を読み込み、因子のとる値（実験計画法でいう「水準」）を生成し、当該因子、実行経路（Path Name）に対応させて実行経路・水準記憶部１１に格納する。水準生成部５は、テストデータ仕様で示される値に基づいて、正常水準または異常水準を生成する。
【００３８】
テストデータ生成部６は、実行経路・水準記憶部１１から実行経路と水準を取得し、入力（因子と水準の組）と期待値のペアを含むテストデータを生成し、図６（Ｂ）に示すようなフォーマットでテストデータ記憶部１３に格納する。テストデータは、図６（Ｂ）に示すように、実行経路名、テストデータＩＤ、水準（値）、因子（変数）、期待値、正常入力または異常入力区別、テスト結果の項目からなる。
【００３９】
出力部７は、テストデータ生成部６で生成されたテストデータをテストデータ記憶部１３から読み出してユーザ端末２０に出力する。ここでは、ＣＳＶ形式で出力するものとする。
【００４０】
以下に、上記の構成における動作を説明する。
【００４１】
図７は、本発明の一実施の形態におけるテストデータ生成装置の動作のフローチャートである。
【００４２】
ステップ１００）  設計モデル読込部１は、ユーザ端末２００からエクスポートされたＸＭＬ形式のＵＭＬ（Unified Modeling Language）モデルを読み込み、設計モデル分析部２に渡す。
【００４３】
ステップ１１０）  設計モデル分析部２は、設計モデル読込部１から取得したＵＭＬ設計モデルを分解してアクティビティをテスト対象として抽出し、実行経路抽出部３に渡す。
【００４４】
ステップ１２０）  実行経路抽出部３は、図８に示すように、取得した各テスト対象（アクティビティ）の開始ノードから終了ノードまで走査して実行経路を抽出し、全ての実行経路情報を実行経路・水準記憶部１１及びテストデータ仕様生成部４に渡す。実行経路情報は図１０に示すように各ノードの処理、分岐条件、事後条件を含む。
【００４５】
ステップ１３０）  テストデータ仕様生成部４は、各実行経路情報に基づいて図５に示すようなフォーマットでテストデータ仕様を生成し、テストデータ仕様記憶部１２に格納する。
【００４６】
以下に、テストデータ仕様生成部４の動作を説明する。図９は、本発明の一実施の形態におけるテストデータ仕様生成部のフローチャートである。以下では、テストデータ仕様記憶部１２は因子の型に基づき対応するテストデータ仕様をデフォルトで初期化されているものとする。
【００４７】
ステップ１３１）  テストデータ仕様生成部４は、実行経路抽出部３から実行経路情報を取得し、メモリ（図示せず）に格納する。
【００４８】
ステップ１３２）  メモリ（図示せず）から実行経路を取得して、図１０に示すような実行経路の開始ノードから終了ノードまでを走査し、その中に含まれる制約条件を抽出する。
【００４９】
ステップ１３３  テストデータ仕様記憶部１２から1件のテストデータ仕様を読み込む。全てのテストデータ仕様を読み込んだ場合は、当該処理を終了する。
【００５０】
ステップ１３４）  読み込んだテストデータ仕様の因子名と制約条件に含まれる因子を比較し、一致する場合は、ステップ１３５に移行し、一致しない場合はステップ１３３に戻る。
【００５１】
ステップ１３５）  因子名が一致する場合は、テストデータ仕様記憶部１２のテストデータ仕様を制約条件の内容で更新する。
【００５２】
ステップ１４０）  水準生成部５は、テストデータ仕様記憶部１２からテストデータ仕様を読み込み、因子のとる値（実験計画法でいう『水準』）を生成し、実行経路・水準記憶部１１に格納する。水準は、テストデータ仕様の型によって異なる。
【００５３】
例えば、テストデータ仕様の型が「Boolean型」である場合は、図５に示すBoolean型テストデータ仕様の値ｖを取得して、「true」「false」を正常水準とし、null、Boolean型ではない値を異常水準として生成する。
【００５４】
また、Enum型テストデータ仕様の場合は、図５に示すEnum型テストデータ仕様の「許容する要素Ｓ」の各要素ｓを正常水準とし、Ｓに属さない要素ｓ'及び、null、Enum型でない値を異常水準とする。
【００５５】
また、Integer型テストデータ仕様の場合は、図５に示すInteger型テストデータ仕様の下限Ｌ，上限Ｕを取得し、Ｌ，Ｌ−１，Ｕ−１，Ｕ、ランダム値Ｘ（Ｌ≦Ｘ≦Ｕ）を正常水準とし、Ｌ−１，Ｕ＋１、正、負でオーバーフローとなる値、null、Integer型でない値を異常水準とする。
【００５６】
他の型についてもテストデータ仕様の型毎に所定の水準を求める。
【００５７】
上記のようにして求められた水準を因子と共に実行経路・水準記憶部１１に格納する。
【００５８】
ステップ１５０）  テストデータ生成部６は、実行経路・水準記憶部１１から水準と因子の組（入力）を取得して、入力と期待値のペアからなるテストデータを生成し、図６（Ｂ）に示すようなフォーマットでテストデータ記憶部１３に格納する。「入力」とは、実行経路・水準記憶部１１から取得した因子と水準の組み合わせである。「入力」として、１つの因子に対し、全て正常水準の組み合わせを「正常入力」とし、また、１つの因子に対し、正常水準と１つの異常水準の組み合せを「異常入力」とする。図１１（Ａ）に示すように、正常水準の組み合わせを正常入力とし、同図（Ｂ）に示すように正常水準と１つの異常水準を含む組み合わせを異常水準とする。
【００５９】
当該入力の生成方法については、図１２以降で詳述する。
【００６０】
ステップ１６０）  出力部７は、テストデータ生成部６で生成されたテストデータ（ＣＳＶファイル）をテストデータ記憶部１３から読み込んで、外部ファイル（ユーザ端末のビューア２２０）に出力する。
【００６１】
次に、ステップ１５０のテストデータ生成部６の処理について説明する。
【００６２】
図１２は、本発明の一実施の形態におけるテストデータ生成部のフローチャートである。
【００６３】
ステップ１５１）  実行経路・水準記憶部１１から全因子の全水準を取得し、メモリ（図示せず）に格納する。
【００６４】
ステップ１５２）  各因子において正常水準からなる正常入力の生成を行う。当該正常入力の詳細な生成処理を図１３に示し、正常入力の例を図１１（Ａ）に示す。
【００６５】
ステップ１５２１）  ステップ１５１で取得した全因子より、最も正常水準を多く持つ因子Ａの正常水準数Ｍを特定する。
【００６６】
ステップ１５２２）  テストデータ記憶部１３上に、Ｍ件の空の正常入力を生成する（レコードを生成する）。
【００６７】
ステップ１５２３）  生成されたレコードの正常入力のカラムに因子Ａの正常水準を順番に埋める。
【００６８】
ステップ１５２４）  次に、因子Ａ以外の各因子の正常水準を繰り返し正常入力に埋める。
【００６９】
ここでは、ありうる全組み合わせではなく、各因子における全ての水準が少なくとも１回はテストで使用されるよう、入力の組み合わせを作る。この基準を「全水準網羅」と呼ぶ。全ての正常水準からなる組み合わせを「正常入力」とする。従って生成される正常入力の数は、最も水準数の多い因子の水準数と一致し、これは全水準網羅を満たす最小の組み合わせ数である。
【００７０】
上記の処理をプログラムレベルで表すと図１４に示すような流れとなる。
【００７１】
ステップ１５３）  各因子において、１つの異常水準を含む異常入力の生成を行う。以下に、図１５に従って当該異常入力の生成処理について説明する。また、その例を図１１（Ｂ）に示す。
【００７２】
ステップ１５３１）  メモリ（図示せず）に格納されている全因子より、各因子の異常水準数の合計Ｎを特定する。
【００７３】
ステップ１５３２）  テストデータ記憶部１３上に、Ｎ件の空の異常入力を生成する（レコードを生成する）。
【００７４】
ステップ１５３３）  生成した正常入力をレコード上の異常入力に繰り返し上書きする。
【００７５】
ステップ１５３４）  次に、各異常水準について、どの因子のものかに基づいて、異常水準を異常入力の該当箇所の１箇所のみに上書きする。
【００７６】
この処理は、全水準網羅を満たす最小な組み合わせ数ではく、１つの組み合わせには１つの異常水準しか含めないように組み合わせを生成する。これは、異常入力によりシステムの不具合が発見された場合に、どの因子に起因する不具合か、特定できるようにするためである。
【００７７】
上記の処理をプログラムレベルで表すと図１６に示すような流れとなる。
【００７８】
ステップ１５４）  各入力に対して期待値を付与する。
【００７９】
以下に、図１７に沿って期待値の付与について説明する。
【００８０】
図１７は、本発明の一実施の形態におけるテストデータ生成部の「入力への期待値付与」処理のフローチャートである。
【００８１】
ステップ１５４１）  実行経路・水準記憶部１２から入力（因子＋水準）と当該入力に対応する実行経路を取得する。
【００８２】
ステップ１５４２）  実行経路中の全事後条件を取得する。事後条件は、図１０に示すように、実行経路の開始ノードから終了ノードまで順にノードをチェックすることにより取得できる。
【００８３】
ステップ１５４３）  入力（因子＋水準）が正常入力である場合は、ステップ１５４４に移行し、そうでない場合は、ステップ１５４５に移行する。
【００８４】
ステップ１５４４）  ステップ１５４２において事後条件が取得できた場合は、ステップ１５４７に移行し、取得できなかった場合はステップ１５４６に移行する。
【００８５】
ステップ１５４５）  期待値を「不定」として、入力（因子＋水準）に付与する。
【００８６】
ステップ１５４６）  期待値を「未定義」として、入力（因子＋水準）に付与する。
【００８７】
ステップ１４５７）  期待値を「事後条件の集合」として、入力（因子＋水準）に付与する。
【００８８】
ここで、図６に示す例では、［status=APPROVED,orderld=任意文字列（999文字）］
が１つの入力で、[changedOrderが追加されていること]が期待値である。
【００８９】
なお、上記の図３に示すテストデータ生成装置の各構成要素の動作をプログラムとして構築し、テストデータ生成装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００９０】
また、構築されたプログラムをハードディスクや、フレキシブルディスク・ＣＤ−ＲＯＭ等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【００９１】
なお、本発明は、上記の実施の形態及び実施例に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【００９２】
１  設計モデル読込手段、設計モデル読込部
２  設計モデル分析手段、設計モデル分析部
３  実行経路抽出手段、実行経路抽出部
４  テストデータ仕様生成手段、テストデータ仕様生成部
５  水準生成手段、水準生成部
６  テストデータ生成手段、テストデータ生成部
７  出力手段、出力部
１０  テストデータ生成装置
１１  実行経路・水準記憶手段、実行経路・水準記憶部
１２  テストデータ仕様記憶手段、テストデータ仕様記憶部
１３  テストデータ記憶手段、テストデータ記憶部
２０  ユーザ端末
２１  モデリングツール
２２  ビューア
【図１】
2010267022.tif 000003
【図２】
2010267022.tif 000004
【図３】
2010267022.tif 000005
【図４】
2010267022.tif 000006
【図５】
2010267022.tif 000007
【図６】
2010267022.tif 000008
【図７】
2010267022.tif 000009
【図８】
2010267022.tif 000010
【図９】
2010267022.tif 000011
【図１０】
2010267022.tif 000012
【図１１】
2010267022.tif 000013
【図１２】
2010267022.tif 000014
【図１３】
2010267022.tif 000015
【図１４】
2010267022.tif 000016
【図１５】
2010267022.tif 000017
【図１６】
2010267022.tif 000018
【図１７】
2010267022.tif 000019