(57)【要約】【課題】ＭＣ／ＤＣパターンを効率良く生成することが可能なＭＣ／ＤＣパターン生成装置を提供する。【解決手段】ＭＣ／ＤＣパターン生成装置は、真理表作成手段と、サーブ真理表作成手段と、ＭＣ／ＤＣパターン判定手段と、を備える。真理表作成手段は、入力された論理式に対して真理表を作成する。サーブ真理表作成手段は、真理表作成手段で作成した真理表の各行に対し、各条件変数をフリップ操作して生成されたサーブ行から成るサーブ真理表を作成する。ＭＣ／ＤＣパターン判定手段は、サーブ真理表が属する行と異なる論理値であるサーブ行を探索し、ＭＣ／ＤＣパターンとして決定する。このようにすることで、ＭＣ／ＤＣパターンの選定に必要な探索空間を削減することができ、ＭＣ／ＤＣパターンを効率的かつ迅速に求めることが可能となる。【選択図】図７
2009181292.tif 000002
【特許請求の範囲】
【請求項１】
入力された論理式からＭＣ／ＤＣパターンを生成するＭＣ／ＤＣパターン生成装置において、
前記論理式に対して真理表を作成する真理表作成手段と、
前記真理表作成手段で作成した前記真理表の各行に対し、各条件変数をフリップ操作して生成されたサーブ行から成るサーブ真理表を作成するサーブ真理表作成手段と、
前記サーブ真理表作成手段により生成されたサーブ行のうち、前記サーブ真理表が属する行と異なる論理値であるサーブ行をＭＣ／ＤＣパターンとして決定するＭＣ／ＤＣパターン判定手段と、を備えることを特徴とするＭＣ／ＤＣパターン生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＭＣ／ＤＣパターンを自動生成する装置に関する。
【背景技術】
【０００２】
ソフトウェアの検査手法において、テストデータを流しながら実行し、その結果を確かめることによって検査を実行する方法が行われている。この場合のテストデータは、ソフトウェアの要求仕様から用意されるものもあれば、ソフトウェアの構造分析に基づいて用意されるものもある。後者の場合のテストデータの選定基準として、プログラムの条件判断部に注目し、網羅的かつ効率的にソフトウェアの構造テストを実行できるテストカバレッジであるＭＣ／ＤＣ（Ｍｏｄｉｆｉｅｄ  Ｃｏｎｄｉｔｉｏｎ／Ｄｅｃｉｓｉｏｎ  Ｃｏｖｅｒａｇｅ）が知られている。なお、特許文献１及び特許文献２には、ＭＣ／ＤＣで用いられる真理表の作成を効率よく実行可能な方法が記載されている。
【０００３】
【特許文献１】特開平０９−０８１５９４号公報
【特許文献２】特開平０９−２５９１７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、一般的に、ＭＣ／ＤＣにおいて、条件判断部を構成する条件変数の数が多い場合、１つの条件判断部に対応するＭＣ／ＤＣパターンを生成するのに膨大な処理量が発生する。したがって、特にテスト対象のソフトウェアの量が多く複雑な場合には、検査処理を行うのに多くの時間が必要になる。
【０００５】
本発明は、上記のような課題を解決するためになされたものであり、ＭＣ／ＤＣパターンを効率良く生成することが可能なＭＣ／ＤＣパターン生成装置を提供することを課題とする。
【課題を解決するための手段】
【０００６】
本発明の１つの観点では、入力された論理式からＭＣ／ＤＣパターンを生成するＭＣ／ＤＣパターン生成装置において、前記論理式に対して真理表を作成する真理表作成手段と、前記真理表作成手段で作成した前記真理表の各行に対し、各条件変数をフリップ操作して生成されたサーブ行から成るサーブ真理表を作成するサーブ真理表作成手段と、前記サーブ真理表作成手段により生成されたサーブ行のうち、前記サーブ真理表が属する行と異なる論理値であるサーブ行をＭＣ／ＤＣパターンとして決定するＭＣ／ＤＣパターン判定手段と、を備えることを特徴とする。
【０００７】
上記のＭＣ／ＤＣパターン生成装置は、真理表作成手段と、サーブ真理表作成手段と、ＭＣ／ＤＣパターン判定手段と、を備える。これらの手段は、例えばＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）に該当する。真理表作成手段は、入力された論理式に対して真理表を作成する。サーブ真理表作成手段は、真理表作成手段で作成した真理表の各行に対し、各条件変数をフリップ操作して生成されたサーブ行から成るサーブ真理表を作成する。サーブ真理表を作成することにより、真理表からＭＣ／ＤＣパターンを構成する行を選定するのに必要な探索空間を限定することが可能となり、大幅に探索対象を削減することができる。ＭＣ／ＤＣパターン判定手段は、サーブ真理表が属する行と異なる論理値であるサーブ行を探索し、ＭＣ／ＤＣパターンとして決定する。このようにすることで、ＭＣ／ＤＣパターンの生成に必要な処理量を削減することができ、ＭＣ／ＤＣパターンを効率的かつ迅速に求めることが可能となる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照して本発明の好適な実施形態について説明する。
【０００９】
[概略構成]
まず、本実施形態に係るＭＣ／ＤＣパターン生成装置の構成について説明する。図１は、本実施形態に係るＭＣ／ＤＣパターン生成装置１００の構成の一例を示すブロック図である。本実施例では、ＭＣ／ＤＣパターン生成装置１００は、主記憶装置２０、ＣＰＵ２２、通信装置２７、出力装置２８、入力装置２９、及び補助記憶装置３６を備える。そして各装置は、バス３０を介して相互に接続され、各装置間で必要な情報が伝送可能なように構成されている。ＭＣ／ＤＣパターン生成装置１００は、例えばＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）によって実現することができる。
【００１０】
ＣＰＵ２２は、主記憶装置２０や補助記憶装置３６にあらかじめ格納されているプログラムによって所定の動作を行う。
【００１１】
主記憶装置２０は、作業エリアとして機能したり、必要なプログラムを格納する機能等を有する。主記憶装置２０は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２４及びＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２３を有する。そして、例えば作業エリアとしての機能はＲＡＭが行い、必要なプログラムを格納する機能はＲＯＭが行うことができる。
【００１２】
通信装置２７は、通信媒体３００等の各種通信媒体を介し、同じ通信媒体に接続される装置と所定の通信プロトコルに従い情報（データ）を送受信するための装置である。
【００１３】
出力装置２８は、ＭＣ／ＤＣパターン生成装置１００の使用者の操作に応答するための情報を出力表示するための装置である。出力装置２８は、例えばブラウン管、ＣＲＴ、液晶ディスプレイ、ＰＤＰ、有機ＥＬ、プロジェクタ、スピーカ、ヘッドフォン等によって実現できる。
【００１４】
入力装置２９は、ＭＣ／ＤＣパターン生成装置１００の使用者等が、ＭＣ／ＤＣパターン生成装置１００に対して必要な命令や情報を入力するための装置である。入力装置２９は、例えばＴＶ受信機で使用されるリモートコントローラや、ＰＣで使用されるキーボード、マウス等によって実現できる。
【００１５】
補助記憶装置３６は、ＭＣ／ＤＣパターン生成装置１００の動作を制御するためのプログラムを保存したり、ＭＣ／ＤＣパターン生成装置１００の動作に必要な情報を保持したりするためのものである。補助記憶装置３６は、例えば、ハードディスク（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、半導体ディスク、光ディスク等によって実現できる。
【００１６】
図１のＭＣ／ＤＣパターン生成装置１００の構成は一例であり、必ずしも、この通りのものである必要はない。例えば、出力装置２８は、ＭＣ／ＤＣパターン生成装置１００とは異なる装置で実現してもよい。この場合、ＭＣ／ＤＣパターン生成装置１００は別途Ｄ／Ａコンバータ等の信号生成装置を具備し、ＭＣ／ＤＣパターン生成装置１００と出力装置２８とはＡＶケーブルや同軸ケーブル等によって接続される。
【００１７】
次に、ＭＣ／ＤＣパターン生成装置１００がソフトウェアの構造テストを実行するにあたり必要な機能構成について説明する。図２は、ＭＣ／ＤＣパターン生成装置１００の機能構成の一例を示すブロック図である。図２において、分岐検出部４０、ＭＣ／ＤＣパターン生成部４１、アサーション処理部４２、テスト入力データ生成部４３、及びシミュレーション部４４はＣＰＵ２２に該当し、テストデータベース５１は例えば補助記憶装置３６によって実現される。コード５０は、補助記憶装置３６または主記憶装置２０に保持される。また、図２中の矢印は制御の流れを示し、丸枠内の番号は矢印が示す制御の順序の一例を示している。
【００１８】
まず、テスト対象であるＣ言語等の所定の言語により記載されたコード５０に対し、分岐検出部４０は、コードの中に記述された条件分岐における条件判断部分（例えば、Ｃ言語でのｉｆ文における条件式。以後「条件部」と呼ぶ。）を抽出する処理を行う。
【００１９】
ＭＣ／ＤＣパターン生成部４１は、真理表作成手段、サーブ真理表作成手段、及びＭＣ／ＤＣパターン判定手段を有し、分岐検出部４０が抽出した条件部が示す論理式から、該当するＭＣ／ＤＣパターンを生成する。ＭＣ／ＤＣパターンの生成方法の詳細は後述する。
【００２０】
そして、アサーション処理部４２は、ＭＣ／ＤＣパターン生成部４１が生成したＭＣ／ＤＣパターンからアサーション（例えば、Ｃ言語でのａｓｓｅｒｔ文に相当するコード）を生成し、コード５０における条件分岐の直前に挿入する。なお、アサーションを２以上挿入する場合、１つずつアサーションを分けてコード５０を用意するのが好ましい。即ち、１つのアサーションに対し１つのコード５０を新たに用意し、挿入する。
【００２１】
次に、テスト入力データ生成部４３は、アサーションが挿入されたコード５０を用いて、テスト用の入力データを生成する。即ち、テスト入力データ生成部４３は、いわゆるソルバーとして機能する。
【００２２】
そして、テストデータベース５１は、テスト入力データ生成部４３が生成したテスト用入力データの記録を行う。シミュレーション部４４は、上述のテスト用入力データを、コード５０により生成されるプログラムに入力し、プログラムを実行することで、ソフトウェアにバグがないか判定を行う。
【００２３】
なお、上述のＭＣ／ＤＣパターン生成装置１００の機能構成は一例であり、本発明が適用可能な機能構成はこれに限られない。例えば、分岐検出部４０、アサーション処理部４２、テスト入力データ生成装置４３、テストデータベース５１、シミュレーション装置４４はそれぞれＭＣ／ＤＣパターン生成装置１００とは別の装置によって実現してもよい。この場合、ＭＣ／ＤＣパターン生成装置１００は、通信装置２７により各機能部分に対応する装置と制御信号やデータのやりとりを行うことになる。
【００２４】
[ＭＣ／ＤＣパターン生成方法]
次に、図２におけるＭＣ／ＤＣパターン生成部４１が行う処理の詳細を述べる。まず、ＭＣ／ＤＣパターンの生成に使用される真理表について述べる。真理表は、論理式の変数（以後、「条件変数」と呼ぶ。）の値の組み合わせと各組み合わせによって生成される論理式の値（以後、「論理値」と呼ぶ。）とで構成される表である。条件変数の値及び論理値は、０または１のいずれかをとる。以後、一組の条件変数の値及びその論理値を、真理表の「行」と呼ぶ。
【００２５】
そして、ＭＣ／ＤＣパターンは、次の条件１乃至３を満たす一組の行、即ち真理表を構成する行から選択された行の集合を指す。条件１は、論理式の条件変数、即ち真理値を構成する全ての条件変数が、０と１になることである。条件２は、論理値が０と１になることである。条件３は、全ての条件変数が論理式に独立的に影響を与えていることである。ここで、「ある条件変数が独立的に影響を与えている」とは、その条件変数以外の全ての条件変数の値を固定した上で、その条件変数の値を変更することで、論理式の結果（論理値）が変わること、即ち０から１、及び１から０への論理値の変更があることをいう。以後、条件１乃至３を「ＭＣ／ＤＣ条件」と呼ぶ。
【００２６】
ここで、ＭＣ／ＤＣパターンの具体例を示す。図３は、ソフトウェア上からある条件部を抽出し、真理表を作成して、ＭＣ／ＤＣパターンに該当する行を示した一例である。図３（ａ）は、ソフトウェア設計におけるフローチャートの一部である。図３（ｂ）は、図３（ａ）のフローチャートの条件部Ａ部分のコード部分を示す。条件部Ａは、ここでは、変数ｃ１、ｃ２からなる論理式「ｃ１∧ｃ２」を表す「ｃ１＆＆ｃ２」となっている。図３（ｃ）は、条件部Ａが示す論理式から作成した真理表を示す。ｃ１及びｃ２の値の組み合わせは４つ存在するため、真理表の行の数は４となる。そして、図３（ｃ）では、各行に対するインデックス（以後、「行番号」と呼ぶ。）が割り振られている。以後、任意の行番号を表す整数Ｚに対し、対応する行を「行Ｚ」と表現する。ここで、行１乃至３は、条件１乃至３を満たしている。即ち、条件変数ｃ１、ｃ２がいずれも０と１になっていることから条件１を満たす。さらに、条件部Ａの論理値が０と１になっていることから条件２を満たす。そして、行１は、条件変数ｃ２を固定した上で条件変数ｃ１の値を変更することで論理値が０から１になり、行３は、条件変数ｃ２を固定した上で条件変数ｃ１の値を変更することで論理値が１から０になる。したがって、行１と行３とに対し条件変数ｃ１が独立的に影響を与えている。また、行２は、条件変数ｃ１を固定した上で条件変数ｃ２の値を変更することで論理値が０から１になり、行３は、条件変数ｃ１を固定した上で条件変数ｃ２の値を変更することで論理値が１から０になる。したがって、行２と行３とに対し条件変数ｃ２が独立的に影響を与えている。よって、行１乃至３に対し、論理式の全ての条件変数は独立的に影響を与えることになり、条件３を満たす。したがって、行１乃至３がＭＣ／ＤＣパターンを形成することになる。
【００２７】
なお、図３に示す例において、行１及び行３、行２及び行３の組のように、ある条件変数が独立的に影響を与える行であって、その条件変数の値が０の場合と１の場合とにそれぞれ該当する行の組は、ＭＣ／ＤＣパターンを構成する。以後、このような行の組を、「ＭＣ／ＤＣパターンを構成する行の組」と呼ぶ。そして、ＭＣ／ＤＣパターンを構成する行の組に着目することで、ＭＣ／ＤＣパターンとなる行を求めることができる。
【００２８】
次に、ＣＰＵ２２で条件部からＭＣ／ＤＣパターンを生成する方法について述べる。まず、本発明に依らないＭＣ／ＤＣパターン生成方法（以後、「比較例に係るＭＣ／ＤＣパターン生成方法」と呼ぶ。）による処理の手順を簡潔に説明する。図４は、ＣＰＵ２２が行う、比較例に係るＭＣ／ＤＣパターンの作成処理手順を示すフローチャートである。
【００２９】
まず、ＣＰＵ２２は、条件部に対応する論理式に対して真理表を作成する（ステップＳ１）。そして、ＣＰＵ２２は、論理式の条件変数ごとに真理表に新たな列（以後、「カラム」と呼ぶ。）を作成する（ステップＳ２）。次に、ＣＰＵ２２は、条件変数ごとに真理表の最初の行番号から最後の行番号まで進みながらＭＣ／ＤＣ条件を満たす行を探索、即ちＭＣ／ＤＣパターンを構成する行の組を探索し、その結果を追加されたカラムに記入する（ステップＳ３）。そして、ＣＰＵ２２は、ステップＳ３終了後、カラムに記入されている全ての行番号に対応する行をＭＣ／ＤＣパターンとして特定する（ステップＳ４）。この方法では、上述したＭＣ／ＤＣパターンを構成する行の組がＭＣ／ＤＣパターンとなることを利用し、カラムにその対応を記載することで、ＭＣ／ＤＣパターンを特定している。
【００３０】
図５に、上述のフローチャートの手順により論理式「ｑ=（Ａ∧Ｄ）∨（Ｃ∧Ｅ）」のＭＣ／ＤＣパターンを生成する概念図を示す。図５に示すように、まず、ＣＰＵ２２は、論理式から真理表を作成し、その真理表に条件変数のカラムを付加する。そして、条件変数ごとにＭＣ／ＤＣパターンを構成する行の組がないか検索し、当該行の組が存在した場合には、その対応がわかるようにその行番号をカラムに記載する。例えば、条件変数Ａに対し、行２は行１０とペアでＭＣ／ＤＣ条件を満たすため、条件変数Ａのカラムの欄にそれぞれ対応する行番号を記載する。そして、カラムに記載される行番号（２、３、５、６、７、９、１０、１１）が示す行は、ＭＣ／ＤＣ条件を満たす論理式のＭＣ／ＤＣパターンとなる。
【００３１】
次に、比較例に係るＭＣ／ＤＣパターン生成方法を実現するのに必要な処理量を表すプログラム上のループ数について述べる。ここで、対象となる論理式が含む条件変数の数（以後、「条件数」と呼ぶ。）をｎとする。まず、論理式から真理表を作成するループ数は、条件変数の値の組み合わせ分だけループ数が掛かるため、２ｎ（ここで、ｎは指数。）だけ要する。従って、図５の例では真理表作成のループ数は１６である。さらに、図４のステップＳ３での条件変数ごとのＭＣ／ＤＣパターンを構成する行の組の探索は、それぞれの条件変数に対し、真理表を構成する行の２つ１組の全組み合わせの数だけ探索する必要があるため、条件数（ｎ）に行の組み合わせ数（ｘ＝２ｎ（ｘは整数。）とすると、ｘＣ２＝２ｎ−１×（２ｎ−１））を乗じた数（ｎ×２ｎ−１×（２ｎ−１））だけループ数を要する。したがって図５の例ではＭＣ／ＤＣ条件を満たす行の探索に必要なループ数（以後、「探索ループ数」と呼ぶ。）は４８０である。
【００３２】
以上のように、図４のフローチャートの処理手順に従いＭＣ／ＤＣパターンを生成すると、ｎ×２ｎ−１×（２ｎ−１）だけ、探索ループ数を要することになる。この場合、条件数の増加に伴い、必要なループ数が激増してしまい、結果としてＣＰＵ２２の負荷が高くなり、処理が遅延化する。そこで、後述する本発明に係るＭＣ／ＤＣパターン生成方法では、行ごとに後述するサーブ真理表を生成し、ＭＣ／ＤＣパターンを構成する行を探索するために必要な探索対象となる行（以後、「検索空間」と呼ぶ。）を減らすことで探索に必要なループ数を低減している。
【００３３】
次に、本発明に係るサーブ真理表の作成方法について述べる。サーブ真理表は、真理表の各行ごとに作成される真理表である。そして、サーブ真理表は、サーブ行を生成させる対象となる行（以後、「対象行」と呼ぶ。）に対し、いずれかの条件変数の値を１つ反転（フリップ）させた行（以後、「サーブ行」と呼ぶ。）から構成される。以後、いずれかの条件変数の値を１つ反転させることを、「条件変数をフリップ操作する。」と表現する。そして、サーブ行は、対象行に対し、全ての条件変数をフリップ操作した数だけ生成される。即ち、サーブ行は、対象行に対し、条件数だけ生成されることになる。そして、サーブ行の論理値は、例えば、元の真理表のうち、条件変数の値が同一の行の論理値を検索することによって決定することができる。
【００３４】
ここで、サーブ真理表の作成方法の具体例を示す。図６は、論理式「ｑ=（Ａ∧Ｄ）∨（Ｃ∧Ｅ）」からサーブ真理表を作成する概念図を示す。図６において、従来例と同様、論理式に対し、真理表を作成する。ここでは条件数が４なので、１６個の行から真理表が構成される。そして、真理表の１６個ある各行に対し、サーブ真理表を作成する。サーブ真理表は条件数である４個のサーブ行をそれぞれ有する。そして、図６において、サーブ行は、対象行に対し、破線枠７０の条件変数の値がフリップされて生成される。即ち、対象行に対し、条件変数Ａ、Ｄ、Ｃ、Ｅの各値をそれぞれ１つフリップさせた行がサーブ行となっている。そして、サーブ行の論理値は、真理表の行のうち、サーブ行と一致する行を検索し、その論理値を参照することにより決定することができる。
【００３５】
次に、サーブ真理表からＭＣ／ＤＣパターンを決定する方法について述べる。ＭＣ／ＤＣパターンは、サーブ真理表の論理値とその対象行の論理値とを比較することによって決定することができる。具体的には、対象行の論理値と異なる論理値を持つサーブ行が存在する場合、上述の対象行とサーブ行とは、ＭＣ／ＤＣパターンを構成する行の組である。言い換えると、対象行に対し、ＭＣ／ＤＣパターンを構成する行の組となる可能性がある行は、対象行から条件数だけ生成されたサーブ行に限られる。したがって、各行に対し、その行から生成されたサーブ行の論理値を比較し、ＭＣ／ＤＣパターンを構成する行の組となるサーブ行を探索することによってＭＣ／ＤＣパターンを決定することができる。
【００３６】
ここで、図６の例を用いて上述のＭＣ／ＤＣパターンを決定する具体例を示す。論理式「ｑ=（Ａ∧Ｄ）∨（Ｃ∧Ｅ）」からサーブ真理表を作成後、行１乃至１６が作成したサーブ真理表の各サーブ行の論理値とその対象行の論理値とを比較する。具体的には、行１により生成されたサーブ真理表から対象行（行１）の論理値（ｑ＝１）と異なる論理値を有するサーブ行を検索する。そして、行１から生成されるサーブ行の論理値ｑは全て１であるため、行１に対し、ＭＣ／ＤＣパターンを構成する行の組となるサーブ行は存在しないことがわかる。次に、行２により生成されたサーブ真理表から対象行（行２）の論理値（ｑ＝１）と異なる論理値を有するサーブ行を検索する。そして、行２から生成されるサーブ行２−１乃至２−４のうち、サーブ行２−１及び２−２は、行２とは異なる論理値（ｑ＝０）を有する。したがって、サーブ行２−１（即ち、行１０）と、サーブ行２−２（即ち、行６）は、行２とともにＭＣ／ＤＣパターンを構成する行の組となることがわかる。即ち、行１０及び行６はＭＣ／ＤＣパターンを構成する。以上の操作を以下の行３乃至行１６まで行うことによって、全てのＭＣ／ＤＣパターンを構成する行を決定することができる。
【００３７】
次に、本発明に係るＭＣ／ＤＣパターン決定方法の処理の手順についてフローチャートを用いて説明する。図７は、ＣＰＵ２２が行う本発明に係るＭＣ／ＤＣパターンの作成処理を示すフローチャートである。なお、ステップＳ１０１は本発明における真理表作成手段、ステップＳ１０２、ステップＳ１０３はサーブ真理表作成手段、ステップＳ１０４はＭＣ／ＤＣパターン判定手段が、それぞれ行う処理に該当する。
【００３８】
まず、ＣＰＵ２２は、コードから抽出された条件部に対応する論理式から真理表を作成する（ステップＳ１０１）。そして、ＣＰＵ２２は、作成した真理表の各行に対し、サーブ真理表を作成する（ステップＳ１０２）。サーブ真理表は、対象行に対し、各条件変数をフリップ操作することにより生成される。そして、ＣＰＵ２２は、作成したサーブ真理表の各サーブ行の論理式を計算する（ステップＳ１０３）。このサーブ行の論理式の計算は、サーブ行と同一の行を真理表から検索することにより決定することができる。
【００３９】
そして、ＣＰＵ２２は、各行とそのサーブ行との論理値を比較し、異なる論理値を有するサーブ行をＭＣ／ＤＣパターンを構成する行として決定する（ステップＳ１０４）。以上の処理手順により、従来に比べ、ＭＣ／ＤＣパターンを決定するにあたり必要な行の探索する対象、即ち検索空間を大幅に低減することが可能となる。
【００４０】
次に、本発明に係るＭＣ／ＤＣパターン生成方法の必要なループ数について説明する。ここで、対象となる論理式が含む条件数をｎとする。まず、ステップＳ１０１において、ＣＰＵ２２が論理式から真理表を作成するループ数は、比較例に係るＭＣ／ＤＣパターン生成方法と同様、２ｎ（ここで、ｎは指数。）である。従って、図６の例における真理表作成のループ数は１６である。さらに、ステップＳ１０２乃至Ｓ１０４において、ＣＰＵ２２がサーブ真理表作成及びＭＣ／ＤＣパターンの決定に要する探索ループ数は、全ての行に対し生成されるサーブ行の数に等しいため、全ての行の数（２ｎ）に条件数（ｎ）を乗じた数に等しい。即ち、上述の探索ループ数は、２ｎ×ｎとなる。従って、図６の例におけるステップＳ１０２乃至Ｓ１０４で必要な探索ループ数は６４である。
【００４１】
ここで、図８に、本発明に係るＭＣ／ＤＣパターン生成方法の必要な総ループ数及び比較例に係るＭＣ／ＤＣパターン生成方法の必要な総ループ数を表す表を示す。ここで、「総ループ数」とは、真理表作成に必要なループ数（２ｎ）とサーブ真理表作成及びＭＣ／ＤＣパターン探索に必要なループ数を加えたループ数を表す。図８（ａ）に示す表８０は、比較例に係るＭＣ／ＤＣパターン生成方法での必要な総ループ数と条件数との関係を示す表である。図８（ｂ）に示す表８１は、本発明に係るＭＣ／ＤＣパターン生成方法での必要な総ループ数と条件数との関係を示す表である。表８０及び表８１に示すように、同じ条件数で必要な総ループ数が、条件数が大きくなるほど大きく異なることがわかる。特に条件数が３以上の場合には、飛躍的に総ループ数の削減を実現している。このように、本発明に係るＭＣ／ＤＣパターン生成方法を用いることにより、ＣＰＵ２２の処理負担を低減することができ、処理の迅速化が達成される。
【００４２】
[具体例]
次に、図９乃至図１１を用いて、実際のＣコードを対象に処理の具体例を示す。ここで示す例は、図２での分岐検出部４０、ＭＣ／ＤＣパターン生成部４１、アサーション生成部４２が行う処理の具体例である。
【００４３】
図９（ａ）は、Ｃコードの一部を抽出した一例である。図９（ａ）に示すように、Ｃコード中に条件１と条件２の２つの条件部が存在する。そして、図９（ｂ）は、図９（ａ）のＣコードをフローチャートにして示した図である。図９（ｃ）は、条件１と条件２とから生成されたＭＣ／ＤＣパターンを示す。
【００４４】
図１０（ａ）は、図９（ｃ）の各ＭＣ／ＤＣパターンを実行するかの確認を行うアサーション作成の一例を示す。ここでは、ＭＣ／ＤＣパターンは４つ存在するため、４つのＭＣ／ＤＣパターンのそれぞれに対しアサーションが作成される。そして、図１０（ｂ）は、図１０（ａ）で作成したアサーションを図９（ａ）のＣコードに挿入した例を示す。ここで、アサーションは複数存在するため、図２のアサーション処理部４２の説明で述べたように、各アサーションを分離してコードに挿入する必要がある。図１１は、図９（ａ）のＣコードに各アサーションを分離してコードに挿入した一例を示す。そして、図１１のアサーションを含むＣコードをテスト入力データ生成部４３で実行することにより、テスト用の入力データが生成されることになる。
【図面の簡単な説明】
【００４５】
【図１】ＭＣ／ＤＣパターン生成装置の概略構成を示す図である。
【図２】ＭＣ／ＤＣパターン生成装置の機能ブロック図である。
【図３】ＭＣ／ＤＣパターンを生成する工程の一例を示す図である。
【図４】比較例に係る処理の手順を示すフローチャートである。
【図５】比較例に係るＭＣ／ＤＣパターン生成方法の概要を示す図である。
【図６】本発明に係るＭＣ／ＤＣパターン生成方法の概要を示す図である。
【図７】本発明に係る処理の手順を示すフローチャートである。
【図８】条件数に対応する探索ループ数を示す表である。
【図９】Ｃコード及びＣコードに対応するフローチャート及びＭＣ／ＤＣパターンの一例を示す図である。
【図１０】ＭＣ／ＤＣパターンからアサーションを作成し、Ｃコードに挿入する一例を示す図である。
【図１１】各アサーションを分離してＣコードに挿入した一例を示す図である。
【符号の説明】
【００４６】
２０  主記憶装置
２２  ＣＰＵ
３６  補助記憶装置
４０  分岐検出部
４１  ＭＣ／ＤＣパターン生成部
４２  アサーション処理部
４３  テスト入力データ生成部
４４  シミュレーション部
５０  コード
５１  テストデータベース
【図１】
2009181292.tif 000003
【図２】
2009181292.tif 000004
【図３】
2009181292.tif 000005
【図４】
2009181292.tif 000006
【図５】
2009181292.tif 000007
【図６】
2009181292.tif 000008
【図７】
2009181292.tif 000009
【図８】
2009181292.tif 000010
【図９】
2009181292.tif 000011
【図１０】
2009181292.tif 000012
【図１１】
2009181292.tif 000013