(57)【要約】【課題】図形式プログラムに関する試験パターンを自動生成する。【解決手段】入出力リスト生成部１２と経路解析部１３が、図形式プログラム１に基づいてその入力−出力間の１以上の経路を生成する。境界条件解析部１４は、各経路毎に境界条件を生成する。例えば、比較器がある経路に関しては、比較器へ入力される閾値等に基づいて、境界条件を生成する。試験パターン生成部１５は、各経路毎の境界条件に基づいて、試験パターンを生成する。【選択図】図１
2014119837.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが付随情報を有する複数の図形及び該図形間を接続する接続線によって記述される図形式プログラムの試験入力パターンを生成するシステムであって、
前記図形式プログラムにおける入力から出力へ到る１以上の経路を抽出して成る経路リストを生成する経路リスト生成手段と、
前記経路リストの各経路毎に境界条件を生成する手段であって、各経路毎に、その経路上の条件分岐箇所の図形の有無を判別して、該条件分岐箇所の図形がある経路に関しては該条件分岐箇所の図形に対する設定値と前記経路リストに基づいて境界条件を生成し、該条件分岐箇所の図形が無い経路に関しては該経路への入力値として採り得る全ての値を境界条件とする境界条件生成手段と、
前記各経路毎の境界条件に基づいて、前記試験入力パターンを生成する試験パターン生成手段と、
を有することを特徴とする試験パターン生成システム。
【請求項２】
前記境界条件生成手段は、前記条件分岐箇所の図形がある経路に関しては、前記条件分岐箇所の図形に対する設定値とその前後の値に基づいて前記境界条件を生成することを特徴とする請求項１記載の試験パターン生成システム。
【請求項３】
前記境界条件生成手段は、前記設定値とその前後の値をそのまま前記境界条件とすることを特徴とする請求項２記載の試験パターン生成システム。
【請求項４】
前記境界条件生成手段は、その経路の入力と前記条件分岐箇所の図形との間に演算に係る図形がある場合には、該演算後の値が前記設定値とその前後の値となるようにする入力値を前記境界条件とすることを特徴とする請求項２記載の試験パターン生成システム。
【請求項５】
前記境界条件は、前記各経路毎のその経路に対する入力値パターンであることを特徴とする請求項１〜４の何れかに記載の試験パターン生成システム。
【請求項６】
前記試験パターン生成手段は、所定の条件を満たす場合には、前記各経路毎の境界条件をまとめることで前記試験入力パターンを生成することを特徴とする請求項１〜５の何れかに記載の試験パターン生成システム。
【請求項７】
前記試験パターン生成手段は、所定の条件を満たさない場合には、前記複数の経路が同一の特定の演算子を有しているか否かを判定し、有している場合には該複数の経路の前記境界条件に基づき所定の組み合わせ論理によって前記試験入力パターンを生成することを特徴とする請求項１〜６の何れかに記載の試験パターン生成システム。
【請求項８】
前記各接続線に係わる前記付随情報には、その接続線の接続元の図形の識別情報と接続先の図形の識別情報が含まれており、
前記境界条件生成手段は、前記条件分岐箇所の図形を前記接続先の図形とする接続線に基づいて、その接続元の図形から前記設定値を取得することで、前記境界条件を生成することを特徴とする請求項１〜７の何れかに記載の試験パターン生成システム。
【請求項９】
前記各図形に係わる前記付随情報には、その図形の種別を示す情報が含まれており、該種別情報を参照することで、前記条件分岐箇所の図形が判別されることを特徴とする請求項１〜８の何れかに記載の試験パターン生成システム。
【請求項１０】
前記経路リスト生成手段は、前記入力に係る図形を起点として、その図形を接続元とする前記接続線の接続先の図形を次の図形とすることで、順次、次の図形を探索することで、前記経路を抽出することを特徴とする請求項１〜９の何れかに記載の試験パターン生成システム。
【請求項１１】
前記図形式プログラムを構成する前記複数の図形及び接続線の付随情報に基づいて、入力に係る図形と出力に係る図形を抽出することで入出力リストを生成する入出力リスト生成手段を更に有し、
前記経路リスト生成手段は、該入出力リストに基づいて前記経路リストを生成することを特徴とする請求項１〜１０の何れかに記載の試験パターン生成システム。
【請求項１２】
それぞれが付随情報を有する複数の図形及び該図形間を接続する接続線によって記述される図形式プログラムの試験入力パターンを生成するシステムのコンピュータを、
前記図形式プログラムにおける入力から出力へ到る１以上の経路を抽出して成る経路リストを生成する経路リスト生成手段と、
前記経路リストの各経路毎に境界条件を生成する手段であって、各経路毎に、その経路上の条件分岐箇所の図形の有無を判別して、該条件分岐箇所の図形がある経路に関しては該条件分岐箇所の図形に対する設定値と前記経路リストに基づいて境界条件を生成し、該条件分岐箇所の図形が無い経路に関しては該経路への入力値として採り得る全ての値を境界条件とする境界条件生成手段と、
前記各経路毎の境界条件に基づいて、前記試験入力パターンを生成する試験パターン生成手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、図形表示を用いて記述を行うプログラムの試験パターン生成の方法及び装置に関する。
【背景技術】
【０００２】
一般的に、電子回路の動作試験を行うためには、想定される入力信号を入力し、この入力に対する処理結果を出力信号として取得し、この出力信号が上記入力信号に対して正しく反応しているものであるか否かを確認する。そのため、回路の不具合が効率よく確認できるような入力信号を生成することが重要となり、それに対する検討などが行われてきた(特許文献１など)。
【０００３】
一方、製品の電子回路は、近年、マイコンやＦＰＧＡなどの集積回路に置き変わっており、それらはプログラムなどによって内部の処理が定義付けられている。そのため、内部の処理を試験する必要があるが、これはまず一般的なソフトウェアの試験方法によって行われ、その後に実際にマイコンを実装した試験基板にダウンロードして試験を行なっている。
【０００４】
また、Ｃ言語コードの場合、プログラム内の視認性が悪く、試験項目の漏れや抜けが発生することがあり、十分な試験を行えない可能性があった。
そのため、プログラムの視認性がよく、品質や生産性、利便性を向上させるために、ブロック図などの図形を用いてプログラムコード（“図形式プログラム”と呼ぶ）を生成し、これをコンピュータが実行可能な形式のプログラム、もしくは、Ｃ言語などの従来のプログラムコードへ変換するような開発環境やソフトウェアが開発され、利用され始めている(例えば、MathWorksのMATLAB CoderやMITメディアラボのScratchなど；あるいは特許文献２など)
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−３３８２００号公報
【特許文献２】特開平７−２００２７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した“図形式プログラム”に関しても、一般的な試験方法(ブラックボックステストやホワイトボックステストなど)を使用するが、入力信号が多い場合、それぞれの入力に対して適切な信号波形を準備し、それらから試験パターンを生成する必要があった。また、すべてのパターンを試験するためには膨大な時間がかかる場合もあり、現実的ではなかった。そのため、試験を行う人の経験や勘を頼りに試験パターン数を減らして試験を行うこともあった。
【０００７】
本発明の課題は、図形式プログラムに基づいてその試験パターンを自動生成することができ、特に試験パターン数の簡略化を実現できる試験パターン生成システム等を提供することである。
【課題を解決するための手段】
【０００８】
本発明の試験パターン生成システムは、それぞれが付随情報を有する複数の図形及び該図形間を接続する接続線によって記述される図形式プログラムの試験入力パターンを生成するシステムであって、前記図形式プログラムにおける入力から出力へ到る１以上の経路を抽出して成る経路リストを生成する経路リスト生成手段と、前記経路リストの各経路毎に境界条件を生成する手段であって、各経路毎に、その経路上の条件分岐箇所の図形の有無を判別して、該条件分岐箇所の図形がある経路に関しては該条件分岐箇所の図形に対する設定値と前記経路リストに基づいて境界条件を生成し、該条件分岐箇所の図形が無い経路に関しては該経路への入力値として採り得る全ての値を境界条件とする境界条件生成手段と、前記各経路毎の境界条件に基づいて、前記試験入力パターンを生成する試験パターン生成手段とを有する。
【発明の効果】
【０００９】
本発明によれば、図形式プログラムに関する試験パターンを自動生成できるようにすることで、試験準備の簡略化を実現でき、また試験パターンの漏れや抜けを防止することができ、更に試験パターン数を削減することができ、以って試験を効率化することができる。
【図面の簡単な説明】
【００１０】
【図１】本例の試験パターン生成システムの構成図である。
【図２】試験パターン生成の処理フローチャート図である。
【図３】図形式プログラムの具体例（その１）である。
【図４】具体例（その１）に応じた入力信号と出力信号の関係を示す図である。
【図５】（ａ）〜（ｄ）は、処理途中または処理結果のデータの具体例である。
【図６】図形式プログラムの具体例（その２）である。
【図７】具体例（その２）に応じた入力信号と出力信号の関係を示す図である。
【図８】（ａ）〜（ｃ）は、処理途中のデータの具体例である。
【図９】（ａ）〜（ｅ）は、処理途中または処理結果のデータの具体例である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本例の試験パターン生成システムの構成図である。
図示の試験パターン生成システム１０は、その入力部１１から図形式プログラム１が入力され、これに対応した試験パターン２を生成して出力部１６から出力するものである。
【００１２】
試験パターン生成システム１０は、入力部１１、入出力リスト生成部１２、経路解析部１３、境界条件解析部１４、試験パターン生成部１５、出力部１６の各機能部を有する。
試験パターン生成システム１０は、複数の図形と該図形間を接続する接続線によって記述される図形式プログラム１について、その試験入力パターンを生成するシステムである。
【００１３】
入出力リスト生成部１２は、外部から上記入力部１１を介して入力された図形式プログラム１を構成する上記複数の図形及び接続線の付随情報に基づいて、入力に係る図形と出力に係る図形を抽出することで後述する入出力リストを生成する。上記付随情報は、各図形、各接続線に付随しているデータであり、詳しくは後述する。
【００１４】
経路解析部１３は、上記入出力リストに基づいて、上記入力に係る図形から出力に係る図形へ到る経路を抽出して成る後述する経路リストを生成する。経路は複数抽出される場合もある。
【００１５】
境界条件解析部１４は、上記各経路毎に境界条件を生成する。各経路毎に、まず、その経路上に条件分岐箇所の図形があるか否かを判別する。ある場合には、条件分岐箇所の図形に入力される設定値を取得して、該設定値に基づいて境界条件を生成する。条件分岐箇所の図形とは、例えば後述する「比較器」図形などであり、詳しくは後述する。また、この場合の境界条件は、例えば後述する一例では設定値自体とその前後の値などに基づいて決定されるが、この例に限るわけではない。
【００１６】
一方、その経路上に条件分岐箇所の図形が無い経路に関しては、その経路への入力に基づいて（その経路への入力値として、採り得る値等に基づいて）、境界条件を生成する。尚、経路への入力値（例えば後述する「入力種別」図形に対する入力値）は、予め別途登録されているものとする。
【００１７】
また、上記条件分岐箇所の図形も、予め開発者等が任意に決めて登録しているものであってよい（例えばその機能コード等が登録されている。本例の場合、少なくとも後述する「比較器」図形の機能コード等は登録されていることになる）。
【００１８】
試験パターン生成部１５は、上記該境界条件に基づいて、上記試験入力パターンを生成する。生成された試験入力パターンは、出力部１６から外部に入力される。
また、例えば、上記各図形に係わる付随情報には、その図形の種別を示す情報が含まれており、この種別情報を参照することで、上記入力に係る図形、出力に係る図形、条件分岐箇所の図形等が判別されるようにしてもよい。
【００１９】
また、上記各接続線に係わる付随情報には、その接続線の接続元の図形と接続先の図形を示す情報が含まれるものであってもよく、この例の場合、経路解析部１３は、例えば、上記入力に係る図形を起点として、その図形を接続元とする接続線の接続先の図形を次の図形とすることで、順次、次の図形を探索することで、上記経路を抽出するものであってもよい。
【００２０】
尚、試験パターン生成システム１０は、例えば汎用コンピュータ（パソコン、サーバ装置等）によって実現される。よって、特に図示しないが、ハードウェア的には汎用コンピュータの一般的な構成を備える。すなわち、不図示のＣＰＵ、メモリ、ハードディスク等の記憶装置、入出力インタフェース等を備える。記憶装置には予め所定のアプリケーションプログラムが記憶されており、ＣＰＵがこのアプリケーションプログラムを読出し・実行することにより、上記各処理機能部１１〜１６の処理機能（詳しくは後述する）が実現される。
【００２１】
尚、図形式プログラム１に関しては、後に図３等に具体例を示して説明するが、基本的には、矩形等の図形と、図形間を接続する接続線等から構成されている。図形や接続線には、設定値や機能コード等の所定のデータが付随されている。この様な付随データには、予め図形毎に設定されているデータもあれば、図形式プログラム１作成時にプログラマが任意に設定したデータ等もある。上記付随データについては詳しくは後述する。
【００２２】
図２は、上記試験パターン生成システム１０による試験パターン生成の処理フローチャート図である。
図２の例では、試験パターン生成システム１０は、図形式プログラム１が入力部１１に入力されると（ステップＳ１）、まず、入出力リスト生成部１２が、この図形式プログラム１に基づいて、後述する入出力リストを生成する（ステップＳ２）。後に図５（ａ）に示す一例を用いて説明するが、入出力リストは、図形式プログラム１を構成する上記各図形のうち、入力、出力に係る図形をそれぞれ検出して、その付随データ等を格納したものである。
【００２３】
次に、経路解析部１３が、上記入出力リストと図形式プログラム１とに基づいて、入力から出力に到る経路を（複数ある場合はそれぞれを）検出してリスト化することで、後述する経路リストを生成する（ステップＳ３）。経路リストの具体例を図５（ｂ）に示し後に説明する。
【００２４】
次に、境界条件解析部１４が、上記経路リストを参照して、各経路毎に、上記条件分岐箇所の図形（例えば比較器やスイッチなどの条件分岐処理が行われている図形）を探索したうえで、図形式プログラム１等に基づいて、境界条件を生成する（ステップＳ４）。
【００２５】
上述したように、条件分岐箇所の図形の有無によって、その経路に関する境界条件の生成方法が異なる。
まず、条件分岐箇所の図形がある経路に関しては、図形式プログラム１に基づいて、条件分岐箇所の図形に対する設定条件を求める。これは、例えば条件分岐箇所の図形を接続先とする接続線の接続元を探索することで、条件分岐箇所の図形の入力側に接続された定数の図形を求める。そして、この定数（閾値等）を用いて、境界条件(例えば条件分岐箇所の図形への入力値が、閾値値自身とその前後の値等となるようにする当該経路への入力値)を決定する。
【００２６】
一方、条件分岐箇所の図形が無い経路に関しては、当該経路への入力値として成り得る全ての値に基づいて、当該経路に関する境界条件を決定する。
最後に、試験パターン生成部１５は、上記各経路毎の境界条件に基づいて、試験パターンを生成する（ステップＳ５）。境界条件と試験パターンの具体例は、図５（ｃ）、（ｄ）に示し後に説明する。尚、図５（ａ）〜（ｄ）に示す具体例は、図３に示す具体例（その１）に応じたものである。
【００２７】
試験パターン生成部１５によって生成された試験パターンは、出力部１６から例えばファイルとして出力される。
上述した試験パターン生成システム１０の処理について、以下、具体例を用いて更に詳細に説明する。
【００２８】
図３に、図形式プログラム１の具体例（その１）を示す。
図示の例は速度検出プログラムであり、入力としてモータの回転数や角速度などの数値データが入力され、この入力値を検出下限値（例では３０）と比較すると共に検出上限値(例では６０)とも比較し、これら２つの比較結果の論理積に応じて１（True）もしくは０（False）を出力する。
【００２９】
入力値が、検出下限値未満の場合や検出上限値を越える場合には、‘０’（False）を出力する。入力値が、検出下限値以上で且つ検出上限値以下の場合（３０≦入力値≦６０）、すなわち検出下限値と検出上限値との間に入っている場合には、‘１’（True）を出力する。
【００３０】
図３に示す図形式プログラム１は、基本的に、複数の図形（矩形や黒丸）と、各図形間を接続する接続線（矢印→）とから構成されている。尚、黒丸は分岐を意味するものとする。
【００３１】
各図形には、図示のように、通し番号、機能コード、名前、設定値等の各種付随データが付与されている。尚、各図形における図部分（矩形など）やその機能等は、予め作成済みであり、プログラマは、例えば所望の図形の選択と配置、及び名前や設定値等の入力を行うと共に、所望の図形間を接続線で接続すること等によって、図形式プログラム１を作成する。
【００３２】
尚、上記通し番号とは、例えば新たな図形を配置する毎にその図形に自動的に割り当てられるシリアル番号等であり、当該図形式プログラム１上で各図形を識別するユニークなＩＤと見做せるものである。
【００３３】
また、上記機能コードによって、図形の種別などを判別できる。例えば、図示の例では「比較器Ａ」図形の機能コードが“ｃ”となっているが、この“ｃ”は種別が比較器であることを示すものである。よって、図示していないが、「比較器Ｂ」図形の機能コードも“ｃ”となっていることになる。更に、本例の場合、上記条件分岐箇所の図形を示す情報として、少なくとも機能コード“ｃ”が登録されているものとする。
【００３４】
尚、付随データを図示していない図形／接続線もあるが、これは単に図示を省略しているだけであり、実際には基本的には全ての図形／接続線に対して付随データが存在している。
【００３５】
尚、本説明では、図３、図６等に示す各図形は、基本的に、その名前（矩形の枠内に表記)で呼ぶものとする。よって、例えば図３の図上左側に示す、名前が“入力”である図形は「入力」図形と呼ぶことになる。
【００３６】
尚、後述する「入力種別」図形とは、その付随データの“種類”が“入力”である図形であり、上記「入力」図形とは区別される。「入力」図形は、「入力種別」図形に該当するが、「入力種別」図形に該当する図形は「入力」図形だけとは限らない。例えば図６に示す例では、「前回値参照」図形も「入力種別」図形に該当する。
【００３７】
また、同様に、「出力種別」図形とは、その付随データの“種類”が“出力”である図形であり、「出力」図形とは区別される。「出力」図形は、「出力種別」図形に該当するが、「出力種別」図形に該当する図形は「出力」図形だけとは限らない。
【００３８】
図示の例の場合、「入力」図形から「分岐」図形（黒丸）を介して「比較器Ａ」図形と「比較器Ｂ」図形に対する接続がある。「比較器Ａ」図形に対しては更に「定数（６０）」図形が接続されている。「比較器Ｂ」図形に対しては更に「定数（３０）」図形が接続されている。また、「比較器Ａ」図形と「比較器Ｂ」図形は、何れも、「論理積」図形を接続先として接続している。更に、「論理積」図形は「出力」図形を接続先として接続している。
【００３９】
尚、図示では、各接続線の付随データは、「比較器Ａ」−「定数（６０）」間の接続線についてのみ示すが、上記の通り図示を省略しているだけであり他の接続線についてもこれと略同様の付随データが存在している。接続線の付随データは、基本的に、“接続元”の図形の通し番号と“接続先”の図形の通し番号とから成る。「比較器Ａ」−「定数（６０）」間の接続線の場合、その付随データは図示の通り、“接続元”の通し番号‘１０’と“接続先”の通し番号‘１２’となっている。
【００４０】
尚、これより、任意の図形の入力側に接続された図形（以下、入力側図形と記す）を探索する場合には、当該任意の図形を接続先とする接続線を探索すれば、この接続線の付随データにおける上記“接続元”の通し番号が、上記入力側図形を示すものである。同様に、任意の図形の出力側に接続された図形（以下、出力側図形と記す）を探索する場合には、当該任意の図形を接続元とする接続線を探索すれば、この接続線の付随データにおける上記“接続先”の通し番号が、上記出力側図形を示すものである。
【００４１】
図４に、図３の図形式プログラム１の具体例（その１）に応じた入力信号と出力信号の関係を示す。
例えば、仮に０〜１００までの値が入力と成り得る場合、入力信号の試験パターンは０，１，２，３、・・・９８，９９，１００とすることが、考えられる。しかしながら、従来の課題で述べたように、試験パターンは出来るだけ少なくすることが望まれる。ここで、図３の回路の場合、試験パターンは、「比較器Ａ」、「比較器Ｂ」によってそれぞれ所定の閾値と比較される。このため、所定の閾値およびその前後の数値と比較して、出力が問題ないことが確認出来れば、試験パターンとしてはそれで充分であると考えられる。
【００４２】
上述したことから、本手法では、境界条件解析部１４によって、上述した条件分岐箇所の図形（比較器など）やその接続線等が解析され、適切な条件が生成される。尚、上述した条件分岐箇所の図形の機能コードが、予め開発者等によって登録されている。ここでは例えば機能コード＝ｃ等が、条件分岐箇所として登録されているものとする。
【００４３】
これより、例えば図３の例の場合、後述する各経路毎に上述した条件分岐箇所の図形として「比較器Ａ」、「比較器Ｂ」が検出されることになる。そして、この例の場合、これらについて下記の解析処理を行うことで、例えば図５（ｃ）に示すような各経路毎の適切な（数を少なくした）境界条件が生成でき、以ってこの境界条件によって例えば図５（ｄ）に示すような適切な（数を少なくした）試験パターンが生成できる。
【００４４】
まず、「比較器Ａ」については、上述した処理によって「比較器Ａ」の入力側図形が「定数（６０）」であると判別できるので、この入力側図形の付随データに含まれる設定値を取得する。図３に示す例では「定数（６０）」の設定値（閾値）は‘６０’であるので、‘６０’を取得する。同様に、「比較器Ｂ」については、上述した処理によって「比較器Ｂ」の入力側図形が「定数（３０）」であると判別できるので、この入力側図形の設定値（閾値）＝‘３０’を取得する。
【００４５】
そして、後述する各経路毎に、上記取得した設定値‘６０’、‘３０’それぞれに基づいて（例えば、当該設定値自身及びその前後の値に基づいて）、境界条件を決定することになる。例えば、「比較器Ｂ」がある経路に関しては、３０とその前後の２９、３１とに基づいて、境界条件を決定する。例えば、「比較器Ｂ」への入力値が２９，３０，３１となるようにする当該経路への入力値が、境界条件となる。図３の例の場合、経路への入力値がそのまま「比較器Ｂ」への入力値となるので、境界条件は２９，３０，３１となる。同様の理由により、「比較器Ａ」がある経路に関しては、６０とその前後の５９、６１が、境界条件となる。
【００４６】
そして、試験パターン生成部１５によって、上記境界条件に応じて、図５（ｄ）に示すような適切な試験パターン、すなわち入力信号として「２９，３０，３１，５９，６０，６１」が、生成されることになる。
【００４７】
尚、図５（ｃ）、（ｄ）に示す“入力箇所”には、各経路毎に、その経路の「入力種別」図形の“名前”や通し番号等が格納される。
尚、本例の場合、「比較器Ａ」は入力が３０以上でTrue（１）を出力し、「比較器Ｂ」は入力が６０以下でTrueを出力するため、両方ともFalse（０）の場合は存在せず、境界条件解析部１４によって抽出された境界条件のみで（それによる図５（ｄ）に示す入力値のみで）、取り得るすべてのパターンを網羅することができる。
【００４８】
上記試験パターン生成システム１０の処理動作を、図３に示す例に応じて説明するならば、まず、入力部１１に図３の例の図形式プログラム１が入力されると、入出力リスト生成部１２が図形式プログラム１内の各図形の付随データ（機能コードや名前や不図示の“種類”等）を参照すること等で、入力と出力に該当する図形を抽出し、これらをリスト化した入出力リスト(図５（ａ）)を生成する。
【００４９】
図５（ａ）に示すように、この例の場合の入出力リストは、図３に示すプログラムにおいて上記「入力種別」図形と上記「出力種別」図形（これらの定義は説明済み）が判別され、これらの入力種別／出力種別の図形に関する付随データ（例えば通し番号や名前や不図示の“種類”や不図示の“操作可／不可情報”など）が抽出されて、図５（ａ）に示すように入出力リストに格納される。
【００５０】
尚、図３には示していないが、ここでは図示の“操作”が可であるか不可であるかの情報（上記操作可／不可情報）も、付随データには含まれているものとする。また、図示のリストの“種類”の欄には、上記機能コードに基づく入力／出力の判別結果が格納されるものであっても構わない（この場合、勿論、機能コードと種類との対応関係が登録されたテーブル等が別途記憶されている。尚、この例は付随データに不図示の“種類”が含まれていない例と言える）。ここでは、機能コードａが入力種別、機能コードｏが出力種別を意味するものとする。
【００５１】
次に、経路解析部１３によって、「入力種別」図形を起点にして、各図形に接続されている接続線の接続元と接続先を確認することで、順次、次の（接続先の）図形を探索する事により、経路リスト(図５（ｂ）等)が生成される。例えば、最初は、その接続元が‘１３’（「入力種別」図形）となっている接続線を探索することで、この接続線の接続先は‘１’（「分岐」図形）となっているはずである。これより、今度は、この「分岐」図形を接続元とする接続線を探索して、その接続先となる図形を探索することになる。これを、接続先となる図形が上記「出力種別」図形となるまで繰り返す。
【００５２】
尚、「分岐」図形が存在する場合には、基本的に、この「分岐」図形を接続元とする接続線は複数（ここでは２つとする）存在するようになっている。この場合、分岐の一方（一方の接続線）を任意に選択して経路を生成した後、分岐の他方（他方の接続線）を選択した他の経路も生成する。これによって、入力と出力がそれぞれ１つだけである場合でも、図５（ｂ）に示すように複数の経路が生成される場合がある。
【００５３】
図３の例の場合、経路リストは、図５（ｂ）に示す例のように、経路１と経路２の２つの経路の情報からなるものとなる。すなわち、各経路毎に、その経路上の全ての図形の識別情報（通し番号や名前等）が、「入力種別」図形から順番に格納されており、最後は「入力種別」図形の情報となっている。
【００５４】
図５（ｂ）に示す経路１と経路２は、入力と出力が共通（同じ）であり、途中で「分岐」図形によって経路が分岐することで経路１と経路２とに分かれるのである。経路１と経路２の両方とも、「比較器」図形が存在している。
【００５５】
また、「入力種別」図形／「出力種別」図形が複数ある場合には、「入力種別」図形−「出力種別」図形の組み合わせ毎に、経路を生成することになる（例えば後述する具体例（その２）のようになる。詳しくは後述する）。
【００５６】
そして、境界条件解析部１４は、生成された経路リストに基づいて、まず、各経路毎に、機能コード等を元に条件分岐箇所（比較器等）を探索する。尚、図３等の例では条件分岐箇所に該当するのは「比較器」図形（本例では機能コード＝ｃである図形）だけであるので、以下の説明では比較器を用いて説明するものとする。
【００５７】
境界条件解析部１４は、各経路毎に、その経路上に比較器（本例では機能コード＝ｃである図形）がある場合には、この「比較器」図形に入力される閾値としての定数(定数＝６０、定数＝３０)を取得する。これは、例えば、「比較器」図形を接続先とする接続線（比較器の場合、入力側の接続線は、通常、２つ存在する）を探索して、これら各接続線の接続元（通し番号）を取得する。図３の「比較器Ａ」を例にすると、入力側の２つの接続線のうち、一方の接続元は通し番号＝‘１０’、他方の接続元は通し番号＝‘１’となっているはずである。
【００５８】
そして、取得した各通し番号に基づいて、上記接続元の図形の種別を判別する。これは、例えば機能コードによって判別する。尚、例えば、予め各機能コードと種別とを対応付けたデータが登録されており、これを参照することで判別する。そして、判別した種別が“定数”である図形（「定数」図形）の付随データに含まれる設定値を、上記定数として取得する。尚、基本的には、「比較器」図形の入力側に接続される２つの図形の何れか一方は、「定数」図形となっているはずである。
【００５９】
そして、境界条件解析部１４は、「比較器」図形がある経路に関しては、上記取得した定数（閾値）と経路リスト等に基づいて、境界条件を決定する。例えば閾値自身とその前後の値等（本例では、６０と５９，６１や、３０と２９，３１）と、その経路上の他の図形等に基づいて、境界条件を決定する。これは、各経路毎に、その「入力種別」図形に対する外部からの入力値を決定するものである。例えば、「比較器」図形への入力値が上記閾値自身とその前後の値等となるように、上記外部からの入力値を決定する。
【００６０】
例えば、経路リストを参照して、その経路上において「入力種別」図形と「比較器」図形との間にある図形を全て抽出する。そして、抽出した図形のなかに演算に係る図形（加算器、減算器、乗算器等）があるか否かを判定する。
【００６１】
図５（ｂ）の例の場合、「分岐」図形があるだけであるので、演算に係る図形は無しと判定されることになる。もし、この例のように演算に係る図形は無いと判定される場合には、上記閾値自身とその前後の値を、そのまま、上記外部からの入力値に決定する。
【００６２】
具体例（その１）の場合、経路１については上記５９、６０、６１がそのまま境界条件となり、経路２については上記２９、３０，３１がそのまま境界条件となる。これより、図３の例の場合の境界条件は、図５（ｃ）に示すようになる。尚、図５（ｃ）における“入力箇所”には、その経路の「入力種別」図形の名前等が格納される。
【００６３】
一方、抽出した図形のなかに演算に係る図形がある場合には、この図形に対する設定値（加算器であれば加算値となる）を取得して、この設定値と上記閾値自身とその前後の値に基づいて、境界条件を決定する。仮に、経路１に関して加算値＝５の加算器があったとした場合、上記閾値自身とその前後の値からそれぞれ５を減算した値（つまり、５４，５５，５６）が、経路１の境界条件となる。
【００６４】
一方、境界条件解析部１４は、「比較器」図形が無い経路に関しては、既に簡単に説明したように、当該経路への入力値（「入力種別」図形への入力値）と成り得る全ての値に基づいて、当該経路に関する境界条件を求める。これについては、図３の例では「比較器」図形が無い経路が存在しないため、後に図６の例の説明の際に詳細に説明するものとする。
【００６５】
最後に、上記境界条件解析部１４によって作成された境界条件(例えば図５（ｃ）)に基づき、試験パターン生成部１５が、試験パターン(例えば図５（ｄ）)を生成する。
上記境界条件解析部１４は、作成された境界条件が１種類（換言すれば、経路が１つのみ）の場合には、この境界条件をそのまま試験パターンとする。また、作成された境界条件が複数種類の場合（換言すれば、経路が複数ある）場合には、この複数の境界条件を組み合わせて試験パターンを生成する。
【００６６】
これは、例えば具体例（その１）の図５（ｃ）のように複数の境界条件の“入力箇所”の図形が”操作可能”且つ同一である場合には、当該複数の境界条件をまとめて１つにすることで試験パターンを生成する。図５（ｃ）の“入力箇所”の図形は経路１、経路２とも「入力」図形であり、これは入出力リストを参照することで“操作可能”と判定される。これより、図５（ｃ）の複数の境界条件が１つにまとめられて図５（ｄ）に示す試験パターンが生成される。
【００６７】
一方、後述する具体例（その２）の場合には、複数の境界条件の“入力箇所”が同一ではない（若しくは操作可能ではない）。この場合の処理については、後に具体例（その２）の説明の際に説明する。
【００６８】
ここで、試験パターン生成部１５が生成する試験パターンは、例えば、図形式プログラム１がマイコンやＦＰＧＡなどの集積回路に搭載された状態において外部から入力される値や信号等に関するものであり、これらは基本的には上記「入力種別」図形（且つ操作可能であるもの）に入力されるものである。これより、試験パターンは、基本的には、図５（ｄ）に示すような“入力箇所”＝「入力」図形に対する“入力データ”という形になる。但し、本例の処理では、境界条件における“入力箇所”には基本的に「入力種別」図形を示す情報が入力される。この為、境界条件における“入力箇所”に「入力種別」図形であるが操作可能ではない図形が格納される可能性がある。上記のことから、このような境界条件を、そのまま他の境界条件と組み合わせて試験パターンを生成することは困難である。この様なケースの試験パターン生成処理については、後に図６の例の説明の際に詳細に説明する。
【００６９】
次に、他のプログラム例を用いて説明する。
図６に、図形式プログラムの具体例（その２）を示す。
図７に、図６のプログラムに係わる入力信号と出力信号の関係を示す。
【００７０】
図６に示すプログラムは、ソフトウェアタイマであり、入力として、タイマのリセット信号が入力され得るものであり、また、０から９９まで1ずつカウントアップし、出力としてタイマの現在値が出力される。上記カウント値が１００になった場合、あるいは途中で上記タイマのリセット信号が入力された場合は、カウント値は‘０’リセットされる（一例を図７に示す）。
【００７１】
尚、図３においても一部省略していたが、図６においては全図形、全接続線について、その付随データの図示は省略しているが、当然、全てに付随データを存在している。
本例の場合も、上記具体例（その１）の場合と略同様に、入力される図形式プログラム１から、まず「入力種別」図形と「出力種別」図形を判別し、更に入力―出力間（「入力種別」図形−「出力種別」図形間）の各経路（経路上の図形）を抽出する。そして、各経路毎に条件分岐箇所（本説明でも比較器を例にする）を探索する。比較器がある経路に関しては、この比較器に対する設定値（閾値）等に基づいて（閾値自体とその前後の値等に基づいて）境界条件を求める。一方、比較器が無い経路に関しては、この経路の「入力種別」図形に対する入力値と成り得る値全て（入力候補値と呼ぶものとする；予め別途登録されているものとする）に基づいて、境界条件を生成する。
【００７２】
図６の例の場合も、処理手順は上記図２で説明した通りである。
図６のプログラムの試験パターン生成を図２の処理で行う場合、まず、入力部１１に図６の例の図形式プログラム１が入力され（ステップＳ１）、入出力リスト生成部１２により入出力リスト(図８（ａ）)が生成される（ステップＳ２）。
【００７３】
ここで、図６には示していないが、上記「入力種別」図形に該当するのは「入力」図形と「前回値参照」図形であり、「出力種別」図形は「出力」図形であるものとする。これより、入出力リストは、図８（ａ）に示すように、これら３つの図形に係わる付随データ（通し番号、名前、種類、操作等）などが格納されることになる。また、図８（ａ）に示すように、本例では「入力」図形のみが操作可となっている。
【００７４】
次に、経路解析部１３によって、経路リスト(図８（ｂ）)が生成される（ステップＳ３）。これも、基本的には図３の例の場合と同様であり、上記入出力リストに基づき、各入力と出力との組み合わせ毎に（更に分岐などに応じて）各経路を探索しリスト化することで、経路リストが生成される。
【００７５】
これより、本例では図８（ｂ）に示すように、経路１、経路２、経路３の３つの経路が生成される。経路１は、「入力」図形−「出力」図形間の経路である。経路２、経路３は、ともに、「前回値参照」図形−「出力」図形間の経路である。「前回値参照」図形−「出力」図形間には、「分岐」図形があって途中で２つに分岐しているので、経路２と経路３の２つの経路が形成されている。
【００７６】
尚、本例の場合、２番目の分岐の他方の分岐先である「前回値保持」図形は、上記出力属性の図形ではなく且つＥＮＤの図形であるので、この様な図形は無視するものとするが、この例に限らない。尚、ここでは、自己を接続元とする接続線が存在しない図形を、上記ＥＮＤの図形とするものとする。尚、図８（ｂ）に示す経路リストの各経路の生成方法については、既に述べた通りであり、ここでは特に説明しない。
【００７７】
尚、図８（ｂ）では省略しているが、図５（ｂ）と同様に更に通し番号があってもよい。
次に、上記経路リストに基づき、この経路リスト上の各経路毎に、境界条件解析部１４が境界条件を生成する（ステップＳ４）。
【００７８】
これは、既に具体例（その１）で説明したように、条件分岐箇所（比較器など）が存在する経路に関しては、比較器への設定値等に基づいて境界条件を生成する。一方、比較器などが存在しない経路に関しては、上記入力候補値等に基づいて境界条件を生成する。
【００７９】
図６の例では、経路２だけに「比較器」図形が存在する。この比較器に対する設定値は‘１００’であるので、上記具体例（その１）の場合と略同様に、この閾値自体とその前後の値（１００と、９９，１０１）や演算器（加算器など）に基づいて、境界条件を生成する。
【００８０】
本例の場合、「入力種別」図形−「比較器」図形間に「加算器」図形が存在し、「加算器」図形に対する設定値が‘１’であるので、具体例（その１）で説明した処理によれば、上記９９，１００，１０１からそれぞれ１を減算することで、境界条件は９８，９９，１００となることになる。但し、予め不図示の他の条件（例えば「比較器」図形の入力は１００以下等という条件）が登録されていた場合、この条件も用いて境界条件を決定するようにしてもよい。これより、本説明では、経路２に関する境界条件は、図８（ｃ）に示すように入力値は９８と９９のみとなるものとする。
【００８１】
尚、経路２、経路３の「入力種別」図形（例えば図８（ｂ）における先頭レコードの図形等）は“前回値参照”であるので、図８（ｃ）に示すように境界条件の“入力箇所”は“前回値参照”となる。
【００８２】
また、上記具体例（その１）では存在しなかったが、本例の場合、上記比較器などが存在しない経路がある。すなわち、図８（ｂ）に示すように、経路１と経路３には、どちらにも比較器などは存在しない。この様な比較器などが存在しない経路に関する境界条件は、上記のように上記“入力候補値”に基づいて生成される。
【００８３】
すなわち、図８（ｂ）に示すように、経路１の「入力種別」図形は「入力」図形である。そして、特に図示しないが、本例では、予め「入力」図形（例えば機能コード＝ａの図形）に関する上記“入力候補値”として‘１’と‘０’のみが登録されているものとする。
【００８４】
境界条件解析部１４は、この登録情報を参照することで、例えば図８（ｃ）に示すように、経路１に関する境界条件は、入力データが‘０’と‘１’となっている（“入力箇所”は上記「入力」図形を示す“入力”となっている）。
【００８５】
また、経路３に関しても、図８（ｂ）に示すように、経路３の「入力種別」図形は「前回値参照」図形である。そして、特に図示しないが、本例では、予め「前回値参照」図形に関する上記“入力候補値”として０〜９９（０,１,２,３,４，５・・・９６，９７，９８，９９）が登録されているものとする。
【００８６】
境界条件解析部１４は、この登録情報を参照することで、例えば図８（ｃ）に示すように、経路３に関する境界条件は、入力データが０,１,２,３,４，５・・・９６，９７，９８，９９となっている（“入力箇所”は上記「前回値参照」図形を示す“前回値参照”となっている）。
【００８７】
尚、上記経路１や経路３のような条件分岐箇所（比較器など）が存在しない経路は、「入力が直接出力に影響する経路」と言うこともできると考えてもよい。従って、この様な経路の判別方法は、上述した比較器の有無に基づく方法に限らず、他の方法であっても構わない。
【００８８】
また、上記条件分岐箇所（比較器など）が存在しない経路を、所定の条件に該当する経路と言うこともできるものとする。
最後に、試験パターン生成部１５は、上記各経路毎の境界条件に基づいて、試験パターンを生成する（ステップＳ５）。
【００８９】
この処理は、まず最初に、上記具体例（その１）で説明したように、複数の境界条件を１つにまとめる（統合する）ことを試みる。これは、上記各経路毎の境界条件が所定の条件を満たすか否かを判定し、満たす場合には、これら複数の境界条件を１つにまとめる（統合する）ことで試験パターンを生成する。所定の条件とは、複数の境界条件の“入力箇所”が同じである（且つ“操作可能”である）ことである。よって、図８（ｃ）に示すように経路２の境界条件と経路３の境界条件とが統合の候補となる。しかし、上記具体例（その）１では説明しなかったが、これは経路２と経路３の両方が上記条件分岐箇所（比較器など）が存在する経路であることも（あるいは上記のように“操作可能”であることも）条件となる。図８（ｂ）に示す経路リストを参照すれば、所定の条件は満たされないと判定されるので、本例の場合は統合不可と判定される。
【００９０】
統合不可と判定された場合、今度は、複数の経路が同一の特定の演算子（ここでは論理和または論理積の図形）を有しているか否かを判定する。これは、例えば、図８（ｂ）に示す経路リストを参照して、論理和や論理積を探索する。この例では、経路１と経路２に論理和が存在している。この場合、経路１の境界条件と経路２の境界条件とに基づいて所定の組み合わせ論理（例えば総当りの組み合わせ等）によって試験パターン（候補）を生成する。総当りの組み合わせの場合、図８（ｃ）に示す経路１，２の境界条件に基づいて図９（ａ）に示す試験パターン（候補）Ａが生成されることになる。
【００９１】
次に、生成した試験パターン（候補）Ａをそのまま試験パターンと出来るか否かを判定する。これは、試験パターン（候補）Ａの項目全てが試験で操作可能か否かによって判定する。図９（ａ）に示す試験パターン（候補）Ａの場合、その項目は“入力”と“前回値参照”であり、両方とも“操作可能”か否かを判定する。これは、例えば図８（ａ）に示す入出力リストの“操作”の欄を参照することで、あるいは「入力」図形、「前回値参照」図形それぞれの付随データを参照することで、操作可能か否かを判定する。
【００９２】
図８（ａ）に示す例では、“入力”については操作可であるが、“前回値参照”については操作不可であるので、上記判定はＮＯとなる。尚、上記判定がＹＥＳの場合には、生成した試験パターン（候補）Ａをそのまま試験パターンとする。
【００９３】
上記判定がＮＯの場合、生成した試験パターン（候補）における上記操作不可である項目（本例では前回値参照）に基づいて、試験パターン（候補）を、「前回値参照」図形への入力値の採り得る範囲全域（上記入力候補値；本例では上記のように０〜９９）に拡張することで、例えば図９（ｂ）に示すような試験パターンを生成する。すなわち、上記“入力”と“前回値参照”のうち“前回値参照”については操作不可であり試験パターンには成り得ないので、“入力”のみによる試験パターンとする。
【００９４】
これは、例えば、まず、図９（ａ）に示す試験パターン（候補）ＡにおけるＮｏ．１〜Ｎｏ．４の各レコードに対応させて、上記「前回値参照」の入力候補値（０〜９９）を羅列することで、例えば図９（ｃ）のテーブル（Ｎｏ．１〜Ｎｏ．４００の４００個のレコードから成る）を生成する。尚、このとき、“入力データ”の値は全レコード一律で‘０’とする（ここでは予め設定されている初期値が‘０’であるものとする）。尚、特に図示・説明しないが、入力候補値を登録する際に、ノーマリーオン（通常入力するデータが‘１’）なのかノーマリーオフ（通常入力するデータが‘０’）なのかを、任意に設定できるものであってもよい。切替器の性質として、通常は入力が‘０’であるが‘１’が入力されたときだけ信号を切り替えるものであることから、上記のように初期値‘０’が設定されているものする。
【００９５】
そして、図９（ｃ）の状態のテーブルに対して、図９（ａ）に示す試験パターン（候補）ＡのＮｏ．１〜Ｎｏ．４の各レコードの内容を反映させる。
つまり、まず、図９（ｃ）のテーブルにおいて試験パターン（候補）ＡのＮｏ．１に対応するレコード群（Ｎｏ．１〜Ｎｏ．１００のレコード群）に対して、試験パターン（候補）ＡのＮｏ．１の内容、すなわち「“前回値参照”が９８のときに“入力データ”が‘０’」を反映させる。これより、図９（ｃ）のテーブルのＮｏ．９９のレコードの“入力データ”が‘０’となるが、上記の通り最初に一律‘０’が設定されているので、変化しないことになる。
【００９６】
図９（ｃ）のテーブルにおいて試験パターン（候補）ＡのＮｏ．２に対応するレコード群（Ｎｏ．１０１〜Ｎｏ．２００のレコード群）についても、上記Ｎｏ．１と略同様の処理を行うことで、「“前回値参照”が９９のときに“入力データ”が‘０’」を反映させることで、Ｎｏ．２００のレコードの“入力データ”が‘０’となる。
【００９７】
図９（ｃ）のテーブルにおいて試験パターン（候補）ＡのＮｏ．３に対応するレコード群（Ｎｏ．２０１〜Ｎｏ．３００のレコード群）に対して、試験パターン（候補）ＡのＮｏ．３の内容、すなわち「“前回値参照”が９９のときに“入力”が‘１’」を反映させる。これより、図９（ｃ）のテーブルのＮｏ．３００のレコードの“入力”が‘１’となる。
【００９８】
図９（ｃ）のテーブルにおいて試験パターン（候補）ＡのＮｏ．４に対応するレコード群（Ｎｏ．３０１〜Ｎｏ．４００のレコード群）に対して、試験パターン（候補）ＡのＮｏ．４の内容、すなわち「“前回値参照”が９８のときに“入力”が‘１’」を反映させる。これより、図９（ｃ）のテーブルのＮｏ．３９９のレコードの“入力”が‘１’となる。
【００９９】
以上の処理によって、図９（ｃ）のテーブルから図９（ｄ）のテーブルが生成される。図示のように、Ｎｏ．３００とＮｏ．３９９のレコードのみ“入力”が‘１’となっている。
【０１００】
ここで、図９（ｃ）、（ｄ）のテーブルは、１００個単位で１つの試験パターンを成す。これより、同一の試験パターンがあるか否かを判定して、ある場合にはどちらか一方を消去するようにしてもよい。図９（ｄ）の例の場合、Ｎｏ．１〜Ｎｏ．１００のレコード群とＮｏ．１０１〜Ｎｏ．２００のレコード群とが同一となっているので、一方を消去する。また、これに伴ってＮｏ．を繰り上げることで、図９（ｅ）に示すテーブルが生成される。上記のように“前回値参照”は試験に用いることは出来ないので、これを図９（ｅ）に示すテーブルから削除することで、上記図９（ｂ）に示す試験パターンが生成される。
【０１０１】
尚、上記経路３に関しては、他の経路との関連が無い（上記同一の特定の演算子が無い）ので、他の経路との組み合わせは行われず、よって経路３による試験パターンの生成は行われない。但し、図９（ｅ）に示すように、図８（ｃ）に示す経路３の境界条件は全て試験パターンに含まれていると見做せるので、特に問題はないことになる。
【０１０２】
また、図９（ｂ）に示す試験パターンは、１００個のレコード群単位で１つの試験パターンを成すものと見做すこともでき、この場合、３種類の試験パターンが生成されたものと見做せる。仮に、１００個のレコード群のうちの何れか１つが‘１’になるケース全てを試験しようとするならば、１００種類の試験パターンを生成する必要がある。これに対して、本手法では上記の通り３種類の試験パターンで済むことになる。
【０１０３】
尚、上述した試験パターンによれば、下記の（１）〜（４）について動作チェックできるものと見做してもよい。下記の（１）〜（３）は、出力（タイマ値）がリセットされる動作について試験するものとなる。また、下記の（４）は、リセット動作時以外の動作について試験するものである。図８（ｃ）に示すものを試験パターンと出来れば、試験パターン数を大幅に減少させることができるが、本例では上述した理由により出来ないことになる。
（１）タイマ値が比較器によってリセットされる場合(タイマが100に達した場合)；
（２）外部からの「入力」‘１’によってタイマ値がリセットされる場合；
（３）比較器と「入力」‘１’の両方が同時発生してタイマ値がリセットされる場合；
（４）リセットされない状態(タイマを加算している状態)；
尚、“前回値参照”が‘９９’のときの比較器への入力は‘１００’となるので、図９（ｂ）のＮｏ．１０１〜Ｎｏ．２００の試験パターンの場合、比較器と「入力」‘１’の両方が同時発生することになる。
【符号の説明】
【０１０４】
１０  試験パターン生成システム
１１  入力部
１２  入出力リスト生成部
１３  経路解析部
１４  境界条件解析部
１５  試験パターン生成部
１６  出力部
【図１】
2014119837.tif 000003
【図２】
2014119837.tif 000004
【図３】
2014119837.tif 000005
【図５】
2014119837.tif 000006
【図６】
2014119837.tif 000007
【図８】
2014119837.tif 000008
【図９】
2014119837.tif 000009
【図４】
2014119837.tif 000010
【図７】
2014119837.tif 000011