(57)【要約】  ソフトウェア検証用の状態ベースのテストケース生成のためのシステム及び方法を開示する。１つの実施形態は、テストケースを生成用の車両ソフトウェアのプログラムブロックに対して第１の入力と、状態ベースの入力を含む第１の入力タイプとを決定することと、第１の入力タイプに基づいて、第１の入力のための値の順列を決定することと、状態ベースの入力によりテストケースを実行することにおいて、プログラムブロックに対して第１の入力のための値の順列を適用することを含むテストケースを実行することとを含む。いくつかの実施形態は、テストコンピューティング装置によって、テストケースが所定レベルの改良条件／判定カバレッジ（ＭＣ／ＤＣ）を満たすか否かを決定することと、テストケースが所定レベルのＭＣ／ＤＣを満たすか否かの表示を提供することとを含む。【選択図】図４
2015526826.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア検証用の状態ベースのテストケース生成のための方法であって、
テストコンピューティング装置によって、テストケースを生成するためのソフトウェアのプログラムブロックに対して第１の入力と、状態ベースの入力を含む第１の入力タイプとを決定することと、
前記テストコンピューティング装置によって、前記第１の入力タイプに基づいて、前記第１の入力のための値の順列を決定すること、
前記テストコンピューティング装置によって、前記状態ベースの入力により前記テストケースを実行することにおいて、前記プログラムブロックに対して前記第１の入力のための値の順列を適用することを含む前記テストケースを実行することと、
テストコンピューティング装置によって、前記テストケースが所定レベルの改良条件／判定カバレッジ（ＭＣ／ＤＣ）を満たすか否かを決定することと、
前記テストコンピューティング装置によって、前記テストケースが前記所定レベルのＭＣ／ＤＣを満たすか否かの表示を提供することと
を備える方法。
【請求項２】
前記テストコンピューティング装置によって、前記プログラムブロックに対して、第２の入力と第２の入力タイプとを決定することをさらに備え、
前記第２の入力タイプは、非状態ベースの入力を含み、
前記テストケースを実行することは、定数、ランダム、ランダムな整数、ランプ、シーケンス、遷移、及び順列のうちの少なくとも１つに従って前記第１の入力の各順列に対して非状態ベースの入力のための値を選択することをさらに備える請求項１に記載の方法。
【請求項３】
前記テストコンピューティング装置によって、前記所定レベルのＭＣ／ＤＣを決定することをさらに備える請求項１に記載の方法。
【請求項４】
前記テストコンピューティング装置によって、前記テストケースを生成するための前記ソフトウェアの前記プログラムブロックを決定することをさらに備える請求項１に記載の方法。
【請求項５】
前記テストコンピューティング装置によって、前記ソフトウェアのすべてのプログラムブロックに対してテストケースを決定することをさらに備える請求項１に記載の方法。
【請求項６】
前記テストコンピューティング装置よって、前記ソフトウェアが適切にプログラミングされているか否かを決定するテストケースを用いることをさらに備える請求項１に記載の方法。
【請求項７】
テストコンピューティング装置によって、ユーザが第１の入力及び第１の入力タイプを入力するためのユーザインタフェース提供することをさらに備える請求項１に記載の方法。
【請求項８】
ソフトウェア検証用の状態ベースのテストケース生成のためのシステムであって、テストコンピューティング装置によって実行される場合に、
テストケースを生成用の車両ソフトウェアのプログラムブロックに対して第１の入力と、状態ベースの入力を含む第１の入力タイプとを決定することと、
前記プログラムブロックに対して、第２の入力と、非状態ベースの入力を含む第２の入力タイプとを決定することと、
前記第１の入力タイプに基づいて、前記第１の入力のための値の順列を決定することと、
前記第２の入力タイプに基づいて、前記第２の入力に対して値を割り当てるためのメカニズムを決定することと、
前記状態ベース入力と非状態ベース入力によって前記テストケースを実行することであって、前記テストケースの実行は、前記プログラムブロックへの前記第１の入力に対する順列の値を前記第２の入力に対する値に適用することを含み、
前記テストケースが所定レベルの改良条件／判定カバレッジ（ＭＣ／ＤＣ）を満たすか否かを決定することと、
前記テストケースが前記所定レベルの前記ＭＣ／ＤＣを満たすか否かの表示を提供することと
を、少なくとも前記テストコンピューティング装置に実行させるロジックを記憶するメモリを備えるテストコンピューティング装置を備えるシステム。
【請求項９】
前記第２の入力に対して値を割り当てるための前記メカニズムは、定数、ランダム、ランダムな整数、ランプ、シーケンス、遷移、及び順列の入力タイプのうちの少なくとも１つを備える請求項８に記載のシステム。
【請求項１０】
前記ロジックは、前記テストコンピューティング装置に、さらに、第１の入力と、第１の入力タイプと、第２の入力と、第２の入力タイプとを受信するためのユーザインタフェースを提供させる請求項８に記載のシステム。
【請求項１１】
前記ユーザインタフェースは、前記テストケースのグラフ表示を提供するためのテストケースプロットオプションをさらに備える請求項１０のシステム。
【請求項１２】
前記ユーザインタフェースは、前記第１の入力のテストのための複数のシーケンスを生成するためのシーケンス追加オプションをさらに備える請求項１０のシステム。
【請求項１３】
前記ロジックは、前記テストコンピューティング装置に、前記所定レベルのＭＣ／ＤＣをさらに決定させる請求項８に記載のシステム。
【請求項１４】
前記車両ソフトウェアを記憶する車両コンピューティング装置をさらに備え、前記車両コンピューティング装置は、前記車両ソフトウェア及び前記テストケースのうちの少なくとも１つを前記テストコンピューティング装置と通信するように構成される請求項８に記載のシステム。
【請求項１５】
テストコンピューティング装置によって実行される場合に、
テストするために車両の車両ソフトウェアからプログラムブロックを選択することと、
前記テストケースを生成するための前記プログラムブロックに対して第１の入力と、状態ベースの入力を含む第１の入力タイプとを決定することと、
前記プログラムブロックに対して、第２の入力と、非状態ベースの入力を含む第２の入力タイプとを決定することと、
前記第１の入力タイプに基づいて、前記第１の入力のための値の順列を決定することと、
前記第２の入力タイプ上に基づいて、前記第２の入力に対して値を割り当てるためのメカニズムを決定することと、
前記状態ベース入力と非状態ベース入力によって前記テストケースを実行することであって、前記テストケースの実行は、前記プログラムブロックへの前記第１の入力に対する順列の値を前記第２の入力に対する値に適用することを含み、
前記テストケースが所定レベルの改良条件／判定カバレッジ（ＭＣ／ＤＣ）を満たすか否かを決定することと、
前記テストケースが前記所定レベルの前記ＭＣ／ＤＣを満たすか否かの表示を提供することと
を少なくとも前記テストコンピューティング装置に実行させるロジックを記憶する非一時的なコンピュータ読み取り可能媒体。
【請求項１６】
前記ロジックは、前記テストコンピューティング装置に、前記所定レベルのＭＣ／ＤＣをさらに決定させる請求項１５に記載の非一時的なコンピュータ読み取り可能媒体。
【請求項１７】
前記非状態ベースの入力は、定数、ランダム、ランダムな整数、ランプ、シーケンス、遷移、及び順列の入力タイプのうちの少なくとも１つを備える請求項１５に記載の非一時的なコンピュータ読み取り可能媒体。
【請求項１８】
前記ロジックは、前記テストコンピューティング装置に、さらに、第１の入力と、第１の入力タイプと、第２の入力と、第２の入力タイプとを受信するためのユーザインタフェースを提供させる請求項１５に記載の非一時的なコンピュータ読み取り可能媒体。
【請求項１９】
前記ロジックは、前記テストコンピューティング装置に、さらに、第１の入力と、第１の入力タイプと、第２の入力と、第２の入力タイプとを受信するためのユーザインタフェースを提供させる請求項１５に記載の非一時的なコンピュータ読み取り可能媒体。
【請求項２０】
前記ユーザインタフェースは、前記第１の入力のテストのための複数のシーケンスを生成するためのシーケンス追加オプションをさらに備える請求項１９に記載の非一時的なコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載される実施形態は、概して、ソフトウェアの検証用のテストケースを生成することに関し、より具体的には、テストケースを生成するために状態ベースの決定を用いることに関する。
【背景技術】
【０００２】
背景として、多くの車両は、何らかの機能を提供する統合化ソフトウェアを有する。車両が消費者に販売される前に、ソフトウェアが不適当なレベルのエラーを伴わずに機能を実行することを保証するために、ソフトウェアが検証される。ソフトウェア検証は、車両の使用をシミュレートすることを目的とする制御環境においていくつかのテストケースによりソフトウェアをテストすることを含むことができる。現在のテストケース生成ツールは、国際標準化機構（ＩＳＯ）標準規格／推奨に準拠するためのテストケース生成の２つのメインクラスの方法を利用する。
【０００３】
第１クラスは、ソフトウェアの正確性を証明するために数学を利用する形式的方法として説明され得る。但し、この第１クラスは、非線形数学、ルックアップテーブル、状態空間爆発、計算上の限界などが複雑なソフトウェアにおいて発生するという事実のために、多くの制限を有する。従って、この第１クラスは、多くの場合、小さなサイズの複雑でないソフトウェアに限定される。第２のクラスは、ターゲットとされたランダムテストケースを通じて改良条件／判定カバレッジ（ＭＣ／ＤＣ（modified condition/decision coverage））を提供するランダムテストケース生成として説明され得る。但し、ランダムテストケース生成は、複雑な若しくは大規模なソフトウェアに対して許容できるＭＣ／ＤＣを実現するには不充分な種類のテストケースを提供するだろう。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ソフトウェア検証用の状態ベースのテストケース生成のためのシステム及び方法を開示する。方法の１つの実施形態は、テストケースを生成するための車両ソフトウェアのプログラムブロックに対して第１の入力及び第１の入力タイプを決定することと、第１の入力タイプに基づいて、第１の入力のための値の順列（permutation）を決定することと、状態ベースの入力によりテストケースを実行することとを含み、テストケースを実行することは、プログラムブロックに対して第１の入力のための値の順列を適用することを含む。いくつかの実施形態は、テストケースが改良条件／判定カバレッジ（ＭＣ／ＤＣ）の所定レベルを満たすか否かを決定することと、テストケースがＭＣ／ＤＣの所定レベルを満たすか否かの表示を提供することとを含む。
【課題を解決するための手段】
【０００５】
別の実施形態において、システムは、テストコンピューティング装置によって実行される場合に、テストコンピューティング装置に、テストケースを生成するための車両ソフトウェアのプログラムブロックに対して第１の入力及び第１の入力タイプを決定させ、プログラムブロックに対して第２の入力及び第２の入力タイプを決定させ、第１の入力タイプに基づいて、第１の入力のための値の順列を決定させる、ロジックを記憶するメモリを有するテストコンピューティング装置を含む。いくつかの実施形態において、ロジックは、テストコンピューティング装置に、第２の入力のための値を割り当てるためのメカニズムを決定させ、状態ベースの入力及び非状態ベースの入力によりテストケースを実行させ、テストケースが改良条件／判定カバレッジ（ＭＣ／ＤＣ）の所定レベルを満たすか否かを決定させる。
【０００６】
さらに別の実施形態において、非一時的なコンピュータ読み取り可能媒体は、テストコンピューティング装置に、テストする車両の車両ソフトウェアからプログラムブロックを選択させ、テストケースを生成するためのプログラムブロックに対して、第１の入力及び第１の入力タイプを決定させ、プログラムブロックに対して、第２の入力及び第２の入力タイプを決定させる。いくつかの実施形態において、非一時的なコンピュータ読み取り可能媒体は、テストコンピューティング装置に、第１の入力タイプに基づいて、第１の入力のための値の順列を決定させ、第２の入力タイプ上に基づいて、第２の入力に対して値を割り当てるためのメカニズムを決定させ、状態ベースの入力及び非状態ベースの入力によりテストケースを実行させ、テストケースを実行することは、第２の入力に対する値とともにプログラムブロックに対して第１の入力のための値の順列を適用することを含む。
【０００７】
本開示の実施形態によって提供される、これらの特徴及び追加的な特徴は、図面とともに、以下の詳細な説明に鑑みて、さらに充分に理解されることになる。
【０００８】
図面に示す実施形態は、事実上、例示的且つ模範的であり、本開示を限定するようには意図しない。例示的な実施形態の以下の詳細な説明は、同様の構造物が同様の参照符号によって示される以下の図面とともに読むことで、理解されることができる。
【図面の簡単な説明】
【０００９】
【図１】本明細書に開示の実施形態による、車両内のソフトウェアをテストするために利用されてもよい、テストコンピューティング装置を概略的に表現する。
【図２Ａ】本明細書に開示の実施形態による、複数のロジック層を図示する、制御仕様構造を概略的に表現する。
【図２Ｂ】本明細書に開示の実施形態による、複数のロジック層を図示する、制御仕様構造を概略的に表現する。
【図２Ｃ】本明細書に開示の実施形態による、複数のロジック層を図示する、制御仕様構造を概略的に表現する。
【図３Ａ】本明細書に開示の実施形態による、車両内の機能の実施ための論理回路を表現する。
【図３Ｂ】本明細書に開示の実施形態による、テストケースを生成するために利用されてもよい、図３Ａからの論理回路から決定されてもよい入力を表現する。
【図４】本明細書に開示の実施形態による、状態ベースのテストケースを生成するために利用されてもよいユーザインタフェースを表現する。
【図５】本明細書に開示の実施形態による、状態ベースのテストケースを生成ためのフローチャートを表現する。
【発明を実施するための形態】
【００１０】
本明細書に開示の実施形態は、ソフトウェア検証用のテストケースを生成するためのシステム及び方法を含む。従って、これらの実施形態は、ＭＣ／ＤＣに対してモデル入力特性に基づいたテストケースを生成するコンピュータで実現される方法に関する。実施形態は、国際標準規格／推奨（例えばＩＳＯ２６２６２）に準拠するためにソフトウェアを検証するために利用することができる。概して、信頼できるソフトウェアに対する入力は、状態変数又は非状態変数として分類されることができる。ソフトウェア内の状態変数は、システムの状態又は演算の結果を示すフラグ又はモード変数として説明され得る。状態変数は、条件（condition）及び判定（decision）を表現するためにソフトウェアにおいて用いられる。条件は、例えば、オン／オフ、０／１、又は同種のものなどの表示であってもよい。判定は、概して、例えば、ａ＆ｂが「ＯＮ」であれば、機能を実行するなど、１つ以上のブール演算子によって演算される条件から構成される。
【００１１】
本明細書に開示のテストケースは、何らかの条件がテストケースの検証処理の間に少なくとも一度、真であるように生成されてもよい。検証の間に満たす条件は、各判定は、すべての結果を試み、判定内の各条件は、すべての起こり得る結果の値を想定し、各出入口点が起動され、判定内の各条件は、判定の結果に独立して影響を与えるように示されることを含んでもよい。
【００１２】
非状態変数は、計算値、制御値、及びセンサ値を含む。非状態変数に関しては、本明細書に開示の実施形態は、ソフトウェアのテストのためのテストケース値を提供するために、定数、ランダム、ランダムな整数、ランプ、シーケンス、遷移、及び順列及び同種のものなどのメカニズムを利用することができる。
【００１３】
いくつかの実施形態において、擬状態変数は、状態変数として扱われることができる。擬状態変数は、状態変数に類似した方式で判定に利用される非状態変数である。例えば、非状態変数が閾値を超える場合、機能を実行することができる（例えば、非状態変数は、０〜２００の範囲を有することができ、非状態変数が５０を超える場合に判定を行なうことができる）。例えば、非状態変数が閾値を超える場合、機能を実行することができる（例えば、非状態変数は、０〜２００の範囲を有することができ、非状態変数が５０を超える場合に判定を行なうことができる）。例として、いくつかの実施形態において、変数は２つの状態、５０＝オン及び５１＝オフに設定されてもよい。
【００１４】
結果として、本明細書に開示の実施形態は、どの入力が、状態ベースの入力及び非状態ベースの入力として識別され得るのかを決定する。状態ベースの入力は、その状態ベースの入力にとって可能な入力値の順列ごとにテストされてもよい。さらに、非状態ベースの入力は、乱数、数列、及び／又は他の値を用いてテストされてもよい。これらの入力決定及び入力値選択に基づき、車両ソフトウェアは、より高い効率で最大限のＭＣ／ＤＣによりテストされることができる。
【００１５】
ここで図面を参照すると、図１は、本明細書に開示の実施形態による、車両ソフトウェア１４４ｃをテストするために利用されてもよい、テストコンピューティング装置１１２を概略的に表現する。図示した実施形態において、テストコンピューティング装置１１２は、プロセッサ１３０と、入出力ハードウェア１３２と、ネットワークインタフェースハードウェア１３４と、データ記憶コンポーネント１３６と、メモリコンポーネント１４０とを含む。メモリコンポーネント１４０は、揮発性及び／又は不揮発性メモリとして構成され、そのため、ランダムアクセスメモリ（ＳＲＡＭ、ＤＲＡＭ及び／又は他のタイプのＲＡＭを含む）、フラッシュメモリ、セキュアデジタル（ＳＤ）メモリ、レジスタ、コンパクトディスク（ＣＤ）、ディジタルバーサタイルディスク（ＤＶＤ）、及び／又は他のタイプの非一時的なコンピュータ読み取り可能媒体を含んでもよい。特定の実施形態に応じて、非一時的なコンピュータ読み取り可能媒体は、テストコンピューティング装置１１２及び／又はテストコンピューティング装置１１２とともに外部に存在してもよい。
【００１６】
さらに、メモリコンポーネント１４０は、演算ロジック１４２、車両ソフトウェアテストロジック１４４ａ、テストケースロジック１４４ｂ、及び車両ソフトウェア１４４ｃを記憶してもよい。車両ソフトウェア１４４ｃは、テストされているソフトウェアの一部であってもよい。同様に、車両ソフトウェアテストロジック１４４ａ及びテストケースロジック１４４ｂは、各々、例として、各々がコンピュータプログラム、ファームウェア、及び／又はハードウェアとして具現されてもよい複数の異なるロジックピースを含んでもよい。ローカルインタフェース１４６も、また、図１に含まれており、テストコンピューティング装置１１２のコンポーネントの中の通信を容易にする、バス又は他のインタフェースとして実装されてもよい。
【００１７】
プロセッサ１３０は、（データ記憶コンポーネント１３６及び／又はメモリコンポーネント１４０などから）命令を受信して実行するために動作可能な任意の処理コンポーネントを含んでもよい。入出力ハードウェア１３２は、モニタ、測位システム、キーボード、マウス、プリンタ、画像取り込み装置、マイクロホン、スピーカ、ジャイロスコープ、コンパス、及び／又はデータを受信し、送信し、及び又は示すための他の装置を含んでもよい、及び／又は、これらの装置とのインタフェースを確立するように構成されてもよい。ネットワークインタフェースハードウェア１３４は、アンテナ、モデム、ＬＡＮポート、ワイヤレスフィデリティ（Ｗｉ−Ｆｉ）カード、ＷｉＭａｘカード、モバイル通信ハードウェア、及び／又は他のネットワーク及び／又は装置と通信することための他のハードウェアを含む任意の有線若しくは無線のネットワーキングハードウェアを含んでもよいし、及び／又は、これらのネットワーキングハードウェアと通信するように構成されてもよい。この接続によって、テストコンピューティング装置１１２と他のコンピューティング装置との間の通信が容易になる。
【００１８】
演算ロジック１４２は、テストコンピューティング装置１１２のコンポーネントを管理するためのオペレーティングシステム及び／又は他のソフトウェアを含んでもよい。同様に、前述のように、車両ソフトウェアテストロジック１４４ａは、メモリコンポーネント１４０に属し、プロセッサ１３０に、車両ソフトウェアのテスト１４４ｃを実行させるように構成されてもよい。より詳細に以下に論じられるように、車両ソフトウェアテストロジック１４４ａによって実行されるテストは、車両ソフトウェア１４４ｃがエラーを伴わずにプログラミングされていることを決定することであってもよい。さらに、テストケースロジック１４４ｂは、プロセッサ１３０に車両ソフトウェア１４４ｃをテストさせるためのテストケースを生成させるように構成されてもよい。他の機能も、また、含まれており、より詳細に以下に記述される。
【００１９】
図１に図示されたコンポーネントは、単に例示的であって、この開示の範囲を限定するようには意図されない、ということを理解するべきである。コンポーネントがテストコンピューティング装置１１２内に存在するように図１に示されているが、これは単なる一例である。いくつかの実施形態において、コンポーネントの１つ以上は、テストコンピューティング装置１１２の外部に存在してもよい。テストコンピューティング装置１１２が単一の装置として図１に示されているが、これもまた単なる一例である、ということもまた理解されるべきである。いくつかの実施形態において、車両ソフトウェアテストロジック１４４ａ及びテストケースロジック１４４ｂは、異なる装置上に存在してもよい。
【００２０】
さらに、テストコンピューティング装置１１２が個別の論理的なコンポーネントとして車両ソフトウェアテストロジック１４４ａ及びテストケースロジック１４４ｂにより図示されているが、これもまた、一例である。いくつかの実施形態において、単一のロジックピースが、記載された機能を、テストコンピューティング装置１１２に実行させてもよい。
【００２１】
図２Ａ〜図２Ｃは、本明細書に開示の実施形態による、車両ソフトウェア内の複数のロジック層１４４ｃを図示する、制御仕様構造を概略的に表現する。具体的には、図２Ａは、車両ソフトウェアのアプリケーションレベル１４４ｃを表現する。車両ソフトウェア１４４ｃは、ステータスブロック２１２に対して送信される複数の初期入力２１０を含んでもよい。ステータスブロック２１２は、入力を処理し、機能ブロック２１４にデータを送信してもよい。機能ブロック２１４は、データをさらに処理してもよい。所望の結果が取得されて、且つ１つ以上の出力２１６に送信されるまで、これを継続してもよい。従って、２つのレベルのみの処理（ブロック２１２及び２１４）が図２Ａに表現されているが、車両１０２及び／又は車両コンピューティング装置１０４内の所望の機能を実施するために、より多数の又はより少数のレベルが利用されてもよい、ということは理解されるべきである。
【００２２】
図２Ｂは、図２Ａ（例えば機能層）からの機能ブロック２１４を表現する。具体的には、機能ブロック２１４は、ステータスブロック２１２からの２つの出力だけでなく、図２Ａからの１つの初期入力２１０とともに示される。機能ブロック２１４は、車両ソフトウェア１１４ｃに従ってさらにデータを処理するための複数のモジュールブロックを含む。機能ブロックの出力２２６も、また、表現されており、図２Ａ内の次のブロックに送信されてもよい。
【００２３】
図２Ｃは、図２Ｂからのモジュールブロック２２４を表現する。具体的には、入力２３２はブロック２３４に対して提供され、そこでデータをさらに処理することができる。このデータは、その後、他のブロックによって再び処理され、出力２３６に送信されてもよい。この出力２３６は、その後、さらに他のアプリケーション層ブロック、機能層ブロックに送信され、及び／又は出力に送信されてもよい。
【００２４】
図２Ａは、アプリケーション層上に複数のブロックを図示しており、複数のブロックの各々は、それらのブロック内に処理コンポーネントを含んでもよい。アプリケーション層内の処理コンポーネントは、図２Ｂ内の機能層内に詳細に表現される。同様に、図２Ｂ内の機能的ブロックの各々は、図２Ｃのモジュール層において表現される付加的な処理コンポーネントを含んでもよい。従って、車両ソフトウェア１４４ｃ（図１）を実施するために、車両コンピューティング装置１０４（同じく図１）は、これらの層の各々のロジックを実行することになる。従って、車両ソフトウェア１４４ｃをテストする場合、テストコンピューティング装置１１２は、車両ソフトウェア１４４ｃがエラーを伴わずにプログラミングされていることを保証するために、各層上のブロックの各々をテストする。
【００２５】
入力、第１の入力、第２の入力等の用語は、ここでは、車両ソフトウェア１１４ｃへの入力または車両ソフトウェア１１４ｃのロジックブロックに送られる他の値に言及するものとして用いられ得ることを理解されるべきである。従って、入力と言う用語は、ロジックコンポーネントに伝送される任意の値を識別するために用いられてもよい。
【００２６】
図３Ａは、本明細書に開示の実施形態によって、車両内の機能を実施するための論理回路３００を表現する。具体的には、論理回路３００は、図３Ａ、図３Ｂ及び図３Ｃにおいてそれぞれ表現された、アプリケーション層、機能層、及び／又はモジュール層上のブロックの内の一個におけるロジックを示し得る。図示されるように、論理回路３００は、入力３０２ａ、３０２ｂ（まとめて「入力３０２」と呼ぶ）を含む。入力３０２は、入力値が２つの可能性の内の１つ（０／１、オン／オフ、など）であるバイナリ入力（「フラグ」として識別される）、、入力が有限数の可能性の１つであるモード入力、及び／又は入力が無限数の可能性（又は極めて大きい数の可能性）の１つである可変入力、の形式をとってもよい。従って、フラグ及びモード入力は、状態ベースの入力であると決定されて、それにより、それに応じてテストされてもよい。現在の例において、入力３０２ａは、双方がフラグ（バイナリ入力）であると決定されており、一方で、入力３０４は、可変入力であると決定されている。入力３０６は、モード入力であると決定されている。
【００２７】
第１の入力タイプ、第２の入力タイプなどの入力タイプの決定は、図３Ａ−３Ｃに示されたアプリケーション層、機能層及びモジュール層のそれぞれにおけるブロックのそれぞれに対してなされ得ることを理解すべきである。入力タイプの決定に加えて、可能な入力値も入力の各々に対して決定されてもよい。
【００２８】
一旦入力タイプ及び入力値が決定されれば、テストコンピューティング装置１１２は、図３Ａ〜図３Ｃ内のブロックの各々に対してテストケースを生成してもよい。具体的には、テストケースは、値の順列（例えば、車両ソフトウェア１４４ｃにおける状態ベースの入力の全ての順列）を実行するロジックピースとして生成されても良い。特定の実施形態に応じて、可変入力のテストは、可能な値のサブセットのテストためのメカニズムを実行することを含んでもよい。例として、ランダム値は、状態ベースの入力値のそれぞれの順列のために利用されてもよい。上記したように、他のメカニズムが用いられてもよい。
【００２９】
現在の例において、論理回路３００は、入力３０２を受信する論理「積」演算子３１０を含む。論理「積」演算子３１０の出力は、値０及び１００と共に第１のスイッチ３１２に送信される。第１のスイッチ３１２は、マルチポートスイッチ３１４に出力する。同様に、入力３０２も、また、論理「和」演算子３１６に送信される。論理「和」演算子３１６に対する出力は、「０」とともに、入力３０４を受信する第２のスイッチ３１８に送信される。第２のスイッチ３１８は、マルチポートスイッチ３１４に出力する。マルチポートスイッチ３１４は、値「０」及び入力３０６とともに、第１のスイッチ３１２及び第２のスイッチ３１８から出力を受信する。マルチポートスイッチ３１４は、所望の出力３２０を選択する。
【００３０】
図３Ｂは、本明細書に開示の実施形態による、テストケースを生成するために利用され得る入力を示し、これは、図３Ａからの論理回路３００から決定されてもよい。図３Ａからの論理回路３００について図示されるように、チャート３４０は、入力の各々が、車両ソフトウェア１４４ｃをテストする際のテストケースにおいて実行されることを示すために提供され得る。図示されるように、この例の入力は、モード入力と、２つのフラグ入力と、１つの可変入力とを含む。従って、３つの状態ベースの入力が、入力値の全順列において実行される。さらに、可変入力は、状態ベースの入力の状態順列の各々に対してランダム値として実行される。
【００３１】
一旦テストケースが展開されれば、テストコンピューティング装置１１２は、テストケースが所定の閾値（例えば９５％、１００％、など）を超えてＭＣ／ＤＣを満たすか否かを決定してもよい。テストケースが所定のＭＣ／ＤＣを満たす場合、車両ソフトウェア１４４ｃが適切にプログラミングされているか否かを決定するために、車両ソフトウェア１４４ｃにおいてテストケースが実行されてもよい。
【００３２】
図４は、本明細書に開示の実施形態による、状態ベースのテストケースを生成するために利用されてもよいユーザインタフェース４３０を表現する。図示されるように、テストコンピューティング装置１１２は、新規のテストケースの生成のためのユーザインタフェース４３０を提供してもよい。ユーザは、図２Ａ〜図２Ｃ内のブロックの各々に対する入力を決定し、入力欄４３２内の入力名称を識別してもよい。シーケンス列４３４において、ユーザは、その入力タイプに対して可能な値とともに用いられる入力タイプを識別してもよい。
【００３３】
例として、第１行において、ユーザは、０及び１の可能な値とともに、状態ベースの入力として用いられる「フラグ１」という名の入力を入力した。第２行において、「モード１」という名の入力は、可能な０、２、及び４の値とともに、状態ベースの入力として用いられることになる。第３行において、「変数１」という名の入力は、可能な０〜１００の値とともに、ランダム入力として用いられることになる。他の入力は、テストされている特定の車両ソフトウェア１４４ｃに応じて、実行され指定されてもよい。
【００３４】
図４内に表現されたシーケンス指示は単に例示的である、ということは理解されるべきである。具体的には、定数、ランダム、ランダムな整数、ランプ（例えば急上昇する値）、シーケンス（例えばパターン）、遷移（例えば所定時間にわたる遷移データシーケンス）、順列（例えばマルチ入力に対してユニークな順列を生成する）、及び／又は他のもののような指示が使用され得る。単一のシーケンスのみが図４に表現されているが、異なる値の入力を説明するために、いくつかの実施形態が複数のシーケンスを用いてもよい、ということも理解されるべきである。
【００３５】
また、シーケンス追加オプション４３６、シーケンス削除オプション４３８、入力追加オプション４４０、入力削除オプション４４２、及びテストケースプロットオプション４４４が、図４内に含まれる。シーケンス追加オプション４３６は、シーケンスを、現在のテストケースに追加するために利用されてもよい。同様に、シーケンス削除オプション４３８は、現在のシーケンスを削除するために利用されてもよい。入力追加オプション４４０は、付加的な入力を、テストケースに追加するために利用されてもよく、一方で、入力削除オプション４４２は、テストケース内の既存の入力を削除するために利用されていてもよい。テストケースプロットオプション４４４は、テストケースが適切なＭＣ／ＤＣを有するか否かを決定するために、テストケースのグラフ表示を提供するために利用されてもよい。
【００３６】
さらに、テストケースファイルロードオプション４４６、テストケースファイル新規オプション４４８、テストケースファイル保存オプション４５０、テストケース生成／保存オプション４５２、及びモデル信号ビルダに対するテストケース追加オプション４５４が図４に含まれる。具体的には、テストケースファイルロードオプション４４６は、現在のテストに対して、既存のテストケースを利用するために選択されてもよい。テストケースファイル新規オプション４４８は、新規テストケースを開始するために選択されてもよい。テストケースファイル保存オプション４５０は、現在のテストケースを保存するために選択されてもよい。テストケース生成／保存オプション４５２は、テストケースを保存するだけでなく、実施のための完成テストケースを生成するために選択されてもよい。モデル信号ビルダに対するテストケース追加オプション４５４は、テストケースをモデル信号ビルダに追加するために選択されてもよい。
【００３７】
図５は、本明細書に開示の実施形態による、状態ベースのテストケースを生成ためのフローチャートを表現する。ブロック５５０内に示すように、車両ソフトウェア１４４ｃにおけるアプリケーション層ブロック、機能層ブロック、及び／又はモジュール層ブロックなどのプログラムブロックは、テストするために選択されてもよい。前述のように、ユーザは、プログラムブロックを識別するためにユーザインタフェース４３０と対話してもよい。ブロック５５２において、入力及び入力タイプが、そのモジュールに対して決定されてもよい。例として、この決定は、入力に対する可能な入力値を識別し、そして入力タイプを決定する、テストコンピューティング装置１１２によってなされてもよい。同様に、この決定は、ユーザから入力タイプを受信するテストコンピューティング装置１１２によってなされてもよい。それとは関係なく、入力は、状態ベースの入力及び非状態ベースの入力を含んでもよい。ブロック５５４において、状態ベースの入力に対して入力値のユニークな順列が決定されてもよい。ブロック５５６において、非状態ベースの入力に対して非状態ベースの入力値を割り当てるためのメカニズムが決定されてもよい。例として、非状態ベースの入力がランダム値、列、及び／又は他のメカニズムになるか否かを、ユーザは、ユーザインタフェース４３０において識別してもよい。ブロック５５８において、テストケースは、状態ベースの入力値及び非状態ベースの入力値の各々とともに生成され実行されてもよい。ブロック５６０において、テストケースから結果が解析されてもよい。ブロック５６２において、決定は、ターゲットのＭＣ／ＤＣが実現されたか否かに関してなされてもよい。実現されていなければ、フローチャートは、ブロック５５２に戻ってもよい。ＭＣ／ＤＣが得られれば、ブロック５６４において、テストケースが検証され、車両ソフトウェア１４４ｃをテストするために利用されてもよい。
【００３８】
車両ソフトウェア１４４ｃが本明細書において論じられたが、本開示の範囲が車両ソフトウェアのみに限定されない、ということは理解されるべきである。具体的には、本明細書に開示の実施形態は、少なくともプログラムブロックに対する入力の一部が状態ベースの入力として識別され得る場合に、あらゆるタイプのソフトウェアをテストするために利用されてもよい。
【００３９】
以上に示したように、ソフトウェア検証用の状態ベースのテストケース生成のための様々な実施形態が開示される。具体的には、本明細書に開示の実施形態は、高等数学を用いるリスクを伴わずに、テストケースのための所定のレベルのＭＣ／ＤＣを実現する能力をユーザに提供することができる。従って、所定のレベルのＭＣ／ＤＣは、現行システムよりも、容易に且つ効率的に取得され得る。
【００４０】
本開示の特定の実施形態及び態様が本明細書において図示され記載されたが、様々な他の変更及び変形は、本開示の精神及び範囲から逸脱せずに行なうことができる。さらに、様々な態様が本明細書において記載されたが、このような態様を順列に利用する必要はない。従って、添付された請求項が、本明細書に示され記載された実施形態の範囲内で、このような変更及び変形をすべて網羅するように意図される。
【００４１】
本明細書に開示の実施形態が温度較正を推測するためのシステム、方法、及び非一時的なコンピュータ読み取り可能媒体を含む、ということは、ここで理解されるべきである。前述のように、このような実施形態は、車速、冷却液温度、及び／又は他の基準に基づいてもよい、動的な平滑化値を決定するように構成される。これらの実施形態は、単なる例示的であって、この開示の範囲を限定するためには意図されない、ということを理解するべきである。
【図１】
2015526826.tif 000003
【図２Ａ】
2015526826.tif 000004
【図２Ｂ】
2015526826.tif 000005
【図２Ｃ】
2015526826.tif 000006
【図３Ａ】
2015526826.tif 000007
【図３Ｂ】
2015526826.tif 000008
【図４】
2015526826.tif 000009
【図５】
2015526826.tif 000010
【手続補正書】
【提出日】平成27年3月3日(2015.3.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェア検証用の状態ベースのテストケース生成のための方法であって、
テストコンピューティング装置によって、テストケースを生成するためのソフトウェアのプログラムブロックに対して第１の入力と、状態ベースの入力を含む第１の入力タイプとを決定することと、
前記テストコンピューティング装置によって、前記第１の入力タイプに基づいて、前記第１の入力のための値の順列を決定することと、
前記テストコンピューティング装置によって、前記状態ベースの入力により前記テストケースを実行することにおいて、前記テストケースの実行は、前記プログラムブロックに対して前記第１の入力のための値の順列を適用することを含む、前記テストケースを実行することと、
前記テストコンピューティング装置によって、前記テストケースが所定レベルの改良条件／判定カバレッジ（ＭＣ／ＤＣ）を満たすか否かを決定することと、
前記テストコンピューティング装置によって、前記テストケースが前記所定レベルのＭＣ／ＤＣを満たすか否かの表示を提供することと、
を備える方法。
【請求項２】
前記テストコンピューティング装置によって、前記プログラムブロックに対して、第２の入力と第２の入力タイプとを決定することをさらに備え、
前記第２の入力タイプは、非状態ベースの入力を含み、
前記テストケースを実行することは、定数、ランダム、ランダムな整数、ランプ、シーケンス、遷移、及び順列のうちの少なくとも１つに従って、前記第１の入力の各順列に対して非状態ベースの入力のための値を選択することをさらに備える、請求項１に記載の方法。
【請求項３】
前記テストコンピューティング装置によって、前記所定レベルのＭＣ／ＤＣを決定することをさらに備える、請求項１に記載の方法。
【請求項４】
前記テストコンピューティング装置によって、前記テストケースを生成するための前記ソフトウェアの前記プログラムブロックを決定することをさらに備える、請求項１に記載の方法。
【請求項５】
前記テストコンピューティング装置によって、前記ソフトウェアのすべてのプログラムブロックに対してテストケースを決定することをさらに備える、請求項１に記載の方法。
【請求項６】
前記テストコンピューティング装置よって、前記ソフトウェアが適切にプログラミングされているか否かを決定するテストケースを用いることをさらに備える、請求項１に記載の方法。
【請求項７】
前記テストコンピューティング装置によって、ユーザが第１の入力及び第１の入力タイプを入力するためのユーザインタフェースを提供することをさらに備える、請求項１に記載の方法。
【請求項８】
ソフトウェア検証用の状態ベースのテストケース生成のためのシステムであって、テストコンピューティング装置によって実行される場合に、
テストケースを生成用の車両ソフトウェアのプログラムブロックに対して第１の入力と、状態ベースの入力を含む第１の入力タイプとを決定することと、
前記プログラムブロックに対して、第２の入力と、非状態ベースの入力を含む第２の入力タイプとを決定することと、
前記第１の入力タイプに基づいて、前記第１の入力のための値の順列を決定することと、
前記第２の入力タイプに基づいて、前記第２の入力に対して値を割り当てるためのメカニズムを決定することと、
前記状態ベース入力と非状態ベース入力によって前記テストケースを実行することであって、前記テストケースの実行は、前記プログラムブロックへの前記第１の入力に対する順列の値を前記第２の入力に対する値に適用することを含み、
前記テストケースが所定レベルの改良条件／判定カバレッジ（ＭＣ／ＤＣ）を満たすか否かを決定することと、
前記テストケースが前記所定レベルの前記ＭＣ／ＤＣを満たすか否かの表示を提供することと、
を、少なくとも前記テストコンピューティング装置に実行させるロジックを記憶するメモリを備えるテストコンピューティング装置を備えるシステム。
【請求項９】
テストコンピューティング装置によって実行される場合に、
テストするために車両の車両ソフトウェアからプログラムブロックを選択することと、
前記テストケースを生成するための前記プログラムブロックに対して第１の入力と、状態ベースの入力を含む第１の入力タイプとを決定することと、
前記プログラムブロックに対して、第２の入力と、非状態ベースの入力を含む第２の入力タイプとを決定することと、
前記第１の入力タイプに基づいて、前記第１の入力のための値の順列を決定することと、
前記第２の入力タイプに基づいて、前記第２の入力に対して値を割り当てるためのメカニズムを決定することと、
前記状態ベース入力と非状態ベース入力によって前記テストケースを実行することであって、前記テストケースの実行は、前記プログラムブロックへの前記第１の入力に対する順列の値を前記第２の入力に対する値に適用することを含み、
前記テストケースが所定レベルの改良条件／判定カバレッジ（ＭＣ／ＤＣ）を満たすか否かを決定することと、
前記テストケースが前記所定レベルの前記ＭＣ／ＤＣを満たすか否かの表示を提供することと、
を少なくとも前記テストコンピューティング装置に実行させるロジックを記憶する、非一時的なコンピュータ読み取り可能媒体。
【国際調査報告】
2015526826.tif 000011