(57)【要約】  テストケース生成装置（１０）は、複数の入力条件（３１）と、複数の出力条件（３２）と、ソフトウェアの構造に基づく試験手法によって処理が到達したことが確認される複数の到達点との各組合せを対象パターンとして、対象パターンにおける入力条件（３１）及び出力条件（３２）のペアである入出力条件と到達点とを同時に確認可能な入力信号及び出力信号の値であるテストケース（３６）を生成可能か否かを判定する。これにより、テストケース生成装置（１０）は、入力条件（３１）それぞれと、出力条件（３２）それぞれと、到達点それぞれとを確認可能なテストケース（３６）の組を特定する。
2017145300.tif 000002
【特許請求の範囲】
【請求項１】
対象システムの入力信号についての複数の入力条件と、前記対象システムの出力信号についての複数の出力条件と、ソフトウェアの構造に基づく試験手法によって処理が到達したことが確認される、前記対象システムにおける複数の到達点との組合せを示す組合せパターンを生成するパターン生成部と、
前記パターン生成部によって生成された前記組合せパターンが示す各組合せを対象パターンとして、前記対象パターンにおける前記入力条件及び前記出力条件のペアである入出力条件と前記到達点とを同時に確認可能な前記入力信号の値であるテストケースを生成可能か否かを判定することにより、前記複数の入力条件それぞれと、前記複数の出力条件それぞれと、前記複数の到達点それぞれとを確認可能な前記テストケースの組を特定するテストケース生成部と
を備えるテストケース生成装置。
【請求項２】
前記テストケース生成部は、生成可能と判定された組合せから、前記複数の入力条件それぞれと、前記複数の出力条件それぞれと、前記複数の到達点それぞれとを確認可能な組合せについて前記テストケースを生成する
請求項１に記載のテストケース生成装置。
【請求項３】
前記テストケース生成部は、ソフトウェアの構造に基づく試験手法である第１手法と、ソフトウェアの機能に基づく試験手法とソフトウェアの構造に基づく試験手法との組合せである第２手法と、前記第２手法よりも基準が厳しいソフトウェアの機能に基づく試験手法とソフトウェアの構造に基づく試験手法との組合せである第３手法とのそれぞれの手法に対して、前記対象パターンについて前記テストケースが生成可能か否かを判定することにより、前記入出力条件と前記到達点との少なくともいずれかを確認可能か否かを判定する
請求項１又は２に記載のテストケース生成装置。
【請求項４】
前記テストケース生成部は、前記第１手法と前記第２手法と前記第３手法とのそれぞれの手法に対して、前記テストケースが生成可能と判定された組合せについて前記テストケースを生成する
請求項３に記載のテストケース生成装置。
【請求項５】
前記テストケース生成部は、生成された前記テストケースを前記対象システムに入力して得られた値と、期待値とが一致するか否かを判定する
請求項４に記載のテストケース生成装置。
【請求項６】
前記テストケース生成部は、前記第１手法に対して前記テストケースが生成不可な場合には、前記対象パターンを実行不能と判定し、前記第１手法に対して前記テストケースが生成可能であり、かつ、前記第２手法又は前記第３手法に対して前記テストケースが生成不可な場合には、前記対象パターンを前記対象システムの仕様の想定外と判定し、前記第１手法と前記第２手法と前記第３手法とに対して前記テストケースが生成可能な場合には、前記対象パターンを前記対象システムの仕様の範囲内と判定する
請求項３から５までのいずれか１項に記載のテストケース生成装置。
【請求項７】
前記テストケース生成部は、前記対象システムが有する内部状態を保持したまま、前記対象システムの処理を複数回繰り返し実行する繰り返しシステムにおいて、前記入出力条件と前記到達点との少なくともいずれかを確認可能な前記テストケースを生成可能か否かを判定する
請求項１から６のいずれか１項に記載のテストケース生成装置。
【請求項８】
対象システムの入力信号についての複数の入力条件と、前記対象システムの出力信号についての複数の出力条件と、ソフトウェアの構造に基づく試験手法によって処理が到達したことが確認される、前記対象システムにおける複数の到達点との組合せを示す組合せパターンを生成するパターン生成処理と、
前記パターン生成処理によって生成された前記組合せパターンが示す各組合せを対象パターンとして、前記対象パターンにおける前記入力条件及び前記出力条件のペアである入出力条件と前記到達点とを同時に確認可能な前記入力信号の値であるテストケースを生成可能か否かを判定することにより、前記複数の入力条件それぞれと、前記複数の出力条件それぞれと、前記複数の到達点それぞれとを確認可能な前記テストケースの組を特定するテストケース生成処理と
をコンピュータに実行させるテストケース生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、システム開発におけるテストケースを生成する技術に関する。
【背景技術】
【０００２】
制御装置に搭載される制御ソフトウェアは、多機能化と付加価値の向上とに応えるための制御機能の電子化により、大規模化と複雑化とが急速に進んでいる。さらに、制御ソフトウェアは、派生機種と仕向け地の違いとによるバリエーションが増加していくことが見込まれる。このような状況下で収益力を維持及び強化するには、制御ソフトウェアの開発の生産性向上に取り組む必要がある。【０００３】
制御装置を一から新規開発することは稀であり、既存の制御装置を流用して機能改良することが多い。そのため、制御ソフトウェアの開発に対して従来の開発プロセスを適用した場合、試験工程でのリソースについての課題が顕在化している。
具体的には、機能変更に対する結合試験が十分かの判断が難しく、システム試験に作業量を先送りするという課題と、機種毎に機能変更及び追加することが多いソフトウェア部品についての単体試験の作業量が膨らむという課題とがある。この課題が、開発コストを押し上げる主要因になっている。【０００４】
上記課題解決の前提として、試験工程に対する要求事項を明確にする必要がある。
試験工程に対する要求事項は、機能安全規格を参考として、以下の（要求事項１）（要求事項２）を同時に保証することとする。（要求事項１）制御ソフトウェアの外部的な機能に基づく網羅を保証すること。（要求事項２）制御ソフトウェアの内部的な構造に基づく網羅を保証すること。
機能安全規格は、具体例としては、航空分野のＤＯ−１７８Ｂと自動車分野のＩＳＯ２６２６２とがある。【０００５】
従来の試験技術としては、（要求事項１）の機能に基づく網羅と（要求事項２）の構造に基づく網羅とを別々に保証していた（特許文献１、非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２７６５５６号公報
【非特許文献】
【０００７】
【非特許文献１】橋本祐介，  中島  震，  “ソフトウェアモデル検査とテストケース生成の統合ツールチェイン”，  ソフトウェアエンジニアリングシンポジウム２０１１，  Ｓｅｐｔｅｍｂｅｒ  ２０１１．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来の試験技術では、（要求事項１）の機能に基づく網羅を保証した上で、（要求事項２）の構造に基づく網羅を保証できなかった部分を人手作業で補う。そのため、（要求事項２）の構造に基づく網羅について、作業量が膨らむとともに、作業もれをなくすことができず（要求事項２）が未達成となる恐れがある。
この発明は、（要求事項１）の機能に基づく網羅と、（要求事項２）の構造に基づく網羅とを同時に保証可能なテストケースを特定することを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係るテストケース生成装置は、
対象システムの入力信号についての複数の入力条件と、前記対象システムの出力信号についての複数の出力条件と、ソフトウェアの構造に基づく試験手法によって処理が到達したことが確認される、前記対象システムにおける複数の到達点との組合せを示す組合せパターンを生成するパターン生成部と、
前記パターン生成部によって生成された前記組合せパターンが示す各組合せを対象パターンとして、前記対象パターンにおける前記入力条件及び前記出力条件のペアである入出力条件と前記到達点とを同時に確認可能な前記複数の入力信号の値であるテストケースを生成可能か否かを判定することにより、前記複数の入力条件それぞれと、前記複数の出力条件それぞれと、前記複数の到達点それぞれとを確認可能な前記テストケースの組を特定するテストケース生成部と
を備える。
【発明の効果】
【００１０】
この発明は、入力条件と出力条件と到達点との組合せについて、入出力条件と到達点とを同時に確認可能なテストケースを生成可能か否かを判定する。これにより、（要求事項１）の機能に基づく網羅と、（要求事項２）の構造に基づく網羅とを同時に保証可能なテストケースを特定することが可能である。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係るテストケース生成装置１０の構成図。
【図２】実施の形態１に係る対象システム３０の典型的な構成例を示す図。
【図３】実施の形態１に係るテストケース生成装置１０の動作を示すフローチャート。
【図４】実施の形態１に係る入力条件３１及び出力条件３２の説明図。
【図５】実施の形態１に係る実装物１２５の説明図。
【図６】実施の形態１に係る解析用実装物３３の説明図。
【図７】実施の形態１に係る組合せパターンの説明図。
【図８】実施の形態１に係る条件付実装物３４の説明図。
【図９】実施の形態１に係る網羅情報３５の説明図。
【図１０】実施の形態１に係るテストケース３６の説明図。
【図１１】実施の形態１に係るステップＳ５のテストケース生成処理の説明図。
【図１２】実施の形態１に係るステップＳ５のテストケース生成処理の具体例を示す図。
【図１３】実施の形態１に係る構造に基づく試験手法の具体例の説明図。
【図１４】実施の形態１に係る機能に基づく試験手法（フロー）の具体例の説明図。
【図１５】実施の形態１に係る機能に基づく試験手法（値）の具体例の説明図。
【図１６】変形例１に係るテストケース生成装置１０の構成図。
【図１７】実施の形態２に係る繰り返しシステム３７の説明図。
【発明を実施するための形態】
【００１２】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を参照して、実施の形態１に係るテストケース生成装置１０の構成を説明する。
テストケース生成装置１０は、対象システム３０のテストケース３６を生成するためのコンピュータである。
テストケース生成装置１０は、プロセッサ１１と、記憶装置１２と、通信インタフェース１３と、入出力インタフェース１４とのハードウェアを備える。プロセッサ１１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１３】
プロセッサ１１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ１１は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１４】
記憶装置１２は、メモリ１２１と、ストレージ１２２とを備える。メモリ１２１は、具体的には、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。ストレージ１２２は、具体的には、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。また、ストレージ１２２は、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ＣＦ（ＣｏｍｐａｃｔＦｌａｓｈ）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤといった可搬記憶媒体であってもよい。
【００１５】
通信インタフェース１３は、外部のサーバといった装置を接続する装置である。通信インタフェース１３は、具体例としては、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＩＥＥＥ１３９４の接続端子である。
【００１６】
入出力インタフェース１４は、キーボード、マウスといった入力装置と、ディスプレイといった表示装置とを接続する装置である。入出力インタフェース１４は、具体例としては、ＵＳＢ、ＨＤＭＩ（登録商標、Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）の接続端子である。
【００１７】
テストケース生成装置１０は、機能構成要素として、条件抽出部２１と、到達信号挿入部２２と、パターン生成部２３と、テストケース生成部２４とを備える。条件抽出部２１と、到達信号挿入部２２と、パターン生成部２３と、テストケース生成部２４との各部の機能はソフトウェアにより実現される。
記憶装置１２のストレージ１２２には、テストケース生成装置１０の各部の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ１１によりメモリ１２１に読み込まれ、プロセッサ１１によって実行される。これにより、テストケース生成装置１０の各部の機能が実現される。
【００１８】
記憶装置１２のストレージ１２２は、対象システム３０の機能仕様を記憶した仕様記憶部１２３を実現する。
仕様記憶部１２３には、信号値条件１２４と、実装物１２５といったものが記憶される。信号値条件１２４は、対象システム３０の外部的な仕様における、対象システム３０の複数の入力信号それぞれについての入力条件と、対象システム３０の複数の出力信号それぞれについての出力条件とを示す。入力条件及び出力条件は、信号値の範囲と信号値の境界値といった条件である。実装物１２５は、対象システム３０を実現したプログラムコード、対象システム３０の処理の流れを表した処理モデルといった、少なくとも対象システム３０の処理の流れが特定されたものである。
【００１９】
プロセッサ１１によって実現される各部の機能の処理の結果を示す情報とデータと信号値と変数値は、メモリ１２１、又は、プロセッサ１１内のレジスタ又はキャッシュメモリに記憶される。以下の説明では、プロセッサ１１によって実現される各部の機能の処理の結果を示す情報とデータと信号値と変数値は、メモリ１２１に記憶されるものとして説明する。
【００２０】
プロセッサ１１によって実現される各機能を実現するプログラムは、記憶装置１２に記憶されているとした。しかし、このプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤといった可搬記憶媒体に記憶されてもよい。
【００２１】
図１では、プロセッサ１１は、１つだけ示されていた。しかし、プロセッサ１１は、複数であってもよく、複数のプロセッサ１１が、各機能を実現するプログラムを連携して実行してもよい。
【００２２】
図２を参照して、実施の形態１に係る対象システム３０の典型的な構成を説明する。なお、図２に示された構成は典型的なものであり、対象システム３０の構成は、これに限られるものではない。
対象システム３０は、制御ソフトウェアとハードウェアとで構成される制御装置と、制御対象とが、デジタル信号線またはアナログ信号線で接続されて構成される。制御ソフトウェアは、機能を実現するアプリケーションと、通信及びスケジューラといった機能動作の仕組みを実現する実行環境と、制御対象を制御するためのドライバとのレイヤで構成される。ハードウェアは、マイクロコンピュータと、スケジューラと等で構成される。制御対象は、センサ及びアクチュエータといったＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイスと、外部装置といった装置である。
アプリケーションは、周期的に指定順序で起動され、内部に持った状態変数、カウンタ及びバッファの値等に依存して処理内容が変更される複数の制御処理で構成される。実行環境とドライバとは、レジスタアクセスといったＩ／Ｏ処理と、制御処理よりも優先度が高い割込み処理、タイマ処理と、通信処理とで構成される。対象システム３０では、アプリケーションと実行環境及びドライバとの間でデータがやり取りされながら、時々刻々と制御演算が進められる。
【００２３】
＊＊＊動作の説明＊＊＊
図３から図１５を参照して、実施の形態１に係るテストケース生成装置１０の動作を説明する。
実施の形態１に係るテストケース生成装置１０の動作は、実施の形態１に係るテストケース生成方法に相当する。また、実施の形態１に係るテストケース生成装置１０の動作は、実施の形態１に係るテストケース生成プログラムの処理に相当する。
【００２４】
図３から図１０を参照して、実施の形態１に係るテストケース生成装置１０の全体的な動作を説明する。
（図３のステップＳ１：条件抽出処理）
条件抽出部２１は、ストレージ１２２の仕様記憶部１２３に記憶された信号値条件１２４を読み出し、図４に示すように、信号値条件１２４から、各入力信号についての入力条件３１と、各出力信号についての出力条件３２とを抽出する。これにより、複数の入力条件３１と、複数の出力条件３２とが抽出される。図４では、入力信号１〜入力信号ｎそれぞれについての入力条件３１である入力条件１〜入力条件ｎと、出力信号１〜出力信号ｍそれぞれについての出力条件３２である出力条件１〜出力条件ｍとが抽出されている。条件抽出部２１は、抽出された複数の入力条件３１及び複数の出力条件３２をメモリ１２１に書き込む。
各入力条件及び各出力条件は、ビットと、論理値と、値の列挙と、値の範囲との条件、又は、条件の組合せによって規定される。ビットは、入力信号又は出力信号が取り得るビットパターンの有効値及び無効値を示す。論理値は、入力信号又は出力信号が取り得る真偽値を示す。値の列挙は、入力信号又は出力信号が取り得る離散的な有効値及び無効値を示す。値の範囲は、入力信号又は出力信号が取り得る連続的な有効値及び無効値を示す。条件の組合せは、ビットと、論理値と、値の列挙と、値の範囲との少なくともいずれかが論理演算子で結合される。
なお、入力条件３１及び出力条件３２は、ソフトウェアの機能に基づく試験手法の確認ポイントに対応する。
【００２５】
（図３のステップＳ２：到達信号挿入処理）
到達信号挿入部２２は、ストレージ１２２の仕様記憶部１２３に記憶された実装物１２５を読み出し、対象システム３０における複数の到達点に到達信号を挿入して、解析用実装物３３を生成する。到達信号挿入部２２は、生成された解析用実装物３３をメモリ１２１に書き込む。
到達点とは、ソフトウェアの構造に基づく試験手法によって処理が到達したことが確認され、内部構造の実行可否を解析するための確認ポイントのことである。具体例としては、到達点とは、ソフトウェアの構造に基づく試験手法が分岐網羅であれば、実装物１２５における全ての分岐先である。実装物１２５が、図５に示す処理モデルである場合、解析用実装物３３は、図６に示すように、実装物１２５の全ての分岐先に到達信号が埋め込まれたものである。
なお、図５では、対象システム３０には、演算と分岐及び合流とだけが含まれているが、他にもループといった処理が含まれる場合もある。
【００２６】
（図３のステップＳ３：パターン生成処理）
パターン生成部２３は、ステップＳ１で抽出された複数の入力条件と、ステップＳ１で抽出された複数の出力条件と、ステップＳ２で生成された解析用実装物３３とをメモリ１２１から読み出す。パターン生成部２３は、複数の入力条件と、複数の出力条件と、解析用実装物３３に埋め込まれた複数の到達信号に対応する複数の到達点との組合せを示す組合せパターンを生成する。パターン生成部２３は、生成された組合せパターンをメモリ１２１に書き込む。
具体例としては、図４に示す入力条件３１及び出力条件３２が読み出され、図６に示す解析用実装物３３が読み出された場合、パターン生成部２３は図７に示す組合せパターンを生成する。その結果、組合せパターンが示す組合せとして、“条件×到達”に添え字として示された１．１．Ａ〜ｎ．ｍ．Ｚが生成される。
【００２７】
パターン生成部２３は、生成された各組合せを対象パターンとして、対象パターンにおける入力条件と、出力条件とを解析用実装物３３に埋め込むとともに、対象パターンにおける到達点に対応する到達信号だけを残した条件付実装物３４を生成する。パターン生成部２３は、生成された各組合せについての条件付実装物３４をメモリ１２１に書き込む。
具体例としては、パターン生成部２３は、対象パターンが図７に示す組合せ１．１．Ａであれば、図８に示すように、入力条件１と、出力条件１と、到達信号Ａとが埋め込まれた条件付実装物３４を生成する。
【００２８】
（図３のステップＳ４：テストケース生成処理）
テストケース生成部２４は、ステップＳ３で生成された各組合せを対象パターンとする。そして、テストケース生成部２４は、対象パターンにおける入力条件及び出力条件のペアである入出力条件と到達点とを同時に確認可能な複数の入力条件３１及び複数の出力条件３２の値であるテストケース３６を生成可能か否かを判定する。これにより、テストケース生成部２４は、ステップＳ１で抽出された複数の入力条件３１それぞれと、ステップＳ１で抽出された複数の出力条件３２それぞれと、ステップＳ２で挿入された複数の到達信号に対応する複数の到達点それぞれとを確認可能なテストケース３６の組を特定する。
テストケース生成部２４は、図９に示すように、テストケース３６を生成可能か否かを判定した結果に応じて、組合せが仕様範囲内と仕様想定外と実行不能とのいずれであるかを示す網羅情報３５を生成する。
また、テストケース生成部２４は、生成可能と判定された組合せから、複数の入力条件３１それぞれと、複数の出力条件３２それぞれと、複数の到達点それぞれとを確認可能な組合せを抽出して、抽出された組合せについてテストケース３６を生成する。テストケース３６は、時間軸上の入力信号列及び出力信号列である。具体例としては、テストケース３６は、図１０に示すように、時間ステップ毎の、入力信号１〜入力信号ｎの値と、出力信号１〜出力信号ｍの値とである。図１０の各テストケース３６の例が、組合せパターンが示すいずれかの組合せに対応している。
【００２９】
図１１を参照して、実施の形態１に係るステップＳ４のテストケース生成処理を説明する。
図１１に示す処理は、各組合せを対象パターンとして実行される。図１１に示す処理が実行されることにより、試験目的及び確認内容に示されるように、対象パターンについての、要求の実現度合いと、期待通りの動作をしているかとが特定される。
要求の実現度合いとしては、各組合せが仕様範囲内と仕様想定外と実行不能とのいずれであるかが特定される。仕様範囲内とは、構造網羅を解析した結果、実行可能であり、意図した要求事項を実現した場合である。仕様想定外とは、構造網羅を解析した結果、実行されず、意図しない要求事項が混入した場合である。実行不能とは、構造網羅を解析した結果、実行不可能な場合である。
期待通りの動作をしているかとしては、成功と失敗と要確認とのいずれであるかが特定される。成功とは、入力信号として特定の値を与えた場合の出力信号の値が期待値と一致した場合である。要確認とは、入力信号として特定の値を与えた場合の出力信号の値が期待値と不一致の場合であり、かつ、テストケースの対象となる部分が機能変更部分の場合である。失敗とは、入力信号として特定の値を与えた場合の出力信号の値が期待値と不一致の場合であり、かつ、テストケースの対象となる部分が機能変更部分に関さず実装変更部分に関するものである場合である。
【００３０】
図１１に示す処理は、手法１：構造に基づく試験手法と、手法２：機能と構造に基づく試験手法（緩い）と、手法３：機能と構造に基づく試験手法（厳しい）と、手法４：機能に基づく試験手法（フロー）と、手法５：機能に基づく試験手法（値）とが用いられる。
手法１：構造に基づく試験手法とは、ソフトウェアの内部的な構造の実行可否を基準にする方法である。手法１は、具体例としては、分岐網羅、ＭＣ／ＤＣ（Ｍｏｄｉｆｉｅｄ  Ｃｏｎｄｉｔｉｏｎ／Ｄｅｃｉｓｉｏｎ  Ｃｏｖｅｒａｇｅ）である。なお、手法１は、構造に基づく試験手法を１つだけではなく、複数用いてもよい。
手法２：機能と構造に基づく試験手法（緩い）とは、ソフトウェアの機能に基づく試験手法とソフトウェアの構造に基づく試験手法との両方の基準を同時に満たす方法のうち、機能に関する基準が相対的に緩いものである。手法２は、具体例としては、同値分割と分岐網羅との組合せである。なお、手法１は、機能及び構造に基づく試験手法をそれぞれ１つだけではなく、複数用いてもよい。
手法３：機能と構造に基づく試験手法（厳しい）とは、ソフトウェアの機能に基づく試験手法とソフトウェアの構造に基づく試験手法との両方の基準を同時に満たす方法のうち、機能に関する基準が相対的に厳しいものである。つまり、第２手法よりも基準が厳しいソフトウェアの機能に基づく試験手法と、ソフトウェアの構造に基づく試験手法との両方の基準を同時に満たす方法である。手法３は、具体例としては、境界値分析と分岐網羅との組合せである。なお、手法１は、機能及び構造に基づく試験手法をそれぞれ１つだけではなく、複数用いてもよい。
手法４：機能に基づく試験手法（フロー）とは、ソフトウェアの機能に基づく試験手法のうち、外部的な機能仕様において、対象システム３０の処理フローに影響を与える入力値を基準としたものである。手法４は、具体例としては、代表値組合せ（境界値）である。なお、手法１は、機能に基づく試験手法を１つだけではなく、複数用いてもよい。
手法５：機能に基づく試験手法（値）とは、ソフトウェアの機能に基づく試験手法のうち、外部的な機能仕様において、出力信号の値と期待値との一致を基準にする方法である。手法５は、具体例としては、Ｂａｃｋ−ｔｏ−Ｂａｃｋテストである。
【００３１】
したがって、図１１に示す処理は、図１２に示すように具体化することが可能である。図１２では、手法１を分岐網羅とし、手法２を同値分割と分岐網羅との組合せとし、手法３を同値・境界値と分岐網羅との組合せとし、手法４を代表値組合せ（境界値）とし、手法５をＢａｃｋ−ｔｏ−Ｂａｃｋテストとしている。なお、同値・境界値は、同値分割と境界値分析とを組み合わせた方法である。手法３では、分岐網羅を同時に満たすには、代表値組合せ（境界値）では厳しすぎるため、同値も含めて条件を弱めている。
なお、ここで用いられるソフトウェアの構造に基づく試験手法は、ステップＳ２で用いられる試験手法と同じであることが望ましい。
【００３２】
手法１〜３の構造に基づく試験手法の具体例である分岐網羅の判断条件は、図１３に示す通りである。
手法２〜４の機能に基づく試験手法（フロー）の具体例である同値分割、境界値分析、原因結果グラフ、代表値組合せ（境界値）の判断条件は、図１４に示す通りである。なお、同値分割には、入力条件の内容及び出力条件の内容が３行あるが、同じ行に記載された入力条件の内容と出力条件の内容とが対応していることを意味する。つまり、一番上の行であれば、全ての入力信号が有効範囲である場合に、全ての出力信号が有効範囲であるという条件になる。同値分割を用いる場合、３行それぞれの条件に対応するテストケース３６が生成できる場合に生成可能と判定され、１行の条件についてでもテストケース３６が生成できない場合には、生成不可能と判定される。境界値分析についても、同値分割の場合と同様である。
手法５の機能に基づく試験手法（値）の具体例であるＢａｃｋ−ｔｏ−Ｂａｃｋテストの判断条件は図１５に示す通りである。なお、ベースラインとは、レビュー又は試験等の結果が承認され、構成管理された対象システム３０のバージョンのことである。そのため、機能変更部分を除いて試験の対象となるバージョンと、ベースラインとの出力信号の値は一致することが原則である。また、入出力条件は、機能に基づく試験手法（フロー）と同様となっているが、これは手法４における入出力条件と同じ条件が適用されるということである。
【００３３】
以下の説明では、手法１から手法５が順に実行されるという流れで説明する。しかし、これらの手法の実行順序はこれに限らず、図１１及び図１２で矢印によって示された手法間の依存関係を満たしていれば、どのような順序で実行されてもよい。
【００３４】
まず、テストケース生成部２４は、手法１に対してテストケース３６を生成可能であるか否かを判定する。
図１２に示す例であれば、テストケース生成部２４は、分岐網羅の条件を満たすテストケース３６を生成可能であるか否かを判定する。具体的には、テストケース生成部２４は、対象パターンにおける入力条件の条件下で、対象パターンにおける到達点を通るテストケース３６を生成する。テストケース生成部２４は、テストケース３６が生成できれば、生成可能と判定し、生成できなければ、生成不可と判定する。テストケース生成部２４は、対象パターンにおける入力条件の条件下で、テストケース３６として生成し、全ての到達点について通るか否か判定することにより、テストケース３６を生成可能か否か判定できる。
テストケース生成部２４は、テストケース３６を生成不可な場合には、要求の実現度合いを実行不能と判定する。
【００３５】
続いて、テストケース生成部２４は、手法１に対してテストケース３６を生成可能な場合、手法２に対してテストケース３６を生成可能か否か判定する。
図１２に示す例であれば、テストケース生成部２４は、同値分割と分岐網羅との両方の条件を同時に満たすテストケース３６を生成可能であるか否かを判定する。具体的には、テストケース生成部２４は、対象パターンにおける入力条件及び出力条件の下で、図１４に示す同値分割の３行それぞれを満たし、かつ、対象パターンにおける到達点を通るテストケース３６を生成する。テストケース生成部２４は、テストケース３６が生成できれば、生成可能と判定し、生成できなければ、生成不可と判定する。テストケース生成部２４は、対象パターンにおける入力条件及び出力条件の下で、図１４に示す同値分割の各行を満たすテストケース３６を生成し、全ての到達点について通るか否か判定することにより、テストケース３６を生成可能か否か判定できる。
テストケース生成部２４は、テストケース３６を生成不可な場合には、要求の実現度合いを仕様想定外と判定する。
【００３６】
続いて、テストケース生成部２４は、手法２に対してテストケース３６を生成可能な場合、手法３に対してテストケース３６を生成可能か否か判定する。
図１２に示す例であれば、境界値分析と分岐網羅との両方の条件を同時に満たすテストケース３６を生成可能であるか否かを判定する。具体的には、テストケース生成部２４は、対象パターンにおける入力条件及び出力条件の下で、図１４に示す境界値分析の４行それぞれを満たし、かつ、対象パターンにおける到達点を通るテストケース３６を生成する。テストケース生成部２４は、テストケース３６が生成できれば、生成可能と判定し、生成できなければ、生成不可と判定する。テストケース生成部２４は、対象パターンにおける入力条件及び出力条件の下で、図１４に示す境界値分析の各行を満たすテストケース３６を生成し、全ての到達点について通るか否か判定することにより、テストケース３６を生成可能か否か判定できる。
テストケース生成部２４は、テストケース３６を生成不可な場合には、要求の実現度合いを仕様想定外と判定する。
【００３７】
続いて、テストケース生成部２４は、手法３に対してテストケース３６を生成可能な場合、手法４に対してテストケース３６を生成可能か否か判定する。なお、手法４は、必要に応じて補完的に行われるものであり、省略することも可能である。
図１２に示す例であれば、代表値組合せ（境界値）を満たすテストケース３６を生成可能であるか否かを判定する。具体的には、テストケース生成部２４は、対象パターンにおける入力条件及び出力条件の下で、図１４に示す代表値組合せ（境界値）を満たすテストケース３６を生成する。テストケース生成部２４は、テストケース３６が生成できれば、生成可能と判定し、生成できなければ、生成不可と判定する。テストケース生成部２４は、対象パターンにおける入力条件及び出力条件の下で、図１４に示す代表値組合せ（境界値）を満たすテストケース３６を生成する処理を必要に応じて補完的に行うことにより、テストケース３６を生成可能か否か判定できる。
【００３８】
続いて、テストケース生成部２４は、手法４に対してテストケース３６を生成可能な場合、手法５に対して手法４で生成されたテストケース３６を入力として、出力信号の値が期待値と一致するか否か判定する。
図１２に示す例であれば、テストケース生成部２４は、手法４で生成されたテストケース３６の入力信号を入力として、Ｂａｃｋ−ｔｏ−Ｂａｃｋテストを実行して、出力信号の値が期待値と一致するか否か判定する。
テストケース生成部２４は、出力信号の値が期待値と一致する場合には、期待通りに動作しているかを成功と判定する。一方、テストケース生成部２４は、出力信号の値が期待値と一致しない場合には、テストケースの対象となる部分が機能変更部分のときは、期待通りに動作しているかを要確認とし、テストケースの対象となる部分が機能変更部分でなく実装変更部分のときには、期待通りに動作しているかを失敗とする。
【００３９】
テストケース生成部２４は、以上の手法４に対して生成されたテストケース３６から、入力条件３１それぞれと、出力条件３２それぞれと、到達点それぞれとに対応する少なくとも１つのテストケース３６を抽出する。なお、手法４を省略した場合には、テストケース生成部２４は、手法３に対して生成されたテストケース３６からテストケース３６を抽出する。これにより、（要求事項１）の機能に基づく網羅と、（要求事項２）の構造に基づく網羅とを同時に保証可能なテストケース３６を得ることができる。
【００４０】
なお、テストケース生成部２４は、入力条件３１それぞれと、出力条件３２それぞれと、到達点それぞれとに対応する少なくとも１つのテストケース３６が生成された時点で、図１１に示す処理を止めてもよい。これにより、組合せ数が膨大になった場合に、全組合せについて処理を行い、処理時間がかかるといったことを防止できる。
【００４１】
＊＊＊実施の形態１の効果＊＊＊
以上のように、実施の形態１に係るテストケース生成装置１０は、（要求事項１）の機能に基づく網羅と、（要求事項２）の構造に基づく網羅とを同時に保証可能なテストケース３６を得ることができる。そのため、漏れのないテストケース３６、つまり、必要十分なテストケース３６を得ることができる。
製品開発プロジェクトではテストケース３６の数が膨大になってしまう傾向にある。しかし、実施の形態１に係るテストケース生成装置１０では、必要十分なテストケース３６を得ることができるため、試験作業量を減らすことができ、人員リソースを有効活用することにも寄与する。
【００４２】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態１では、テストケース生成装置１０の各部の機能がソフトウェアで実現された。しかし、変形例１として、テストケース生成装置１０の各部の機能はハードウェアで実現されてもよい。この変形例１について、実施の形態１と異なる点を説明する。
【００４３】
図１６を参照して、変形例１に係るテストケース生成装置１０の構成を説明する。
各部の機能がハードウェアで実現される場合、テストケース生成装置１０は、プロセッサ１１と記憶装置１２とに代えて、処理回路１５を備える。処理回路１５は、テストケース生成装置１０の各部の機能及び記憶装置１２の機能を実現する専用の電子回路である。
【００４４】
処理回路１５は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が想定される。
各部の機能を１つの処理回路１５で実現してもよいし、各部の機能を複数の処理回路１５に分散させて実現してもよい。
【００４５】
＜変形例２＞
変形例２として、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。つまり、テストケース生成装置１０の各部のうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
【００４６】
プロセッサ１１と記憶装置１２と処理回路１５とを、総称して「プロセッシングサーキットリー」という。つまり、各部の機能は、プロセッシングサーキットリーにより実現される。
【００４７】
実施の形態２．
実施の形態２は、１つの組合せについて、テストケース３６を生成可能か否かを複数回判定する点が実施の形態１と異なる。実施の形態２では、この異なる点を説明する。
【００４８】
対象システム３０が内部状態を保持しており、保持された内部状態に応じて、演算、分岐、ループといった処理が変化する場合がある。そのため、１つの組合せについて、テストケース３６を生成可能か否かを１度だけ判定しただけでは、正確な判定ができない場合がある。つまり、仕様想定外又は実行不能と判定された組合せについても、内部状態が変化することにより、仕様範囲内になり、テストケース３６を生成できる場合がある。
【００４９】
＊＊＊動作の説明＊＊＊
図３及び図１７を参照して、実施の形態２に係るテストケース生成装置１０の動作を説明する。
実施の形態２に係るテストケース生成装置１０の動作は、実施の形態２に係るテストケース生成方法に相当する。また、実施の形態２に係るテストケース生成装置１０の動作は、実施の形態２に係るテストケース生成プログラムの処理に相当する。
【００５０】
図３のステップＳ１からステップＳ３の処理は、実施の形態１と同じである。
【００５１】
（図３のステップＳ４：テストケース生成処理）
テストケース生成部２４は、図１７に示すように、時間軸を対象システム３０の処理を１回実行するための離散的な時間ステップに分割する。そして、対象パターンについての条件付実装物３４を時間ステップの数だけ並べて１つの繰り返しシステム３７を構成する。この際、繰り返しシステム３７を構成する各対象システム３０は、前の時間ステップの処理が終わった時点における内部状態を引き継ぐものとする。また、入力信号及び出力信号は、時間ステップ毎に異なるものとして扱う。
テストケース生成部２４は、繰り返しシステム３７について、対象パターンにおける入力条件及び出力条件のペアである入出力条件と到達点との少なくともいずれかを確認可能なテストケース３６を生成可能か否かを、実施の形態１と同様に判定する。これにより、例えば、時間ステップ１ではテストケース３６を生成できない場合でも、時間ステップ２ではテストケース３６を生成できるといったことが起こり得る。
【００５２】
時間ステップの数は、対象システム３０で正確な判定に必要と想定される数と、テストケース３６を生成するための処理時間との関係から、利用者によって決定される。
【００５３】
＊＊＊実施の形態２の効果＊＊＊
以上のように、実施の形態２に係るテストケース生成装置１０は、繰り返しシステム３７を構成した上で、テストケース３６を生成可能か否かを判定する。これにより、実施の形態１よりも正確にテストケース３６が生成可能か否かを判定することができる。
【符号の説明】
【００５４】
１０  テストケース生成装置、１１  プロセッサ、１２  記憶装置、１２１  メモリ、１２２  ストレージ、１２３  仕様記憶部、１２４  信号値条件、１２５  実装物、１３  通信インタフェース、１４  入出力インタフェース、１５  処理回路、２１  条件抽出部、２２  到達信号挿入部、２３  パターン生成部、２４  テストケース生成部、３０  対象システム、３１  入力条件、３２  出力条件、３３  解析用実装物、３４  条件付実装物、３５  網羅情報、３６  テストケース、３７  繰り返しシステム。
【図１】
2017145300.tif 000003
【図２】
2017145300.tif 000004
【図３】
2017145300.tif 000005
【図４】
2017145300.tif 000006
【図５】
2017145300.tif 000007
【図６】
2017145300.tif 000008
【図７】
2017145300.tif 000009
【図８】
2017145300.tif 000010
【図９】
2017145300.tif 000011
【図１０】
2017145300.tif 000012
【図１１】
2017145300.tif 000013
【図１２】
2017145300.tif 000014
【図１３】
2017145300.tif 000015
【図１４】
2017145300.tif 000016
【図１５】
2017145300.tif 000017
【図１６】
2017145300.tif 000018
【図１７】
2017145300.tif 000019
【国際調査報告】
2017145300.tif 000020
2017145300.tif 000021
2017145300.tif 000022
2017145300.tif 000023