(57)【要約】【課題】十分な網羅率を達成できるテストケースを、人手を介さずに生成することができる図式プログラムのテストデータ生成装置およびその方法を提供する。【解決手段】図式プログラムを構成する図形要素の中から切替要素を検索する切替要素検索手段３３と、切替要素の全てについてそれらの前方の開始要素を検索する前方開始要素検索手段３４と、開始要素およびその開始要素のとるＯＮ／ＯＦＦの条件等を因子リスト記憶手段４５に記憶させる開始要素列挙手段３５と、因子リスト記憶手段４５に記憶されている開始要素のとる条件の組合せを、直交表等の組合せテストの技法を用いて、テストデータとして生成する条件組合せ手段３６とを設け、図式プログラムのテストデータ生成装置１０を構成した。【選択図】図１
2014038397.tif 000002
【特許請求の範囲】
【請求項１】
図形を用いて記述された図式プログラムのテストデータを生成するコンピュータにより構成された図式プログラムのテストデータ生成装置であって、
前記図式プログラムを記憶する図式プログラム記憶手段と、
この図式プログラム記憶手段に記憶された前記図式プログラムを構成する図形要素の中から、切替用制御情報に従って複数の入力を切り替えて取得して出力を生成する切替要素を検索し、検索して得られた前記切替要素を識別する要素ＩＤを切替要素リスト記憶手段に記憶させる処理を実行する切替要素検索手段と、
前記切替要素リスト記憶手段に前記要素ＩＤが記憶されている前記切替要素の全てについて、前記切替要素の上流側に接続されて前記切替用制御情報を生成している図形要素を開始要素に到達するまで前方に検索する処理を実行する前方開始要素検索手段と、
この前方開始要素検索手段により検索して得られた前記開始要素を識別する要素ＩＤを、前記開始要素のとるＯＮ／ＯＦＦの条件またはその他の条件とともに、因子リスト記憶手段に記憶させる処理を実行する開始要素列挙手段と、
前記因子リスト記憶手段に前記要素ＩＤが記憶されている前記開始要素のとる条件の組合せを、直交表を用いる技法、オールペア法、またはその他の組合せテストの技法を用いて、前記図式プログラムのテストデータとして生成する処理を実行する条件組合せ手段と
を備えたことを特徴とする図式プログラムのテストデータ生成装置。
【請求項２】
前記開始要素列挙手段は、
１つの開始要素から分岐して複数の前記切替要素に至ることにより前記１つの開始要素のとる条件が複数の前記切替要素の切替用制御情報となっている場合に、前記前方開始要素検索手段による検索処理を実行して前記因子リスト記憶手段に重複して記憶された前記１つの開始要素の要素ＩＤについて、重複を排除する処理を実行する構成とされている
ことを特徴とする請求項１に記載の図式プログラムのテストデータ生成装置。
【請求項３】
前記開始要素列挙手段は、
前記前方開始要素検索手段による検索処理を実行して前記切替要素の前方に合流要素が検出されたときに、
前記合流要素が論理和の性質を持ち、かつ、前記合流要素への複数の入力の全てが開始要素により直接に与えられている場合には、前記合流要素への入力を与える複数の開始要素のうち、１つの開始要素のみについての要素ＩＤを、ＯＮ／ＯＦＦの条件とともに前記因子リスト記憶手段に記憶させ、残りの全ての開始要素についての要素ＩＤは、固定条件としてのＯＦＦの条件とともに固定条件リスト記憶手段に記憶させ、
前記合流要素が論理積の性質を持ち、かつ、前記合流要素への複数の入力の全てが開始要素により直接に与えられている場合には、前記合流要素への入力を与える複数の開始要素のうち、１つの開始要素のみについての要素ＩＤを、ＯＮ／ＯＦＦの条件とともに前記因子リスト記憶手段に記憶させ、残りの全ての開始要素についての要素ＩＤは、固定条件としてのＯＮの条件とともに前記固定条件リスト記憶手段に記憶させる処理を実行する構成とされ、
前記条件組合せ手段は、
前記組合せテストの技法を用いて生成された前記開始要素のとる条件の組合せに、前記固定条件リスト記憶手段に前記要素ＩＤが記憶されている前記開始要素の前記固定条件を追加することにより、前記図式プログラムのテストデータを生成する処理を実行する構成とされている
ことを特徴とする請求項１または２に記載の図式プログラムのテストデータ生成装置。
【請求項４】
前記切替要素検索手段は、
前記切替要素リスト記憶手段に前記要素ＩＤが記憶されている前記切替要素の全てについて、前記切替要素へ入力を与える複数の入力端子のそれぞれの前方を検索し、前方に別の前記切替要素が検出された場合には、この検出された前記切替要素と検索の開始位置の前記切替要素とにより前記切替要素の組を作成し、作成した組を構成する多段に接続された前記切替要素の各要素ＩＤを、組にした状態で前記切替要素リスト記憶手段に記憶させる処理を実行する構成とされている
ことを特徴とする請求項１〜３のいずれかに記載の図式プログラムのテストデータ生成装置。
【請求項５】
図形を用いて記述された図式プログラムのテストデータを生成するコンピュータにより構成された図式プログラムのテストデータ生成装置で実行される図式プログラムのテストデータ生成方法であって、
前記図式プログラムを図式プログラム記憶手段に記憶させ、
切替要素検索手段が、前記図式プログラム記憶手段に記憶された前記図式プログラムを構成する図形要素の中から、切替用制御情報に従って複数の入力を切り替えて取得して出力を生成する切替要素を検索し、検索して得られた前記切替要素を識別する要素ＩＤを切替要素リスト記憶手段に記憶させる処理を実行し、
前方開始要素検索手段が、前記切替要素リスト記憶手段に前記要素ＩＤが記憶されている前記切替要素の全てについて、前記切替要素の上流側に接続されて前記切替用制御情報を生成している図形要素を開始要素に到達するまで前方に検索する処理を実行し、
開始要素列挙手段が、前記前方開始要素検索手段により検索して得られた前記開始要素を識別する要素ＩＤを、前記開始要素のとるＯＮ／ＯＦＦの条件またはその他の条件とともに、因子リスト記憶手段に記憶させる処理を実行し、
条件組合せ手段が、前記因子リスト記憶手段に前記要素ＩＤが記憶されている前記開始要素のとる条件の組合せを、直交表を用いる技法、オールペア法、またはその他の組合せテストの技法を用いて、前記図式プログラムのテストデータとして生成する処理を実行する
ことを特徴とする図式プログラムのテストデータ生成方法。
【請求項６】
請求項１〜４のいずれかに記載の図式プログラムのテストデータ装置として、コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、図形を用いて記述された図式プログラムのテストデータを生成するコンピュータにより構成された図式プログラムのテストデータ生成装置およびその方法、並びにプログラムに係り、例えば、図形を用いてプログラムを記述し、これを自動的にＣ言語等のテキスト形式のプログラム言語に変換するシステムにおいて、プログラムのテスト用の入力データを自動的に生成する場合に利用できる。
【背景技術】
【０００２】
一般に、プログラムの作成に際しては、Ｃ言語等の高級言語を利用して原始プログラム（ソースコード）を記述し、これをコンパイラによりコンピュータで実行可能な機械語に変換し、実行形式プログラムを得る方法が用いられている。このような方法の場合、通常、ソースコードはテキスト形式で記述される。
【０００３】
このような方法でプログラムを作成するには、事前にプログラムの詳細設計を行って詳細設計書を作成し、これをＣ言語等の高級言語によるソースコードに変換するが、詳細設計書に記載されている情報はソースコードを作成するのに必要十分な設計情報であるため、詳細設計書に記載の情報をソースコードに変換する作業は、機械的な要素が多く含まれていて、二重作業となり冗長であるとか、変換作業に単純な人為ミスが混入する可能性があるといった問題点を持っていた。
【０００４】
そこで、このような問題点を解決するための技術として、プログラマ（ここでは、プログラムの設計に携わる者という意味での広義のプログラマをいう。）が、ＣＡＤを用い、詳細設計書に記述されるような図面（図形）にプログラムとして必要となる情報を入力して図式プログラムを作成し、この図式プログラムから、従来、手作業で作成していたＣ言語等の高級言語によるプログラム（ソースコード）を自動的に生成させる技術が開発されている。例えば、モジュール関連図、処理フロー図、内部データ定義図、インタフェースデータ定義図を用いて、ソースプログラムを作成する技術が開示されている（特許文献１参照）。
【０００５】
ところで、近年、プログラムの不具合による社会インフラの停止等の問題が顕在化するようになってきており、プログラムの試験の重要性も高まっている。このため、プログラムの単体テストのレベルでは、プログラムの試験がどの程度網羅的に実施されたかを数値化した網羅率（カバレッジ）で、プログラムのテストの十分性を評価する手法が使われるようになってきている。このような手法では、プログラムのテストを自動的に実行できるように、自動テスト環境やプログラムに入力するパラメータ、実行結果の期待値等を用意し、テストを自動実行したうえで、そのテストで実行したテストケースのプログラム上での網羅率（テストを実施することができた範囲）を測定する。例えば、テスト対象のプログラムのテスト実行結果をファイルに保存し、正解集ファイルと比較し、その結果を履歴として保存する自動テスト技術が開示されている（特許文献２参照）。また、分岐命令割込みを利用して、判断文の網羅率を測定する技術が開示されている（特許文献３参照）。なお、網羅率にも、様々な指標での計算方法があり、特許文献３で使用されている判断文カバレッジ（分岐網羅率（Ｃ１））の他にも、行カバレッジ（命令網羅率（Ｃ０））、単純条件カバレッジ（条件網羅率（Ｃ２））等が、一般に知られている。
【０００６】
そして、このような自動テストを行うには、テストケースの作成が必要となる。例えば、設計者との対話的処理により入力したプログラムの故障モードおよびその影響の解析結果をＦＭＥＡシートの枠組みに埋め込むことにより作成した解析シートから、プログラムのテストルールを生成するプログラムテストデータ自動生成技術が開示されている（特許文献４参照）。
【０００７】
また、近年、ソフトウェアテストの際に、少ないテスト数で不具合検出を行うことができることから、直交表を利用したテスト項目作成手法が採用されている。例えば、直交表を利用してテスト項目を作成するための因子・水準の入力を支援し、テスト項目を自動的に実行する技術が開示されている（特許文献５参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開昭６０−１５９９３９号公報
【特許文献２】特開平５−５３８７３号公報
【特許文献３】特開平５−２５７７４３号公報
【特許文献４】特開平１−２９８４３５号公報
【特許文献５】特開２０１１−３９７８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来、Ｃ言語のようなテキスト形式で記述されたプログラムのテストケース（プログラムのテスト時に入力される一群のテストデータ）を作成するには、すなわちテストの条件を決定するには、プログラムの外部仕様（入力とその出力である動作の概要とが記載された書面の内容）より、プログラムに入力される値を同義の区間（入出力特性から、同じような動作をすると考えられる区間）に分割（同値分割）し、区間毎の代表値や境界値をパラメータとして採用し、テストケース（プログラムに入力するパラメータまたはその組合せ）を決定していた。
【００１０】
しかし、このような外部仕様に基づくテストケースの作成方法では、プログラムの内部の情報を反映しておらず、情報が不足するため、十分な網羅率を達成できるテストケースが作成できない場合があるという問題点があった。
【００１１】
また、この作業は、仕様を読解してテストケースを決めるという方法であるため、人手を介して行う作業の量が多いという問題点も持っていた。前述した特許文献４に開示されているプログラムテストデータ自動生成技術についても、故障モードおよびその影響の解析結果の入力には、対話的な作業が必要となっていた。
【００１２】
本発明の目的は、十分な網羅率を達成できるテストケースを、人手を介さずに生成することができる図式プログラムのテストデータ生成装置およびその方法、並びにプログラムを提供するところにある。
【課題を解決するための手段】
【００１３】
本発明は、図形を用いて記述された図式プログラムのテストデータを生成するコンピュータにより構成された図式プログラムのテストデータ生成装置であって、図式プログラムを記憶する図式プログラム記憶手段と、この図式プログラム記憶手段に記憶された図式プログラムを構成する図形要素の中から、切替用制御情報に従って複数の入力を切り替えて取得して出力を生成する切替要素を検索し、検索して得られた切替要素を識別する要素ＩＤを切替要素リスト記憶手段に記憶させる処理を実行する切替要素検索手段と、切替要素リスト記憶手段に要素ＩＤが記憶されている切替要素の全てについて、切替要素の上流側に接続されて切替用制御情報を生成している図形要素を開始要素に到達するまで前方に検索する処理を実行する前方開始要素検索手段と、この前方開始要素検索手段により検索して得られた開始要素を識別する要素ＩＤを、開始要素のとるＯＮ／ＯＦＦの条件またはその他の条件とともに、因子リスト記憶手段に記憶させる処理を実行する開始要素列挙手段と、因子リスト記憶手段に要素ＩＤが記憶されている開始要素のとる条件の組合せを、直交表を用いる技法、オールペア法、またはその他の組合せテストの技法を用いて、図式プログラムのテストデータとして生成する処理を実行する条件組合せ手段とを備えたことを特徴とするものである。
【００１４】
このような本発明の図式プログラムのテストデータ生成装置においては、切替要素検索手段により、図式プログラムを構成する図形要素の中から切替要素を検索し、前方開始要素検索手段により、その切替要素から上流側に遡って開始要素まで前方に検索し、開始要素列挙手段により、検索した開始要素の要素ＩＤを、因子リスト記憶手段に列挙して記憶させる。そして、条件組合せ手段により、組合せテストの技法を用いて、因子リスト記憶手段に列挙して記憶された開始要素のとる条件の組合せを生成し、これを図式プログラムのテストデータとする。
【００１５】
このため、組合せテストの技法を用いて、開始要素のとる条件の組合せを生成するので、テストデータの組合せの数を低減しつつ、十分な網羅率を達成することが可能となる。例えば、直交表を用いる技法や、オールペア法（ペアワイズ手法ともいう。）を用いることで、任意の２つの因子（ここでは、切替用制御情報を生成している切替要素の前方の開始要素）の間の全水準（ＯＮ／ＯＦＦのような取りうる選択肢）の組合せを網羅することができるようにテストの条件を決定することが可能となり、網羅率を向上させることができるようになる。
【００１６】
また、組合せテストの技法を用いて、開始要素のとる条件の組合せを生成するので、テストデータを自動生成することができ、従来のように人手を介してテストデータを作成する必要がなくなる。従って、プログラムのテストを行う者の手間が軽減されるうえ、場合によっては人間の勘に頼ってテストデータを作成することもあったため、この場合に比べると、網羅率の高いテストを行うことが可能となり、テストの信頼性を向上させ、プログラムの安全性を高めることが可能となり、これらにより前記目的が達成される。
【００１７】
なお、本発明は、図式プログラムでは切替要素が条件分岐の要因となっているので、この切替要素に着目し、図式プログラムを構成する図形要素の情報を利用して切替要素を検索し、そしてその前方の開始要素を検索し、直交表を用いる技法やオールペア法といった組合せテストの技法により、テストデータの生成を実現している。このため、本発明は、前述した特許文献５のように単にプログラムのテストに直交表を利用する場合とは異なり、図式プログラムを構成する図形要素の情報の利用と、組合せテストの技法の利用とを結び付けた独特な処理を行っている。
【００１８】
また、前述した図式プログラムのテストデータ生成装置において、開始要素列挙手段は、１つの開始要素から分岐して複数の切替要素に至ることにより１つの開始要素のとる条件が複数の切替要素の切替用制御情報となっている場合に、前方開始要素検索手段による検索処理を実行して因子リスト記憶手段に重複して記憶された１つの開始要素の要素ＩＤについて、重複を排除する処理を実行する構成とされていることが望ましい。
【００１９】
このように因子リスト記憶手段に記憶された開始要素の要素ＩＤの重複を排除する構成とした場合には、１つの開始要素から分岐して複数の切替要素に至ることにより１つの開始要素のとる条件が複数の切替要素の切替用制御情報となっているケースで、因子リストにおける因子の重複を排除することが可能となる。
【００２０】
さらに、前述した図式プログラムのテストデータ生成装置において、開始要素列挙手段は、前方開始要素検索手段による検索処理を実行して切替要素の前方に合流要素が検出されたときに、合流要素が論理和の性質を持ち、かつ、合流要素への複数の入力の全てが開始要素により直接に与えられている場合には、合流要素への入力を与える複数の開始要素のうち、１つの開始要素のみについての要素ＩＤを、ＯＮ／ＯＦＦの条件とともに因子リスト記憶手段に記憶させ、残りの全ての開始要素についての要素ＩＤは、固定条件としてのＯＦＦの条件とともに固定条件リスト記憶手段に記憶させ、合流要素が論理積の性質を持ち、かつ、合流要素への複数の入力の全てが開始要素により直接に与えられている場合には、合流要素への入力を与える複数の開始要素のうち、１つの開始要素のみについての要素ＩＤを、ＯＮ／ＯＦＦの条件とともに因子リスト記憶手段に記憶させ、残りの全ての開始要素についての要素ＩＤは、固定条件としてのＯＮの条件とともに固定条件リスト記憶手段に記憶させる処理を実行する構成とされ、条件組合せ手段は、組合せテストの技法を用いて生成された開始要素のとる条件の組合せに、固定条件リスト記憶手段に要素ＩＤが記憶されている開始要素の固定条件を追加することにより、図式プログラムのテストデータを生成する処理を実行する構成とされていることが望ましい。
【００２１】
このように合流要素の性質に応じて開始要素のとる条件を因子リスト記憶手段または固定条件リスト記憶手段に振り分けて記憶させる構成とした場合には、切替要素の前方に合流要素があるときに、開始要素のとる条件の組合せの数を減らすことが可能となる。
【００２２】
そして、前述した図式プログラムのテストデータ生成装置において、切替要素検索手段は、切替要素リスト記憶手段に要素ＩＤが記憶されている切替要素の全てについて、切替要素へ入力を与える複数の入力端子のそれぞれの前方を検索し、前方に別の切替要素が検出された場合には、この検出された切替要素と検索の開始位置の切替要素とにより切替要素の組を作成し、作成した組を構成する多段に接続された切替要素の各要素ＩＤを、組にした状態で切替要素リスト記憶手段に記憶させる処理を実行する構成とされていることが望ましい。
【００２３】
このように切替要素が多段になっているときに切替要素の組を作成する構成とした場合には、開始要素の依存性を利用して因子数を減らし、テストケースを減らすことが可能となる。
【００２４】
また、以上に述べた本発明の図式プログラムのテストデータ生成装置により実現されるテストデータ生成方法として、以下のような本発明の図式プログラムのテストデータ生成方法が挙げられる。
【００２５】
すなわち、本発明は、図形を用いて記述された図式プログラムのテストデータを生成するコンピュータにより構成された図式プログラムのテストデータ生成装置で実行される図式プログラムのテストデータ生成方法であって、図式プログラムを図式プログラム記憶手段に記憶させ、切替要素検索手段が、図式プログラム記憶手段に記憶された図式プログラムを構成する図形要素の中から、切替用制御情報に従って複数の入力を切り替えて取得して出力を生成する切替要素を検索し、検索して得られた切替要素を識別する要素ＩＤを切替要素リスト記憶手段に記憶させる処理を実行し、前方開始要素検索手段が、切替要素リスト記憶手段に要素ＩＤが記憶されている切替要素の全てについて、切替要素の上流側に接続されて切替用制御情報を生成している図形要素を開始要素に到達するまで前方に検索する処理を実行し、開始要素列挙手段が、前方開始要素検索手段により検索して得られた開始要素を識別する要素ＩＤを、開始要素のとるＯＮ／ＯＦＦの条件またはその他の条件とともに、因子リスト記憶手段に記憶させる処理を実行し、条件組合せ手段が、因子リスト記憶手段に要素ＩＤが記憶されている開始要素のとる条件の組合せを、直交表を用いる技法、オールペア法、またはその他の組合せテストの技法を用いて、図式プログラムのテストデータとして生成する処理を実行することを特徴とするものである。
【００２６】
このような本発明の図式プログラムのテストデータ生成方法においては、前述した本発明の図式プログラムのテストデータ生成装置で得られる作用・効果がそのまま得られ、これにより前記目的が達成される。
【００２７】
また、本発明のプログラムは、前述した図式プログラムのテストデータ生成装置として、コンピュータを機能させるためのものである。
【００２８】
なお、上記のプログラムまたはその一部は、例えば、光磁気ディスク（ＭＯ）、コンパクトディスク（ＣＤ）を利用した読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）、デジタル・バーサタイル・ディスク（ＤＶＤ）を利用した読出し専用メモリ（ＤＶＤ−ＲＯＭ）、ＤＶＤを利用したランダム・アクセス・メモリ（ＤＶＤ−ＲＡＭ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去および書換可能な読出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）等の記録媒体に記録して保存や流通等させることが可能であるとともに、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等の有線ネットワーク、あるいは無線通信ネットワーク、さらにはこれらの組合せ等の伝送媒体を用いて伝送することが可能であり、また、搬送波に載せて搬送することも可能である。さらに、上記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。
【発明の効果】
【００２９】
以上に述べたように本発明によれば、組合せテストの技法を用いて、開始要素のとる条件の組合せを生成するので、テストデータの組合せの数を低減しつつ、十分な網羅率を達成することができるとともに、テストデータを自動生成することができ、従来のように人手を介してテストデータを作成する必要がなくなることから、プログラムのテストを行う者の手間の軽減、網羅率の高いテストの実現、テストの信頼性向上、プログラムの安全性の向上を図ることができるという効果がある。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態の図式プログラムのテストデータ生成装置の全体構成図。
【図２】前記実施形態のハードウェア構成図。
【図３】前記実施形態の切替要素を含む図式プログラムの一例を示す図。
【図４】前記実施形態の切替要素を含む図式プログラムから生成されたコードの一例を示す図。
【図５】前記実施形態の切替要素の上側端子が開始要素に直接に繋がっていない場合の図式プログラムの一例を示す図。
【図６】前記実施形態の分岐要素がある場合の図式プログラムの一例を示す図。
【図７】前記実施形態の合流要素がある場合の図式プログラムの一例を示す図。
【図８】前記実施形態の切替要素が多段になっている場合の図式プログラムの一例を示す図。
【図９】前記実施形態において３因子、２水準を扱うことができる直交表Ｌ４を用いて作成されたテストデータの一例を示す図。
【図１０】前記実施形態において４因子、３水準を扱うことができる直交表Ｌ９を用いて作成されたテストデータの一例（因子を統合した状態）を示す図。
【図１１】前記実施形態において４因子、３水準を扱うことができる直交表Ｌ９を用いて作成されたテストデータの一例（統合された因子を分解した状態）を示す図。
【図１２】前記実施形態のテストデータ生成処理の流れを示すフローチャートの図。
【図１３】前記実施形態の前方開始要素検索処理の詳細な流れを示すフローチャートの図。
【図１４】本発明の変形の形態を示す第１の説明図。
【図１５】前記変形の形態を示す第２の説明図。
【図１６】前記変形の形態を示す第３の説明図。
【発明を実施するための形態】
【００３１】
以下に本発明の一実施形態について図面を参照して説明する。図１には、本実施形態の図式プログラムのテストデータ生成装置１０の全体構成が示され、図２には、そのハードウェア構成が示されている。図３には、切替要素を含む図式プログラムの一例が示され、図４には、その切替要素を含む図式プログラムから生成されたコードの一例が示されている。また、図５には、切替要素の上側端子が開始要素に直接に繋がっていない場合の図式プログラムの一例が示され、図６には、分岐要素がある場合の図式プログラムの一例が示され、図７には、合流要素がある場合の図式プログラムの一例が示され、図８には、切替要素が多段になっている場合の図式プログラムの一例が示され、図９には、３因子、２水準を扱うことができる直交表Ｌ４を用いて作成されたテストデータの一例が示され、図１０および図１１には、４因子、３水準を扱うことができる直交表Ｌ９を用いて作成されたテストデータの一例が示されている。さらに、図１２には、テストデータ生成処理の流れがフローチャートで示され、図１３には、前方開始要素検索処理の詳細な流れがフローチャートで示されている。
【００３２】
図１において、図式プログラムのテストデータ生成装置１０は、コンピュータ本体により構成された装置本体２０と、マウスやキーボード等の入力装置５０と、液晶ディスプレイやＣＲＴディスプレイ等のディスプレイ装置６０とを備えている。また、図示は省略されているが、印刷装置を備えた構成としてもよい。
【００３３】
装置本体２０は、図式プログラム作成手段３１と、ソースコード変換手段３２と、切替要素検索手段３３と、前方開始要素検索手段３４と、開始要素列挙手段３５と、条件組合せ手段３６と、図式プログラムライブラリ記憶手段４１と、図式プログラム記憶手段４２と、生成プログラム記憶手段４３と、切替要素リスト記憶手段４４と、因子リスト記憶手段４５と、固定条件リスト記憶手段４６と、テストデータ記憶手段４７とを含んで構成されている。
【００３４】
また、装置本体２０は、ハードウェア構成としては、図２に示すように、演算装置（ＣＰＵ）２１と、主記憶装置（主メモリ、ここではキャッシュメモリを含むものとする。）２２と、ハードディスク等の補助記憶装置２３と、これらを接続するバス２４と、各種インターフェースとを含んで構成されている。
【００３５】
図式プログラム作成手段３１は、図式プログラムライブラリ記憶手段４１に予め用意されて記憶されている各種の機能を有する図形要素（図式プログラムの構成要素であり、図３、図５〜図８の切替要素、開始要素、合流要素等が含まれる。）の情報を用いて、プログラマ（本実施形態では、プログラムの設計に携わる広義のプログラマ）による図形要素の選択入力およびそれに付随させる情報（設定値等）の入力を受け付けるとともに、図形要素間の接続情報の入力も受け付け、ディスプレイ装置６０の画面上に、入力された図形要素を並べて表示するとともに、それらの接続関係も表示することにより（図３参照）、図形を用いたプログラムの作成を支援し、入力された図形要素の情報を、その図形要素を識別する要素ＩＤと関連付け、また、入力された接続情報を、接続関係ＩＤと関連付けて、図式プログラム記憶手段４２に記憶させる処理を実行するものである。
【００３６】
ソースコード変換手段３２は、ディスプレイ装置６０の画面上に表示しながらプログラマにより作成されて図式プログラム記憶手段４２に記憶されている作成済みの図式プログラムの情報（図式プログラムを構成する各図形要素の情報およびそれらの図形要素間の接続情報）を用いて、各図形要素の種別コードにより図式プログラムライブラリ記憶手段４１から各図形要素の種別（機能）に応じた処理内容を示すソースコードを取得し、各図形要素について設定されている情報（パラメータへの設定値等）と組み合わせることにより、図式プログラム（図３参照）で示される処理内容を、テキスト形式の計算機言語（高級言語）で記述したソースコード（図４参照）に変換し、変換して得られたソースプログラム（本実施形態では、一例として、Ｃ言語プログラムとする。）を、生成プログラム記憶手段４３に記憶させる処理を実行するものである。
【００３７】
切替要素検索手段３３は、図式プログラム記憶手段４２に記憶された図式プログラムを構成する図形要素の中から、各図形要素の種別コードが切替要素の種別コード（１種類または複数種類の種別コード）に一致するか否かの検索を行うことにより、切替要素を抽出し、抽出した切替要素を識別する要素ＩＤ（種別コードではなく、１つ１つの切替要素を識別するもの。）を、切替要素リスト記憶手段４４に記憶させる処理を実行するものである。例えば、図３の図式プログラムでは、３つの切替要素７０，７１，７２が検索により抽出される。
【００３８】
ここで、切替要素は、例えば、図３の図式プログラムおよびこれに対応する図４のソースコードに示すように、切替用制御情報である上側端子の値が０でない場合（ＯＮの場合）に、左側上端子の値を右側端子に出力し、上側端子の値が０である場合（ＯＦＦの場合）に、左側下端子の値を右側端子に出力する、すなわち、複数の入力信号を切り替えて取り込み、取り込んだ信号をそのまま出力する図形要素である。より具体的には、開始要素ａの出力信号が切替用制御情報となって切替要素７０の上側端子７０Ａに与えられるので、開始要素ａが０でない場合には、入力値ｕ１が出力値ｘとなり、開始要素ａが０である場合には、入力値ｕ２が出力値ｘとなる。同様に、切替要素７１については、開始要素ｂが０でない場合には、入力値ｖ１が出力値ｙとなり、開始要素ｂが０である場合には、入力値ｖ２が出力値ｙとなり、また、切替要素７２については、開始要素ｃが０でない場合には、入力値ｗ１が出力値ｚとなり、開始要素ｃが０である場合には、入力値ｗ２が出力値ｚとなる。
【００３９】
また、切替要素検索手段３３は、切替要素リスト記憶手段４４に要素ＩＤが記憶されている切替要素の全てについて、切替要素へ入力を与える複数の入力端子（左側入力端子であり、図３の切替要素７０では、左側上端子７０Ｂおよび左側下端子７０Ｃとなる。）のそれぞれの前方を検索し、前方に別の切替要素が検出された場合には、この検出された切替要素と検索の開始位置の切替要素とにより切替要素の組を作成し、作成した組を構成する多段に接続された複数の切替要素の各要素ＩＤを、組にした状態で切替要素リスト記憶手段４４に記憶させる処理を実行する。なお、「組にした状態で」とは、互いが組になっていることを把握することができる状態であればよく、例えば、各要素ＩＤを連続するように並べてもよく、各要素ＩＤを結合させた新たなＩＤを作成してもよく、離れていても互いの関連性を認識可能な情報を付加してもよい。また、図形要素の前方は、図式プログラム記憶手段４２に記憶されている接続情報により判断することができる。具体的には、例えば、図８に示すように、切替要素７８の左側上端子７８Ｂからの前方検索で別の切替要素７９（但し、要素ＩＤは違うが、種別コードは同じでもよい。）が検出された場合には、多段になっている切替要素７８，７９の組を作成する処理を実行する。
【００４０】
前方開始要素検索手段３４は、切替要素リスト記憶手段４４に要素ＩＤが記憶されている切替要素の全てについて、各切替要素の上流側に接続されて切替用制御情報を生成している図形要素（各切替要素の上側端子に接続されている図形要素）を開始要素に到達するまで前方に検索する処理を実行するものである。この際、開始要素であるか否かは、それよりも前方に図形要素が無いことに基づき判断してもよく、あるいは各図形要素の種別コードが開始要素の種別コード（１種類または複数種類の種別コード）に一致するか否かの検索を行うことにより判断してもよい。なお、図形要素の前方は、図式プログラム記憶手段４２に記憶されている接続情報により判断することができる。
【００４１】
より具体的には、前方開始要素検索手段３４は、図３の場合には、切替要素７０からは、開始要素である端子ａにすぐに到達するので、ここで検索を終了する。同様に、切替要素７１，７２からは、開始要素である端子ｂ、端子ｃが検索される。また、例えば、図５に示すように切替要素７３の上側端子７３Ａが開始要素ａに直接に繋がっていない場合でも、前方開始要素検索手段３４は、切替要素７３の上側端子７３Ａから順番に前方の図形要素を検索していき、開始要素ａを抽出する。図５の例の場合において中間に現れるブロックには、例えば、論理反転（ＮＯＴ）等の図形要素がある。
【００４２】
また、前方開始要素検索手段３４は、切替要素リスト記憶手段４４に、組を構成する多段に接続された複数の切替要素の各要素ＩＤが組になった状態で記憶されている場合には、組を構成する複数の切替要素のそれぞれについて、それらの切替要素の上側端子に接続されている図形要素を開始要素に到達するまで前方に検索することにより、依存性のある複数の開始要素を抽出する処理を実行する。
【００４３】
開始要素列挙手段３５は、前方開始要素検索手段３４により検索して得られた開始要素を識別する要素ＩＤ（種別コードではなく、１つ１つの開始要素を識別するもの。）を、開始要素のとるＯＮ／ＯＦＦの条件またはその他の条件とともに、因子リスト記憶手段４５に記憶させる処理を実行するものである。なお、開始要素のとる「その他の条件」としては、ＯＮ／ＯＦＦの条件のような２水準（２つの選択肢）の条件ではなく、３水準（３つの選択肢）以上の条件がある。
【００４４】
また、開始要素列挙手段３５は、前方開始要素検索手段３４による検索処理を実行して因子リスト記憶手段４５に重複して記憶された同一の開始要素の要素ＩＤについて、重複を排除する処理を実行する。例えば、図６に示すように、１つの開始要素ａから分岐して複数の切替要素７４，７５に至ることにより、１つの開始要素ａのとる条件が複数の切替要素７４，７５の上側端子７４Ａ，７５Ａでの切替用制御情報となっている場合（開始要素ａのＯＮ／ＯＦＦの条件を切り替えると、複数の切替要素７４，７５で連動して切替動作が行われる場合）には、複数の切替要素７４，７５からの検索により、１つの開始要素ａの要素ＩＤが因子リスト記憶手段４５に重複して記憶されることになるが、開始要素列挙手段３５は、このような重複登録を排除する機能を有している。
【００４５】
さらに、開始要素列挙手段３５は、図７に示すように、前方開始要素検索手段３４により切替要素７６の上側端子７６Ａからの検索処理を実行して切替要素７６の前方に合流要素７７が検出されたときに、合流要素７７が論理和（ＯＲ）の性質を持ち、かつ、合流要素７７への複数の入力の全てが開始要素ａ，ａ２により直接に与えられている場合（合流要素７７の左側入力端子７７Ａ，７７Ｂが開始要素ａ，ａ２に直接に接続されている場合）には、合流要素７７への入力を与える複数の開始要素ａ，ａ２のうち、１つの開始要素のみについての要素ＩＤを、ＯＮ／ＯＦＦの条件とともに因子リスト記憶手段４５に記憶させ、残りの全ての開始要素についての要素ＩＤは、固定条件としてのＯＦＦの条件とともに固定条件リスト記憶手段４６に記憶させる処理を実行するものである。
【００４６】
また、開始要素列挙手段３５は、合流要素７７が論理積（ＡＮＤ）の性質を持ち、かつ、合流要素７７への複数の入力の全てが開始要素ａ，ａ２により直接に与えられている場合には、合流要素７７への入力を与える複数の開始要素ａ，ａ２のうち、１つの開始要素のみについての要素ＩＤを、ＯＮ／ＯＦＦの条件とともに因子リスト記憶手段４５に記憶させ、残りの全ての開始要素についての要素ＩＤは、固定条件としてのＯＮの条件とともに固定条件リスト記憶手段４６に記憶させる処理を実行する。
【００４７】
なお、開始要素列挙手段３５は、前方開始要素検索手段３４により合流要素７７が検出されたときであっても、検出された合流要素７７が論理和（ＯＲ）、論理積（ＡＮＤ）のいずれの性質も持たない場合、あるいは、検出された合流要素７７への複数の入力の全てが開始要素ａ，ａ２により直接に与えられている状態ではない場合には、上述したような各開始要素のとる条件を因子リスト記憶手段４５と固定条件リスト記憶手段４６とに振り分けて記憶させる処理は行わない。これらの場合には、前方開始要素検索手段３４により、検出された合流要素７７の全ての入力端子について、前方の開始要素の検索処理が続行されるので、それぞれの検索処理で開始要素ａ，ａ２が抽出されたときに、開始要素列挙手段３５は、それらの開始要素ａ，ａ２についての要素ＩＤを、ＯＮ／ＯＦＦの条件とともに因子リスト記憶手段４５に記憶させる処理を実行する（これは、合流要素が関与しない通常の開始要素の列挙処理と同様である）。
【００４８】
そして、開始要素列挙手段３５は、前方開始要素検索手段３４により依存性のある複数の開始要素が抽出された場合（図８に示すように、切替要素が多段になっている場合）には、依存性のある複数の開始要素を統合した新しい因子（擬似的な開始要素）を作成し、作成した新しい因子を、その因子のとる条件とともに、因子リスト記憶手段４５に記憶させる処理を実行する。例えば、図８において、多段に接続されている切替要素７８，７９については、開始要素である端子ｂの条件がＯＦＦの場合には、入力値ｖ２が出力値ｘになるので、開始要素である端子ａの条件は、出力に影響がなく、開始要素ａは、開始要素ｂに従属する形になる。従って、後述する条件組合せ手段３６により、条件の組合せを決定する際には、ａとｂとの間に禁則を設けたうえで組合せを決定する。つまり、図８の例では、ａとｂとを統合した新しい因子（擬似的な開始要素）ａｂについては、ａｂ=ＯＮ−ＯＮ（ａ，ｂともにＯＮ）、ａｂ=ＯＦＦ−ＯＮ（ａがＯＦＦで、ｂがＯＮ）、ａｂ＝ＯＮ−ＯＦＦ（ｂ＝ＯＦＦであれば、ａはＯＮ／ＯＦＦのどちらとしても出力に影響しないので、ａ＝ＯＮで代表した）という３つの条件をとることができる。従って、開始要素列挙手段３５は、ａとｂとを統合した新しい因子（擬似的な開始要素）ａｂを識別する要素ＩＤ（例えば、開始要素ａ，ｂの各要素ＩＤを結合した状態等のように、ａとｂとを統合した擬似的な開始要素であることを識別できる状態であればよい。）を、これらの３つの条件とともに、因子リスト記憶手段４５に記憶させる処理を実行する。
【００４９】
条件組合せ手段３６は、因子リスト記憶手段４５に要素ＩＤが記憶されている開始要素のとる条件の組合せを、直交表を用いる技法、オールペア法、またはその他の組合せテストの技法を用いて、図式プログラムのテストデータとして生成し、生成したテストデータを、テストデータ記憶手段４７に記憶させる処理を実行するものである。
【００５０】
より具体的には、条件組合せ手段３６は、次のような処理を実行する。図３の例において、全ての選択肢（とり得る条件）の組合せを抽出すると、開始要素である端子ａがＯＮの場合とＯＦＦの場合、端子ｂがＯＮの場合とＯＦＦの場合、端子ｃがＯＮの場合とＯＦＦの場合があるので、合計で２×２×２＝８通りの組合せが抽出される。
【００５１】
しかし、現実のプログラムはもっと規模が大きく複雑であることが多いので、この組合せの数が莫大な数となり、全て試験を行うのは現実的ではない場合が多い。そこで、組合せテストの技法を適用する。この組合せテストの技法としては、直交表による技法や、オールペア法と呼ばれる技法が一般に知られている。図３の例の場合は、２つの選択肢（ＯＮの場合とＯＦＦの場合）を有する項目が３項目（３つの開始要素）あるので、例えば、直交表による技法を用いる場合には、３因子、２水準を扱える直交表Ｌ４を用いることができ、テストケースは、図９に示すように、テストケース番号１〜４の４ケースに絞ることができる。これらの４つのテストケースは、直交表の特徴により、全ての因子（開始要素）の中から、いずれの２つの因子（開始要素）の組を抽出しても、全てのＯＮ／ＯＦＦの組合せが現れるものとなっており、少ないテストケース数で、条件網羅率を向上させることができ、効率的に不具合の検出を行うことができるものである。例えば、図９の直交表において、開始要素である２つの端子ａ，ｂの列だけに着目すると、４通り全てのＯＮ／ＯＦＦの組合せが含まれていることがわかり、同様に、端子ｂ，ｃの列だけに着目しても、また、端子ｃ，ａの列だけに着目しても、４通り全てのＯＮ／ＯＦＦの組合せが含まれていることがわかる。
【００５２】
従って、条件組合せ手段３６は、因子リスト記憶手段４５から、開始要素およびその開始要素のとる条件（ＯＮ／ＯＦＦの条件等）を取得し、開始要素の数により因子数を決定し、各開始要素のとり得る条件の数（選択肢の数）のうちの最大数により水準数を決定し、決定した因子数および水準数から、適用する直交表の種別を決定する処理を実行する。この際、因子数および水準数と、適用する直交表の種別との対応関係は、直交表種別決定用テーブルに予め定められ、直交表種別決定用テーブル記憶手段（不図示）に記憶されるか、または条件組合せ手段３６を構成するプログラム内に記述されているので、条件組合せ手段３６は、この直交表種別決定用テーブルに従って、適用する直交表の種別を決定する。なお、直交表種別決定用テーブルを使用せずに、因子数および水準数を用いて数値計算および条件判断処理を行って、適用する直交表の種別を決定してもよい。また、直交表の種別には、例えば、２水準系の直交表として、Ｌ４，Ｌ８，Ｌ１２，Ｌ１６等があり、３水準系の直交表として、Ｌ９，Ｌ１８，Ｌ２７，Ｌ３６等があるが、条件組合せ手段３６は、これらの各種別の直交表の雛形を直交表雛形記憶手段（不図示）から取得し、この雛形のデータを、因子リスト記憶手段４５に記憶された開始要素およびその開始要素のとる条件に置き換えることにより、直交表の雛形を利用してテストデータを生成してもよく、あるいは雛形を用意しておくのではなく、条件組合せ手段３６を構成するプログラムにより、ガロア体（例えば、２水準系であれば、ガロア体ＧＦ（２）、３水準系であれば、ガロア体ＧＦ（３）、５水準系であれば、ガロア体ＧＦ（５））における加法演算により、直交表を直接に生成してもよい。
【００５３】
また、条件組合せ手段３６は、因子リスト記憶手段４５に、複数の開始要素を統合した新しい因子（擬似的な開始要素）およびその新しい因子のとる条件が記憶されている場合（図８に示すように、切替要素が多段になっている場合）には、新しい因子（擬似的な開始要素）およびその新しい因子のとる条件を取得し、その新しい因子を含めた開始要素の数により因子数を決定し、その新しい因子を含めた各開始要素のとり得る条件の数（選択肢の数）のうちの最大数により水準数を決定し、決定した因子数および水準数から、適用する直交表の種別を決定する処理を実行する。例えば、図８の場合には、ａｂ、ｃ、ｄ、ｅの４因子があるとみなし、ａｂが３水準であることを考慮し、４因子、３水準を扱うことができる直交表Ｌ９を適用することができ、テストケースは、図１０に示すように、テストケース番号１〜９の９ケースに絞ることができる。
【００５４】
この際、条件組合せ手段３６は、ｃ、ｄ、ｅが、２水準であるので、３水準に拡張するために、ダミーの水準「（ＯＮ）」を設けて直交表を作成する処理を実行する。このダミーの水準「（ＯＮ）」は、プログラムを実際にテストする際には、ＯＮと同じとするので、テストケース番号１と３は、条件の組合せが全く同じになるため、条件組合せ手段３６は、これらの重複を排除する処理を実行する。これにより、さらにテストケースを１つ減らして８ケースとすることができる。そして、ａｂが統合されたままでは、実際にテストすることはできないので、条件組合せ手段３６は、ａｂを分解する処理を実行する。図１０に示されたａｂを分解すれば、８つのテストケースは、図１１に示すようになる。この図１１では、切替要素が５個あり、それらの前方の開始要素も５個あって、禁則を考慮しないで総当たりとする場合のテストケースの数である２５=３２ケースに比べ、テストケースの数を１／４に減らすことができている。
【００５５】
また、条件組合せ手段３６は、組合せテストの技法を用いて生成された開始要素のとる条件の組合せに、固定条件リスト記憶手段４６に要素ＩＤが記憶されている開始要素の固定条件を追加することにより、図式プログラムのテストデータを生成し、生成したテストデータを、テストデータ記憶手段４７に記憶させる処理を実行する。具体的には、図９〜図１１に示すような直交表において、固定条件としてのＯＮの条件を並べた列（縦方向の列）を付加したり、固定条件としてのＯＦＦの条件を並べた列（縦方向の列）を付加する処理を実行する。
【００５６】
図式プログラムライブラリ記憶手段４１は、予め用意された各種の機能を有する図形要素（作成する図式プログラムの構成要素となるものであり、図３、図５〜図８の切替要素、開始要素、合流要素等が含まれる。）の情報（図形要素の種別（機能）に応じた処理内容に対応するソースコード等）を、図形要素の種別コードに関連付けて記憶するものである。
【００５７】
図式プログラム記憶手段４２は、図式プログラム作成手段３１により入力された作成済みまたは作成途中の図式プログラムを記憶するものであり、より具体的には、作成済みまたは作成途中の図式プログラムを構成する各図形要素の情報（パラメータへの設定値や、図形要素の機能を識別するための種別コード等を含む。）を、要素ＩＤと関連付け、また、各図形要素間の接続情報を、接続関係ＩＤと関連付けて記憶するものである。
【００５８】
生成プログラム記憶手段４３は、ソースコード変換手段３２により生成された、ソースコードで記述されたテスト対象のプログラム（本実施形態では、Ｃ言語プログラム）を記憶するものである。
【００５９】
切替要素リスト記憶手段４４は、図式プログラム記憶手段４２に記憶された図式プログラムを構成する図形要素の中から、切替要素検索手段３３により抽出された全ての切替要素を列挙して構成される切替要素リストを記憶するものである。この切替要素リストには、各切替要素の要素ＩＤおよび種別コードが含まれている。また、多段に接続された複数の切替要素（図８参照）の組については、組を構成する各切替要素の要素ＩＤおよび種別コードが、組になった状態で含まれている。なお、本実施形態では、図１に示すように、切替要素リスト記憶手段４４は、補助記憶装置２３により実現されているが、主記憶装置２２により実現してもよい。
【００６０】
因子リスト記憶手段４５は、開始要素列挙手段３５により作成された、全ての開始要素（但し、固定条件をとる開始要素は除く。）を列挙して構成された因子リストを記憶するものである。この因子リストには、各開始要素の要素ＩＤ、およびその開始要素のとる条件（ＯＮ／ＯＦＦの条件）が含まれている。なお、本実施形態では、図１に示すように、因子リスト記憶手段４５は、補助記憶装置２３により実現されているが、主記憶装置２２により実現してもよい。
【００６１】
固定条件リスト記憶手段４６は、開始要素列挙手段３５により作成された、固定条件をとる開始要素（例えば、ＯＮの条件で固定されている、あるいはＯＦＦの条件で固定されている開始要素等のように、選択肢が１つだけの開始要素）を列挙して構成された固定条件リストを記憶するものである。この固定条件リストには、各開始要素の要素ＩＤ、およびその開始要素のとる固定条件（ＯＮの条件等）が含まれている。なお、本実施形態では、図１に示すように、固定条件リスト記憶手段４６は、補助記憶装置２３により実現されているが、主記憶装置２２により実現してもよい。
【００６２】
テストデータ記憶手段４７は、条件組合せ手段３６により生成された図式プログラムのテストデータを記憶するものである。
【００６３】
そして、以上に述べた各種処理を実行する各手段３１〜３６は、装置本体２０を構成するコンピュータ本体の内部に設けられた演算装置（ＣＰＵ）２１、その作業領域である主記憶装置２２（図２参照）、および演算装置（ＣＰＵ）２１の動作手順を規定する１つまたは複数のプログラムにより実現される。
【００６４】
また、各記憶手段４１〜４７は、例えばハードディスク等の補助記憶装置２３（図２参照）により好適に実現されるが、記憶容量やアクセス速度等に問題が生じない範囲であれば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、ＲＡＭ、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＦＤ、磁気テープ、あるいはこれらの組合せ等を採用してもよい。
【００６５】
さらに、装置本体２０は、１台のコンピュータあるいは１つのＣＰＵにより実現されるものに限定されず、複数のコンピュータあるいは複数のＣＰＵで分散処理を行うことにより実現されるものであってもよい。
【００６６】
このような本実施形態においては、以下のようにして図式プログラムのテストデータ生成装置１０により、テストデータの生成処理が行われる。
【００６７】
先ず、図式プログラム作成手段３１により、図式プログラムライブラリ記憶手段４１に予め用意されて記憶されている各種の機能を有する図形要素（図式プログラムの構成要素であり、図３、図５〜図８の切替要素、開始要素、合流要素等が含まれる。）の情報を用いて、ディスプレイ装置６０の画面上に図形を表示しながら図式プログラムを作成し、図式プログラム記憶手段４２に記憶させる。
【００６８】
そして、ソースコード変換手段３２により、図式プログラム記憶手段４２に記憶されている作成済みの図式プログラムを、ソースプログラム（本実施形態では、一例として、Ｃ言語プログラムとする。）に変換し、生成プログラム記憶手段４３に記憶させる。ここで生成したソースプログラムは、テスト対象のプログラムであるが、この変換作業は、テストデータの生成後に行ってもよい。
【００６９】
図１２において、テストデータの生成処理の開始後には（ステップＳ１）、切替要素検索手段３３により、図式プログラム記憶手段４２に記憶された図式プログラムを構成する図形要素の中から、各図形要素の種別コードが切替要素の種別コード（１種類または複数種類の種別コード）に一致するか否かの検索を行うことにより、切替要素を全て抽出し、抽出した全ての切替要素の要素ＩＤを、切替要素リスト記憶手段４４に記憶させる（ステップＳ２）。
【００７０】
続いて、切替要素検索手段３３により、切替要素リスト記憶手段４４に要素ＩＤが記憶されている全ての切替要素について、切替要素を１個ずつ抽出し（ステップＳ３）、さらに、その切替要素の全ての左側入力端子（例えば、図３の切替要素７０の場合には、左側上端子７０Ｂおよび左側下端子７０Ｃとなる。）から、左側入力端子を１個ずつ抽出し（ステップＳ４）、抽出した左側入力端子の前方を検索する（ステップＳ５）。この前方検索は、切替要素を検出する検索であるから、切替要素が多段になっていることを把握するための処理である。
【００７１】
そして、ステップＳ６で、前方に別の切替要素が検出された場合には、切替要素検索手段３３により、この検出された切替要素と、検索の開始位置の切替要素とが多段になっていることを示すために、切替要素リスト記憶手段４４に記憶された切替要素リストまたは依存リスト記憶手段（不図示）に記憶された依存リストに、双方または一方の切替要素の要素ＩＤに関連付けて依存性を示す情報を付加する（ステップＳ７）。例えば、図８の場合には、切替要素７８の要素ＩＤに関連付けて切替要素７９の要素ＩＤを付加するか、切替要素７９の要素ＩＤに関連付けて切替要素７８の要素ＩＤを付加するか、これらの両方の付加処理を行うか、あるいは切替要素７８，７９のそれぞれの要素ＩＤに関連付けて紐付け用の共通番号等（いずれの要素ＩＤとも異なる識別情報）を付加する等である。一方、ステップＳ６で、前方に別の切替要素が検出されなかった場合には、特に何もしない。
【００７２】
このようなステップＳ６，Ｓ７の処理を、全ての左側入力端子（ステップＳ８）、および全ての切替要素（ステップＳ９）について実行した後、切替要素検索手段３３により、切替要素リスト記憶手段４４に記憶された切替要素リストまたは依存リスト記憶手段（不図示）に記憶された依存リストに付加されている依存性を示す情報を用いて、多段に接続された複数の切替要素（例えば、図８の切替要素７８，７９）により切替要素の組を作成し、作成した組を構成する複数の切替要素の各要素ＩＤを、組にした状態で切替要素リスト記憶手段４４に記憶させる（ステップＳ１０）。この際、組を構成する各切替要素について元々存在していた情報は、切替要素リスト記憶手段４４に記憶された切替要素リストから削除する。従って、切替要素検索手段３３により、組を構成する各切替要素について元々存在していた情報と、作成された切替要素の組についての情報とが、置き換えられることになる。
【００７３】
その後、前方開始要素検索手段３４および開始要素列挙手段３５により、切替要素リスト記憶手段４４に記憶された切替要素リストに含まれている全ての切替要素（ステップＳ１１）について、各切替要素の上側端子に接続されている図形要素を、開始要素に到達するまで前方に検索し、開始要素を抽出し、因子リスト記憶手段４５に記憶された因子リストまたは固定条件リスト記憶手段４６に記憶された固定条件リストに追加する（ステップＳ１２）。
【００７４】
図１３において、前方開始要素検索手段３４により、前方にある開始要素の検索処理を開始し（ステップＳ１２０１）、先ず、１つ前の図形要素を参照し（ステップＳ１２０２）、種別コードを用いて開始要素であるか否かを判定し、あるいは更にその前方の図形要素の有無により開始要素であるか否かを判定し（ステップＳ１２０３）、これが開始要素であれば、その検出した開始要素を、開始要素列挙手段３５により、因子リスト記憶手段４５に記憶された因子リストに追加し（ステップＳ１２０４）、前方開始要素検索処理を終了する（ステップＳ１２１３）。
【００７５】
一方、ステップＳ１２０３で、開始要素でないと判定した場合には、前方開始要素検索手段３４により、種別コードを用いて合流要素であるか否かを判定し（ステップＳ１２０５）、合流要素でなければ、ステップＳ１２０２の処理に戻る。
【００７６】
そして、ステップＳ１２０５で前方開始要素検索手段３４により合流要素であると判定した場合には、論理和型（ＯＲ）であり、かつ、その合流要素への複数の入力の全てが開始要素により直接に与えられている場合（合流要素の左側入力端子が開始要素に直接に接続されている場合）には（ステップＳ１２０６）、開始要素列挙手段３５により、合流要素への入力を与える複数の開始要素のうち、１つの開始要素のみについての要素ＩＤを、ＯＮ／ＯＦＦの条件とともに因子リスト記憶手段４５に記憶された因子リストに追加し、残りの全ての開始要素についての要素ＩＤは、固定条件としてのＯＦＦの条件とともに固定条件リスト記憶手段４６に記憶された固定条件リストに追加する（ステップＳ１２０７）。
【００７７】
また、論理積型（ＡＮＤ）であり、かつ、その合流要素への複数の入力の全てが開始要素により直接に与えられている場合（合流要素の左側入力端子が開始要素に直接に接続されている場合）には（ステップＳ１２０８）、開始要素列挙手段３５により、合流要素への入力を与える複数の開始要素のうち、１つの開始要素のみについての要素ＩＤを、ＯＮ／ＯＦＦの条件とともに因子リスト記憶手段４５に記憶させた因子リストに追加し、残りの全ての開始要素についての要素ＩＤは、固定条件としてのＯＮの条件とともに固定条件リスト記憶手段４６に記憶された固定条件リストに追加する（ステップＳ１２０９）。
【００７８】
そして、ステップＳ１２０５で前方開始要素検索手段３４により合流要素であると判定した後において、その合流要素が上記のいずれにも該当しない場合、すなわち、その合流要素が論理和型（ＯＲ）、論理積型（ＡＮＤ）のいずれでもない場合、あるいは、その合流要素への複数の入力の全てが開始要素により直接に与えられている状態（その合流要素の左側入力端子の全てが開始要素に直接に接続されている状態）ではない場合には、その合流要素の全ての入力端子について、入力端子を１個ずつ抽出し（ステップＳ１２１０）、前方開始要素検索手段３４による前方開始要素検索処理（ステップＳ１２：Ｓ１２０１〜Ｓ１２１３）を再帰的に呼び出し（ステップＳ１２１１）、合流要素の全ての入力端子（ステップＳ１２１２）について実行した後に、一連の前方開始要素検索処理を終了する（ステップＳ１２１３）。
【００７９】
なお、図１３でのフローの図示は省略されているが、切替要素リスト記憶手段４４に記憶された切替要素リストに、多段に接続された切替要素の組が含まれている場合（図８に示すように、切替要素が多段になっている場合）には、前方開始要素検索手段３４により、依存性のある複数の開始要素（組を構成する各切替要素の上側端子の前方にある開始要素）を抽出し、開始要素列挙手段３５により、これらの依存性のある複数の開始要素を統合した新しい因子（擬似的な開始要素）を作成し、作成した新しい因子を、その因子のとる条件とともに、因子リスト記憶手段４５に記憶された因子リストに追加する。
【００８０】
図１２において、切替要素リストの全ての切替要素（ステップＳ１３）について、前方開始要素検索処理を終了した後、開始要素列挙手段３５により、前方開始要素検索手段３４による検索処理を実行して因子リスト記憶手段４５に重複して記憶された同一の開始要素の要素ＩＤについて、重複を排除する。
【００８１】
続いて、条件組合せ手段３６により、因子リスト記憶手段４５から、開始要素およびその開始要素のとる条件（ＯＮ／ＯＦＦの条件等）を取得し、開始要素の数により因子数を決定し、各開始要素のとり得る条件の数（選択肢の数）のうちの最大数により水準数を決定し、決定した因子数および水準数から、直交表種別決定用テーブル（因子数および水準数と、適用する直交表の種別との対応関係を予め定めたテーブル）を用いて、適用する直交表の種別を決定する（ステップＳ１４）。
【００８２】
それから、条件組合せ手段３６により、組合せテストの技法を用いて（ここでは、決定した種別の直交表を用いて）、因子リスト記憶手段４５に記憶された因子リストに含まれている開始要素のとる条件の組合せを、図式プログラムのテストデータとして生成し、生成したテストデータを、テストデータ記憶手段４７に記憶させる（ステップＳ１４）。
【００８３】
続いて、条件組合せ手段３６により、組合せテストの技法を用いて生成された開始要素のとる条件の組合せに、固定条件リスト記憶手段４６に記憶された固定条件リストに含まれている開始要素の固定条件を追加することにより、図式プログラムのテストデータを完成させ、完成させたテストデータを、テストデータ記憶手段４７に記憶させ（ステップＳ１５）、一連のテストデータ生成処理を終了する（ステップＳ１６）。
【００８４】
その後、例えば、テストデータ記憶手段４７に記憶されたテストデータ、生成プログラム記憶手段４３に記憶されたテスト対象のソースプログラム（本実施形態では、一例として、Ｃ言語プログラムとする。）、および生成したテストデータからなる各テストケースについてのテストを順次実行するためのループ処理を含むテスト実行用プログラムを用いて、コンパイル処理を行って実行形式のプログラムを生成し、テストを実行する。
【００８５】
このような本実施形態によれば、次のような効果がある。すなわち、図式プログラムのテストデータ生成装置１０は、条件組合せ手段３６を備えているので、組合せテストの技法を用いて、開始要素のとる条件の組合せを生成することができる。このため、テストデータの組合せの数を低減しつつ、十分な網羅率を達成することができる。
【００８６】
例えば、組合せテストの技法のうち、直交表や、オールペア法（ペアワイズ手法ともいう。）を用いることで、任意の２つの因子（ここでは、切替用制御情報を生成している切替要素の前方の開始要素）の間の全水準（ＯＮ／ＯＦＦのような取りうる選択肢）の組合せを網羅することができるようにテストの条件を決定することができ、網羅率を向上させることができる。なお、直交表は、各因子間の組合せが同数回出現する点と、３つ以上の因子間の網羅率でも高くすることができるという点で優れている。また、オールペア法は、各因子間の組合せ数がアンバランスになることがあるが、組合せの数を減らすことができるという点で優れている。
【００８７】
また、条件組合せ手段３６により、組合せテストの技法を用いて、開始要素のとる条件の組合せを生成するので、テストデータを自動生成することができ、従来のように人手を介してテストデータを作成する必要性を無くすことができる。従って、プログラムのテストを行う者の手間を軽減することができるうえ、場合によっては人間の勘に頼ってテストデータを作成することもあったため、この場合に比べると、網羅率の高いテストを行うことができ、テストの信頼性を向上させ、プログラムの安全性を高めることができる。
【００８８】
さらに、図式プログラムのテストデータ生成装置１０は、切替要素検索手段３３、前方開始要素検索手段３４、および開始要素列挙手段３５を備えているので、図式プログラムを構成する図形要素の情報を利用して切替要素を検索し、そしてその前方の開始要素を検索し、列挙することができる。すなわち、図式プログラムでは切替要素が条件分岐の要因となっているので、この切替要素に着目し、直交表を用いる技法やオールペア法といった組合せテストの技法を利用する際のデータ収集・準備を行うことができる。このため、図式プログラムのテストデータ生成装置１０は、前述した特許文献５のように単にプログラムのテストに直交表を利用する場合とは異なり、図式プログラムを構成する図形要素の情報の利用と、組合せテストの技法の利用とを結び付けた独特な処理を実現することができる。
【００８９】
そして、開始要素列挙手段３５は、因子リスト記憶手段４５に記憶された開始要素の要素ＩＤの重複を排除することができるので、１つの開始要素から分岐して複数の切替要素に至ることにより１つの開始要素のとる条件が複数の切替要素の切替用制御情報となっているケース（図６参照）で、因子リストにおける因子の重複を排除することができる。
【００９０】
また、開始要素列挙手段３５は、合流要素の性質に応じて開始要素のとる条件を因子リスト記憶手段４５または固定条件リスト記憶手段４６に振り分けて記憶させることができるので、切替要素の前方に合流要素があるときに（図７参照）、開始要素のとる条件の組合せの数を減らすことができる。
【００９１】
さらに、切替要素検索手段３３は、切替要素が多段になっているときに（図８参照）、切替要素の組を作成することができるので、開始要素の依存性を利用して因子数を減らし、テストケースを減らすことができる。
【００９２】
なお、本発明は前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
【００９３】
例えば、前記実施形態では、切替要素は２つの入力を切り替えるものとして説明を行ったが、本発明は、３つ以上の入力の切替えを行う場合にも、同様に適用することができる。この場合は、切替要素の上側端子からの入力は、ＯＮ／ＯＦＦではなく、０、１、２のように、３値以上を取るデータ型となる。
【００９４】
また、入力値を、ある値で制限するリミッタのように、入力値により処理が切り替わる図形要素についても、本発明を適用することができる。リミッタの場合には、リミッタの入力値が、切替要素の上側端子の切替用制御情報、および切替要素の一方の左側入力端子に置き換わるとともに、リミッタの制限値が、切替要素の他方の左側入力端子に置き換わる。
【００９５】
例えば、図１４に示す下限リミッタ９０の場合には、下限値（制限値）として０が設定されているので、その入出力特性は、図１６に示すように、入力値が０以上のときには、出力値は入力値に等しく、入力値が０よりも小さいときには、出力値は０となる。そこで、これを仮想的に、図１５に示すような切替要素と考えると、切替要素の左側の入力値として、下限リミッタ９０の元々の入力値と下限値（制限値）である０の２つを選択することができる。従って、下限リミッタ９０の元々の入力値が０以上のときには、切替要素の左上側の入力値が選択され、下限リミッタ９０の元々の入力値が０よりも小さいときには、切替要素の左下側の入力値が選択されるので、本発明では、リミッタは、切替要素として同様に扱うことができる。このため、切替要素検索手段３３は、リミッタを示す種別コードを検索し、リミッタを検出したら、上記のような置換処理を行えばよい。
【産業上の利用可能性】
【００９６】
以上のように、本発明の図式プログラムのテストデータ生成装置およびその方法、並びにプログラムは、例えば、図形を用いてプログラムを記述し、これを自動的にＣ言語等のテキスト形式のプログラム言語に変換するシステムにおいて、プログラムのテスト用の入力データを自動的に生成する場合に用いるのに適している。
【符号の説明】
【００９７】
１０  図式プログラムのテストデータ生成装置
３３  切替要素検索手段
３４  前方開始要素検索手段
３５  開始要素列挙手段
３６  条件組合せ手段
４２  図式プログラム記憶手段
４４  切替要素リスト記憶手段
４５  因子リスト記憶手段
４６  固定条件リスト記憶手段
【図１】
2014038397.tif 000003
【図２】
2014038397.tif 000004
【図３】
2014038397.tif 000005
【図４】
2014038397.tif 000006
【図５】
2014038397.tif 000007
【図６】
2014038397.tif 000008
【図７】
2014038397.tif 000009
【図８】
2014038397.tif 000010
【図９】
2014038397.tif 000011
【図１０】
2014038397.tif 000012
【図１１】
2014038397.tif 000013
【図１２】
2014038397.tif 000014
【図１３】
2014038397.tif 000015
【図１４】
2014038397.tif 000016
【図１５】
2014038397.tif 000017
【図１６】
2014038397.tif 000018