(57)【要約】【課題】過去の検査パターンを利用してより効率的に新たな検査パターンを生成することが可能な検査パターン生成装置を提供すること。【解決手段】複数のブロックのうちの境界値を含む対象ブロックに該境界値を中心とする１ＬＳＢの範囲の値の何れかを入力する検査パターンを、過去に作成された複数の検査パターンの中から抽出する抽出部と、入力データに含まれる複数の入力値のうち、変化させたときに対象ブロックに入力される値が変化する入力値であって、変化させたときに対象ブロックに入力される値の変化が最も小さくなる入力値を、抽出部により抽出された検査パターンを基準として変化させることにより、境界値を中心とする１ＬＳＢの範囲の値のうち、抽出部により抽出された検査パターンで対象ブロックに入力される値以外の値を対象ブロックに入力する追加の検査パターンを生成する生成部と、を含む。【選択図】図２
2017129936.tif 000002
【特許請求の範囲】
【請求項１】
入力データに応じて実行される処理動作が複数のブロック間における入出力の仕様として記述されるモデルに基づき生成される、ソフトウェアの妥当性を検証するための検査パターンを生成する検査パターン生成装置であって、
前記複数のブロックのうちの境界値を含む対象ブロックに該境界値を中心とする１ＬＳＢの範囲の値の何れかを入力する検査パターンを、過去に作成された複数の検査パターンの中から抽出する抽出部と、
前記入力データに含まれる複数の入力値のうち、変化させたときに前記対象ブロックに入力される値が変化する入力値であって、変化させたときに前記対象ブロックに入力される値の変化が最も小さくなる入力値を、前記抽出部により抽出された検査パターンを基準として変化させることにより、前記境界値を中心とする１ＬＳＢの範囲の値のうち、前記抽出部により抽出された検査パターンで前記対象ブロックに入力される値以外の値を前記対象ブロックに入力する追加の検査パターンを生成する生成部と、を含む、
検査パターン生成装置。
【請求項２】
入力データに応じて実行される処理動作が複数のブロック間における入出力の仕様として記述されるモデルに基づき生成される、ソフトウェアの妥当性を検証するための検査パターンを生成する検査パターン生成装置であって、
過去に作成された複数の検査パターンの中から検査パターンを抽出する抽出部であって、前記複数のブロックの中の対象ブロックにおける複数の制御パスのうち、前記複数の検査パターンにおける通過率が所定基準以下である第１パスを通過し、且つ、前記第１パスと前記複数の制御パスのうちの前記第１パス以外の第２パスとの間で異なる内容を前記対象ブロックに入力する、境界値を含む上流ブロックに対して該境界値に最も近い値を入力する検査パターンを抽出する抽出部と、
前記入力データに含まれる複数の入力値のうち、変化させたときに前記上流ブロックに入力される値が変化する入力値であって、変化させたときに前記上流ブロックに入力される値の変化が最も小さくなる入力値を、前記抽出部により抽出された検査パターンを基準として変化させることにより、前記第２パスを通過する追加の検査パターンを生成する生成部と、を含む、
検査パターン生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの単体検査（ソフトウェアテスト）における検査パターンを生成する検査パターン生成装置に関する。
【背景技術】
【０００２】
従来、過去に作成した検査パターン（テスト仕様）を利用して、ソフトウェア（プログラム）の検査パターンを生成する技術が知られている。（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−２２６６５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
過去に作成した検査パターンを再利用する場合、流用可能な検査パターンを抽出すると共に、抽出した検査パターンから不足する検査パターンを追加で生成する必要がある。
【０００５】
しかしながら、通常、抽出した検査パターンから一般的な探索アルゴリズム（例えば、遺伝的アルゴリズム等）を利用して不足する検査パターンを生成する場合が多い。そのため、探索アルゴリズムのランダム性等に起因して、検査観点（境界値検査の実行性、制御パスの網羅性等）を満足する追加の検査パターンの探索に時間がかかったり、場合に依っては、検査観点を満足する追加の検査パターンを生成できなかったりする可能性がある。
【０００６】
そこで、上記課題に鑑み、過去の検査パターンを利用してより効率的に新たな検査パターンを生成することが可能な検査パターン生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の一実施態様において、
入力データに応じて実行される処理動作が複数のブロック間における入出力の仕様として記述されるモデルに基づき生成される、ソフトウェアの妥当性を検証するための検査パターンを生成する検査パターン生成装置であって、
前記複数のブロックのうちの境界値を含む対象ブロックに該境界値を中心とする１ＬＳＢの範囲の値の何れかを入力する検査パターンを、過去に作成された複数の検査パターンの中から抽出する抽出部と、
前記入力データに含まれる複数の入力値のうち、変化させたときに前記対象ブロックに入力される値が変化する入力値であって、変化させたときに前記対象ブロックに入力される値の変化が最も小さくなる入力値を、前記抽出部により抽出された検査パターンを基準として変化させることにより、前記境界値を中心とする１ＬＳＢの範囲の値のうち、前記抽出部により抽出された検査パターンで前記対象ブロックに入力される値以外の値を前記対象ブロックに入力する追加の検査パターンを生成する生成部と、を含む、
検査パターン生成装置が提供される。
【０００８】
本発明の一実施態様によれば、検査パターン生成装置の抽出部は、複数のブロックのうちの境界値を含む対象ブロックに該境界値を中心とする１ＬＳＢ（least significant bit）の範囲の値の何れかを入力する検査パターンを、過去に作成された複数の検査パターンの中から抽出する。従って、対象ブロックにおける境界値検査に必要とされる境界値を中心とする１ＬＳＢの範囲の３つの値（境界値及び境界値から１ＬＳＢだけ増減させた値）のうちの一部又は全部を対象ブロックに入力する検査パターンを抽出することができる。
【０００９】
また、検査パターン生成装置の生成部は、入力データに含まれる複数の入力値のうち、変化させたときに対象ブロックに入力される値が変化する入力値であって、変化させたときに対象ブロックに入力される値の変化が最も小さくなる入力値を、抽出部により抽出された検査パターンを基準として変化させることにより、境界値を中心とする１ＬＳＢの範囲の値のうち、抽出部により抽出された検査パターンで対象ブロックに入力される値以外の値を対象ブロックに入力する追加の検査パターンを生成する。従って、抽出部により抽出された、境界値を中心とする１ＬＳＢの範囲の値の何れかを対象ブロックに入力する検査パターンを基準とするため、対象ブロックに入力される値を変化させる範囲が狭くなり、境界値検査に必要とされる残りの値を対象ブロックに入力する検査パターンの生成に要する時間を短縮することができる。また、変化させたときに対象ブロックに入力される値の変化が最も小さい入力値を変化させるため、対象ブロックの入力を所望の値に合わせやすくなり、追加の検査パターンの生成に要する時間を更に短縮することができる。
【００１０】
このように、本発明の一実施形態によれば、過去の検査パターンを利用してより効率的に新たな検査パターンを生成することができる。
【００１１】
また、本発明の他の実施態様において、
入力データに応じて実行される処理動作が複数のブロック間における入出力の仕様として記述されるモデルに基づき生成される、ソフトウェアの妥当性を検証するための検査パターンを生成する検査パターン生成装置であって、
過去に作成された複数の検査パターンの中から検査パターンを抽出する抽出部であって、前記複数のブロックの中の対象ブロックにおける複数の制御パスのうち、前記複数の検査パターンにおける通過率が所定基準以下である第１パスを通過し、且つ、前記第１パスと前記複数の制御パスのうちの前記第１パス以外の第２パスとの間で異なる内容を前記対象ブロックに入力する、境界値を含む上流ブロックに対して該境界値に最も近い値を入力する検査パターンを抽出する抽出部と、
前記入力データに含まれる複数の入力値のうち、変化させたときに前記上流ブロックに入力される値が変化する入力値であって、変化させたときに前記上流ブロックに入力される値の変化が最も小さくなる入力値を、前記抽出部により抽出された検査パターンを基準として変化させることにより、前記第２パスを通過する追加の検査パターンを生成する生成部と、を含む、
検査パターン生成装置が提供される。
【００１２】
本発明の他の実施態様によれば、検査パターン生成装置の抽出部は、過去に作成された複数の検査パターンの中から検査パターンを抽出する抽出部であって、複数のブロックの中の対象ブロックにおける複数の制御パスのうち、複数の検査パターンにおける通過率が所定基準以下である第１パスを通過し、且つ、第１パスと複数の制御パスのうちの第１パス以外の第２パスとの間で異なる内容を対象ブロックに入力する、境界値を含む上流ブロックに対して該境界値に最も近い値を入力する検査パターンを抽出する。そして、検査パターン生成装置の生成部は、入力データに含まれる複数の入力値のうち、変化させたときに上流ブロックに入力される値が変化する入力値であって、変化させたときに上流ブロックに入力される値の変化が最も小さくなる入力値を、抽出部により抽出された検査パターンを基準として変化させることにより、第２パスを通過する追加の検査パターンを生成する。従って、対象ブロックにおける複数の制御パスを網羅する検査パターンを生成する際、過去の検査パターンにおける通過率が低い第１パスを通過する検査パターンを抽出するため、生成が比較的難しいと想定される第１パスを通過する検査パターンを追加で生成する必要が無くなる。そのため、検査パターンの生成に要する時間を短縮することができる。また、入力データに含まれる複数の入力値のうち、変化させたときに上流ブロックに入力される値の変化が最も小さい入力値を変化させることにより、上流ブロックの入力を所望の値に合わせやすくなる。そのため、追加の検査パターンの生成に要する時間を短縮することができる。また、過去に作成された複数の検査パターンのうち、抽出部で抽出される、上流ブロックに対して境界値に最も近い値を入力する検査パターンを基準にすることにより、上流ブロックの出力（対象ブロックの入力）を第２パスに対応する内容に変化させる際に、上流ブロックの入力を変化させる範囲が小さくなる。そのため、追加の検査パターンの生成に要する時間を短縮することができる。
【００１３】
このように、本発明の他の実施形態によれば、過去の検査パターンを利用してより効率的に新たな検査パターンを生成することができる。
【発明の効果】
【００１４】
過去の検査パターンを利用してより効率的に新たな検査パターンを生成することが可能な検査パターン生成装置を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】検査パターン生成装置の構成の一例を概略的に示すブロック図である
【図２】検査パターン生成装置（処理部）による検査パターン生成処理の一例を概略的に示すフローチャートである。
【図３】境界値検査を行うソフトウェアの一例に対応するモデルを示す図である。
【図４】過去に作成された検査パターンからベースとなる検査パターンを抽出する処理を説明する図である。
【図５】パス検査を行うソフトウェアの一例に対応するモデルを示す図である。
【図６】検査対象ブロックにおける制御パスの網羅性を担保する入出力内容の組み合わせの一例である。
【図７】過去に作成された検査パターンからベースとなる検査パターンを抽出する処理を説明する図である。
【図８】ベース検査パターンにおいて、入力データに含まれる各入力値を最大値及び最小値に変化させて生成される検査パターンの一例を示す図である。
【図９】入力データに含まれる複数の入力値それぞれの有用度の一例を示す図である。
【発明を実施するための形態】
【００１６】
図１は、本実施形態に係る検査パターン生成装置１の構成の一例を概略的に示すブロック図である。
【００１７】
本実施形態に係る検査パターン生成装置１は、車両等の各種制御装置のモデルベース開発において利用される。具体的には、検査パターン生成装置１は、入力データに応じた各種制御の処理動作が複数の処理要素（データ入力、データ出力、及びデータ演算等を含む。以下、「ブロック」と称する）間における入出力の仕様として記述されるモデルに基づき生成される、ソフトウェア（ソースコードやオブジェクトコード）の妥当性を検証する検査パターンを生成する。また、検査パターン生成装置１は、予め定められる検査観点（例えば、境界値検査の実行性、パス検査における制御パスの網羅性等）を満足するように、検査パターンを生成する。検査パターン生成装置１により生成される検査パターンを用いることで、ソースコードや制御装置に実装されるオブジェクトコードがモデルの記述通り（要求通り）の処理動作をするか否かの単体検査（ソフトウェアテスト）を実行することができる。以下、単体検査の対象であるソフトウェアを「検査対象ソフトウェア」と称する。
【００１８】
尚、境界値検査は、検査対象ソフトウェアの境界値を含む検査対象のブロック（検査対象ブロック）に対して、境界値及び境界値の前後の値（境界値±１ＬＳＢの値）を入力し、モデルの記述通りの出力がなされるか否かを検査する単体検査である。また、パス検査は、検査対象ソフトウェアの検査対象ブロックにおける入出力内容の組み合わせである複数の制御パスがモデルの記述通りに実現されているか否かを検査する単体検査である。
【００１９】
検査パターン生成装置１は、例えば、コンピュータ等により実現され、ＣＰＵ、ＲＡＭ、ＲＯＭ、Ｉ／Ｏ等を含む処理部１０と、過去に作成された検査パターンを記憶する記憶部２０を含む。
【００２０】
尚、記憶部２０は、コンピュータの内部に設けられる記憶手段（内部メモリ等）であってもよいし、コンピュータの外部に設けられる記憶手段（外部サーバ内の記憶装置等）であってもよい。
【００２１】
一般的に、ソフトウェア開発では、差分開発（従来のソフトウェアをベースに変更、追加、削除を行う開発）が行われる。そのため、検査パターン生成装置１では、処理部１０が記憶部２０に格納される過去に作成された検査パターン（過去検査パターン）に基づき新たな検査パターン（追加検査パターン）を生成する。以下、図２を参照しつつ、処理部１０により実行される検査パターン生成処理について説明する。
【００２２】
図２は、検査パターン生成装置１による検査パターン生成処理の一例を概略的に示すフローチャートである。
【００２３】
尚、図２に示すフローチャートは、過去検査パターンに含まれる検査パターンだけでは、検査観点を満足する検査パターンを抽出できない場合に実行される。
【００２４】
ステップＳ１０２にて、処理部１０は、検査対象ソフトウェアにおける検査対象ブロックと検査観点（"境界値検査の実行性"或いは"パス検査における制御パスの網羅性"）を選択する。当該選択は、予め規定されたプログラムに従い、自動的に行われてもよいし、作業者が所定のインターフェースを介して行う操作入力に応じて行われてもよい。
【００２５】
ステップＳ１０４にて、処理部１０は、検査観点が"境界値検査の実行性"であるのか、"パス検査における制御パスの網羅性"であるのかを判定する。処理部１０は、検査観点が"境界値検査の実行性"である場合、ステップＳ１０６に進み、"パス検査における制御パスの網羅性"である場合、ステップＳ１０８に進む。
【００２６】
ステップＳ１０６にて、処理部１０は、記憶部２０に記憶される複数の過去検査パターンの中から境界値検査のベースとなる検査パターン（ベース検査パターン）を抽出する。以下、図３、図４を参照して、境界値検査のベース検査パターンを抽出する処理の詳細について説明する。
【００２７】
図３は、境界値検査を行うソフトウェアの一例に対応するモデル３０を示す図である。図４は、記憶部２０に記憶される複数の過去検査パターンの中からベース検査パターンを抽出する処理を説明する図であり、具体的には、記憶部２０に記憶される複数の過去検査パターンの一例が列挙されている。
【００２８】
図３に示すように、モデル３０は、入力ブロック３１、処理ブロック３２、比較演算ブロック３３、定数ブロック３４、切替ブロック３５、出力ブロック３６を含む。
【００２９】
入力ブロック３１は、モデル３０の外部からの入力データを入力するブロックであり、第１入力ブロック３１１、第２入力ブロック３１２、第３入力ブロック３１３を含む。第１入力ブロック３１１、第２入力ブロック３１２、及び第３入力ブロック３１３は、それぞれ、入力データに含まれる第１入力値ｉｎ１１、第２入力値ｉｎ１２、及び第３入力値ｉｎ１３を処理ブロック３２に出力する。
【００３０】
処理ブロック３２は、第１入力ブロック３１１〜第３入力ブロック３１３から出力される第１入力値ｉｎ１１〜第３入力値ｉｎ１３に対して、予め規定された処理を実行するブロックである。処理ブロック３２は、処理結果の値を示す信号ＳＧ１１を比較演算ブロック３３に出力する。
【００３１】
比較演算ブロック３３は、処理ブロック３２から出力される信号ＳＧ１１の値と、定数ブロック３４から出力される定数値（図中の一例では、"４５"）とを比較し、比較結果を信号ＳＧ１２として切替ブロック３５に出力する。比較演算ブロック３３は、処理ブロック３２から出力される信号ＳＧ１１の値が定数ブロック３４から出力される定数値より大きい場合、"真（ｔｒｕｅ）"を表す（例えば、"１"である）信号ＳＧ１２を切替ブロック３５に出力する。一方、比較演算ブロック３３は、処理ブロック３２から出力される信号ＳＧ１１の値が定数ブロック３４から出力される定数値より大きくない場合、"偽（ｆａｌｓｅ）"を表す（例えば、"０"である）信号ＳＧ１２を切替ブロック３５に出力する。
【００３２】
切替ブロック３５は、比較演算ブロック３３から出力される信号ＳＧ１２が"真"を表す場合、"ＯＮ"する旨を表す出力データｏｕｔ１（ＯＮ出力）を出力ブロック３６に出力する。一方、切替ブロック３５は、比較演算ブロック３３から出力される信号ＳＧ１２が"偽"を表す場合、"ＯＦＦ"する旨を表す出力データｏｕｔ１（ＯＦＦ出力）を出力ブロック３６に出力する。
【００３３】
出力ブロック３６は、切替ブロック３５から出力される出力データｏｕｔ１をモデル３０の外部に出力する。
【００３４】
本例（モデル３０）における境界値検査の対象となる検査対象ブロックは、比較演算ブロック３３である。比較演算ブロック３３は、境界値（定数ブロック３４から出力される定数値"４５"）を含む。
【００３５】
比較演算ブロック３３の境界値検査の実行性を担保するためには、境界値（"４５"）を中心とする１ＬＳＢの範囲内の値（"４４"、"４５"、及び"４６"の３値）を比較演算ブロック３３に入力する３つの検査パターン（信号ＳＧ１１が"４４"、"４５"、及び"４６"になる３つ検査パターン）が必要である。そのため、ステップＳ１０６にて、処理部１０は、記憶部２０に記憶される複数の過去検査パターンの中から境界値を中心とする１ＬＳＢの範囲の値を検査対象ブロックに入力する検査パターンをベース検査パターンとして抽出する。
【００３６】
図４に示す一例では、第１入力値ｉｎ１１＝"１"、第２入力値ｉｎ１２＝"１０"、及び第３入力値ｉｎ１３＝"５"である過去検査パターン（図中のＮｏ．３）において、信号ＳＧ１１が"４５"になる。そのため、当該過去検査パターンをベース検査パターンとして抽出する。
【００３７】
図２に戻り、ステップＳ１０８にて、処理部１０は、記憶部２０に記憶される複数の過去検査パターンの中からパス検査のベース検査パターンを抽出する。以下、図５〜図７を参照して、パス検査のベース検査パターンを抽出する処理の詳細について説明する。
【００３８】
図５は、パス検査を行うソフトウェアの一例に対応するモデル４０を示す図である。図６は、パス検査における制御パス（検査対象ブロックの入出力内容の組み合わせ）の網羅性（ＭＣ／ＤＣ１００％）を担保するために必要な検査対象ブロックにおける入出力内容の組み合わせを表す図である。図７は、記憶部２０に記憶される複数の過去検査パターンの中からベース検査パターンを抽出する処理を説明する図であり、具体的には、記憶部２０に記憶される複数の過去検査パターンの一例が列挙されている。
【００３９】
図５に示すように、モデル４０は、入力ブロック４１、処理ブロック４２，４３、比較演算ブロック４４、定数ブロック４５、比較演算ブロック４６、定数ブロック４７、論理積ブロック４８、出力ブロック４９を含む。
【００４０】
入力ブロック４１は、モデル４０の外部からの入力データを入力するブロックであり、第１入力ブロック４１１、第２入力ブロック４１２、第３入力ブロック４１３、第４入力ブロック４１４を含む。第１入力ブロック４１１及び第２入力ブロック４１２は、それぞれ、入力データに含まれる第１入力値ｉｎ２１及び第２入力値ｉｎ２２を処理ブロック４２に出力する。第３入力ブロック４１３及び第４入力ブロック４１４は、それぞれ、入力データに含まれる第３入力値ｉｎ２３及び第４入力値ｉｎ２４を処理ブロック４３に出力する。
【００４１】
処理ブロック４２は、第１入力ブロック４１１及び第２入力ブロック４１２から出力される第１入力値ｉｎ２１及び第２入力値ｉｎ２２に対して、予め規定された処理を実行するブロックである。処理ブロック４２は、処理結果の値を示す信号ＳＧ２１を比較演算ブロック４４に出力する。
【００４２】
処理ブロック４３は、第３入力ブロック４１３及び第４入力ブロック４１４から出力される第３入力値ｉｎ２３及び第４入力値ｉｎ２４に対して、予め規定された処理を実行するブロックである。処理ブロック４３は、処理結果の値を示す信号ＳＧ２２を比較演算ブロック４６に出力する。
【００４３】
比較演算ブロック４４は、処理ブロック４２から出力される信号ＳＧ２１の値と、定数ブロック４５から出力される定数値（図中の一例では、"４５"）とを比較し、比較結果を信号ＳＧ２３として論理積ブロック４８に出力する。比較演算ブロック４４は、処理ブロック４２から出力される信号ＳＧ２１の値が定数ブロック４５から出力される定数値より大きい場合、"真（ｔｒｕｅ）"を表す（例えば、"１"である）信号ＳＧ２３を論理積ブロック４８に出力する。一方、比較演算ブロック４４は、処理ブロック４２から出力される信号ＳＧ２１の値が定数ブロック４５から出力される定数値より大きくない場合、"偽（ｆａｌｓｅ）"を表す（例えば、"０"である）信号ＳＧ２３を論理積ブロック４８に出力する。
【００４４】
比較演算ブロック４６は、処理ブロック４３から出力される信号ＳＧ２２の値と、定数ブロック４７から出力される定数値（図中の一例では、"５０"）とを比較し、比較結果を信号ＳＧ２４として論理積ブロック４８に出力する。比較演算ブロック４６は、処理ブロック４３から出力される信号ＳＧ２２の値が定数ブロック４７から出力される定数値より小さい場合、"真（ｔｒｕｅ）"を表す（例えば、"１"である）信号ＳＧ２４を論理積ブロック４８に出力する。一方、比較演算ブロック４６は、処理ブロック４３から出力される信号ＳＧ２２の値が定数ブロック４７から出力される定数値より小さくない場合、"偽（ｆａｌｓｅ）"を表す（例えば、"０"である）信号ＳＧ２４を論理積ブロック４８に出力する。
【００４５】
論理積ブロック４８は、比較演算ブロック４４から出力される信号ＳＧ２３と比較演算ブロック４６から出力される信号ＳＧ２４の論理積を出力データｏｕｔ１として出力ブロック４９に出力する。
【００４６】
出力ブロック４９は、論理積ブロック４８から出力される出力データｏｕｔ１をモデル４０の外部に出力する。
【００４７】
本例（モデル４０）におけるパス検査の対象となる検査対象ブロックは、論理積ブロック４８である。
【００４８】
図６に示すように、パス検査における制御パスの網羅性、例えば、ＭＣ／ＤＣ（Modified condition/decision coverage）１００％を達成するためには、論理積ブロック４８の入出力内容の全て（４通り）の組み合わせを実現する４つの検査パターンが必要である。
【００４９】
ここで、検査対象ブロックにおける入出力内容の組み合わせである複数の制御パスの中には、記憶部２０に記憶される複数の過去検査パターンにおける通過率が比較的高い制御パスもあれば、通過率が比較的低い制御パスもある。そして、過去検査パターンにおける通過率の比較的高い制御パスを通過する検査パターンの生成は、通過率の比較的低い制御パスを通過する検査パターンの生成よりも容易と想定される。そのため、ステップＳ１０８にて、処理部１０は、複数の過去検査パターンにおける通過率が所定基準以下である制御パス（以下、第１パスと称する）を通過することを条件として、記憶部２０に記憶される複数の過去検査パターンの中からベース検査パターンを抽出する。これにより、処理部１０は、追加検査パターンとして、複数の過去検査パターンにおける通過率が比較的高い（通過率が所定基準以下でない）制御パス（以下、第２パスと称する）を通過する検査パターンを生成すればよいため、比較的短時間で追加検査パターンを生成できる可能性が高くなる。
【００５０】
尚、上記所定基準は、実験やシミュレーション等により予め規定される。
【００５１】
図６に示す一例の場合、第１パスは、信号ＳＧ２３が"真"、信号ＳＧ２４が"偽"で、出力データｏｕｔ１が"偽"となる制御パス（図中のＮｏ．２）と、信号ＳＧ２３が"偽"、信号ＳＧ２４が"偽"で出力データｏｕｔ１が"偽"となる制御パス（図中のＮｏ．４）である。また、第２パスは、信号ＳＧ２３が"真"、信号ＳＧ２４が"真"で、出力データｏｕｔ１が"真"となる制御パス（図中のＮｏ．１）と、信号ＳＧ２３が"偽"、信号ＳＧ２４が"真"で出力データｏｕｔ１が"偽"となる制御パス（図中のＮｏ．３）である。そのため、処理部１０は、信号ＳＧ２３が"真"、信号ＳＧ２４が"偽"となる検査パターンと、信号ＳＧ２３が"偽"、信号ＳＧ２４が"偽"となる検査パターンを、記憶部２０に記憶される複数の過去検査パターンの中からベース検査パターンとして抽出する。
【００５２】
また、後述するように、処理部１０は、ベース検査パターン（第１パスを通過する検査パターン）から追加検査パターン（第２パスを通過する検査パターン）を生成する。処理部１０は、追加検査パターンを生成する際、検査対象ブロックの入力、即ち、検査対象ブロックの上流の境界値を含むブロック（上流ブロック）の出力を、第１パスに対応する値から第２パスに対応する値に変化させる必要がある。そのため、ステップＳ１０８にて、処理部１０は、併せて、検査対象ブロックにおける複数の制御パスのうち、第１パスと第２パスとの間で異なる内容を検査対象ブロックに入力する上流ブロックに対して境界値に最も近い値を入力することを条件として、記憶部２０に記憶される複数の過去検査パターンの中からベース検査パターンを抽出する。これにより、上流ブロックの出力を第１パスに対応する値から第２パスに対応する値に変化させる際に、上流ブロックに入力される値を変化させる範囲が小さくなるため、追加検査パターンを生成する時間を短縮することができる。
【００５３】
図６に示すように、信号ＳＧ２３は、第１パスと第２パスとの間で同じ内容（"真"或いは"偽"）になるが、信号ＳＧ２４は、第１パスでは"偽"、第２パスでは"真"となり、第１パスと第２パスとの間で異なる内容になっている。即ち、信号ＳＧ２４は、過去検査パターンにおいて、"真"である割合が高く、"偽"である割合が低くなっている。従って、本例では、処理部１０は、ベース検査パターンを基準として、上流ブロックである比較演算ブロック４６の入力（信号ＳＧ２２）を変化させることにより、信号ＳＧ２４を"偽"から"真"に変化させて、追加検査パターンを生成する必要がある。そのため、図７に示すように、第１パス（信号ＳＧ２３が"真"或いは"偽と、信号ＳＧ２４が"偽"の組み合わせ）を通過し、且つ、上流ブロックである比較演算ブロック４６の境界値（"５０"）に最も近い値を入力する検査パターン（図中のＮｏ．１とＮｏ．１０）を、複数の過去検査パターンの中からベース検査パターンとして抽出する。
【００５４】
まとめると、ステップＳ１０８にて、処理部１０は、検査対象ブロックにおける複数の制御パスのうち、複数の過去検査パターンにおける通過率が所定基準以下である第１パスを通過し、且つ、第１パスと第２パスとの間で異なる内容を検査対象ブロックに入力する、境界値を含む上流ブロックに対して該境界値に最も近い値を入力する検査パターンを、記憶部２０に記憶される複数の過去検査パターンの中からベース検査パターンとして抽出する。
【００５５】
図２に戻り、ステップＳ１１０にて、処理部１０は、ベース検査パターンにおける各入力値（第１入力値ｉｎ１１〜第３入力値ｉｎ１３、第１入力値ｉｎ２１〜第４入力値ｉｎ２４）を最大値及び最小値に変更した検査パターンを生成する。
【００５６】
そして、ステップＳ１１２にて、処理部１０は、ベース検査パターン及びステップＳ１１０で生成された検査パターンが検査観点を満足するか否かを判定する。処理部１０は、検査観点を満足する場合、ステップＳ１１４に進み、検査パターンの生成を完了する。一方。処理部１０は、検査観点を満足しない場合、ステップＳ１１６に進む。
【００５７】
以下、図８を参照して、境界値検査の場合（図３、図４に示す一例の場合）におけるステップＳ１１０、Ｓ１１２の処理の具体例について説明する。
【００５８】
尚、パス検査の場合（図５〜図７に示す一例の場合）についても同様の処理が実行されるため、詳細な説明を省略する。
【００５９】
図８は、ベース検査パターン（図４参照）において、入力データに含まれる各入力値を最大値及び最小値に変更した検査パターンの一例を示す図である。
【００６０】
上述の如く、ベース検査パターンは、第１入力値ｉｎ１１＝"１"、第２入力値ｉｎ１２＝"１０"、及び第３入力値ｉｎ１３＝"５"で、信号ＳＧ１１の値が"４５"である。本例では、ベース検査パターンの第１入力値ｉｎ１１を最大値（本例では、"２５５"）及び最小値（本例では、"０"）に変更した２つの検査パターンと、ベース検査パターンの第２入力値ｉｎ１２を最大値（本例では、"２５５"）及び最小値（本例では、"０"）に変更した２つの検査パターンと、ベース検査パターンの第３入力値ｉｎ１３を最大値（本例では、"１２７"）及び最小値（本例では、"−１２８"）に変更した２つの検査パターンの計６つの検査パターンが生成される（図２のステップＳ１１０）。
【００６１】
本例では、生成された６つの検査パターンの信号ＳＧ１１は、何れも検査対象ブロックである比較演算ブロック３３の境界値（"４５"）を中心とする１ＬＳＢの範囲の値ではなく、検査観点を満足しない（図２のステップＳ１１２のＮ）。
【００６２】
図２に戻り、ステップＳ１１６にて、処理部１０は、入力データに含まれる各入力値（第１入力値ｉｎ１１〜第３入力値ｉｎ１３、第１入力値ｉｎ２１〜第４入力値ｉｎ２４）の有用度を算出する。当該有用度は、ベース検査パターンを基準として、各入力値を変化させることにより、検査観点を満足する追加検査パターンを生成するし易さを表す指標である。
【００６３】
境界値検査の場合（図３、図４、及び図８に示す一例の場合）、ベース検査パターンを基準にして、検査対象ブロック（比較演算ブロック３３）に入力される値を、境界値を中心とする１ＬＳＢの範囲で変化させることにより、追加検査パターンを探索（生成）する。そのため、入力データに含まれる複数の入力値のうち、変化させたときに検査対象ブロックの入力が変化する入力値を変化させることにより、検査対象ブロックに入力される値を変化させることができる。また、変化させたときに検査対象ブロックに入力される値の変化がより小さい入力値を変化させた方が、検査対象ブロックに入力される値を所望の値に合わせやすい。そのため、変化させたときに検査対象ブロックの入力が変化する入力値で、変化させたときに検査対象ブロックに入力される値の変化が小さいほど、有用度が高くなるようにする。具体的には、各入力値の有用度は、以下の式（１）に示すように、入力値のレンジ（最大値から最小値の間のレンジ）に対する検査対象ブロック（比較演算ブロック３３）の入力信号（信号ＳＧ１１）の変化量の絶対値の逆数と定義する。
【００６４】
有用度＝１／｜検査対象ブロックの入力信号の変化量／入力値のレンジ｜・・・（１）
尚、変化させても検査対象ブロックに入力される値が変化しない入力値の有用度は、"０"とする。
【００６５】
また、パス検査の場合（図５〜図７に示す一例の場合）、第１パスを通過するベース検査パターンを基準にして、検査対象ブロック（論理積ブロック４８）の上流ブロック（比較演算ブロック４６）に入力される値を変化させることにより、上流ブロックの出力を第２パスに対応する内容に変化させた追加検査パターンを探索（生成）する。そのため、入力データに含まれる複数の入力値のうち、変化させたときに上流ブロックの入力が変化する入力値を変化させることにより、検査対象ブロックの値を変化させることができる。また、変化させたときの上流ブロックに入力される値の変化がより小さい入力値を変化させた方が、上流ブロックに入力される値を所望の値に合わせやすい。そのため、変化させたときに上流ブロックの入力が変化する入力値で、変化させたときに上流ブロックに入力される値の変化が小さいほど、有用度が高くなるようにする。具体的には、各入力値の有用度は、以下の式（２）に示すように、入力値のレンジ（最大値から最小値の間のレンジ）に対する上流ブロック（比較演算ブロック４６）の入力信号（信号ＳＧ２２）の変化量の絶対値の逆数と定義する。
【００６６】
有用度＝１／｜上流ブロックの入力信号の変化量／入力値のレンジ｜・・・（２）
尚、変化させても上流ブロックに入力される値が変化しない入力値の有用度は、"０"とする。
【００６７】
ステップＳ１１８にて、処理部１０は、ステップＳ１１６で算出した有用度が高いものから１又は複数の入力値を選択する。例えば、処理部１０は、有用度が所定値以上である入力値を選択する。
【００６８】
ステップＳ１２０にて、処理部１０は、有用度が高い順に、選択した入力値を変化させながら、検査観点を満足する追加検査パターンを探索する。
【００６９】
ステップＳ１２２にて、処理部１０は、ステップＳ１２０の処理で、検査観点を満足する追加検査パターンが生成されたか否かを判定する。処理部１０は、検査観点を満足する追加検査パターンが生成された場合、ステップＳ１１４に進み、検査パターンの生成を完了する。一方、処理部１０は、検査観点を満足する追加検査パターンが生成できなかった場合、ステップＳ１２４に進む。
【００７０】
ステップＳ１２４にて、処理部１０は、ステップＳ１１８で選択した全ての入力値を変化させて、追加検査パターンの探索を行ったか否かを判定する。処理部１０は、まだ、追加検査パターンの探索に用いていない入力値が有る場合、ステップＳ１２０に戻り、ステップＳ１２０、Ｓ１２２の処理を繰り返す。一方、処理部１０は、既に、選択した全ての入力値を変化させることにより、追加検査パターンの探索を行った場合、ステップＳ１２６に進み、本フローチャートの処理による検査パターンの生成不可と判断する。
【００７１】
尚、ステップＳ１２６に進んで、検査パターンの生成不可になった場合は、手動で検査パターンを生成する等、他の方法を用いることになる。
【００７２】
以下、図９を参照して、境界値検査の場合（図３、図４、図８に示す一例の場合）におけるステップＳ１１６〜１２４の処理の具体例について説明する。
【００７３】
図９は、入力データに含まれる複数の入力値（第１入力値ｉｎ１１〜第３入力値ｉｎ１３）それぞれの有用度の一例を示す図である。具体的には、各入力値（第１入力値ｉｎ１１〜第３入力値ｉｎ１３）を最大値と最小値の間（入力値のレンジ）で変化させるときの信号ＳＧ１１（検査対象ブロックの入力信号）の変化量（図８参照）と、各入力値の有用度が示されている。
【００７４】
図９に示すように、第１入力値ｉｎ１１は、最小値"０"から最大値"２５５"までの入力レンジを有し、信号ＳＧ１１は、第１入力値ｉｎ１１が最小値のとき、"１０"であり、第１入力値ｉｎ１１が最大値のとき、"２５５"である（図８参照）。そのため、第１入力値ｉｎ１１の有用度は、１／｜２５５−１０／２５５−０｜＝１．０４となる（ステップＳ１１６）。
【００７５】
また、第２入力値ｉｎ１２は、最小値"０"から最大値"２５５"までの入力レンジを有し、信号ＳＧ１１は、第２入力値ｉｎ１２が最小値のとき、"１５０"であり、第２入力値ｉｎ１２が最大値のとき、"１０"である。そのため、第２入力値ｉｎ１２の有用度は、１／｜１０−１５０／２５５−０｜＝１．８２となる（ステップＳ１１６）。
【００７６】
また、第３入力値ｉｎ１３は、最小値"−１２８"から最大値"１２７"までの入力レンジを有し、信号ＳＧ１１は、第３入力値ｉｎ１３が最小値のとき、"５"であり、第３入力値ｉｎ１３が最大値のとき、"５０"である。そのため、第３入力値ｉｎ１３の有用度は、１／｜５０−５／１２７−（−１２８）｜＝５．６７となる（ステップＳ１１６）。
【００７７】
本例では、第３入力値ｉｎ１３の有用度が最も高く、その次に、第２入力値ｉｎ１２の有用度が高く、第１入力値ｉｎ１１の有用度が最も低くなる。そのため、処理部１０は、例えば、第１入力値ｉｎ１１〜第３入力値ｉｎ１３の全てを選択し（ステップＳ１１８）、有用度が高いものから、第３入力値ｉｎ１３、第２入力値ｉｎ１２、及び第１入力値ｉｎ１１の順に、値を変化させながら、追加検査パターンの検索を行う（ステップＳ１２０〜Ｓ１２４）。
【００７８】
尚、ステップＳ１２０にて、処理部１０は、選択した入力値のうちの複数を組み合わせて追加検査パターンの探索を行ってもよい。例えば、処理部１０は、第３入力値ｉｎ１３と第２入力値ｉｎ１２の双方を変化させながら、追加検査パターンの探索を行ってもよいし、第３入力値ｉｎ１３と第１入力値ｉｎ１１の双方を変化させながら、追加検査パターンの探索を行ってもよい。
【００７９】
以上、本実施態様に係る検査パターン生成装置１（処理部１０）は、複数のブロックのうちの境界値を含む検査対象ブロックに該境界値を中心とする１ＬＳＢの範囲の値の何れかを入力する検査パターンを、複数の過去検査パターンの中からベース検査パターンとして抽出する。従って、検査対象ブロックにおける境界値検査に必要とされる境界値を中心とする１ＬＳＢの範囲の３つの値（境界値及び境界値から１ＬＳＢだけ増減させた値）のうちの一部又は全部を対象ブロックに入力する検査パターンを抽出することができる。
【００８０】
また、検査パターン生成装置１（処理部１０）は、入力データに含まれる複数の入力値のうち、変化させたときに検査対象ブロックに入力される値が変化する入力値であって、変化させたときに検査対象ブロックに入力される値の変化が最も小さくなる入力値を、ベース検査パターンを基準として変化させることにより、境界値を中心とする１ＬＳＢの範囲の値のうち、ベース検査パターンで検査対象ブロックに入力される値以外の値を検査対象ブロックに入力する追加検査パターンを生成する。従って、境界値を中心とする１ＬＳＢの範囲の値の何れかを検査対象ブロックに入力するベース検査パターンを基準とするため、対象ブロックに入力される値を変化させる範囲が狭くなり、境界値検査に必要とされる残りの値を検査対象ブロックに入力する追加検査パターンの生成に要する時間を短縮することができる。また、変化させたときに検査対象ブロックに入力される値の変化が最も小さい入力値を変化させるため、検査対象ブロックの入力を所望の値に合わせやすくなり、追加検査パターンの生成に要する時間を更に短縮することができる。
【００８１】
また、本実施形態に係る検査パターン生成装置１（処理部１０）は、複数のブロックの中の検査対象ブロックにおける複数の制御パスのうち、複数の過去検査パターンにおける通過率が所定基準以下である第１パスを通過し、且つ、第１パスと第２パスとの間で異なる内容を検査対象ブロックに入力する、境界値を含む上流ブロックに対して該境界値に最も近い値を入力する検査パターンを、複数の過去検査パターンの中からベース検査パターンとして抽出する。そして、検査パターン生成装置１（処理部１０）は、入力データに含まれる複数の入力値のうち、変化させたときに上流ブロックに入力される値が変化する入力値であって、変化させたときに上流ブロックに入力される値の変化が最も小さくなる入力値を、ベース検査パターンを基準として変化させることにより、第２パスを通過する追加検査パターンを生成する。従って、検査対象ブロックにおける複数の制御パスを網羅する検査パターンを生成する際、過去検査パターンにおける通過率が低い第１パスを通過する検査パターンを抽出するため、生成が比較的難しいと想定される第１パスを通過する検査パターンを追加で生成する必要が無くなる。そのため、追加検査パターンの生成に要する時間を短縮することができる。また、入力データに含まれる複数の入力値のうち、変化させたときに上流ブロックに入力される値の変化が最も小さい入力値を変化させることにより、上流ブロックの入力を所望の値に合わせやすくなる。そのため、追加検査パターンの生成に要する時間を短縮することができる。また、複数の過去検査パターンのうち、上流ブロックに対して境界値に最も近い値を入力するベース検査パターンを基準にすることにより、上流ブロックの出力（検査対象ブロックの入力）を第２パスに対応する内容に変化させる際に、上流ブロックの入力を変化させる範囲が小さくなる。そのため、追加検査パターンの生成に要する時間を更に短縮することができる。
【００８２】
このように、本実施形態に係る検査パターン生成装置１によれば、過去の検査パターンを利用してより効率的に新たな検査パターンを生成することができる。
【００８３】
以上、本発明を実施するための形態について詳述したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００８４】
１    検査パターン生成装置
１０    処理部（抽出部、生成部）
２０    記憶部
３０    モデル
３１    入力ブロック
３２    処理ブロック
３３    比較演算ブロック（検査対象ブロック）
３４    定数ブロック
３５    切替ブロック
３６    出力ブロック
４０    モデル
４１    入力ブロック
４２，４３    処理ブロック
４４    比較演算ブロック
４５    定数ブロック
４６    比較演算ブロック（上流ブロック）
４７    定数ブロック
４８    論理積ブロック（検査対象ブロック）
４９    出力ブロック
３１１    第１入力ブロック
３１２    第２入力ブロック
３１３    第３入力ブロック
４１１    第１入力ブロック
４１２    第２入力ブロック
４１３    第３入力ブロック
４１４    第４入力ブロック
ｉｎ１１    第１入力値
ｉｎ１２    第２入力値
ｉｎ１３    第３入力値
ｉｎ２１    第１入力値
ｉｎ２２    第２入力値
ｉｎ２３    第３入力値
ｉｎ２４    第４入力値
【図１】
2017129936.tif 000003
【図２】
2017129936.tif 000004
【図３】
2017129936.tif 000005
【図４】
2017129936.tif 000006
【図５】
2017129936.tif 000007
【図６】
2017129936.tif 000008
【図７】
2017129936.tif 000009
【図８】
2017129936.tif 000010
【図９】
2017129936.tif 000011