JPWO2019142266A1 - テストケース生成装置、テストケース生成方法およびテストケース生成プログラム - Google Patents

テストケース生成装置、テストケース生成方法およびテストケース生成プログラム Download PDF

Info

Publication number
JPWO2019142266A1
JPWO2019142266A1 JP2019566031A JP2019566031A JPWO2019142266A1 JP WO2019142266 A1 JPWO2019142266 A1 JP WO2019142266A1 JP 2019566031 A JP2019566031 A JP 2019566031A JP 2019566031 A JP2019566031 A JP 2019566031A JP WO2019142266 A1 JPWO2019142266 A1 JP WO2019142266A1
Authority
JP
Japan
Prior art keywords
test case
steps
case generation
equivalent
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019566031A
Other languages
English (en)
Other versions
JP6723483B2 (ja
Inventor
まどか 馬場
まどか 馬場
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2019142266A1 publication Critical patent/JPWO2019142266A1/ja
Application granted granted Critical
Publication of JP6723483B2 publication Critical patent/JP6723483B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

テストケース生成装置(10)は、値が入力される度に1ステップの処理を実行するソフトウェアであるテスト対象ソフトウェアを解析して、当該ソフトウェアのテストのために入力される値の系列をテストケースとして生成する。その際に、等価ステップ検査部(19)は、状態変数について、状態変数を共用する複数ステップのうちいずれか1ステップの処理が実行された後の値と他の1ステップの処理が実行された後の値とが等しい場合に、それら2ステップが等価ステップであると判定する。テストケース生成部(20)は、等価ステップ検査部(19)により等価ステップであると判定された2ステップの一方を除き、テスト対象ソフトウェアを解析してテストケースに含める値を生成する。

Description

本発明は、テストケース生成装置、テストケース生成方法およびテストケース生成プログラムに関するものである。
自動車および産業用ロボット等の制御機器には、様々な制御を行うための組込リアルタイムソフトウェアが搭載されている。このようなソフトウェアが誤動作すると人命に関わる事故につながる。そのため、出荷前に十分なテストを実施する必要がある。例えば、自動車向けの機能安全規格のISO26262、および、航空機向けの機能安全規格のDO−178Cでは、テスト工程ごとに採用すべきテスト手法等をテスト要件として定め、これらのテスト要件に従ってテストを実施することを求めている。単体テストのテスト要件の例としては、同値分割または境界値分析に基づきテストケースを作成することで要求を網羅するようにテストを実行すると同時に、そのテストケースがテスト対象ソフトウェアのソースコードの構造を網羅することを求めている。ソースコードの構造としては、処理を記述した各命令行、または、if文およびfor文等の分岐箇所等を基準とする。テスト対象ソフトウェアに応じて用いる基準は異なる。この基準のことを構造網羅基準と呼ぶ。命令行を構造網羅基準とした場合には、テストケースによってテスト対象ソフトウェアに含まれるコードをどれだけ実行したかを示す命令網羅率を測定する。if文等の分岐を構造網羅基準とした場合には、コードに含まれる分岐先をすべて実行したかを示す分岐網羅率を測定する。命令網羅率または分岐網羅率が十分に高ければ、テストとして十分であると判断する。
組込リアルタイムソフトウェアでは、初期状態、実行状態および終了準備状態等の複数の状態を持つことが一般的である。そのようなソフトウェアでは、1回分のテストケースの入力だけではソースコードの構造を網羅することができず、複数回分のテストケースの入力が必要となる場合がある。テスト対象ソフトウェアの実行単位をステップと呼ぶ。例えば、テストケースの入力1回が1ステップとなる。
近年、組込リアルタイムソフトウェアのソースコードは大規模複雑化している。そのため、ソフトウェアの要求仕様を満たしつつ、ソースコードの構造を網羅する、複数ステップにわたるテストケースを手動で作成する工数の増加が問題となっている。
特許文献1では、工数増加に対応するため、単体テスト用の複数ステップ分のテストケースを自動で生成する方法が開示されている。
特許文献2では、ベンチマークプログラム内の同一の処理が繰り返し行われる箇所において、その繰り返しによって処理の変化がない場合には繰り返し回数を削減する方法が開示されている。
特許文献3では、ある処理ブロックの実行前に、プロセッサの内部状態がその処理ブロックが以前処理対象となったときと同じである場合には、その処理ブロックに関する処理は行わず、前回情報を流用することでシミュレーションを高速化する方法が開示されている。
特開2014−063415号公報 特開2003−316612号公報 国際公開第2015/045472号
特許文献1の方法では、あらかじめ設定した最大ステップ数に到達するまで1ステップ目から順にテスト要件を満たすテストケースを生成可能かを有界モデル検査を用いて解析する。未網羅の要求または分岐がある場合には、ステップ数をインクリメントしてテストケース生成用の解析を繰り返す。この方法を、状態が遷移するまで一定時間待機するようなソフトウェアに適用したとする。その場合、待機の間はどのような入力があっても状態が変化しないため、新たな構造を網羅しない。結果として、待機に相当するステップでは、テストケース生成用の解析を行っても新たなテストケースが生成されない。有界モデル検査による解析時間は、ステップ数の増加によって指数関数的に長くなる傾向にある。そのため、新たなテストケースを生成しないにもかかわらず、解析時間が増加し、テストケース生成時間が実用時間に収まらないことがある。この解析時間を削減するために、待機時間をカウントしているカウンタ値を意図的に小さな値に変更してテストケース生成に必要なステップ数を削減する方法が考えられる。しかし、カウンタ値を状態遷移が発生する前の適切な値に変更するには、仕様情報の詳細を把握しなければならない。複数の待機時間が設けられている場合に、カウンタ値を誤った値に設定してしまい、その結果、実際とは異なる振る舞いに変更されたソフトウェアに対するテストケースが生成されてしまう可能性がある。
特許文献2の方法では、特定の実行環境下において内部状態の変化があるか否かを判断している。外部入力が変化するような環境において、ある処理が常に内部状態の変化がないと判断されるか否かについては考慮されていない。
特許文献3の方法では、処理ブロックの実行前の内部状態に入力値を含んでいたとしても、特定の入力値の内部状態のときのみ、その処理ブロックによる処理を同一と判断する。そのため、前回ステップと今回ステップとの入力値が異なるような場合には、前回ステップと今回ステップとの処理を同一と判断することができない。
このように、従来の方法は、組込リアルタイムソフトウェアのように外部装置からの入力がステップ間で変化するソフトウェアを対象とする、複数ステップにわたるテストケースの生成には適用できない。
本発明は、複数ステップにわたるテストケースの生成にかかる時間を削減することを目的とする。
本発明の一態様に係るテストケース生成装置は、
値が入力される度に1ステップの処理を実行するソフトウェアを解析して、前記ソフトウェアのテストのために入力される値の系列をテストケースとして生成するテストケース生成装置において、
複数ステップの処理で共用され、前記複数ステップの処理が順次実行されていく中で、各ステップの処理の実行結果に応じた値を保持する状態変数について、前記複数ステップのうちいずれか1ステップの処理が実行された後の値と他の1ステップの処理が実行された後の値とが等しい場合に、それら2ステップが等価ステップであると判定する等価ステップ検査部と、
前記等価ステップ検査部により等価ステップであると判定された2ステップの一方を除き、前記ソフトウェアを解析して前記テストケースに含める値を生成するテストケース生成部と
を備える。
本発明では、等価ステップであると判定された2ステップの一方について、ソフトウェアを解析してテストケースに含める値を生成する処理が省かれる。そのため、複数ステップにわたるテストケースの生成にかかる時間を削減することができる。
実施の形態1に係るテストケース生成装置の構成を示すブロック図。 実施の形態1に係るテストケース生成装置の動作を示すフローチャート。 実施の形態1に係るテストケース生成装置の動作を示すフローチャート。 実施の形態1に係るテスト対象ソフトウェアのプログラムを示す図。 実施の形態1に係るテスト対象ソフトウェアのプログラムに含まれる網羅対象箇所を示す図。 実施の形態1に係るテストケース生成装置のラッパ関数生成部が生成するラッパ関数を示す図。 実施の形態2に係るテストケース生成装置の動作を示すフローチャート。 実施の形態2に係るテストケース生成装置の動作を示すフローチャート。 実施の形態2に係るテスト対象ソフトウェアのプログラムを示す図。 実施の形態2に係るテスト対象ソフトウェアのプログラムに含まれる網羅対象箇所を示す図。 実施の形態2に係るテストケース生成装置のラッパ関数生成部が生成するラッパ関数を示す図。 実施の形態2に係るテストケース生成装置のラッパ関数生成部が生成するラッパ関数を示す図。
以下、本発明の実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。なお、本発明は、以下に説明する実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。例えば、以下に説明する実施の形態のうち、2つ以上の実施の形態が組み合わせられて実施されても構わない。あるいは、以下に説明する実施の形態のうち、1つの実施の形態または2つ以上の実施の形態の組み合わせが部分的に実施されても構わない。
実施の形態1.
本実施の形態について、図1から図6を用いて説明する。
***構成の説明***
図1を参照して、本実施の形態に係るテストケース生成装置10の構成を説明する。
テストケース生成装置10は、コンピュータである。テストケース生成装置10は、プロセッサ11を備えるとともに、メモリ12、通信装置13および入出力装置14といった他のハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
テストケース生成装置10は、機能要素として、プログラム情報入力部15と、状態変数抽出部16と、構造抽出部17と、ラッパ関数生成部18と、等価ステップ検査部19と、テストケース生成部20とを備える。プログラム情報入力部15、状態変数抽出部16、構造抽出部17、ラッパ関数生成部18、等価ステップ検査部19およびテストケース生成部20の機能は、ソフトウェアにより実現される。
プロセッサ11は、テストケース生成プログラムを実行する装置である。テストケース生成プログラムは、プログラム情報入力部15、状態変数抽出部16、構造抽出部17、ラッパ関数生成部18、等価ステップ検査部19およびテストケース生成部20の機能を実現するプログラムである。プロセッサ11は、例えば、CPUである。「CPU」は、Central Processing Unitの略語である。
メモリ12は、テストケース生成プログラムを記憶する装置である。メモリ12は、例えば、RAM、フラッシュメモリまたはこれらの組み合わせである。「RAM」は、Random Access Memoryの略語である。メモリ12には、テスト対象ソフトウェアのプログラム、および、テスト対象ソフトウェアの仕様情報も記憶される。テスト対象ソフトウェアは、任意の種類のソフトウェアでよいが、本実施の形態では組込ソフトウェアである。
通信装置13は、テストケース生成プログラムに入力されるデータを受信するレシーバと、テストケース生成プログラムから出力されるデータを送信するトランスミッタとを含む。通信装置13は、例えば、通信チップまたはNICである。「NIC」は、Network Interface Cardの略語である。
入出力装置14は、テストケース生成プログラムへのデータの入力のためにユーザにより操作される入力機器と、テストケース生成プログラムから出力されるデータを画面に表示するディスプレイとに接続される。入力機器は、例えば、マウス、キーボード、タッチパネル、または、これらのうちいくつか、もしくは、すべての組み合わせである。ディスプレイは、例えば、LCDである。「LCD」は、Liquid Crystal Displayの略語である。ディスプレイは、特に、テストケース生成部20が生成したテストケースを表示するために用いられる。
テストケース生成プログラムは、メモリ12からプロセッサ11に読み込まれ、プロセッサ11によって実行される。メモリ12には、テストケース生成プログラムだけでなく、OSも記憶されている。「OS」は、Operating Systemの略語である。プロセッサ11は、OSを実行しながら、テストケース生成プログラムを実行する。なお、テストケース生成プログラムの一部または全部がOSに組み込まれていてもよい。
テストケース生成プログラムおよびOSは、補助記憶装置に記憶されていてもよい。補助記憶装置は、例えば、HDD、フラッシュメモリまたはこれらの組み合わせである。「HDD」は、Hard Disk Driveの略語である。テストケース生成プログラムおよびOSは、補助記憶装置に記憶されている場合、メモリ12にロードされ、プロセッサ11によって実行される。
テストケース生成装置10は、プロセッサ11を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、テストケース生成プログラムの実行を分担する。それぞれのプロセッサは、例えば、CPUである。
テストケース生成プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ12、補助記憶装置、または、プロセッサ11内のレジスタまたはキャッシュメモリに記憶される。
テストケース生成プログラムは、プログラム情報入力部15、状態変数抽出部16、構造抽出部17、ラッパ関数生成部18、等価ステップ検査部19およびテストケース生成部20により行われる手順をそれぞれプログラム情報入力手順、状態変数抽出手順、構造抽出手順、ラッパ関数生成手順、等価ステップ検査手順およびテストケース生成手順としてコンピュータに実行させるプログラムである。テストケース生成プログラムは、コンピュータ読取可能な媒体に記録されて提供されてもよいし、記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
テストケース生成装置10は、1台のコンピュータで構成されていてもよいし、複数台のコンピュータで構成されていてもよい。テストケース生成装置10が複数台のコンピュータで構成されている場合は、プログラム情報入力部15、状態変数抽出部16、構造抽出部17、ラッパ関数生成部18、等価ステップ検査部19およびテストケース生成部20の機能が、各コンピュータに分散されて実現されてもよい。
***動作の説明***
図1を参照して、本実施の形態に係るテストケース生成装置10の動作の概要を説明する。テストケース生成装置10の動作は、本実施の形態に係るテストケース生成方法に相当する。
プログラム情報入力部15は、テスト対象ソフトウェアのプログラム、カウンタ仕様情報、入力仕様情報および最大ステップ数の情報をメモリ12から、または、通信装置13もしくは入出力装置14を介して外部から読み込む。
状態変数抽出部16は、プログラム情報入力部15が読み込んだプログラムを解析し、そのプログラムに含まれる状態変数を抽出してメモリ12に記憶する。状態変数とは、大域変数等のプログラムを複数ステップにわたって実行した場合にもステップ間で保持される変数のことである。すなわち、状態変数とは、複数ステップの処理で共用され、複数ステップの処理が順次実行されていく中で、各ステップの処理の実行結果に応じた値を保持する変数のことである。この状態変数は、初期状態または通常状態といったモードを示す値を格納する。状態変数抽出部16は、プログラム情報入力部15が読み込んだカウンタ仕様情報に基づき、抽出した状態変数のうち、カウンタの役割を持つ変数を区別する。以降、カウンタを除く状態変数を検査対象状態変数VARと呼ぶ。なお、状態変数の数は2つ以上でもよい。複数の検査対象状態変数が存在する場合には、VARは複数の変数の集合を指す。
本実施の形態では、状態変数抽出部16にてテスト対象ソフトウェアのプログラムを解析して状態変数を抽出するが、外部から状態変数のリスト情報が読み込まれてもよい。
構造抽出部17は、テストに使用する構造網羅基準に応じて、プログラム情報入力部15が読み込んだプログラムに含まれる網羅すべき対象箇所を抽出する。
ラッパ関数生成部18は、テスト対象プログラムを呼び出すとともに、各ステップ実行後の検査対象状態変数の値をステップごとに異なる変数へ格納するラッパ関数を生成する。本実施の形態では、Xステップ実行後の検査対象状態変数の値を格納した変数をVAR_Xとする。
等価ステップ検査部19は、形式手法により、あるステップの実行と、その前のステップの実行とが、機能として等価であるかを検査する。あるステップX実行後のVAR_Xと、ステップ(X−1)実行後のVAR_(X−1)とが常に同値であれば、等価ステップ検査部19は、ステップXとステップ(X−1)とを等価ステップであると判定する。ただし、Xは2以上かつ最大ステップ数以下の値とする。
テストケース生成部20は、等価ステップ検査部19の結果に応じて、形式手法を用いて構造抽出部17が抽出した網羅対象を網羅するようなテストケースを生成し、出力する。
図2および図3を参照して、本実施の形態に係るテストケース生成装置10の動作の詳細を説明する。
ステップS101において、プログラム情報入力部15は、テスト対象ソフトウェアのプログラム、カウンタ仕様情報、入力仕様情報および最大ステップ数の情報を読み込み、ステップS102へ進む。カウンタ仕様情報および入力仕様情報は、ソフトウェア仕様に基づき使用者が手動で設定したり、定められた形式で記述された仕様から自動で設定したり、プログラムを解析して状態遷移のトリガとして使用されている変数を自動で選択し設定したりすることが可能である。最大ステップ数は、テスト対象ソフトウェアのプログラムを網羅するのに必要なステップ数であり、本実施の形態では、カウンタ仕様情報等と同様に抽出するものとする。
ステップS102において、状態変数抽出部16は、読み込んだプログラムを解析し、プログラムに含まれる状態変数を抽出し、ステップS103へ進む。
ステップS103において、状態変数抽出部16は、抽出した状態変数のうち、カウンタ仕様情報が示すカウンタを除く変数を検査対象状態変数とし、ステップS104へ進む。
ステップS104において、構造抽出部17は、使用する構造網羅基準に従って、テスト対象ソフトウェアのプログラムに含まれる網羅対象箇所を抽出し、ステップS105へ進む。テスト実行時に構造網羅基準として分岐を用い、分岐網羅率を測定する場合には、構造抽出部17は、ステップS104ではプログラムに含まれる分岐箇所を抽出する。例えば、if文であれば、TRUEと判定された場合とFALSEと判定された場合との2箇所が網羅対象として抽出される。なお、ステップS104は、ステップS102、ステップS103およびステップS105と依存関係がないため、実行順序を入れ替えたり並行して実行したりすることができる。
ステップS105において、ラッパ関数生成部18は、等価ステップ検査用のラッパ関数を生成し、ステップS106へ進む。
ステップS106において、等価ステップ検査部19は、形式手法を用いて、ラッパ関数をエントリ関数としてステップ間の等価性を検査する。具体的には、等価ステップ検査部19は、ステップX実行後の検査対象状態変数VAR_Xとステップ(X−1)実行後の検査対象状態変数VAR_(X−1)との値が、入力仕様情報に含まれる入力変数の値がいかなる値であっても、常に同値であるか否かを検査する。Xは2から最大ステップ数までの間のステップ数を示す値をとる。そして、等価ステップ検査部19は、VAR_XとVAR_(X−1)とが同値であれば、ステップXとステップ(X−1)とを等価ステップと判定する。等価ステップ検査部19は、同値でない場合があれば、不等価と判定する。等価ステップ検査部19は、1ステップ目から最大ステップ数に到達するまで検査を実行後、ステップS107へ進む。
ステップS107において、テストケース生成部20は、変数iを1に設定し、ステップS108へ進む。
ステップS108において、テストケース生成部20は、変数iの値が最大ステップ数より大きいか、または、網羅対象箇所が存在するかを判定する。変数iの値が最大ステップ数より大きい場合には、テストケース生成対象のステップは終了しているため、テストケース生成部20は、処理を終了する。変数iの値が最大ステップ数以下であっても網羅対象箇所がなければ、テストケース生成部20は、テストケース生成は不要と判断して処理を終了する。それ以外の場合は、テストケース生成部20は、ステップS109へ進む。
ステップS109において、テストケース生成部20は、ステップS106における等価ステップ検査の結果を参照する。テストケース生成部20は、ステップiとステップ(i−1)とが等価ステップと判定されている場合には、ステップS110およびステップS111の処理は不要であるため、ステップS112へ進む。テストケース生成部20は、ステップiとステップ(i−1)とが等価ステップではない、すなわち、不等価ステップである場合には、ステップS110へ進む。ただし、テストケース生成部20は、i=1の場合には等価ステップ検査結果がないため、常に不等価としてステップS110へ進む。
ステップS110において、テストケース生成部20は、ステップ(i−1)まで未網羅となっている網羅対象箇所あるいはi=1の場合にはステップS104において抽出した網羅対象箇所を、形式手法を用いて解析してテストケースを生成する。具体的には、テストケース生成部20は、プログラム情報入力部15が読み込んだ入力変数が、網羅対象箇所を通過するような入力値を取り得るかを解析し、そのような入力値があれば、その入力値をテストケースとして出力する。解析の結果、入力値がなければ、そのステップでテストケースが生成されない場合もある。テストケース生成部20は、続いてステップS111へ進む。
ステップS111において、テストケース生成部20は、ステップS110でテストケースが生成された場合には、そのテストケースによって通過した箇所を網羅対象箇所から除外する。テストケース生成部20は、続いてステップS112へ進む。
ステップS112において、テストケース生成部20は、変数iを1インクリメントし、ステップS108へ戻る。
本実施の形態では、ステップS106において、等価ステップ検査部19は、1ステップ目から最大ステップ数に到達するまで、等価ステップ検査を一度に実行する。変形例として、ステップS108とステップS109との間で、等価ステップ検査部19が、ステップiとステップ(i−1)とが等価であるかを検査し、1ステップごとに等価ステップ検査と網羅対象箇所の解析およびテストケースの生成とが繰り返されてもよい。
このように、本実施の形態では、テストケース生成装置10は、値が入力される度に1ステップの処理を実行するソフトウェアであるテスト対象ソフトウェアを解析して、当該ソフトウェアのテストのために入力される値の系列をテストケースとして生成する。その際に、等価ステップ検査部19は、状態変数VARについて、状態変数VARを共用する複数ステップのうちいずれか1ステップの処理が実行された後の値と他の1ステップの処理が実行された後の値とが等しい場合に、それら2ステップが等価ステップであると判定する。テストケース生成部20は、等価ステップ検査部19により等価ステップであると判定された2ステップの一方を除き、テスト対象ソフトウェアを解析してテストケースに含める値を生成する。
本実施の形態では、等価ステップ検査部19は、複数ステップのうち連続する2ステップの各組み合わせが等価ステップであるかどうかを判定する。「等価ステップ検査部19により等価ステップであると判定された2ステップの一方」は、等価ステップ検査部19により等価ステップであると判定された2ステップのうち後に処理が実行されるステップである。すなわち、テストケース生成部20は、等価ステップ検査部19により等価ステップであると判定された2ステップのうち後に処理が実行されるステップを除き、テスト対象ソフトウェアを解析してテストケースに含める値を生成する。
本実施の形態では、テストケース生成部20は、テスト対象ソフトウェアのテストの網羅基準が満たされるまで、テスト対象ソフトウェアを、等価ステップ検査部19により等価ステップであると判定された2ステップの一方を除き1ステップずつ順番に解析してテストケースに含める値を生成する。
本実施の形態では、状態変数抽出部16は、テスト対象ソフトウェアを解析して、複数ステップの処理で共用され、各ステップの処理の実行結果に応じた値を保持する複数の変数のうち、閾値に達しているかどうかによって次ステップの処理を異にする第1変数を除く第2変数を状態変数VARとして抽出する。その際に、状態変数抽出部16は、プログラム情報入力部15に入力された、第1変数の仕様を示す情報に基づいて第1変数を判別する。変形例として、状態変数抽出部16は、テスト対象ソフトウェアを解析して第1変数を判別してもよい。本実施の形態では、カウンタ変数が第1変数に相当し、状態変数VARが第2変数に相当する。また、カウンタ仕様情報が第1変数の仕様を示す情報に相当する。
具体例を用いてテストケース生成装置10の動作を説明する。
以下の例では、図4に示すテスト対象ソフトウェアのプログラムの一部を用いる。このプログラムでは、仕様上、カウンタがcnt、入力変数がbおよびc、最大ステップ数が4であるとする。テスト実行時の構造網羅基準として分岐網羅を用いるものとする。
プログラム情報入力部15は、テスト対象ソフトウェアのプログラム、カウンタ仕様情報、入力仕様情報および最大ステップ数を読み込む。プログラムは、本例では2つの関数funcとfunc_initのみを含むが、1つの関数を記述した1ファイルだけではなく、複数の関数または複数ファイルの集合であってもよい。カウンタ仕様情報には、状態遷移まで待機するための1ステップの実行で1インクリメントされるカウンタの情報として、状態変数cntが含まれている。入力仕様情報には、テスト対象ソフトウェアのプログラムの入力変数bおよびcの情報が含まれている。最大ステップ数は4に設定されている。
これらの情報が読み込まれると、状態変数抽出部16は、テスト対象プログラムに含まれる状態変数を抽出する。ここでは、dおよびcntを抽出するものとする。状態変数抽出部16は、これらの状態変数のうち、カウンタ仕様情報に基づいて検査対象状態変数VARがdであると識別する。
構造抽出部17は、テスト対象ソフトウェアのプログラムから網羅すべき分岐箇所として、if文が2箇所あり、それぞれTRUEおよびFALSEの2分岐であることから計4箇所を抽出する。図5は、図4に示したプログラムに対し網羅すべき分岐箇所をP1からP4で示している。
ラッパ関数生成部18は、等価ステップ検査のためのラッパ関数を生成する。このラッパ関数の例を図6に示す。X=1,2,3,4、テスト対象ソフトウェアのプログラムの入力変数bおよびcへの入力値はb_Xおよびc_Xとしてステップごとに区別している。各ステップ実施後の検査対象状態変数の値は変数VAR_Xへ格納される。最後の3行のASSERT文は、等価ステップ検査用の命令の一例である。これらのASSERT文は、入力変数bおよびcがあらゆる値をとり得る場合において、検査対象状態変数VAR_XとVAR_(X−1)とが等しいかを検査するための命令である。
このラッパ関数をエントリ関数として等価ステップ検査部19は形式手法を用いて検査を実行する。ASSERT文に対し反例が見つかった場合には、等価ステップ検査部19は、そのステップは等価ではないと判定する。例えば、ASSERT文の最終行は、3ステップ目実行後と4ステップ目実行後の検査対象状態変数の値が等しいことを検査する文である。すなわち、ASSERT文の最終行は、3ステップ目と4ステップ目の実行時に入力変数b_1からb_4およびc_1からc_4に対していかなる値を与えても検査対象状態変数の値が変わらないことを検査する文である。この検査に対して反例が出力された場合には、検査対象状態変数の値が変わることがあるため、3ステップ目と4ステップ目は等価ではないと判定される。反例が出力されなければ、3ステップ目と4ステップ目は等価であると判定できる。本例では、1ステップ目と2ステップ目とが等価、その他は不等価であるとする。
テストケース生成部20は、1ステップ目として、等価ステップ検査部19の検査結果を用いて、テストケース生成のための解析を行うか否かを判断する。1ステップ目は常に不等価と判断されるため、テストケース生成部20は、構造抽出部17が抽出した網羅対象箇所を対象とした解析とテストケースの生成とを行う。これによりテストケースを生成できる。生成したテストケースが、図5に示した網羅対象箇所のうちP4を満たすとすると、テストケース生成部20は、P4を網羅対象箇所から除外し、2ステップ目へ進む。等価ステップ検査結果から、2ステップ目は1ステップ目と等価であるため、解析とテストケース生成は不要であり、テストケース生成部20は、直ちに3ステップ目へ進む。3ステップ目は2ステップ目と不等価なステップであるため、テストケース生成部20は、1ステップ目と同様に網羅対象箇所P1からP3を対象として解析とテストケース生成とを行う。これにより、テストケースを生成でき、P1とP3とを網羅したとすると、網羅対象箇所の残りはP2となる。テストケース生成部20は、4ステップ目へ進み、3ステップ目と同様に解析とテストケース生成とを行う。最大ステップ数4であるため、テストケース生成部20は、これ以上の処理は行わず処理を終了する。
このように、ステップ間の等価性を判定する等価ステップ検査を実行し、その結果に応じて解析とテストケース生成とを行うことで、2ステップ目においてはテストケース生成用の解析を行わず、次のステップへ進むことができ、解析時間を削減することができる。これと比較して等価ステップ検査を行わない場合には、1ステップ目から4ステップ目まで毎回解析とテストケース生成とを実行し、結果的に2ステップ目においては、網羅対象箇所を新たに通過するような入力値が存在しないためにテストケースが生成されず、無駄な解析時間がかかってしまう。
また、このようにステップ間の等価性を形式手法を用いて自動で判定することで、手動でカウンタの閾値を変更するといった操作をする必要がなくなり、テスト対象ソフトウェアの振る舞いを変更することなく、テストケース生成時間を実用時間内に収めることができる。さらにカウンタ値を手動で変更した場合に、誤った値としてしまうことにより実際とは異なる振る舞いをするプログラムを対象としてテストケースを生成し、結果的に適切なテストケースを生成できないという問題を回避することができる。
***実施の形態の効果の説明***
本実施の形態では、等価ステップであると判定された2ステップの一方について、ソフトウェアを解析してテストケースに含める値を生成する処理が省かれる。そのため、複数ステップにわたるテストケースの生成にかかる時間を削減することができる。
本実施の形態では、複数のステップ間にわたるテストケースを生成するテストケース生成装置10が、等価ステップ検査部19と、テストケース生成部20とを備える。等価ステップ検査部19は、入力に任意の値を与えても、内部状態がステップ間で等価であるかを検査する。テストケース生成部20は、1ステップ目から最大ステップ数に到達するまで順に、等価ステップ検査部19の結果に基づき、そのステップが前のステップと等価である場合には、テストケース生成のための解析とテストケース生成とを行わず、次のステップへ進み、等価でない場合には、解析とテストケース生成とを行う。
本実施の形態によれば、あるステップの実行後と別のステップの実行後とでそれぞれ内部状態が等価であると判定された場合には、そのステップ用のテストケース自動生成のための解析を行わないことでテストケース自動生成にかかる時間を削減することができる。さらにテスト対象ソフトウェアの振る舞いを変更することなくテストケースを自動生成することで、テスト対象ソフトウェアに適したテストを実行することが可能となる。
本実施の形態では、複数ステップにわたるテストケースを自動生成する際に、各ステップでテスト対象ソフトウェアのプログラムの入力に任意の値を与えても、あるステップの実行後と別のステップの実行後とで内部状態が変化しない場合には、それらの2つのステップが等価であると判定される。そして、そのステップのテストケース自動生成のための解析が省かれる。
本実施の形態では、ステップごとのテストケース生成用解析の前に、そのステップと前のステップでの、カウンタを除く内部状態変数が、あらゆる入力値において常に等価であるか否かを検査し、前のステップと等価と判定されたステップにおいては時間を要するテストケース生成用解析と生成を行わないようにする。これにより、必要なテストケースを生成する時間を削減することができる。
本実施の形態では、あるステップとその前のステップとが等価であるか否かを形式手法を用いて自動で判定することで、手動による変更にかかるコストを削減すると同時に、手動による誤った変更の結果、十分なテストケースが生成できず、適切にテストを実行できないという問題を解決することができる。
本実施の形態では、状態変数には、閾値に到達することでテスト対象ソフトウェアの処理が変化するような変数を含めない。具体的には、等価ステップ検査対象として、カウンタを除いた状態変数を用いることで、状態遷移まで一定時間待機させるために毎ステップ変化するような状態変数を含むプログラムにおいても、その待機中のステップ間は等価ステップであると判定することができ、テストケース生成にかかる時間を削減することができる。
本実施の形態では、閾値に到達することでテスト対象ソフトウェアの処理が変化するような変数が、形式的に記述された仕様情報から自動で抽出されるか、テスト対象ソフトウェアのプログラムの動作を解析することで自動で抽出される。具体的には、等価ステップ検査対象から除外する状態変数であるカウンタを含むカウンタ仕様情報を、形式的に書かれた仕様を参照することによって、または、テスト対象ソフトウェアのプログラムを解析することによって抽出することで、手動で設定する作業を省き、テストケース生成にかかる時間を削減することができる。
***他の構成***
本実施の形態では、プログラム情報入力部15、状態変数抽出部16、構造抽出部17、ラッパ関数生成部18、等価ステップ検査部19およびテストケース生成部20の機能がソフトウェアにより実現されるが、変形例として、プログラム情報入力部15、状態変数抽出部16、構造抽出部17、ラッパ関数生成部18、等価ステップ検査部19およびテストケース生成部20の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。すなわち、プログラム情報入力部15、状態変数抽出部16、構造抽出部17、ラッパ関数生成部18、等価ステップ検査部19およびテストケース生成部20の機能の一部が専用のハードウェアにより実現され、残りがソフトウェアにより実現されてもよい。
専用のハードウェアは、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、FPGA、ASIC、または、これらのうちいくつか、もしくは、すべての組み合わせである。「IC」は、Integrated Circuitの略語である。「GA」は、Gate Arrayの略語である。「FPGA」は、Field−Programmable Gate Arrayの略語である。「ASIC」は、Application Specific Integrated Circuitの略語である。
プロセッサ11および専用のハードウェアは、いずれも処理回路である。すなわち、プログラム情報入力部15、状態変数抽出部16、構造抽出部17、ラッパ関数生成部18、等価ステップ検査部19およびテストケース生成部20の機能がソフトウェアにより実現されるか、ソフトウェアとハードウェアとの組み合わせにより実現されるかに関わらず、プログラム情報入力部15、状態変数抽出部16、構造抽出部17、ラッパ関数生成部18、等価ステップ検査部19およびテストケース生成部20の動作は、処理回路により行われる。
実施の形態2.
本実施の形態について、主に実施の形態1との差異を、図7から図12を用いて説明する。
***構成の説明***
本実施の形態に係るテストケース生成装置10の構成は、図1に示した実施の形態1のものと同じであるため、説明を省略する。
***動作の説明***
図12を参照して、本実施の形態に係るテストケース生成装置10の動作の概要を説明する。テストケース生成装置10の動作は、本実施の形態に係るテストケース生成方法に相当する。
プログラム情報入力部15は、テスト対象ソフトウェアのプログラム、フィードバック制御仕様情報、入力仕様情報および最大ステップ数の情報をメモリ12から、または、通信装置13もしくは入出力装置14を介して外部から読み込む。
状態変数抽出部16は、プログラム情報入力部15が読み込んだプログラムを解析し、そのプログラムに含まれる状態変数を抽出してメモリ12に記憶する。状態変数抽出部16は、プログラム情報入力部15が読み込んだフィードバック制御仕様情報に基づき、抽出した状態変数のうち、フィードバック制御量を示す変数を区別する。以降、この変数を状態変数CTRLと呼ぶ。状態変数CTRLを除く状態変数を状態変数VARと呼ぶ。
ラッパ関数生成部18は、テスト対象プログラムを呼び出すとともに、各ステップ実行後の状態変数VARの値と状態変数CTRLの値とをステップごとに異なる変数へ格納するラッパ関数を生成する。本実施の形態では、Xステップ実行後の状態変数VARの値を格納した変数をVAR_X、状態変数CTRLの値を格納した変数をCTRL_Xとする。
等価ステップ検査部19は、形式手法により、あるステップの実行と、別のステップの実行とが、機能として等価であるかを検査する。あるステップX実行後のVAR_Xと、ステップY実行後のVAR_Yとが常に同値であれば、等価ステップ検査部19は、ステップXとステップYとが状態変数VARについて等価ステップであると判定する。ただし、XおよびYは互いに異なる1以上かつ最大ステップ数以下の値であるとする。等価ステップ検査部19は、状態変数CTRLについても同様に検査する。等価ステップ検査部19は、ステップXとステップYとの実行後、すべての状態変数、すなわち状態変数VARと状態変数CTRLとについてVAR_XとVAR_Yとが等しく、かつ、CTRL_XとCTRL_Yとが等しければ、ステップXとステップYとが完全等価ステップであると判定する。
テストケース生成部20は、等価ステップ検査部19の結果に応じて、形式手法を用いて構造抽出部17が抽出した網羅対象を網羅するようなテストケースを生成し、出力する。
図7および図8を参照して、本実施の形態に係るテストケース生成装置10の動作の詳細を説明する。
ステップS201において、プログラム情報入力部15は、テスト対象ソフトウェアのプログラム、フィードバック制御仕様情報、入力仕様情報および最大ステップ数を読み込み、ステップS202へ進む。フィードバック制御仕様情報は、ソフトウェア仕様に基づき使用者が手動で設定したり、定められた形式で記述された仕様から自動で設定したり、プログラムを解析して状態遷移のトリガとして使用されている変数を自動で選択し設定したりすることが可能である。
ステップS202において、状態変数抽出部16は、読み込んだプログラムを解析し、プログラムに含まれる状態変数を抽出し、ステップS203へ進む。
ステップS203において、状態変数抽出部16は、抽出した状態変数のうち、フィードバック制御仕様情報が示す状態変数CTRLを除く状態変数を状態変数VARとし、ステップS204へ進む。状態変数CTRLは、フィードバック制御量を示す変数である。例えば、状態変数CTRLは、制御対象のモータの制御量等を演算するプログラムにおいて、その演算結果を格納する変数である。状態変数CTRLは、あるステップにおいて制御量を演算する際に、前のステップでの制御量を用いる場合等に使われる。これは、モータ制御量の急激な変化等を抑制し、滑らかな制御を実現するため等に用いられる。
ステップS204において、構造抽出部17は、使用する構造網羅基準に従って、テスト対象ソフトウェアのプログラムに含まれる網羅対象箇所を抽出し、ステップS205へ進む。なお、ステップS204は、ステップS202、ステップS203およびステップS205と依存関係がないため、実行順序を入れ替えたり並行して実行したりすることができる。
ステップS205において、ラッパ関数生成部18は、等価ステップ検査用のラッパ関数を生成し、ステップS206へ進む。
ステップS206において、等価ステップ検査部19は、形式手法を用いて、ラッパ関数をエントリ関数として状態変数VARに関してステップ間の等価性を検査する。具体的には、等価ステップ検査部19は、ステップX実行後の状態変数VAR_XとステップY実行後の状態変数VAR_Yとの値が、入力仕様情報に含まれる入力変数の値がいかなる値であっても、常に同値であるか否かを検査する。XとYは互いに異なる1から最大ステップ数までの間のステップ数を示す値をとる。そして、等価ステップ検査部19は、VAR_XとVAR_Yとが同値であれば、ステップXとステップYとを状態変数VARに関して等価ステップと判定する。等価ステップ検査部19は、同値でない場合があれば、不等価と判定する。等価ステップ検査部19は、1ステップ目から最大ステップ数に到達するまで検査を実行後、ステップS207へ進む。
ステップS207において、等価ステップ検査部19は、状態変数VARに関して等価であると判定したステップに対し、状態変数CTRLに関しても等価であるか、すなわち完全等価ステップであるかを検査する。例えば、VAR_XとVAR_Yとが等しく、ステップXとステップYとが状態変数VARに関して等価であると判定されている場合には、等価ステップ検査部19は、CTRL_XとCTRL_Yとについても同値になり完全等価ステップとなるかを検査する。その後、等価ステップ検査部19は、ステップS208へ進む。
ステップS208において、テストケース生成部20は、変数iを1に設定し、ステップS209へ進む。
ステップS209において、テストケース生成部20は、変数iの値が最大ステップ数より大きいか、または、網羅対象箇所が存在するかを判定する。変数iの値が最大ステップ数より大きい場合には、テストケース生成対象のステップは終了しているため、テストケース生成部20は、処理を終了する。変数iの値が最大ステップ数以下であっても網羅対象箇所がなければ、テストケース生成部20は、テストケース生成は不要と判断して処理を終了する。それ以外の場合は、テストケース生成部20は、ステップS210へ進む。
ステップS210において、テストケース生成部20は、ステップS207における等価ステップ検査の結果を参照する。テストケース生成部20は、ステップiと完全等価なステップjが存在するかを確認する。jはiよりも小さい値である。テストケース生成部20は、ステップiと完全等価なステップjが存在する場合には、すべての状態遷移が実行されたと判断し、処理を終了する。テストケース生成部20は、ステップiと完全等価なステップjが存在しない場合には、未到達の状態があると判断し、ステップS211へ進む。
ステップS211において、テストケース生成部20は、ステップS206における状態変数VARに関する等価ステップ検査の結果を参照する。テストケース生成部20は、ステップiとステップ(i−1)とが等価ステップと判定されている場合には、ステップS212およびステップS213の処理は不要であるため、ステップS214へ進む。テストケース生成部20は、ステップiとステップ(i−1)とが状態変数VARに関しても等価ステップではない、すなわち、不等価ステップである場合には、ステップS212へ進む。ただし、テストケース生成部20は、i=1の場合には等価ステップ検査結果がないため、常に不等価としてステップS212へ進む。
ステップS212において、テストケース生成部20は、ステップ(i−1)まで未網羅となっている網羅対象箇所あるいはi=1の場合にはステップS204において抽出した網羅対象箇所を、形式手法を用いて解析してテストケースを生成する。具体的には、テストケース生成部20は、プログラム情報入力部15が読み込んだ入力変数が、網羅対象箇所を通過するような入力値を取り得るかを解析し、そのような入力値があれば、その入力値をテストケースとして出力する。解析の結果、入力値がなければ、そのステップでテストケースが生成されない場合もある。テストケース生成部20は、続いてステップS213へ進む。
ステップS213において、テストケース生成部20は、ステップS212でテストケースが生成された場合には、そのテストケースによって通過した箇所を網羅対象箇所から除外する。テストケース生成部20は、続いてステップS214へ進む。
ステップS214において、テストケース生成部20は、変数iを1インクリメントし、ステップS209へ進む。
このように、本実施の形態では、実施の形態1と同様に、状態変数抽出部16は、テスト対象ソフトウェアを解析して、複数ステップの処理で共用され、各ステップの処理の実行結果に応じた値を保持する複数の変数のうち、閾値に達しているかどうかによって次ステップの処理を異にする第1変数を除く第2変数を状態変数VARとして抽出する。その際に、状態変数抽出部16は、プログラム情報入力部15に入力された、第1変数の仕様を示す情報に基づいて第1変数を判別する。変形例として、状態変数抽出部16は、テスト対象ソフトウェアを解析して第1変数を判別してもよい。本実施の形態では、状態変数CTRLが第1変数に相当し、状態変数VARが第2変数に相当する。また、フィードバック制御仕様情報が第1変数の仕様を示す情報に相当する。
本実施の形態では、等価ステップ検査部19は、状態変数VARと状態変数CTRLとの両方について、複数ステップのうちいずれか1ステップの処理が実行された後の値と他の1ステップの処理が実行された後の値とが等しい場合に、それら2ステップが完全等価ステップであると判定する。すなわち、等価ステップ検査部19は、複数ステップから得られる2ステップの全組み合わせがそれぞれ完全等価ステップであるかどうかを判定する。テストケース生成部20は、等価ステップ検査部19により完全等価ステップであると判定された2ステップのうち後に処理が実行されるステップに到達するまで、テスト対象ソフトウェアを、等価ステップ検査部19により等価ステップであると判定された2ステップの一方を除き1ステップずつ順番に解析してテストケースに含める値を生成する。
具体例を用いてテストケース生成装置10の動作を説明する。
以下の例では、図9に示すテスト対象ソフトウェアのプログラムの一部を用いる。このプログラムでは、仕様上、フィードバック制御量を示す変数がa、入力変数がbおよびc、最大ステップ数が5であるとする。テスト実行時の構造網羅基準として分岐網羅を用いるものとする。
プログラム情報入力部15は、テスト対象ソフトウェアのプログラム、フィードバック制御仕様情報、入力仕様情報および最大ステップ数を読み込む。フィードバック制御仕様情報には、状態変数aが含まれている。入力仕様情報には、テスト対象ソフトウェアのプログラムの入力変数bおよびcの情報が含まれている。最大ステップ数は5が設定されている。
これらの情報が読み込まれると、状態変数抽出部16は、テスト対象プログラムに含まれる状態変数を抽出する。ここでは、aおよびdを抽出するものとする。状態変数抽出部16は、これらの状態変数のうち、フィードバック制御仕様情報に基づいて状態変数VARがd、状態変数CTRLがaであると識別する。
構造抽出部17は、テスト対象ソフトウェアのプログラムから網羅すべき分岐箇所として、if文が1箇所あり、TRUEおよびFALSEの2分岐であることから、少なくともこれら2箇所を抽出する。図10は、図9に示したプログラムに対し網羅すべき分岐箇所をP1およびP2で示している。なお、省略しているプログラム中には他の網羅対象箇所も含まれているものとする。
ラッパ関数生成部18は、等価ステップ検査のためのラッパ関数を生成する。このラッパ関数の例を図11および図12に示す。X=1,2,3,4,5、テスト対象ソフトウェアのプログラムの入力変数bおよびcへの入力値はb_Xおよびc_Xとしてステップごとに区別している。最後の20行のASSERT文は、各ステップ間の状態変数VARに関する等価ステップ検査と、状態変数CTRLに関する等価ステップ検査とを実行するための命令である。ここではラッパ関数の生成を1回にするため、命令をすべて記述している。
このラッパ関数をエントリ関数として等価ステップ検査部19は形式手法を用いて、ASSERT文のうち最初の10行の状態変数VARに関する等価ステップ検査を実行する。本例では、VAR_3を含むASSERT文に関する検査では反例があり、不等価と判定され、残りはすべて反例がないとする。すなわち、1ステップ目と2ステップ目と4ステップ目と5ステップ目とが状態変数VARに関して等価であり、3ステップ目のみが不等価であるとする。等価ステップ検査部19は、これらの4つのステップに関し、状態変数CTRLに関しても等価であり、完全等価なステップであるかを検査する。この検査に用いるASSERT文は最後の10行のうち、CTRL_3を含まない文である。本例では、CTRL_1がCTRL_4と、CTRL_2がCTRL_5と常に等しいことを検査するASSERT文に関する検査では反例がなく、残りはすべて反例があるとする。すなわち、1ステップ目と4ステップ目、2ステップ目と5ステップ目はあらゆる入力値を入力して実行しても、すべての状態変数が等価である完全等価なステップである。
テストケース生成部20は、1ステップ目として、等価ステップ検査部19の検査結果を用いて、テストケース生成のための解析を行うか否かを判断する。1ステップ目は常に不等価と判断されるため、テストケース生成部20は、構造抽出部17が抽出した網羅対象箇所を対象とした解析とテストケースの生成とを行う。これによりテストケースを生成できる。生成したテストケースが、図10に示した網羅対象箇所のうちいずれかを通過するのであれば、それを網羅対象箇所から除外し、2ステップ目へ進む。本例では、網羅対象箇所P2のみが除外され、P1が網羅対象箇所として残っているとする。テストケース生成部20は、等価ステップ検査の結果を参照して2ステップ目が1ステップ目と完全等価なステップであるかを確認する。2ステップ目が1ステップ目と完全等価ではないため、テストケース生成部20は、状態変数VARに関して2ステップ目が1ステップ目と等価であるかを確認する。状態変数VARに関して2ステップ目が1ステップ目と等価であるため、解析とテストケース生成は不要であり、テストケース生成部20は、直ちに3ステップ目へ進む。3ステップ目では、完全等価なステップも状態変数VARに関する等価なステップもない。そのため、テストケース生成部20は、解析とテストケース生成とを行う。これによりテストケースを生成できる。生成したテストケースが、図10に示した網羅対象箇所のうちいずれかを通過するのであれば、それを網羅対象箇所から除外し、4ステップ目へ進む。本例では、網羅対象箇所P1は3ステップ目で網羅されたが、他の未網羅の網羅対象箇所が残っているとする。テストケース生成部20は、等価ステップ検査結果を参照して4ステップ目が1ステップ目から3ステップ目と完全等価であるかを確認する。4ステップ目が1ステップ目と等価であることが確認できるため、テストケース生成部20は、遷移可能な状態をすべて実行したと判断し、処理を終了する。
***実施の形態の効果の説明***
本実施の形態では、状態がループしているようなテスト対象ソフトウェアにおいて、最大ステップ数に到達する前にすべての状態に到達したと判断した場合には、未網羅の網羅対象箇所が残っていても処理を終了する。すなわち、あるステップの処理を実行した後、そのステップが、そのステップより前のステップと等価である場合には、最大ステップに到達する前に処理を終了する。これにより、不要なテストケース生成用の解析を行わず、最大ステップ数まで実行する場合と比較して解析時間を削減することができる。未網羅の網羅対象箇所とは、デッドコード等、いかなる値を入力しても実行不能なコード等が存在する場合に含まれる箇所である。
10 テストケース生成装置、11 プロセッサ、12 メモリ、13 通信装置、14 入出力装置、15 プログラム情報入力部、16 状態変数抽出部、17 構造抽出部、18 ラッパ関数生成部、19 等価ステップ検査部、20 テストケース生成部。

Claims (9)

  1. 値が入力される度に1ステップの処理を実行するソフトウェアを解析して、前記ソフトウェアのテストのために入力される値の系列をテストケースとして生成するテストケース生成装置において、
    複数ステップの処理で共用され、前記複数ステップの処理が順次実行されていく中で、各ステップの処理の実行結果に応じた値を保持する状態変数について、前記複数ステップのうちいずれか1ステップの処理が実行された後の値と他の1ステップの処理が実行された後の値とが等しい場合に、それら2ステップが等価ステップであると判定する等価ステップ検査部と、
    前記等価ステップ検査部により等価ステップであると判定された2ステップの一方を除き、前記ソフトウェアを解析して前記テストケースに含める値を生成するテストケース生成部と
    を備えるテストケース生成装置。
  2. 前記ソフトウェアを解析して、前記複数ステップの処理で共用され、各ステップの処理の実行結果に応じた値を保持する複数の変数のうち、閾値に達しているかどうかによって次ステップの処理を異にする第1変数を除く第2変数を前記状態変数として抽出する状態変数抽出部をさらに備える請求項1に記載のテストケース生成装置。
  3. 前記第1変数の仕様を示す情報が入力されるプログラム情報入力部をさらに備え、
    前記状態変数抽出部は、前記プログラム情報入力部に入力された情報に基づいて前記第1変数を判別する請求項2に記載のテストケース生成装置。
  4. 前記状態変数抽出部は、前記ソフトウェアを解析して前記第1変数を判別する請求項2に記載のテストケース生成装置。
  5. 前記テストケース生成部は、前記ソフトウェアのテストの網羅基準が満たされるまで、前記ソフトウェアを、前記等価ステップ検査部により等価ステップであると判定された2ステップの一方を除き1ステップずつ順番に解析して前記テストケースに含める値を生成する請求項1から4のいずれか1項に記載のテストケース生成装置。
  6. 前記等価ステップ検査部は、前記複数ステップのうち連続する2ステップの各組み合わせが等価ステップであるかどうかを判定し、
    前記テストケース生成部は、前記等価ステップ検査部により等価ステップであると判定された2ステップのうち後に処理が実行されるステップを除き、前記ソフトウェアを解析して前記テストケースに含める値を生成する請求項1から5のいずれか1項に記載のテストケース生成装置。
  7. 前記等価ステップ検査部は、前記状態変数と、閾値に達しているかどうかによって次ステップの処理を異にする変数との両方について、前記複数ステップのうちいずれか1ステップの処理が実行された後の値と他の1ステップの処理が実行された後の値とが等しい場合に、それら2ステップが完全等価ステップであると判定し、
    前記テストケース生成部は、前記等価ステップ検査部により完全等価ステップであると判定された2ステップのうち後に処理が実行されるステップに到達するまで、前記ソフトウェアを、前記等価ステップ検査部により等価ステップであると判定された2ステップの一方を除き1ステップずつ順番に解析して前記テストケースに含める値を生成する請求項1から5のいずれか1項に記載のテストケース生成装置。
  8. 値が入力される度に1ステップの処理を実行するソフトウェアを解析して、前記ソフトウェアのテストのために入力される値の系列をテストケースとして生成するテストケース生成方法において、
    等価ステップ検査部が、複数ステップの処理で共用され、前記複数ステップの処理が順次実行されていく中で、各ステップの処理の実行結果に応じた値を保持する状態変数について、前記複数ステップのうちいずれか1ステップの処理が実行された後の値と他の1ステップの処理が実行された後の値とが等しい場合に、それら2ステップが等価ステップであると判定し、
    テストケース生成部が、前記等価ステップ検査部により等価ステップであると判定された2ステップの一方を除き、前記ソフトウェアを解析して前記テストケースに含める値を生成するテストケース生成方法。
  9. 値が入力される度に1ステップの処理を実行するソフトウェアを解析して、前記ソフトウェアのテストのために入力される値の系列をテストケースとして生成するテストケース生成プログラムにおいて、
    コンピュータに、
    複数ステップの処理で共用され、前記複数ステップの処理が順次実行されていく中で、各ステップの処理の実行結果に応じた値を保持する状態変数について、前記複数ステップのうちいずれか1ステップの処理が実行された後の値と他の1ステップの処理が実行された後の値とが等しい場合に、それら2ステップが等価ステップであると判定する等価ステップ検査手順と、
    前記等価ステップ検査手順により等価ステップであると判定された2ステップの一方を除き、前記ソフトウェアを解析して前記テストケースに含める値を生成するテストケース生成手順と
    を実行させるテストケース生成プログラム。
JP2019566031A 2018-01-17 2018-01-17 テストケース生成装置、テストケース生成方法およびテストケース生成プログラム Active JP6723483B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/001227 WO2019142266A1 (ja) 2018-01-17 2018-01-17 テストケース生成装置、テストケース生成方法およびテストケース生成プログラム

Publications (2)

Publication Number Publication Date
JPWO2019142266A1 true JPWO2019142266A1 (ja) 2020-04-16
JP6723483B2 JP6723483B2 (ja) 2020-07-15

Family

ID=67300958

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019566031A Active JP6723483B2 (ja) 2018-01-17 2018-01-17 テストケース生成装置、テストケース生成方法およびテストケース生成プログラム

Country Status (5)

Country Link
US (1) US11347628B2 (ja)
JP (1) JP6723483B2 (ja)
CN (1) CN111566625B (ja)
DE (1) DE112018006331B4 (ja)
WO (1) WO2019142266A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023060521A1 (en) * 2021-10-14 2023-04-20 Intel Corporation Apparatus, device, method and computer program for generating test cases for verification of hardware instructions of hardware device in hypervisor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140084A (ja) * 2008-12-09 2010-06-24 Toshiba Corp 検査モデル生成装置、モデル検査装置、及び検査モデル生成方法
JP2011008628A (ja) * 2009-06-26 2011-01-13 Fujitsu Ltd プログラムモデル検査方法、プログラムモデル検査プログラム
JP2014063415A (ja) * 2012-09-24 2014-04-10 Mitsubishi Electric Corp テストケース自動生成装置及びテストケース自動生成プログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05151023A (ja) 1991-11-27 1993-06-18 Mitsubishi Electric Corp 情報制御装置
JPH11219293A (ja) 1998-02-02 1999-08-10 Nec Eng Ltd アドレストレース方法及びトレーサメモリ制御装置
JP2003316612A (ja) 2002-04-25 2003-11-07 Fujitsu Ltd 縮小プログラム自動作成装置
US7801715B2 (en) * 2003-08-11 2010-09-21 The Mathworks, Inc. System and method for block diagram simulation context restoration
CN1908892A (zh) * 2005-08-01 2007-02-07 王彤 测试用例设计方法和系统
FR2921170B1 (fr) * 2007-09-14 2018-01-12 Airbus Operations Procede de generation automatique de programmes de test d'un logiciel de fonctionnement d'un systeme embarque a bord d'un aeronef, et dispositif de mise en oeuvre
JP5198132B2 (ja) 2008-04-23 2013-05-15 大日本スクリーン製造株式会社 状態遷移テスト支援装置、状態遷移テスト支援プログラム、および状態遷移テスト支援方法
JP5123350B2 (ja) * 2010-04-20 2013-01-23 株式会社シーイーシー テストケース作成システム、方法およびプログラム
CN102385551B (zh) * 2010-08-31 2015-04-29 西门子公司 一种筛选测试用例的方法、装置及系统
US20130090911A1 (en) * 2011-10-05 2013-04-11 International Business Machines Corporation Modeling Test Space for System Behavior Using Interchangeable Designations
JP6015865B2 (ja) 2013-09-24 2016-10-26 富士通株式会社 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
JP2015069400A (ja) * 2013-09-30 2015-04-13 日立オートモティブシステムズ株式会社 ソフトウェアテストシステム
CN105095085B (zh) * 2015-08-25 2018-01-19 暨南大学 一种基于web的软件测试实训系统及方法
US9830255B2 (en) * 2015-12-03 2017-11-28 Wipro Limited System and method for optimizing test suite comprising plurality of test cases
US20190018765A1 (en) * 2016-02-24 2019-01-17 Mitsubishi Electric Corporation Test case generation apparatus and computer readable medium
US10353810B2 (en) * 2016-10-04 2019-07-16 Sap Se Software testing with minimized test suite

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140084A (ja) * 2008-12-09 2010-06-24 Toshiba Corp 検査モデル生成装置、モデル検査装置、及び検査モデル生成方法
JP2011008628A (ja) * 2009-06-26 2011-01-13 Fujitsu Ltd プログラムモデル検査方法、プログラムモデル検査プログラム
JP2014063415A (ja) * 2012-09-24 2014-04-10 Mitsubishi Electric Corp テストケース自動生成装置及びテストケース自動生成プログラム

Also Published As

Publication number Publication date
DE112018006331B4 (de) 2022-05-05
US11347628B2 (en) 2022-05-31
CN111566625B (zh) 2024-01-09
DE112018006331T5 (de) 2020-08-27
CN111566625A (zh) 2020-08-21
WO2019142266A1 (ja) 2019-07-25
JP6723483B2 (ja) 2020-07-15
US20200364137A1 (en) 2020-11-19

Similar Documents

Publication Publication Date Title
US10671516B2 (en) Method, device, and computer program product for testing code
US8756460B2 (en) Test selection based on an N-wise combinations coverage
US10152406B2 (en) Software program repair
US8386851B2 (en) Functional coverage using combinatorial test design
US8719789B2 (en) Measuring coupling between coverage tasks and use thereof
CN111104335B (zh) 一种基于多层次分析的c语言缺陷检测方法及装置
US10936474B2 (en) Software test program generation
US10754744B2 (en) Method of estimating program speed-up in highly parallel architectures using static analysis
US9396095B2 (en) Software verification
US10592703B1 (en) Method and system for processing verification tests for testing a design under test
CN108874656A (zh) 代码测试方法、装置、可读存储介质及计算机设备
US9075921B2 (en) Error simulation
JP6723483B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
KR20190128457A (ko) 대상 프로그램에 포함된 대상 함수를 테스트하는 방법 및 장치
US20150121051A1 (en) Kernel functionality checker
JP2011253253A (ja) コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム
US8903700B2 (en) Concretization of abstracted traces
CN112699376A (zh) 源代码逻辑漏洞检测方法、装置、计算机设备及存储介质
US20200218624A1 (en) Method and apparatus for test generation
US20170123959A1 (en) Optimized instrumentation based on functional coverage
KR102519639B1 (ko) 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치
Singh et al. The review: Lifecycle of object-oriented software testing
US20110218793A1 (en) Concretization of abstracted traces
US11782682B2 (en) Providing metric data for patterns usable in a modeling environment
US8930759B2 (en) Stream generation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200109

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200109

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200518

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200526

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200623

R150 Certificate of patent or registration of utility model

Ref document number: 6723483

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250