(58)【調査した分野】(Int.Cl.,DB名)
前記境界条件生成手段は、前記条件分岐箇所の図形がある経路に関しては、前記条件分岐箇所の図形に対する設定値とその前後の値に基づいて前記境界条件を生成することを特徴とする請求項1記載の試験パターン生成システム。
前記境界条件生成手段は、その経路の入力と前記条件分岐箇所の図形との間に演算に係る図形がある場合には、該演算後の値が前記設定値とその前後の値となるようにする入力値を前記境界条件とすることを特徴とする請求項2記載の試験パターン生成システム。
前記試験パターン生成手段は、所定の条件を満たす場合には、前記各経路毎の境界条件をまとめることで前記試験入力パターンを生成することを特徴とする請求項1〜5の何れかに記載の試験パターン生成システム。
前記試験パターン生成手段は、所定の条件を満たさない場合には、前記複数の経路が同一の特定の演算子を有しているか否かを判定し、有している場合には該複数の経路の前記境界条件に基づき所定の組み合わせ論理によって前記試験入力パターンを生成することを特徴とする請求項1〜6の何れかに記載の試験パターン生成システム。
前記各図形に係わる前記付随情報には、その図形の種別を示す情報が含まれており、該種別情報を参照することで、前記条件分岐箇所の図形が判別されることを特徴とする請求項1〜8の何れかに記載の試験パターン生成システム。
前記経路リスト生成手段は、前記入力に係る図形を起点として、その図形を接続元とする前記接続線の接続先の図形を次の図形とすることで、順次、次の図形を探索することで、前記経路を抽出することを特徴とする請求項1〜9の何れかに記載の試験パターン生成システム。
前記図形式プログラムを構成する前記複数の図形及び接続線の付随情報に基づいて、入力に係る図形と出力に係る図形を抽出することで入出力リストを生成する入出力リスト生成手段を更に有し、
前記経路リスト生成手段は、該入出力リストに基づいて前記経路リストを生成することを特徴とする請求項1〜10の何れかに記載の試験パターン生成システム。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本例の試験パターン生成システムの構成図である。
図示の試験パターン生成システム10は、その入力部11から図形式プログラム1が入力され、これに対応した試験パターン2を生成して出力部16から出力するものである。
【0012】
試験パターン生成システム10は、入力部11、入出力リスト生成部12、経路解析部13、境界条件解析部14、試験パターン生成部15、出力部16の各機能部を有する。
試験パターン生成システム10は、複数の図形と該図形間を接続する接続線によって記述される図形式プログラム1について、その試験入力パターンを生成するシステムである。
【0013】
入出力リスト生成部12は、外部から上記入力部11を介して入力された図形式プログラム1を構成する上記複数の図形及び接続線の付随情報に基づいて、入力に係る図形と出力に係る図形を抽出することで後述する入出力リストを生成する。上記付随情報は、各図形、各接続線に付随しているデータであり、詳しくは後述する。
【0014】
経路解析部13は、上記入出力リストに基づいて、上記入力に係る図形から出力に係る図形へ到る経路を抽出して成る後述する経路リストを生成する。経路は複数抽出される場合もある。
【0015】
境界条件解析部14は、上記各経路毎に境界条件を生成する。各経路毎に、まず、その経路上に条件分岐箇所の図形があるか否かを判別する。ある場合には、条件分岐箇所の図形に入力される設定値を取得して、該設定値に基づいて境界条件を生成する。条件分岐箇所の図形とは、例えば後述する「比較器」図形などであり、詳しくは後述する。また、この場合の境界条件は、例えば後述する一例では設定値自体とその前後の値などに基づいて決定されるが、この例に限るわけではない。
【0016】
一方、その経路上に条件分岐箇所の図形が無い経路に関しては、その経路への入力に基づいて(その経路への入力値として、採り得る値等に基づいて)、境界条件を生成する。尚、経路への入力値(例えば後述する「入力種別」図形に対する入力値)は、予め別途登録されているものとする。
【0017】
また、上記条件分岐箇所の図形も、予め開発者等が任意に決めて登録しているものであってよい(例えばその機能コード等が登録されている。本例の場合、少なくとも後述する「比較器」図形の機能コード等は登録されていることになる)。
【0018】
試験パターン生成部15は、上記該境界条件に基づいて、上記試験入力パターンを生成する。生成された試験入力パターンは、出力部16から外部に入力される。
また、例えば、上記各図形に係わる付随情報には、その図形の種別を示す情報が含まれており、この種別情報を参照することで、上記入力に係る図形、出力に係る図形、条件分岐箇所の図形等が判別されるようにしてもよい。
【0019】
また、上記各接続線に係わる付随情報には、その接続線の接続元の図形と接続先の図形を示す情報が含まれるものであってもよく、この例の場合、経路解析部13は、例えば、上記入力に係る図形を起点として、その図形を接続元とする接続線の接続先の図形を次の図形とすることで、順次、次の図形を探索することで、上記経路を抽出するものであってもよい。
【0020】
尚、試験パターン生成システム10は、例えば汎用コンピュータ(パソコン、サーバ装置等)によって実現される。よって、特に図示しないが、ハードウェア的には汎用コンピュータの一般的な構成を備える。すなわち、不図示のCPU、メモリ、ハードディスク等の記憶装置、入出力インタフェース等を備える。記憶装置には予め所定のアプリケーションプログラムが記憶されており、CPUがこのアプリケーションプログラムを読出し・実行することにより、上記各処理機能部11〜16の処理機能(詳しくは後述する)が実現される。
【0021】
尚、図形式プログラム1に関しては、後に
図3等に具体例を示して説明するが、基本的には、矩形等の図形と、図形間を接続する接続線等から構成されている。図形や接続線には、設定値や機能コード等の所定のデータが付随されている。この様な付随データには、予め図形毎に設定されているデータもあれば、図形式プログラム1作成時にプログラマが任意に設定したデータ等もある。上記付随データについては詳しくは後述する。
【0022】
図2は、上記試験パターン生成システム10による試験パターン生成の処理フローチャート図である。
図2の例では、試験パターン生成システム10は、図形式プログラム1が入力部11に入力されると(ステップS1)、まず、入出力リスト生成部12が、この図形式プログラム1に基づいて、後述する入出力リストを生成する(ステップS2)。後に
図5(a)に示す一例を用いて説明するが、入出力リストは、図形式プログラム1を構成する上記各図形のうち、入力、出力に係る図形をそれぞれ検出して、その付随データ等を格納したものである。
【0023】
次に、経路解析部13が、上記入出力リストと図形式プログラム1とに基づいて、入力から出力に到る経路を(複数ある場合はそれぞれを)検出してリスト化することで、後述する経路リストを生成する(ステップS3)。経路リストの具体例を
図5(b)に示し後に説明する。
【0024】
次に、境界条件解析部14が、上記経路リストを参照して、各経路毎に、上記条件分岐箇所の図形(例えば比較器やスイッチなどの条件分岐処理が行われている図形)を探索したうえで、図形式プログラム1等に基づいて、境界条件を生成する(ステップS4)。
【0025】
上述したように、条件分岐箇所の図形の有無によって、その経路に関する境界条件の生成方法が異なる。
まず、条件分岐箇所の図形がある経路に関しては、図形式プログラム1に基づいて、条件分岐箇所の図形に対する設定条件を求める。これは、例えば条件分岐箇所の図形を接続先とする接続線の接続元を探索することで、条件分岐箇所の図形の入力側に接続された定数の図形を求める。そして、この定数(閾値等)を用いて、境界条件(例えば条件分岐箇所の図形への入力値が、閾値値自身とその前後の値等となるようにする当該経路への入力値)を決定する。
【0026】
一方、条件分岐箇所の図形が無い経路に関しては、当該経路への入力値として成り得る全ての値に基づいて、当該経路に関する境界条件を決定する。
最後に、試験パターン生成部15は、上記各経路毎の境界条件に基づいて、試験パターンを生成する(ステップS5)。境界条件と試験パターンの具体例は、
図5(c)、(d)に示し後に説明する。尚、
図5(a)〜(d)に示す具体例は、
図3に示す具体例(その1)に応じたものである。
【0027】
試験パターン生成部15によって生成された試験パターンは、出力部16から例えばファイルとして出力される。
上述した試験パターン生成システム10の処理について、以下、具体例を用いて更に詳細に説明する。
【0028】
図3に、図形式プログラム1の具体例(その1)を示す。
図示の例は速度検出プログラムであり、入力としてモータの回転数や角速度などの数値データが入力され、この入力値を検出下限値(例では30)と比較すると共に検出上限値(例では60)とも比較し、これら2つの比較結果の論理積に応じて1(True)もしくは0(False)を出力する。
【0029】
入力値が、検出下限値未満の場合や検出上限値を越える場合には、‘0’(False)を出力する。入力値が、検出下限値以上で且つ検出上限値以下の場合(30≦入力値≦60)、すなわち検出下限値と検出上限値との間に入っている場合には、‘1’(True)を出力する。
【0030】
図3に示す図形式プログラム1は、基本的に、複数の図形(矩形や黒丸)と、各図形間を接続する接続線(矢印→)とから構成されている。尚、黒丸は分岐を意味するものとする。
【0031】
各図形には、図示のように、通し番号、機能コード、名前、設定値等の各種付随データが付与されている。尚、各図形における図部分(矩形など)やその機能等は、予め作成済みであり、プログラマは、例えば所望の図形の選択と配置、及び名前や設定値等の入力を行うと共に、所望の図形間を接続線で接続すること等によって、図形式プログラム1を作成する。
【0032】
尚、上記通し番号とは、例えば新たな図形を配置する毎にその図形に自動的に割り当てられるシリアル番号等であり、当該図形式プログラム1上で各図形を識別するユニークなIDと見做せるものである。
【0033】
また、上記機能コードによって、図形の種別などを判別できる。例えば、図示の例では「比較器A」図形の機能コードが“c”となっているが、この“c”は種別が比較器であることを示すものである。よって、図示していないが、「比較器B」図形の機能コードも“c”となっていることになる。更に、本例の場合、上記条件分岐箇所の図形を示す情報として、少なくとも機能コード“c”が登録されているものとする。
【0034】
尚、付随データを図示していない図形/接続線もあるが、これは単に図示を省略しているだけであり、実際には基本的には全ての図形/接続線に対して付随データが存在している。
【0035】
尚、本説明では、
図3、
図6等に示す各図形は、基本的に、その名前(矩形の枠内に表記)で呼ぶものとする。よって、例えば
図3の図上左側に示す、名前が“入力”である図形は「入力」図形と呼ぶことになる。
【0036】
尚、後述する「入力種別」図形とは、その付随データの“種類”が“入力”である図形であり、上記「入力」図形とは区別される。「入力」図形は、「入力種別」図形に該当するが、「入力種別」図形に該当する図形は「入力」図形だけとは限らない。例えば
図6に示す例では、「前回値参照」図形も「入力種別」図形に該当する。
【0037】
また、同様に、「出力種別」図形とは、その付随データの“種類”が“出力”である図形であり、「出力」図形とは区別される。「出力」図形は、「出力種別」図形に該当するが、「出力種別」図形に該当する図形は「出力」図形だけとは限らない。
【0038】
図示の例の場合、「入力」図形から「分岐」図形(黒丸)を介して「比較器A」図形と「比較器B」図形に対する接続がある。「比較器A」図形に対しては更に「定数(60)」図形が接続されている。「比較器B」図形に対しては更に「定数(30)」図形が接続されている。また、「比較器A」図形と「比較器B」図形は、何れも、「論理積」図形を接続先として接続している。更に、「論理積」図形は「出力」図形を接続先として接続している。
【0039】
尚、図示では、各接続線の付随データは、「比較器A」−「定数(60)」間の接続線についてのみ示すが、上記の通り図示を省略しているだけであり他の接続線についてもこれと略同様の付随データが存在している。接続線の付随データは、基本的に、“接続元”の図形の通し番号と“接続先”の図形の通し番号とから成る。「比較器A」−「定数(60)」間の接続線の場合、その付随データは図示の通り、“接続元”の通し番号‘10’と“接続先”の通し番号‘12’となっている。
【0040】
尚、これより、任意の図形の入力側に接続された図形(以下、入力側図形と記す)を探索する場合には、当該任意の図形を接続先とする接続線を探索すれば、この接続線の付随データにおける上記“接続元”の通し番号が、上記入力側図形を示すものである。同様に、任意の図形の出力側に接続された図形(以下、出力側図形と記す)を探索する場合には、当該任意の図形を接続元とする接続線を探索すれば、この接続線の付随データにおける上記“接続先”の通し番号が、上記出力側図形を示すものである。
【0041】
図4に、
図3の図形式プログラム1の具体例(その1)に応じた入力信号と出力信号の関係を示す。
例えば、仮に0〜100までの値が入力と成り得る場合、入力信号の試験パターンは0,1,2,3、・・・98,99,100とすることが、考えられる。しかしながら、従来の課題で述べたように、試験パターンは出来るだけ少なくすることが望まれる。ここで、
図3の回路の場合、試験パターンは、「比較器A」、「比較器B」によってそれぞれ所定の閾値と比較される。このため、所定の閾値およびその前後の数値と比較して、出力が問題ないことが確認出来れば、試験パターンとしてはそれで充分であると考えられる。
【0042】
上述したことから、本手法では、境界条件解析部14によって、上述した条件分岐箇所の図形(比較器など)やその接続線等が解析され、適切な条件が生成される。尚、上述した条件分岐箇所の図形の機能コードが、予め開発者等によって登録されている。ここでは例えば機能コード=c等が、条件分岐箇所として登録されているものとする。
【0043】
これより、例えば
図3の例の場合、後述する各経路毎に上述した条件分岐箇所の図形として「比較器A」、「比較器B」が検出されることになる。そして、この例の場合、これらについて下記の解析処理を行うことで、例えば
図5(c)に示すような各経路毎の適切な(数を少なくした)境界条件が生成でき、以ってこの境界条件によって例えば
図5(d)に示すような適切な(数を少なくした)試験パターンが生成できる。
【0044】
まず、「比較器A」については、上述した処理によって「比較器A」の入力側図形が「定数(60)」であると判別できるので、この入力側図形の付随データに含まれる設定値を取得する。
図3に示す例では「定数(60)」の設定値(閾値)は‘60’であるので、‘60’を取得する。同様に、「比較器B」については、上述した処理によって「比較器B」の入力側図形が「定数(30)」であると判別できるので、この入力側図形の設定値(閾値)=‘30’を取得する。
【0045】
そして、後述する各経路毎に、上記取得した設定値‘60’、‘30’それぞれに基づいて(例えば、当該設定値自身及びその前後の値に基づいて)、境界条件を決定することになる。例えば、「比較器B」がある経路に関しては、30とその前後の29、31とに基づいて、境界条件を決定する。例えば、「比較器B」への入力値が29,30,31となるようにする当該経路への入力値が、境界条件となる。
図3の例の場合、経路への入力値がそのまま「比較器B」への入力値となるので、境界条件は29,30,31となる。同様の理由により、「比較器A」がある経路に関しては、60とその前後の59、61が、境界条件となる。
【0046】
そして、試験パターン生成部15によって、上記境界条件に応じて、
図5(d)に示すような適切な試験パターン、すなわち入力信号として「29,30,31,59,60,61」が、生成されることになる。
【0047】
尚、
図5(c)、(d)に示す“入力箇所”には、各経路毎に、その経路の「入力種別」図形の“名前”や通し番号等が格納される。
尚、本例の場合、「比較器A」は入力が30以上でTrue(1)を出力し、「比較器B」は入力が60以下でTrueを出力するため、両方ともFalse(0)の場合は存在せず、境界条件解析部14によって抽出された境界条件のみで(それによる
図5(d)に示す入力値のみで)、取り得るすべてのパターンを網羅することができる。
【0048】
上記試験パターン生成システム10の処理動作を、
図3に示す例に応じて説明するならば、まず、入力部11に
図3の例の図形式プログラム1が入力されると、入出力リスト生成部12が図形式プログラム1内の各図形の付随データ(機能コードや名前や不図示の“種類”等)を参照すること等で、入力と出力に該当する図形を抽出し、これらをリスト化した入出力リスト(
図5(a))を生成する。
【0049】
図5(a)に示すように、この例の場合の入出力リストは、
図3に示すプログラムにおいて上記「入力種別」図形と上記「出力種別」図形(これらの定義は説明済み)が判別され、これらの入力種別/出力種別の図形に関する付随データ(例えば通し番号や名前や不図示の“種類”や不図示の“操作可/不可情報”など)が抽出されて、
図5(a)に示すように入出力リストに格納される。
【0050】
尚、
図3には示していないが、ここでは図示の“操作”が可であるか不可であるかの情報(上記操作可/不可情報)も、付随データには含まれているものとする。また、図示のリストの“種類”の欄には、上記機能コードに基づく入力/出力の判別結果が格納されるものであっても構わない(この場合、勿論、機能コードと種類との対応関係が登録されたテーブル等が別途記憶されている。尚、この例は付随データに不図示の“種類”が含まれていない例と言える)。ここでは、機能コードaが入力種別、機能コードoが出力種別を意味するものとする。
【0051】
次に、経路解析部13によって、「入力種別」図形を起点にして、各図形に接続されている接続線の接続元と接続先を確認することで、順次、次の(接続先の)図形を探索する事により、経路リスト(
図5(b)等)が生成される。例えば、最初は、その接続元が‘13’(「入力種別」図形)となっている接続線を探索することで、この接続線の接続先は‘1’(「分岐」図形)となっているはずである。これより、今度は、この「分岐」図形を接続元とする接続線を探索して、その接続先となる図形を探索することになる。これを、接続先となる図形が上記「出力種別」図形となるまで繰り返す。
【0052】
尚、「分岐」図形が存在する場合には、基本的に、この「分岐」図形を接続元とする接続線は複数(ここでは2つとする)存在するようになっている。この場合、分岐の一方(一方の接続線)を任意に選択して経路を生成した後、分岐の他方(他方の接続線)を選択した他の経路も生成する。これによって、入力と出力がそれぞれ1つだけである場合でも、
図5(b)に示すように複数の経路が生成される場合がある。
【0053】
図3の例の場合、経路リストは、
図5(b)に示す例のように、経路1と経路2の2つの経路の情報からなるものとなる。すなわち、各経路毎に、その経路上の全ての図形の識別情報(通し番号や名前等)が、「入力種別」図形から順番に格納されており、最後は「入力種別」図形の情報となっている。
【0054】
図5(b)に示す経路1と経路2は、入力と出力が共通(同じ)であり、途中で「分岐」図形によって経路が分岐することで経路1と経路2とに分かれるのである。経路1と経路2の両方とも、「比較器」図形が存在している。
【0055】
また、「入力種別」図形/「出力種別」図形が複数ある場合には、「入力種別」図形−「出力種別」図形の組み合わせ毎に、経路を生成することになる(例えば後述する具体例(その2)のようになる。詳しくは後述する)。
【0056】
そして、境界条件解析部14は、生成された経路リストに基づいて、まず、各経路毎に、機能コード等を元に条件分岐箇所(比較器等)を探索する。尚、
図3等の例では条件分岐箇所に該当するのは「比較器」図形(本例では機能コード=cである図形)だけであるので、以下の説明では比較器を用いて説明するものとする。
【0057】
境界条件解析部14は、各経路毎に、その経路上に比較器(本例では機能コード=cである図形)がある場合には、この「比較器」図形に入力される閾値としての定数(定数=60、定数=30)を取得する。これは、例えば、「比較器」図形を接続先とする接続線(比較器の場合、入力側の接続線は、通常、2つ存在する)を探索して、これら各接続線の接続元(通し番号)を取得する。
図3の「比較器A」を例にすると、入力側の2つの接続線のうち、一方の接続元は通し番号=‘10’、他方の接続元は通し番号=‘1’となっているはずである。
【0058】
そして、取得した各通し番号に基づいて、上記接続元の図形の種別を判別する。これは、例えば機能コードによって判別する。尚、例えば、予め各機能コードと種別とを対応付けたデータが登録されており、これを参照することで判別する。そして、判別した種別が“定数”である図形(「定数」図形)の付随データに含まれる設定値を、上記定数として取得する。尚、基本的には、「比較器」図形の入力側に接続される2つの図形の何れか一方は、「定数」図形となっているはずである。
【0059】
そして、境界条件解析部14は、「比較器」図形がある経路に関しては、上記取得した定数(閾値)と経路リスト等に基づいて、境界条件を決定する。例えば閾値自身とその前後の値等(本例では、60と59,61や、30と29,31)と、その経路上の他の図形等に基づいて、境界条件を決定する。これは、各経路毎に、その「入力種別」図形に対する外部からの入力値を決定するものである。例えば、「比較器」図形への入力値が上記閾値自身とその前後の値等となるように、上記外部からの入力値を決定する。
【0060】
例えば、経路リストを参照して、その経路上において「入力種別」図形と「比較器」図形との間にある図形を全て抽出する。そして、抽出した図形のなかに演算に係る図形(加算器、減算器、乗算器等)があるか否かを判定する。
【0061】
図5(b)の例の場合、「分岐」図形があるだけであるので、演算に係る図形は無しと判定されることになる。もし、この例のように演算に係る図形は無いと判定される場合には、上記閾値自身とその前後の値を、そのまま、上記外部からの入力値に決定する。
【0062】
具体例(その1)の場合、経路1については上記59、60、61がそのまま境界条件となり、経路2については上記29、30,31がそのまま境界条件となる。これより、
図3の例の場合の境界条件は、
図5(c)に示すようになる。尚、
図5(c)における“入力箇所”には、その経路の「入力種別」図形の名前等が格納される。
【0063】
一方、抽出した図形のなかに演算に係る図形がある場合には、この図形に対する設定値(加算器であれば加算値となる)を取得して、この設定値と上記閾値自身とその前後の値に基づいて、境界条件を決定する。仮に、経路1に関して加算値=5の加算器があったとした場合、上記閾値自身とその前後の値からそれぞれ5を減算した値(つまり、54,55,56)が、経路1の境界条件となる。
【0064】
一方、境界条件解析部14は、「比較器」図形が無い経路に関しては、既に簡単に説明したように、当該経路への入力値(「入力種別」図形への入力値)と成り得る全ての値に基づいて、当該経路に関する境界条件を求める。これについては、
図3の例では「比較器」図形が無い経路が存在しないため、後に
図6の例の説明の際に詳細に説明するものとする。
【0065】
最後に、上記境界条件解析部14によって作成された境界条件(例えば
図5(c))に基づき、試験パターン生成部15が、試験パターン(例えば
図5(d))を生成する。
上記境界条件解析部14は、作成された境界条件が1種類(換言すれば、経路が1つのみ)の場合には、この境界条件をそのまま試験パターンとする。また、作成された境界条件が複数種類の場合(換言すれば、経路が複数ある)場合には、この複数の境界条件を組み合わせて試験パターンを生成する。
【0066】
これは、例えば具体例(その1)の
図5(c)のように複数の境界条件の“入力箇所”の図形が”操作可能”且つ同一である場合には、当該複数の境界条件をまとめて1つにすることで試験パターンを生成する。
図5(c)の“入力箇所”の図形は経路1、経路2とも「入力」図形であり、これは入出力リストを参照することで“操作可能”と判定される。これより、
図5(c)の複数の境界条件が1つにまとめられて
図5(d)に示す試験パターンが生成される。
【0067】
一方、後述する具体例(その2)の場合には、複数の境界条件の“入力箇所”が同一ではない(若しくは操作可能ではない)。この場合の処理については、後に具体例(その2)の説明の際に説明する。
【0068】
ここで、試験パターン生成部15が生成する試験パターンは、例えば、図形式プログラム1がマイコンやFPGAなどの集積回路に搭載された状態において外部から入力される値や信号等に関するものであり、これらは基本的には上記「入力種別」図形(且つ操作可能であるもの)に入力されるものである。これより、試験パターンは、基本的には、
図5(d)に示すような“入力箇所”=「入力」図形に対する“入力データ”という形になる。但し、本例の処理では、境界条件における“入力箇所”には基本的に「入力種別」図形を示す情報が入力される。この為、境界条件における“入力箇所”に「入力種別」図形であるが操作可能ではない図形が格納される可能性がある。上記のことから、このような境界条件を、そのまま他の境界条件と組み合わせて試験パターンを生成することは困難である。この様なケースの試験パターン生成処理については、後に
図6の例の説明の際に詳細に説明する。
【0069】
次に、他のプログラム例を用いて説明する。
図6に、図形式プログラムの具体例(その2)を示す。
図7に、
図6のプログラムに係わる入力信号と出力信号の関係を示す。
【0070】
図6に示すプログラムは、ソフトウェアタイマであり、入力として、タイマのリセット信号が入力され得るものであり、また、0から99まで1ずつカウントアップし、出力としてタイマの現在値が出力される。上記カウント値が100になった場合、あるいは途中で上記タイマのリセット信号が入力された場合は、カウント値は‘0’リセットされる(一例を
図7に示す)。
【0071】
尚、
図3においても一部省略していたが、
図6においては全図形、全接続線について、その付随データの図示は省略しているが、当然、全てに付随データを存在している。
本例の場合も、上記具体例(その1)の場合と略同様に、入力される図形式プログラム1から、まず「入力種別」図形と「出力種別」図形を判別し、更に入力―出力間(「入力種別」図形−「出力種別」図形間)の各経路(経路上の図形)を抽出する。そして、各経路毎に条件分岐箇所(本説明でも比較器を例にする)を探索する。比較器がある経路に関しては、この比較器に対する設定値(閾値)等に基づいて(閾値自体とその前後の値等に基づいて)境界条件を求める。一方、比較器が無い経路に関しては、この経路の「入力種別」図形に対する入力値と成り得る値全て(入力候補値と呼ぶものとする;予め別途登録されているものとする)に基づいて、境界条件を生成する。
【0072】
図6の例の場合も、処理手順は上記
図2で説明した通りである。
図6のプログラムの試験パターン生成を
図2の処理で行う場合、まず、入力部11に
図6の例の図形式プログラム1が入力され(ステップS1)、入出力リスト生成部12により入出力リスト(
図8(a))が生成される(ステップS2)。
【0073】
ここで、
図6には示していないが、上記「入力種別」図形に該当するのは「入力」図形と「前回値参照」図形であり、「出力種別」図形は「出力」図形であるものとする。これより、入出力リストは、
図8(a)に示すように、これら3つの図形に係わる付随データ(通し番号、名前、種類、操作等)などが格納されることになる。また、
図8(a)に示すように、本例では「入力」図形のみが操作可となっている。
【0074】
次に、経路解析部13によって、経路リスト(
図8(b))が生成される(ステップS3)。これも、基本的には
図3の例の場合と同様であり、上記入出力リストに基づき、各入力と出力との組み合わせ毎に(更に分岐などに応じて)各経路を探索しリスト化することで、経路リストが生成される。
【0075】
これより、本例では
図8(b)に示すように、経路1、経路2、経路3の3つの経路が生成される。経路1は、「入力」図形−「出力」図形間の経路である。経路2、経路3は、ともに、「前回値参照」図形−「出力」図形間の経路である。「前回値参照」図形−「出力」図形間には、「分岐」図形があって途中で2つに分岐しているので、経路2と経路3の2つの経路が形成されている。
【0076】
尚、本例の場合、2番目の分岐の他方の分岐先である「前回値保持」図形は、上記出力属性の図形ではなく且つENDの図形であるので、この様な図形は無視するものとするが、この例に限らない。尚、ここでは、自己を接続元とする接続線が存在しない図形を、上記ENDの図形とするものとする。尚、
図8(b)に示す経路リストの各経路の生成方法については、既に述べた通りであり、ここでは特に説明しない。
【0077】
尚、
図8(b)では省略しているが、
図5(b)と同様に更に通し番号があってもよい。
次に、上記経路リストに基づき、この経路リスト上の各経路毎に、境界条件解析部14が境界条件を生成する(ステップS4)。
【0078】
これは、既に具体例(その1)で説明したように、条件分岐箇所(比較器など)が存在する経路に関しては、比較器への設定値等に基づいて境界条件を生成する。一方、比較器などが存在しない経路に関しては、上記入力候補値等に基づいて境界条件を生成する。
【0079】
図6の例では、経路2だけに「比較器」図形が存在する。この比較器に対する設定値は‘100’であるので、上記具体例(その1)の場合と略同様に、この閾値自体とその前後の値(100と、99,101)や演算器(加算器など)に基づいて、境界条件を生成する。
【0080】
本例の場合、「入力種別」図形−「比較器」図形間に「加算器」図形が存在し、「加算器」図形に対する設定値が‘1’であるので、具体例(その1)で説明した処理によれば、上記99,100,101からそれぞれ1を減算することで、境界条件は98,99,100となることになる。但し、予め不図示の他の条件(例えば「比較器」図形の入力は100以下等という条件)が登録されていた場合、この条件も用いて境界条件を決定するようにしてもよい。これより、本説明では、経路2に関する境界条件は、
図8(c)に示すように入力値は98と99のみとなるものとする。
【0081】
尚、経路2、経路3の「入力種別」図形(例えば
図8(b)における先頭レコードの図形等)は“前回値参照”であるので、
図8(c)に示すように境界条件の“入力箇所”は“前回値参照”となる。
【0082】
また、上記具体例(その1)では存在しなかったが、本例の場合、上記比較器などが存在しない経路がある。すなわち、
図8(b)に示すように、経路1と経路3には、どちらにも比較器などは存在しない。この様な比較器などが存在しない経路に関する境界条件は、上記のように上記“入力候補値”に基づいて生成される。
【0083】
すなわち、
図8(b)に示すように、経路1の「入力種別」図形は「入力」図形である。そして、特に図示しないが、本例では、予め「入力」図形(例えば機能コード=aの図形)に関する上記“入力候補値”として‘1’と‘0’のみが登録されているものとする。
【0084】
境界条件解析部14は、この登録情報を参照することで、例えば
図8(c)に示すように、経路1に関する境界条件は、入力データが‘0’と‘1’となっている(“入力箇所”は上記「入力」図形を示す“入力”となっている)。
【0085】
また、経路3に関しても、
図8(b)に示すように、経路3の「入力種別」図形は「前回値参照」図形である。そして、特に図示しないが、本例では、予め「前回値参照」図形に関する上記“入力候補値”として0〜99(0,1,2,3,4,5・・・96,97,98,99)が登録されているものとする。
【0086】
境界条件解析部14は、この登録情報を参照することで、例えば
図8(c)に示すように、経路3に関する境界条件は、入力データが0,1,2,3,4,5・・・96,97,98,99となっている(“入力箇所”は上記「前回値参照」図形を示す“前回値参照”となっている)。
【0087】
尚、上記経路1や経路3のような条件分岐箇所(比較器など)が存在しない経路は、「入力が直接出力に影響する経路」と言うこともできると考えてもよい。従って、この様な経路の判別方法は、上述した比較器の有無に基づく方法に限らず、他の方法であっても構わない。
【0088】
また、上記条件分岐箇所(比較器など)が存在しない経路を、所定の条件に該当する経路と言うこともできるものとする。
最後に、試験パターン生成部15は、上記各経路毎の境界条件に基づいて、試験パターンを生成する(ステップS5)。
【0089】
この処理は、まず最初に、上記具体例(その1)で説明したように、複数の境界条件を1つにまとめる(統合する)ことを試みる。これは、上記各経路毎の境界条件が所定の条件を満たすか否かを判定し、満たす場合には、これら複数の境界条件を1つにまとめる(統合する)ことで試験パターンを生成する。所定の条件とは、複数の境界条件の“入力箇所”が同じである(且つ“操作可能”である)ことである。よって、
図8(c)に示すように経路2の境界条件と経路3の境界条件とが統合の候補となる。しかし、上記具体例(その)1では説明しなかったが、これは経路2と経路3の両方が上記条件分岐箇所(比較器など)が存在する経路であることも(あるいは上記のように“操作可能”であることも)条件となる。
図8(b)に示す経路リストを参照すれば、所定の条件は満たされないと判定されるので、本例の場合は統合不可と判定される。
【0090】
統合不可と判定された場合、今度は、複数の経路が同一の特定の演算子(ここでは論理和または論理積の図形)を有しているか否かを判定する。これは、例えば、
図8(b)に示す経路リストを参照して、論理和や論理積を探索する。この例では、経路1と経路2に論理和が存在している。この場合、経路1の境界条件と経路2の境界条件とに基づいて所定の組み合わせ論理(例えば総当りの組み合わせ等)によって試験パターン(候補)を生成する。総当りの組み合わせの場合、
図8(c)に示す経路1,2の境界条件に基づいて
図9(a)に示す試験パターン(候補)Aが生成されることになる。
【0091】
次に、生成した試験パターン(候補)Aをそのまま試験パターンと出来るか否かを判定する。これは、試験パターン(候補)Aの項目全てが試験で操作可能か否かによって判定する。
図9(a)に示す試験パターン(候補)Aの場合、その項目は“入力”と“前回値参照”であり、両方とも“操作可能”か否かを判定する。これは、例えば
図8(a)に示す入出力リストの“操作”の欄を参照することで、あるいは「入力」図形、「前回値参照」図形それぞれの付随データを参照することで、操作可能か否かを判定する。
【0092】
図8(a)に示す例では、“入力”については操作可であるが、“前回値参照”については操作不可であるので、上記判定はNOとなる。尚、上記判定がYESの場合には、生成した試験パターン(候補)Aをそのまま試験パターンとする。
【0093】
上記判定がNOの場合、生成した試験パターン(候補)における上記操作不可である項目(本例では前回値参照)に基づいて、試験パターン(候補)を、「前回値参照」図形への入力値の採り得る範囲全域(上記入力候補値;本例では上記のように0〜99)に拡張することで、例えば
図9(b)に示すような試験パターンを生成する。すなわち、上記“入力”と“前回値参照”のうち“前回値参照”については操作不可であり試験パターンには成り得ないので、“入力”のみによる試験パターンとする。
【0094】
これは、例えば、まず、
図9(a)に示す試験パターン(候補)AにおけるNo.1〜No.4の各レコードに対応させて、上記「前回値参照」の入力候補値(0〜99)を羅列することで、例えば
図9(c)のテーブル(No.1〜No.400の400個のレコードから成る)を生成する。尚、このとき、“入力データ”の値は全レコード一律で‘0’とする(ここでは予め設定されている初期値が‘0’であるものとする)。尚、特に図示・説明しないが、入力候補値を登録する際に、ノーマリーオン(通常入力するデータが‘1’)なのかノーマリーオフ(通常入力するデータが‘0’)なのかを、任意に設定できるものであってもよい。切替器の性質として、通常は入力が‘0’であるが‘1’が入力されたときだけ信号を切り替えるものであることから、上記のように初期値‘0’が設定されているものする。
【0095】
そして、
図9(c)の状態のテーブルに対して、
図9(a)に示す試験パターン(候補)AのNo.1〜No.4の各レコードの内容を反映させる。
つまり、まず、
図9(c)のテーブルにおいて試験パターン(候補)AのNo.1に対応するレコード群(No.1〜No.100のレコード群)に対して、試験パターン(候補)AのNo.1の内容、すなわち「“前回値参照”が98のときに“入力データ”が‘0’」を反映させる。これより、
図9(c)のテーブルのNo.99のレコードの“入力データ”が‘0’となるが、上記の通り最初に一律‘0’が設定されているので、変化しないことになる。
【0096】
図9(c)のテーブルにおいて試験パターン(候補)AのNo.2に対応するレコード群(No.101〜No.200のレコード群)についても、上記No.1と略同様の処理を行うことで、「“前回値参照”が99のときに“入力データ”が‘0’」を反映させることで、No.200のレコードの“入力データ”が‘0’となる。
【0097】
図9(c)のテーブルにおいて試験パターン(候補)AのNo.3に対応するレコード群(No.201〜No.300のレコード群)に対して、試験パターン(候補)AのNo.3の内容、すなわち「“前回値参照”が99のときに“入力”が‘1’」を反映させる。これより、
図9(c)のテーブルのNo.300のレコードの“入力”が‘1’となる。
【0098】
図9(c)のテーブルにおいて試験パターン(候補)AのNo.4に対応するレコード群(No.301〜No.400のレコード群)に対して、試験パターン(候補)AのNo.4の内容、すなわち「“前回値参照”が98のときに“入力”が‘1’」を反映させる。これより、
図9(c)のテーブルのNo.399のレコードの“入力”が‘1’となる。
【0099】
以上の処理によって、
図9(c)のテーブルから
図9(d)のテーブルが生成される。図示のように、No.300とNo.399のレコードのみ“入力”が‘1’となっている。
【0100】
ここで、
図9(c)、(d)のテーブルは、100個単位で1つの試験パターンを成す。これより、同一の試験パターンがあるか否かを判定して、ある場合にはどちらか一方を消去するようにしてもよい。
図9(d)の例の場合、No.1〜No.100のレコード群とNo.101〜No.200のレコード群とが同一となっているので、一方を消去する。また、これに伴ってNo.を繰り上げることで、
図9(e)に示すテーブルが生成される。上記のように“前回値参照”は試験に用いることは出来ないので、これを
図9(e)に示すテーブルから削除することで、上記
図9(b)に示す試験パターンが生成される。
【0101】
尚、上記経路3に関しては、他の経路との関連が無い(上記同一の特定の演算子が無い)ので、他の経路との組み合わせは行われず、よって経路3による試験パターンの生成は行われない。但し、
図9(e)に示すように、
図8(c)に示す経路3の境界条件は全て試験パターンに含まれていると見做せるので、特に問題はないことになる。
【0102】
また、
図9(b)に示す試験パターンは、100個のレコード群単位で1つの試験パターンを成すものと見做すこともでき、この場合、3種類の試験パターンが生成されたものと見做せる。仮に、100個のレコード群のうちの何れか1つが‘1’になるケース全てを試験しようとするならば、100種類の試験パターンを生成する必要がある。これに対して、本手法では上記の通り3種類の試験パターンで済むことになる。
【0103】
尚、上述した試験パターンによれば、下記の(1)〜(4)について動作チェックできるものと見做してもよい。下記の(1)〜(3)は、出力(タイマ値)がリセットされる動作について試験するものとなる。また、下記の(4)は、リセット動作時以外の動作について試験するものである。
図8(c)に示すものを試験パターンと出来れば、試験パターン数を大幅に減少させることができるが、本例では上述した理由により出来ないことになる。
(1)タイマ値が比較器によってリセットされる場合(タイマが100に達した場合);
(2)外部からの「入力」‘1’によってタイマ値がリセットされる場合;
(3)比較器と「入力」‘1’の両方が同時発生してタイマ値がリセットされる場合;
(4)リセットされない状態(タイマを加算している状態);
尚、“前回値参照”が‘99’のときの比較器への入力は‘100’となるので、
図9(b)のNo.101〜No.200の試験パターンの場合、比較器と「入力」‘1’の両方が同時発生することになる。