(57)【要約】【課題】  モデルに基づいて生成されたソースコードの妥当性をより確実かつ迅速に検証することのできるテストケースを生成するテストケース生成装置および生成方法を提供する。【解決手段】  入力されるデータの境界値検査を実行する処理要素を、モデル２１に含まれる複数の処理要素から検査対象処理要素３５として検出する処理要素検出手段７、１２と、入力データＩｎ１、Ｉｎ２がモデル２１に入力され、検査対象処理要素に入力されるまでの間における、入力データＩｎ１、Ｉｎ２の精度を表すＬＳＢの変動状態ＳＵＭ＿ＳＦＴＢＩＴを検出する変動状態検出手段７、１２と、検出した変動状態ＳＵＭ＿ＳＦＴＢＩＴに応じて、検査対象処理要素での境界値検査を実行するために必要なテストケースを入力データＩｎ１、Ｉｎ２として算出する入力データ算出手段７、１２と、を備えている。【選択図】図２
2014059805.tif 000002
【特許請求の範囲】
【請求項１】
入力データ（Ｉｎ１〜Ｉｎ３）に応じた制御処理を複数の処理要素間のデータの入出力の仕様として記述したモデル（２１、２１ａ）に基づき前記制御処理を実行するために生成されたソースコード（２２）の妥当性を検査するためのテストケース（２３）を、前記入力データとして生成するテストケース生成装置（１）であって、
入力されるデータの境界値検査を実行する処理要素を、前記複数の処理要素から検査対象処理要素（３５）として検出する処理要素検出手段（７、１２）と、
前記入力データが前記モデルの入力ポート（３１、３２、３７）に入力され、当該入力ポートと前記検査対象処理要素との間の処理要素に応じた処理を経て前記検査対象処理要素に入力されるまでの間における、前記入力データに含まれる当該入力データの精度を表すＬＳＢの変動状態（ＳＵＭ＿ＳＦＴＢＩＴ）を検出する変動状態検出手段（７、１２）と、
当該検出した変動状態に応じて、前記検査対象処理要素での境界値検査を実行するために必要な前記入力データを算出する入力データ算出手段（７、１２）と、
を備えていることを特徴とするテストケース生成装置。
【請求項２】
前記変動状態検出手段は、前記入力データが前記モデルに入力されたときから前記検査対象処理要素に入力されるまでに実行された前記ＬＳＢのシフト回数を、前記変動状態として検出することを特徴とする請求項１に記載のテストケース生成装置。
【請求項３】
前記変動状態検出手段は、前記入力データが前記モデルに入力されたときから前記検査対象処理要素に入力されるまでの間において、前記ＬＳＢのシフトを行った場合の前記検査対象処理要素に入力されるデータのＬＳＢに対する、前記ＬＳＢのシフトを行わなかった場合の前記検査対象処理要素に入力されるデータのＬＳＢの倍率を、前記変動状態として検出することを特徴とする請求項１に記載のテストケース生成装置。
【請求項４】
入力データ（Ｉｎ１〜Ｉｎ３）に応じた制御処理を複数の処理要素間のデータの入出力の仕様として記述したモデル（２１、２１ａ）に基づき前記制御処理を実行するために生成されたソースコード（２２）の妥当性を検査するためのテストケース（２３）を、前記入力データとして生成するテストケースの生成方法であって、
入力されるデータの境界値検査を実行する処理要素を、前記複数の処理要素から検査対象処理要素（３５）として検出する処理要素検出手段（７、１２）と、
前記入力データが前記モデルの入力ポート（３１、３２、３７）に入力され、当該入力ポートと前記検査対象処理要素との間の処理要素に応じた処理を経て前記検査対象処理要素に入力されるまでの間における、前記入力データに含まれる当該入力データの精度を表すＬＳＢの変動状態（ＳＵＭ＿ＳＦＴＢＩＴ）を検出する変動状態検出手段（７、１２）と、
当該検出した変動状態に応じて、前記検査対象処理要素での境界値検査を実行するために必要な前記入力データを算出する入力データ算出手段（７、１２）と、
を備えていることを特徴とするテストケースの生成方法。
【請求項５】
前記変動状態検出手段は、前記入力データが前記モデルに入力されたときから前記検査対象処理要素に入力されるまでに実行された前記ＬＳＢのシフト回数を、前記変動状態として検出することを特徴とする請求項４に記載のテストケースの生成方法。
【請求項６】
前記変動状態検出手段は、前記入力データが前記モデルに入力されたときから前記検査対象処理要素に入力されるまでの間において、前記ＬＳＢのシフトを行った場合の前記検査対象処理要素に入力されるデータのＬＳＢに対する、前記ＬＳＢのシフトを行わなかった場合の前記検査対象処理要素に入力されるデータのＬＳＢの倍率を、前記変動状態として検出することを特徴とする請求項４に記載のテストケース生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデルからテストケースを自動的に生成するためのテストケース生成装置およびテストケース生成方法に関するものである。
【背景技術】
【０００２】
従来、例えば車両のエンジン制御装置やブレーキ制御装置で入力データに応じた制御処理を実行するためのソースコードを、制御の処理動作を記述したモデルから自動的に生成する技術が知られている。また、このように生成されたソースコードの妥当性を検査するために、テストケースを入力データとして生成するテストケース生成装置として、例えば特許文献１に記載されたものが知られている。
【０００３】
このテストケース生成装置では、通常、そのユーザが市販のテストケース生成用のプログラムを実行し、複数の処理要素間のデータの入出力の仕様として制御処理を記述したモデルを、テストケース生成プログラムで解析することによって、モデルおよびソースコードへの入力データをテストケースとして自動的に生成する。そして、生成したテストケースをモデルおよびソースコードに入力して出力された結果を比較することによって、ソースコードの検査を行っている。
【０００４】
また、モデル内の特定の処理要素から出力されるデータの目標値が定められている場合、特定のモデルから出力されるデータが目標値になるように、テストケースが生成される。例えば、入力される複数のデータの境界値検査として比較演算を実行する処理要素において、その出力結果を検査するために、比較演算を実行する処理要素に入力されるデータに差異が生じるように、モデルへの入力データが生成される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２９４８４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
入力されるデータを比較演算した結果の確認を行うためには、比較演算を行う処理要素に入力されるデータに上記のように差異を設けなければならない。例えば、８ビットの変数でデータを表した場合、市販のプログラムでは、通常、入力されるデータに所定の差異が生じるように、例えば最下位ビットの差が「１」になるように、テストケースが生成される。しかし、 モデルを解析しても、モデルの構成によっては入力されるデータに所定の差異が生じるようなテストケースを生成できない場合がある。
【０００７】
その場合、市販のプログラムが、テストケースを生成できないままモデルの解析を継続してしまい、解析に余分な時間を要してしまう。さらに、比較演算を実行する処理要素による適切な処理結果が得られるように、入力するデータをユーザが手動で設定しなければならず、その結果、ソースコードの検査工程の効率化が阻害されてしまう。
【０００８】
本発明は、以上のような課題を解決するためになされたものであり、モデルに基づいて生成されたソースコードの妥当性をより確実かつ迅速に検証することのできるテストケースを生成するテストケース生成装置および生成方法を提供することを目的としている。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために、本発明に係るテストケース生成装置１およびテストケース生成方法は、入力データ（実施形態における（以下、本項において同じ）第１〜第３入力データＩｎ１〜Ｉｎ３）に応じた制御処理を複数の処理要素間のデータの入出力の仕様として記述したモデル２１、２１ａに基づき前記制御処理を実行するために生成されたソースコード（Ｃソースコード２２）の妥当性を検査するためのテストケース２３を、前記入力データとして生成するテストケース生成装置１であって、入力されるデータの境界値検査を実行する処理要素を、前記複数の処理要素から検査対象処理要素（比較演算ブロック３５）として検出する処理要素検出手段（ＣＰＵ７、自動テストケース生成プログラム１２）と、前記入力データが前記モデル２１、２１ａの入力ポート（第１〜第３入力ブロック３１、３２、３７）に入力され、当該入力ポートと前記検査対象処理要素との間の処理要素に応じた処理を経て前記検査対象処理要素に入力されるまでの間における、前記入力データに含まれる当該入力データの精度を表すＬＳＢの変動状態（累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴ）を検出する変動状態検出手段（ＣＰＵ７、自動テストケース生成プログラム１２）と、当該検出した変動状態に応じて、前記検査対象処理要素での境界値検査を実行するために必要な前記入力データを算出する入力データ算出手段（ＣＰＵ７、自動テストケース生成プログラム１２）と、を備えていることを特徴とする。
【００１０】
このテストケース生成装置およびテストケース生成方法によれば、モデルに基づいて生成された制御処理を実行するためのソースコードの妥当性を検査するために、テストケースがモデルへの入力データとして生成される。モデルは、入力データに応じた複数の処理要素間のデータの入出力の仕様として記述されており、複数の処理要素のうち、入力されるデータの境界値検査を実行する処理要素が、処理要素検出手段によって検査対象処理要素として検出される。
【００１１】
また、モデルの入力ポートから入力された入力データが、入力ポートと検査対象処理要素との間に存在する処理要素に応じた処理を経て、検査対象処理要素に入力されるまでの間において、入力データに含まれ、その精度を表すＬＳＢの変動状態が、変動状態検出手段によって検出される。そして、検出された変動状態に応じて、検査対象処理要素において境界値検査を実行するために必要な入力データが、入力データ算出手段によって算出される。
【００１２】
ＬＳＢは、処理要素における処理の前後で変動することがあるので、ＬＳＢの変動状態を検出することによって、検査対象処理要素に入力されるデータが検査対象処理要素での境界値検査を適切に行うことのできる値になるように入力データを算出することができ、境界値検査を適切に実行するために必要な入力データを、ＬＳＢの変動状態に応じて適切に設定することができる。
【００１３】
また、境界値検査に必要な入力データを、上記のように自動的に算出することが可能になるので、プログラムによるテストケースの生成に要する時間を短縮することができる。また、ユーザによる手動でのテストケースの設定を省略できるので、ソースコードの検査工程をより効率化することができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態に係るテストケース生成装置を示す概略構成図である。
【図２】モデルベース開発プログラムの概略構成図である。
【図３】図２のモデルベース開発プログラムで用いられるモデルの一例を示す図である。
【図４】テストケース自動生成処理を示すフローチャートである。
【図５】最小ＬＳＢ差算出処理を示すフローチャートである。
【図６】累積シフトビット数を算出する際の処理内容を時系列に従って番号順に示す図である。
【図７】累積シフトビット数と最小ＬＳＢ差との関係を示す最小ＬＳＢ差テーブルである。
【図８】図２のモデルベース開発プログラムで用いられるモデルの変形例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態に係るテストケース生成装置について、図面を参照しながら説明する。図１に示すように、本実施形態のテストケース生成装置（以下、単に「生成装置」という）１は、一般的なパーソナルコンピュータなどのコンピュータ装置で構成されており、ディスプレイ２、入力装置３、ＲＡＭ４、ＲＯＭ５、ＨＤＤ（ハードディスクドライブ）６、ＣＰＵ７（処理要素検出手段、変動状態検出手段、入力データ算出手段）などを備えている。
【００１６】
ディスプレイ２は、ＣＰＵ７から受信した映像信号を、生成装置１のユーザに対して映像として表示する。入力装置３は、マウスやキーボードなどで構成され、ユーザに操作されることによって、その操作に応じた信号をＣＰＵ７に出力する。
【００１７】
ＲＡＭ４は読出しおよび書込み可能な揮発性メモリであり、ＲＯＭ５は読出し専用の不揮発メモリであり、ＨＤＤ６は読出しおよび書込み可能な不揮発性メモリである。ＲＯＭ５およびＨＤＤ６には、ＣＰＵ７によって読み出されて実行されるプログラムなどがあらかじめ記憶されている。また、ＨＤＤ６には後述するモデルが記憶されている。
【００１８】
ＣＰＵ７がＲＯＭ５およびＨＤＤ６に記憶されたプログラムを実行する際、ＲＡＭ４は、そのプログラムを一時的に保存するための記憶領域、および作業用のデータを一時的に保存するための記憶領域として用いられる。ＣＰＵ７は、入力装置３からの信号などに基づいて、ＲＯＭ５およびＨＤＤ６に記憶されたプログラムを実行するとともに、ＲＡＭ４およびＨＤＤ６に対してデータの読出しおよび書込みの制御を行う。ＣＰＵ７は、本実施形態において、例えば車両制御のためのＥＣＵ（図示せず）で実行されるＣソースコードをモデルから生成するための統合開発環境として、後述するプログラム群を実行する。
【００１９】
図２は、この統合開発環境としてのモデルベース開発プログラム１０の概略構成を示している。このモデルベース開発プログラム１０は、自動コード生成プログラム１１、自動テストケース生成プログラム１２（処理要素検出手段、変動状態検出手段、入力データ算出手段）、Ｃソースコード実行プログラム１３、モデルシミュレーションプログラム１４）、実行結果比較プログラム１５、および結果表示プログラム１６などのプログラム群を有している。このプログラム群では、ユーザの入力装置３を用いた実行開始の操作に基づいて、各プログラムが実行される。
【００２０】
自動コード生成プログラム１１は、ユーザによって作成され、ＨＤＤ６に記憶されているモデル２１を読み出し、読み出したモデル２１の示すデータの入出力処理を実現するための処理が記述されたＣソースコード２２を自動的に作成する。なお、例えば、モデルベース開発プログラム１０に含まれるモデルエディタ（図示せず）などのモデル作成用プログラムをＣＰＵ７が実行し、その実行時にユーザがモデル作成のための作業を入力装置３を用いて行うことで、モデル２１が作成される。
【００２１】
次いで、モデル２１について説明する。モデル２１は、データ入力、データ出力およびデータ演算のうち、少なくとも１つの機能を表す処理要素（以下「ブロック」という）、およびブロック間の入出力関係の仕様を示す結線の組合わせとして記述され、これらによってモデル２１の処理内容が表される。
【００２２】
図３はモデル２１の一例を示している。同図に示すように、モデル２１は、第１および第２入力ブロック３１、３２（入力ポート）、乗算ブロック３３、定数ブロック３４、比較演算ブロック３５および出力ブロック３６を有している。第１および第２入力ブロック３１、３２は、外部からモデル２１に入力された入力データを、結線の後段の乗算ブロック３３に出力する。具体的には、第１入力ブロック３１は、入力された第１入力データＩｎ１（入力データ）を、データの精度を表すＬＳＢが８のデータとして、乗算ブロック３３に出力する。また、第２入力ブロック３２は、入力された第２入力データＩｎ２（入力データ）を、ＬＳＢが４のデータとして乗算ブロック３３に出力する。
【００２３】
なお、モデル２１のブロック間で送受信されるデータを例えば８ビットの変数とした場合、ＬＳＢは、その最下位ビットの重みを表すものであり、ＬＳＢが１のときには、データを２５６分割して表すことができる。また、データの精度はＬＳＢの値に応じて変動し、例えばいずれかのブロックでの演算処理によってＬＳＢの値が２倍になったときには、そのデータの精度は、演算処理を行う前の１／２に変化する。
【００２４】
乗算ブロック３３は、第１および第２入力ブロック３１、３２からそれぞれ入力されたデータを乗算し、その結果を表すデータを後段の比較演算ブロック３５に出力する。定数ブロック３５は、ＬＳＢが２の定数（例えば０）を後段の比較演算ブロック３５に出力する。この定数はユーザによって任意に設定される。
【００２５】
比較演算ブロック３５は、乗算ブロック３３および定数ブロック３４からそれぞれ出力されたデータを比較し、乗算ブロック３３からのデータが定数ブロック３４からのデータ以上のときに、値「１」のデータを出力する一方、それ以外の場合は値「０」のデータを出力する。出力ブロック３６は、比較演算ブロック３５による比較結果を表すデータをモデル２１の外部に出力する。
【００２６】
このモデル２１では、第１および第２入力ブロック３１、３２からのデータのＬＳＢが８および４であることから、乗算ブロック３３による乗算結果のＬＳＢが３２で、このままでは定数ブロック３４から出力されるＬＳＢが２のデータとの比較演算を比較演算ブロック３５で実行できない。このため、乗算ブロック３３では、乗算結果を表すデータのＬＳＢが変換される。具体的には、乗算ブロック３３による乗算結果のＬＳＢが３２で、定数ブロック３４側のＬＳＢの１６倍であるので、４ビット分のシフト演算が行われる。その結果、乗算ブロック３３からは、定数ブロック３４からのデータと同じくＬＳＢが２のデータが、出力される。
【００２７】
図２に示す自動テストケース生成プログラム１２は、モデル２１に基づいてテストケース２３を生成し、作成したテストケース２３をＨＤＤ６に記憶させる。テストケース２３は、自動コード生成プログラム１１によってモデル２１から生成されたＣソースコード２２の品質を検査するための処理（例えばカバレッジテスト）を実行するにあたり、モデル２１およびＣソースコード２２に入力するテスト用のデータである。テストケース２３は、例えば、モデル２１のすべてのブロックおよびＣソースコード２２のすべての命令文が実行されるように、生成される。この品質検査は、生成されたＣソースコード２２全体について行う場合と、そのＣソースコード２２に含まれる関数などの所定の実行単位部分ごとに独立に行われる場合がある。自動テストケース生成プログラム１２の処理内容については後述する。
【００２８】
Ｃソースコード実行プログラム１３は、自動コード生成プログラム１１によって生成されたＣソースコード２２の実行単位に記載された処理内容を実行する。この実行の目的の１つは、上記の品質検査である。この実行の際、Ｃソースコード２２に入力するデータとしてテストケース２３が用いられる。そして、Ｃソースコード実行プログラム１３は、Ｃソースコード２２の実行単位による実行結果を表す出力データ、および実行した命令文の時系列的なリストを、実行結果データ２４としてＨＤＤ６に記憶させる。
【００２９】
モデルシミュレーションプログラム１４は、自動コード生成プログラム１１によって生成されたＣソースコード２２の元となるモデル２１をＨＤＤ６から読み出し、モデル２１のシミュレーションを実行する。このシミュレーションでは、モデル２１の表現するデータの入出力の時間変化をコンピュータ装置で仮想的に再現する。なお、モデル２１のシミュレーションにおいても、モデル２１全体ではなく、例えばブロックごとにシミュレーションを行ってもよい。
【００３０】
このシミュレーションでは、テストケース２３を外部からの入力データとして用いる。そして、モデルシミュレーションプログラム１４は、モデル２１のシミュレーションによる外部への出力データ、およびブロックごとの実行時間および入出力データなどを、実行結果データ２４として、ＨＤＤ６に記憶させる。
【００３１】
実行結果比較プログラム１５は、Ｃソースコード実行プログラム１３およびモデルシミュレーションプログラム１４によってＨＤＤ６に記憶された実行結果データ２４を読み出し、その実行結果を比較し、その比較結果を表す比較結果データ２５を結果表示プログラム１６に出力する。この実行結果比較プログラム１５による比較では、モデルシミュレーションプログラム１４がシミュレーションを行ったモデル２１と、自動コード生成プログラム１１がモデル２１に基づいて生成したＣソースコード２２の、それぞれの実行結果のデータ比較が行われる。例えば、実行結果比較プログラム１５は、同じ入力データに対してモデル２１およびＣソースコード２２がそれぞれ出力したデータを比較し、この比較の結果、Ｃソースコード２２の実行結果が、モデル２１の実行結果と一致していたときに、自動的に生成されたＣソースコード２２は、モデル２１で記述された制御処理を実現するものとして妥当であるとの判定がなされる。
【００３２】
そして、結果表示プログラム１６は、実行結果比較プログラム１５からの上記の判定結果を表すデータ、およびモデルシミュレーションプログラム１４から渡されたデータなどを、ディスプレイ２に表示させる。
【００３３】
なお、自動コード生成プログラム１１によって生成されたＣソースコード２２は、Ｃソースコード２２によって記述された制御を実現する制御ＥＣＵ（例えばエンジンＥＣＵやブレーキＥＣＵ）（図示せず）で作動するオブジェクトコードに変換され、そのオブジェクトコードは制御ＥＣＵに実装される。
【００３４】
次に、前述した自動テストケース生成プログラム１２の具体的な処理内容について説明する。この処理では、ＣＰＵ７は、入力装置３による検査対象モデルの指定操作を受け付け、受け付けた検査対象モデルに入力するためのテストケースを算出する。ここでは、検査対象モデルとして、モデル２１が指定される。
【００３５】
また、ユーザは、検査項目および検査項目の目標値を指定する。検査項目は、モデル２１に含まれるブロックのうち、いずれのブロックの出力データを目標値の指定対象とするかを示す情報である。目標値は、検査項目としての出力データに対して要求すべき具体的な数値である。
【００３６】
図４は、自動テストケース生成プログラム１２に従ってＣＰＵ７が実行するテストケース自動生成処理を示している。この処理では、まず、ステップ１（Ｓ１と図示。以下、同じ）において、図５に示す最小ＬＳＢ差算出処理を実行する。
【００３７】
この最小ＬＳＢ差算出処理では、まず、モデル２１に含まれるブロックのうち、境界値検査を行うべきブロックを検査対象ブロック（検査対象処理要素）として検出する（ステップ１１）。これにより、比較演算を実行するブロックが検査対象ブロックとして検出される。
【００３８】
次いで、上記ステップ１１で検出した検査対象ブロックのうち、後述する解析をまだ実行していない検査対象ブロックがあるか否かを判別する（ステップ１２）。この答がＹｅｓで、未解析の検査対象ブロックがあるときには、後述する累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴをリセットする（ステップ１３）。
【００３９】
次いで、未解析のいずれか１つの検査対象ブロックについて、その直前のブロックを検出し（ステップ１４）、このステップ１４で検出したブロックが、モデル２１の外部から入力データが入力される入力ブロックであるか否かを判別する（ステップ１５）。この答がＮｏのときには、上記ステップ１４で検出したブロックにおいて実行されたＬＳＢのシフト数を、ビットシフト数ＳＦＴＢＩＴとして算出する（ステップ１６）。
【００４０】
そして、上記ステップ１６で算出したビットシフト数ＳＦＴＢＩＴを、累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴに加算した値を、今回までの累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴとしてセットし（ステップ１７）、前記ステップ１４に戻る。これにより、前回のループにおいて、前記ステップ１４で検出したブロックの直前のブロックが検出され、検出したブロックが入力ブロックであると判別される（ステップ１５：Ｙｅｓ）まで、検査対象ブロックから１ブロックずつさかのぼりながら、各ブロックにおけるビットシフト数ＳＦＴＢＩＴを累積して、累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴを算出する。
【００４１】
上記ステップ１５の答がＹｅｓで、入力ブロックであることが検出されると、算出した累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴに応じ、図７に示す最小ＬＳＢ差テーブルを検索することによって、最小ＬＳＢ差を算出する（ステップ１８）。この最小ＬＳＢ差は、検査対象ブロックに入力されるデータについて、ビットシフトを行った場合と行わなかった場合のＬＳＢの差異を表すものであり、同図に示すように、累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴに応じて所定の値が設定されている。なお、累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴから、最小ＬＳＢ差を適宜、算出してもよい。
【００４２】
そして、算出した最小ＬＳＢ差をＨＤＤ６に記憶し（ステップ１９）、前述したステップ１２を再度、実行する。このとき、前記ステップ１３〜１９にかけて実行した解析を実行していない検査対象ブロックが残っているときには、すべての検査対象ブロックの解析が終了するまで、前記ステップ１３〜１９を繰り返し実行する。一方、すべての検査対象ブロックについて解析が終了しているときには、本処理を終了する。
【００４３】
次いで、前述したモデル２１を対象として、上述した最小ＬＳＢ差算出処理を実行した場合を図５および図６を参照しながら説明する。まず、ステップ１１において、比較演算ブロック３５が検査対象ブロックとして検出される。そして、ステップ１２および１３に続くステップ１４において、乗算ブロック３３が直前のブロックとして検出される。
【００４４】
次いで、この乗算ブロック３３は入力ブロックではない（ステップ１５：Ｎｏ）ので、ステップ１６において、乗算ブロック３３におけるＬＳＢのシフト数である「４」がビットシフト数ＳＦＴＢＩＴとして算出され、このビットシフト数ＳＦＴＢＩＴが、ステップ１７において累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴとして設定される。
【００４５】
そして、ステップ１４に戻り、乗算ブロック３３の直前の第１および第２入力ブロック３１、３２は入力ブロックである（ステップ１５：Ｙｅｓ）ので、ステップ１８および１９において、累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴに基づき、最小ＬＳＢ差を算出し、算出した最小ＬＳＢ差を記憶する。具体的には、累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴが「４」であるので、最小ＬＳＢ差テーブルを検索することによって、最小ＬＳＢ差として「１６」が算出される。そして、前記ステップ１１で検出した検査対象ブロックは、比較演算ブロック３５以外に存在しないので、前記ステップ１２の答がＮｏになることにより、最小ＬＳＢ差算出処理が終了する。
【００４６】
図４に戻り、ステップ１における最小ＬＳＢ差算出処理に続き、前記ステップ１１で検出した検査対象ブロックに入力されるデータの目標値を、最小ＬＳＢ差に基づいて算出し（ステップ２）、これをＨＤＤ６に記憶する。上述したようにモデル２１を対象とした場合、最小ＬＳＢ差が「１６」であり、また、乗算ブロック３３から出力されるデータのＬＳＢが２であることから、乗算ブロック３３におけるビットシフトを行う前の乗算結果のＬＳＢが３２になるような入力データが、目標値として算出される。
【００４７】
次いで、検査対象ブロック以外のブロックについて、各種の検査項目およびその目標値を算出し（ステップ３）、ＨＤＤ６に記憶する。
【００４８】
次いで、上記ステップ２および３で算出した各種の目標値を、自動テストケース生成プログラム１２に設定し（ステップ４）、自動テストケース生成プログラム１２を実行する（ステップ５）ことによって、テストケース２３を生成し、本処理を終了する。これにより、検査対象ブロックでの比較演算を検査するための入力データが、テストケース２３として生成される。
【００４９】
以上のように、本実施形態に係るテストケース生成装置１によれば、第１および第２入力データＩｎ１、Ｉｎ２がモデル２１に入力されたときから比較演算ブロック３５に入力されるまでのＬＳＢの変動状態を表す累積ビットシフト数ＳＵＭ＿ＳＦＴＢＩＴが、検出される。そして、比較演算ブロック３５での比較演算が適切に行われるように、第１および第２入力データＩｎ１、Ｉｎ２を、累積ビットシフト数ＳＵＭ＿ＳＦＴＢＩＴに応じて、テストケース２３として適切に算出することができる。
【００５０】
また、比較演算ブロック３５での比較演算を適切に行うことのできるテストケース２３を、上記のようにして自動的に設定することができるので、自動テストケース生成プログラム１２でのテストケースの生成を迅速に行うことができる。それにより、ユーザによる手動でのテストケース２３の設定を省略できるので、Ｃソースコード２２の検査工程をより効率化することができる。
【００５１】
図９は、変形例に係るモデル２１ａを示している。このモデル２１ａについて、前述した実施形態に係るモデル２１と共通する構成には同じ符号を付し、モデル２１との差異を中心に説明する。この変形例に係るモデル２１ａは、前述したモデル２１と異なり、比較演算ブロック３５と入力ポートとの間に複数の処理要素が設けられており、第３入力ブロック３７（入力ポート）と、乗算ブロック３３とは別個の乗算ブロック３８をさらに有している。
【００５２】
第２入力ブロック３２は、入力された第２入力データＩｎ２を、ＬＳＢが２のデータとして乗算ブロック３８に出力する。また、第３入力ブロック３７は、入力された第３入力データＩｎ３（入力データ）を、ＬＳＢが４のデータとして乗算ブロック３８に出力する。また、乗算ブロック３８は、第２および第３入力ブロック３２、３７からのデータを乗算し、その結果を、ＬＳＢが４のデータとして乗算ブロック３３に出力する。すなわち、乗算ブロック３８では１ビット分のビットシフトが行われる。
【００５３】
乗算ブロック３８から出力されたデータは、乗算ブロック３３において、第１入力ブロック３１から出力されたデータと乗算される。他の構成は、前述したモデル２１と同様である。
【００５４】
この変形例に係るモデル２１ａを対象として、前述した最小ＬＳＢ差算出処理を実行した場合、ステップ１１において比較演算ブロック３５が検査対象ブロックとして検出され、ステップ１４において、まず、乗算ブロック３３が直前のブロックとして検出される。そして、ステップ１６において、乗算ブロック３３におけるビットシフト数ＳＦＴＢＩＴである「４」が算出されるとともに、この値がステップ１７において累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴとしてセットされる。
【００５５】
次いで、ステップ１４に戻り、乗算ブロック３３の前段には乗算ブロック３８が存在しているので、この乗算ブロック３８が直前のブロックとして検出される。そして、ステップ１６において、この乗算ブロック３８でのビットシフト数ＳＦＴＢＩＴである「１」が算出されるとともに、この値が、ステップ１７において累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴに加算されることによって、累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴは「５」にセットされる。また、乗算ブロック３８の直前のブロックは入力ブロックであるので、ステップ１５の答えがＹｅｓになり、ステップ１８において累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴに応じた最小ＬＳＢ差が、最小ＬＳＢ差テーブルから算出されるとともに、これに基づく目標値がテストケース自動生成処理において算出される。
【００５６】
以上のように、第１〜第３入力ブロック３２、３３、３７と比較演算ブロック３５との間に２つの乗算ブロック３３、３８が存在する場合でも、それに応じて累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴが算出されるので、前述した実施形態と同様の効果を得ることができる。
【００５７】
なお、上述した実施形態および変形例では、モデル２１、２１ａの比較演算ブロック３５に入力されるデータの一方を、定数ブロック３４から出力される定数としているが、定数ブロック３４に代えて、乗算ブロックなどの他のブロックを配置したモデルを用いてもよい。その場合、比較演算ブロック３５に入力される複数のデータについて、累積ビットシフト数ＳＵＭ＿ＳＦＴＢＩＴがそれぞれ算出され、それらに応じてテストケース２３が算出される。
【００５８】
また、実施形態および変形例では、累積シフトビット数ＳＵＭ＿ＳＦＴＢＩＴから最小ＬＳＢ差を算出するものとして説明したが、比較演算ブロック３５に入力されるデータに関し、乗算ブロック３３などでビットシフトを行った場合のＬＳＢに対する、ビットシフトを行わなかった場合のＬＳＢの倍率を、入力データの変動状態として検出し、この倍率に応じて最小ＬＳＢ差を算出してもよい。
【００５９】
また、上述した実施形態および変形例では、モデル２１、２１ａの構成を解析して求めた最小ＬＳＢ差から算出した目標値を、自動テストケース生成プログラム１２に設定することによって、テストケース２３の生成を自動的に行っているが、これに限定されることなく、例えば、最小ＬＳＢ差やそれに応じた目標値をディスプレイ２に表示させることでユーザに伝達し、ユーザが既存の自動テストケース生成プログラムに手動で最小ＬＳＢ差や目標値を設定するようにしてもよい。その他、本発明の趣旨の範囲内で、細部の構成を適宜、変更することが可能である。
【符号の説明】
【００６０】
１    テストケース生成装置
７    ＣＰＵ（処理要素検出手段、変動状態検出手段、入力データ設定手段）
１２    自動テストケース生成プログラム（処理要素検出手段、変動状態検出手段、入力
データ設定手段）
２２    Ｃソースコード（ソースコード）
３１    第１入力ブロック（入力ポート）
３２    第２入力ブロック（入力ポート）
３５    比較演算ブロック（検査対象処理要素）
３７    第３入力ブロック（入力ポート）
Ｉｎ１〜Ｉｎ３    第１〜第３入力データ（入力データ）
ＳＵＭ＿ＳＦＴＢＩＴ    累積シフトビット数（変動状態）
【図１】
2014059805.tif 000003
【図２】
2014059805.tif 000004
【図３】
2014059805.tif 000005
【図４】
2014059805.tif 000006
【図５】
2014059805.tif 000007
【図６】
2014059805.tif 000008
【図７】
2014059805.tif 000009
【図８】
2014059805.tif 000010