JP2016012274A - テストケース生成システム及びテストケースを記録した記録媒体 - Google Patents

テストケース生成システム及びテストケースを記録した記録媒体 Download PDF

Info

Publication number
JP2016012274A
JP2016012274A JP2014134156A JP2014134156A JP2016012274A JP 2016012274 A JP2016012274 A JP 2016012274A JP 2014134156 A JP2014134156 A JP 2014134156A JP 2014134156 A JP2014134156 A JP 2014134156A JP 2016012274 A JP2016012274 A JP 2016012274A
Authority
JP
Japan
Prior art keywords
test case
pass
information
test
fail condition
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
JP2014134156A
Other languages
English (en)
Other versions
JP6316120B2 (ja
Inventor
正裕 松原
Masahiro Matsubara
正裕 松原
敦寛 大野
Atsuhiro Oono
敦寛 大野
守 根本
Mamoru Nemoto
守 根本
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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems Ltd
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 Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Priority to JP2014134156A priority Critical patent/JP6316120B2/ja
Priority to EP15816004.4A priority patent/EP3163448A4/en
Priority to PCT/JP2015/065964 priority patent/WO2016002417A1/ja
Priority to US15/308,299 priority patent/US10162739B2/en
Priority to CN201580023480.6A priority patent/CN106415504B/zh
Publication of JP2016012274A publication Critical patent/JP2016012274A/ja
Application granted granted Critical
Publication of JP6316120B2 publication Critical patent/JP6316120B2/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/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/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation

Abstract

【課題】オブジェクトコードをテストする際に、時相論理式を用いて合否基準を表現することができる技術を提供する。
【解決手段】テストケース生成システムは、検査対象となるオブジェクトコードまたは実行可能形式ファイルのモデルから探索された実行経路情報から、テスト実行制御内容に関する情報を生成する制御内容生成部240と、検査対象に対する、時間要素を含む検査式と、実行経路情報から、時間要素のない判定式とその判定式を実行するタイミングの組からなる合否条件に関する情報を生成する合否条件生成部250と、テスト実行制御内容に関する情報と、合否条件に関する情報とから、検査式に対応する合否条件を有するテストケースを生成するテストケース生成部260と、を備える。
【選択図】図2

Description

本発明は、ソフトウェアの検査を行うためのテストケース生成システム及びテストケースを記録した記録媒体に関する。
システムに搭載されるソフトウェアの規模増大に伴い、ソフトウェアの仕様やコードの全てについてレビューで確認することや、テストを実施することが困難になりつつある。また、並行動作するソフトウェアでは、処理のタイミングにより不具合が発生する場合があり、このような不具合はテストで発見することが困難である。このような問題への対処として、形式検証技術の1つであるモデル検査を適用する方法がある。
モデル検査では、検査対象である設計、具体的にはソフトウェア仕様やソースコードを形式仕様記述言語を用いて表現する(以下、これを「検証モデル」と呼ぶ)。また検査対象に求められる性質を、時間の概念と演算子を持つ論理式である時相論理式を用いてプロパティとして表現するか、時間の概念のない論理式によりアサーションとして表現する。これら検証モデルと、プロパティまたはアサーションで示される検査式とを、コンピュータ上で動作するツールであるモデル検査器に入力することで、検査対象が求められる性質を満たすか否かが、網羅的な状態探索などの数理的技法により判定される。また求められる性質が満たされない場合には、反例が導出される。
一方で、ソースコードはコンパイルされてオブジェクトコードに変換され、さらに特定の形式で結合された実行可能形式として、システムに搭載される。この過程でソースコードに不具合がなくても、コンパイラのバグや最適化の影響により、オブジェクトコードに不具合が発生することがありうる。また製品の開発者には、ソフトウェアの最終的な形であるオブジェクトコードに不備がないかを確認したいという要望がある。このため、オブジェクトコードについてもモデル検査を適用できれば有用である。しかし、オブジェクトコードに対するモデル検査は、オブジェクトコードが動作するコンピュータに応じてコードの表現が異なるため技術的な困難さがあり、一般的ではなく実現するツールも多くない。
この問題に対する方策として、モデル検査を応用してテストケースを生成する技術がある。モデル検査器は検証モデルを通して検査対象の実行経路や取りうる振る舞いを網羅的に探索する機能があるため、テストケース生成技術ではこの機能を活用している。仕組みは以下の通りである。
検査対象とするオブジェクトコードの元になるソースコードから検証モデルを作成し、ソースコードにおいてテストしたい実行経路の終点に対して「その終点には到達しない」というプロパティまたはアサーションを定義する。このプロパティまたはアサーションの入力に関して、モデル検査器は、その終点に至る実行経路を反例として出力する。例えば、モデル検査器にSPIN(Simple Promela Interpreter)を利用し、検証モデルにおいて最後に実行される点にassert(false)と記述して検査を実行する。前記のアサーションを記述した点が実行されるケースが存在する場合、実行が開始される点から、実行が終了する点までの実行経路に関する情報であるトレースが1ないし複数の反例として出力される。1トレースが1テストケースに対応する(実行条件を振った複数のテストケースにすることもできる)。このトレースには、途中で非決定的に選択された変数への代入、つまり入力値決定や、プロセスが複数ある場合にはその実行順序も含まれる。このトレースを、テストを実行するためのデータに変換して、検査対象のオブジェクトコードを実機またはシミュレータ上で実行するシステムの入力とする。このデータがテストケースまたはその一部となる。テストケースとは、テスト条件を示すデータである。ここで、「テストケースの一部」と表現する理由は、トレースから変換されたデータが合否基準や、検査対象とするプログラムのいくつかの実行条件を含まないためである。
このテストケース生成技術は実行経路を網羅できるため、オブジェクトコードに対してモデル検査を実施しているのと同様な効果が期待できる。モデル検査を応用したテストケース生成を行う先行技術として、特許文献1がある。
特開2010−102624号公報
ソースコードのモデル検査では、合否基準は時相論理式を用いて表現できる。しかし、オブジェクトコードの検査時には、1つ1つのテストは実機またはシミュレータでの実行となるため、合否基準は時相論理式を用いて表現することができない。モデル検査では、時相論理式の演算子である「いつも」や「将来」を扱うために、全ての制御点(モデル検査における実行ステップ)において論理式が評価される。しかし、オブジェクトコードのテストでは、合否判定は予め決められたタイミングでの論理式の評価となる。通常、実行後の1点のみにおいて合否判定の論理式が評価されることが多い。このため、実機やシミュレータを用いてテストを実行するシステムに合否基準として時相論理式を入力することができず、時相論理式で表現されるような時間の概念を含む性質の評価を実施することができない。
本発明の目的は、オブジェクトコードをテストする際に、時相論理式を用いて合否基準を表現することができる技術を提供することにある。
上記課題を解決する為に、例えば特許請求の範囲に記載の構成を採用する。本願は上記課題を解決する手段を複数含んでいるが、その一例をあげるならば、検査対象となるオブジェクトコードまたは実行可能形式ファイルのモデルから探索された実行経路情報から、テスト実行制御内容に関する情報を生成する制御内容生成部と、前記検査対象に対する、時間要素を含む検査式と、前記実行経路情報から、時間要素のない判定式とその判定式を実行するタイミングの組からなる合否条件に関する情報を生成する合否条件生成部と、前記テスト実行制御内容に関する情報と、前記合否条件に関する情報とから、前記検査式に対応する合否条件を有するテストケースを生成するテストケース生成部と、を備えるテストケース生成システムが提供される。
また、他の例によれば、コンピュータに、検査対象となるオブジェクトコードまたは実行可能形式ファイルを検査する処理を実行させるために用いられるテストケースのデータ構造であって、テスト実行制御内容に関する情報と、時間要素のない判定式とその判定式を実行するタイミングの組からなる合否条件に関する情報と、を含むデータ構造を有するデータを記録したコンピュータ読み取り可能な記録媒体が提供される。
本発明によれば、オブジェクトコードをテストする際に、時相論理式を用いて合否基準を表現することができる。これにより、検査できる内容が、時間の概念のない論理式のみのときよりも広がる。この合否基準の表現に、モデル検査を応用して生成したテストケースでオブジェクトコードを検査することを合わせることで、オブジェクトコードに対してモデル検査により時相論理で記述されたプロパティを検査するのと同様のことを実現することができる。
本発明に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、上記した以外の、課題、構成及び効果は、以下の実施例の説明により明らかにされる。
本発明のテストケース生成システムを実現するシステムの構成図である。 本発明の実施例におけるテストケース生成プログラムの機能と関連するプログラムの構成を示す図である。 本発明の実施例におけるテストケース生成プログラムの処理フローである。 本発明の実施例における制御内容生成部の処理フローである。 本発明の実施例における合否条件生成部の処理フローである。 プロパティの構文パターンに関するデータベースの一例である。 検査対象とするサンプルプログラムと、その検証モデルと、トレースの一例を示す図である。 本発明の実施例におけるテスト実行制御内容情報及び合否判定情報の一例を示す図である。 本発明の実施例において出力されるテストケースの一例を示す図である。
以下、添付図面を参照して本発明の実施例について説明する。なお、添付図面は本発明の原理に則った具体的な実施例を示しているが、これらは本発明の理解のためのものであり、決して本発明を限定的に解釈するために用いられるものではない。また、各図において共通の構成については同一の参照番号が付されている。
図1は、本発明のテストケース生成システムを実現するシステムの構成図である。本発明は、ソースコードからコンパイルされたオブジェクトコードや実行可能形式を検査するテストシステムに用いられるテストケースを生成するシステムである。テストケースとは、上述した通り、テスト条件を示すデータである。
本発明はソフトウェアツールとして実現されている。テストケース生成システムの各機能はソフトウェアとして実装される。テストケース生成システム100は、コンピュータ110を備える。コンピュータ110は、主演算装置(CPU)111と、主記憶装置(RAM)112と、記憶媒体(ROM)113と、補助記憶装置(ハードディスク)114と、入力装置(キーボードやポインティングデバイスなど)130と、表示装置(ディスプレイ、プリンタなど)140とを備える。
本発明を実現するソフトウェアは、テストケース生成プログラム120として、コンピュータ110のROM113に格納されており、CPU111により読み出されて実行される。コンピュータ110のCPU111は、テストケース生成プログラム120によって規定された処理を実行する。
検査対象であるオブジェクトコードの元になるソースコードのファイルや、そのソースコードを元に作成された検証モデルのファイルは、コンピュータ110上のハードディスク114に格納されている。テストケース生成プログラム120に対するユーザ操作は、キーボードなどの入力装置130から行うことができる。テストケース生成プログラム120による出力は、ディスプレイなどの表示装置140への表示や、ハードディスク114へデータファイル生成として成される。別の例として、テストケース生成プログラム120による出力は、図示しない外部コンピュータへのネットワークを介した出力、CD−ROMなどの外部記憶媒体へのデータファイル形式での書き込みによる出力であってもよい。また、他のプログラムもテストケース生成プログラム120と同様に扱われ、CPU111がその他のプログラム実行し、出力を行ってもよい。
図2は、ROM113に格納されたテストケース生成プログラム120の構成、及び、テストケース生成プログラム120に関連する他のプログラムの構成を示す。検証モデル生成プログラム210は、検査対象とするオブジェクトコードの元となるソースコード200を入力として、検証モデル215を生成する。ここでの検証モデル215は、上述した通り、ソフトウェア仕様またはソースコードを形式仕様記述言語を用いて表現したものである。
実行経路探索プログラム220は、検査対象についての検証モデル215を探索し、実行経路情報(例えば、以下で説明するトレース225)を出力する。より詳細には、実行経路探索プログラム220は、検証モデル215にテストケース生成用(狭義にはトレース生成用)のプロパティまたはアサーションを追加したファイルを入力として、テストケースの元となるトレース群225を反例として1ないし複数生成する。実行経路探索プログラム220は、反例の生成に公知のモデル検査器を利用している。本実施例では、モデル検査器としてSPINを利用する。反例の生成数は、モデル検査器へのオプション指定により調整することができる。
テストケース生成プログラム120は、トレース群225と、時相論理式235を入力として、テストケース群280を生成する。ここで、時相論理式235は、検査対象とするオブジェクトコードまたは実行可能形式に対するプロパティであり、時間要素を含む検査式である。テストケース生成プログラム120は、以下の構成を取っている。テストケース生成プログラムは、実行経路解析部230と、制御内容生成部240と、合否条件生成部250と、テストケース生成部260とを備える。
実行経路解析部230は、検証モデル215を入力として受け取り、検証モデル215が表現するソースコード200内の処理呼び出し関係を含む制御フローを解析する。ソースコード200がC言語で記述されている場合には、処理呼び出し関係は関数コールツリーのことである。実行経路解析部230は、解析結果として制御フローの情報を出力し、この制御フローの情報は、テストケース生成プログラム120内で利用される。なお、トレース群225が制御フローの情報を含んでいれば、検証モデル215からではなく、トレース群225から制御フローを解析してもよい。すなわち、トレース群225を実行経路解析部230の入力としてもよい。
制御内容生成部240は、トレース群225を入力とし、トレース群225の各トレースに対してテスト実行を制御する内容に関する情報(以下、これを「テスト実行制御内容情報」と呼ぶ)を生成する。ここで、テスト実行の制御内容とは、具体的には変数やマイコンのレジスタ等のデータを操作することや、割込みやリアルタイムOS(Operation System)におけるタスク起動などの処理実行、検査対象とするプログラムの実行状態を条件にしたトリガ(指定条件の成立までの待機)など、検査対象のプログラムの挙動を含むテストの実行内容に影響を与える操作の情報である。また、テスト実行の制御内容は、その操作を実行するタイミングの情報と組にされる。テスト実行制御内容情報は、1つのトレースに対し、1ないし複数のイベント列として規定される。
合否条件生成部250は、トレース群225と、時相論理式235とを入力として受け取り、トレース群225の各トレースに対して、合否条件に関する情報(以下、これを「合否条件情報」と呼ぶ)を出力する。この合否条件情報は、時間要素のない判定式と、その判定式を実行するタイミングの組からなる。また、合否条件情報では、1つのトレースに対し、1ないし複数の合否判定のイベント列が規定される。
テストケース生成部260は、制御内容生成部240が出力するテスト実行制御内容情報と、合否条件生成部250が出力する合否条件情報とから、テストケース群280を出力する。テストケース群280は、テストシステム290に入力可能な形式となっている。テストケース生成部260は、実行経路解析部230からの制御フローの情報を用いて、テスト実行制御内容情報と合否条件情報のイベント列を、1つのイベント列として実行順に整列する。その後、テストケース生成部260は、実行順に整列されたイベント列をテストシステムに入力するフォーマットに変換することにより、テストケース群280を作成する。
テストケース群280は、ハードディスク114などの記憶装置、または、所定のコンピュータ読み取り可能な記録媒体に記録される。テストシステム290は、ソースコード200からコンパイルされたオブジェクトコードや実行可能形式ファイルの検査を実行するシステムである。テストシステム290は、テストケース群280を用いて、上記オブジェクトコードや実行可能形式ファイルを検査する。これにより、時相演算子の表現を合否条件に取り入れたテストケース群280で、検査対象のオブジェクトコードや実行可能形式を検査することができる。
図3は、テストケース生成プログラム120が実行する処理フローである。まず、ステップ300で処理が開始される。次に、ステップ310において、実行経路解析部230が、検証モデル215の制御フローを解析し、制御フローの情報を出力する。
ステップ320からステップ340は、繰り返し実行される。ステップ320からステップ340は、トレース群225の各トレースに対して実行されるので、トレース群225に含まれるトレースの数だけ繰り返される。ステップ320では、制御内容生成部240が、トレース群225を解析してテスト実行制御内容情報を出力する。ステップ330では、合否条件生成部250が、トレース群225と時相論理式235とから合否条件情報を出力する。ステップ340では、テストケース生成部260が、テスト実行制御内容情報と合否条件情報とからテストケース群280の1テストケースを出力する。以上を繰り返し、ステップ390で処理を終了する。
図4は、制御内容生成部240によるステップ320の処理フローを詳細化したものである。ステップ400で処理を開始する。ステップ410からステップ440は、トレース群225の各トレースに含まれる処理のステップ数だけ繰り返される。ステップ410では、制御内容生成部240が、処理対象とする各トレースに含まれるステップを先頭から1つずつ抽出する。ここでは、未抽出な処理のステップのうち次に実行される処理のステップの1つが1回の実行で抽出され、内容が解釈される。
ステップ420では、制御内容生成部240が、ステップ410で抽出された処理の種類を判定する。処理が変数(マイコンのレジスタを含む)への値代入による入力値設定であれば、ステップ430に進む。処理がプロセス起動であればステップ440に進む。入力値設定と判定する条件は、処理が代入文であることと、代入される変数が入力値として設定されているものであることである。プロセス起動と判定する条件は、当該処理がプロセスの起点として指定されている関数の最初の処理であること、である。関数の最初の処理か否かは、実行経路解析部230からの制御フロー情報を用いて判定できる。
ステップ430では、制御内容生成部240が、出力するテスト実行制御内容情報に、変数へ値を代入する処理を追加する。実行タイミングの情報としては、当該処理の記述位置(関数や行など)が付与される。処理の記述位置は、トレースから取得するか、実行経路解析部230からの制御フロー情報を辿ることで取得できる。
ステップ440では、ステップ430と同様にして、制御内容生成部240が、テスト実行制御内容情報に、トレースの処理が示す割込みやタスク起動を発生させるための制御処理を追加する。検証モデルの各プロセスが検査対象のプログラムにおいて相当する処理(割り込みやタスク起動など)の情報が制御内容生成部240に設定されているものとし、処理に応じた制御処理が選択される。以上を繰り返し、ステップ490で処理を終了する。
図5は、合否条件生成部250によるステップ330の処理フローを詳細化したものである。ステップ500で処理が開始される。ステップ510では、合否条件生成部250が、入力された時相論理式235の構文を解析する。解析された構文はAST(Abstract Syntax Tree)の形で内部データとして表現される。ステップ520では、合否条件生成部250が、ステップ510により解析された時相論理式235の構文を、合否条件生成部250が有するプロパティの構文パターンに関するデータベース(検査式解釈情報)と照合して、合致するパターンを抽出する。
ステップ530では、合否条件生成部250が、ステップ510により解析されたプロパティの構文から、テストケースの合否判定に利用する論理式(判定式)を抽出する。また、合否条件生成部250が、実行経路解析部230からの制御フロー情報と、ステップ520にて判定されたプロパティのパターンとから、合否判定を行なうタイミングに関する情報を1ないし複数生成する。最終的に、合否条件生成部250が、これら論理式(判定式)と判定タイミングに関する情報とを組にすることにより、合否条件情報を作成する。以上の処理を実行し、ステップ590で処理を終了する。
次に、本実施例のテストケース生成システムで扱われる情報について説明する。以下のいくつかの情報については、「テーブル」構造を用いて説明するが、必ずしもテーブルによるデータ構造で表現されていなくても良く、他のデータ構造で表現されていても良い。そのため、データ構造に依存しないことを示すために、以下では、テーブル形式で表現されたデータを単に「情報」と呼ぶことがある。
図6は、プロパティの構文パターンに関するデータベースであるプロパティ解釈テーブル(検査式解釈情報)600を示す。プロパティ解釈テーブル600は、図5のステップ510において参照される情報である。プロパティ解釈テーブル600は、プロパティを合否条件に変換するルールを含む。プロパティ解釈テーブル600は、例えば、ハードディスク114などの記憶装置に格納されており、合否条件生成部250が、この情報を読み込んで上記の処理を行う。なお、プロパティ解釈テーブル600に規定されている構文形を持つプロパティだけが、テストケース生成プログラム120で扱えることになる。
本実施例では、プロパティ解釈テーブル600は、プロパティ構文形のパターン毎に付されるルール番号601と、プロパティ構文形602と、合否条件603と、各合否判定間の関係(1テストケース全体としての合否判定に用いる際の各合否判定間の関係)604とを構成項目として含む。本例において、プロパティ解釈テーブル600で扱うプロパティは、LTL(Linear Temporal Logic)としている。
プロパティ解釈テーブル600には、2つの時相論理式のパターンが記載されている。1つはG(expr)、もう1つはF(expr)である。Gは「いつも」を意味する時相演算子であり、Fは「将来」を意味する時相演算子である。またexprはここでは論理式を示す抽象表現である。exprは合否判定に利用する論理式となる。
ルール番号601が「R1」のレコードでは、「G(expr)」がテストケースでは「(実行される)各関数の出入口でexprを判定する」ことに変換されるルールが記述されている。このようなルールは、ルールを記述する言語や、変換を行なうプログラム自体により表現されうる。また、ルール番号601が「R1」のレコードにおいて、exprによる各判定の結果を、1つのテストケース全体としての合否判定に用いる際には、各判定結果の「AND」を取ることが指定されている。同様に、ルール番号601が「R2」のレコードでは、F(expr)が「各関数の出入口でexprを判定する」ことに変換され、かつ1テストケース全体としての合否判定には、各判定結果の「OR」を取ることが指定されている。
プロパティ解釈テーブル600で指定される内容は、利用するテストシステムの機能に応じて変更しうる。例えばテストシステムが検査対象のプログラムの各ステートメントにて合否判定を実施できる場合には、G(expr)は「(実行される)各ステートメントの実行後にexprを判定する」と変換するように指定してもよい。また、プロパティ解釈テーブル600は図6に示した以外の構文形を扱うこともできる。
図7は、検査対象とするサンプルプログラムのC言語で記述されたソースコード710と、それをSPINのモデル記述言語Promelaで書き表し、さらにテストケース生成用のアサーションassert(0)を追加した検証モデル720と、検証モデル720の検査をSPINで実行して得られるトレースの一例730とを示している。
ソースコード710の関数は、検証モデル720ではinlineマクロに変換されている。また、ソースコード710において、DI0は、デジタル入力のレジスタを表している。ソースコードにおける変数aへのDI0の代入は、検証モデル720では変数aへの0か1の非決定的な代入として表現されている。トレース730は、変数aに1が代入されるケースである。ただし説明を容易にするため、実際のトレース(反例)のフォーマットとは異なっている。なお、変数aはテストケース生成プログラム120に対し入力として指定されているものとする。また、テストケース生成プログラム120には、プロパティとしてG(x<=1)が指定されているものとする。
実行経路解析部230は、検証モデル720をパースしてASTを生成し、ASTを探索して、各inlineの中で他のinlineを利用する記述を発見することで、もとのソースコード710の関数コールツリーを解析する。ここではmain→func1という呼び出し関係がわかる。
図8と図9は、検証モデル720とトレース730を入力として、テストケース生成プログラム120が図3の処理を実行して出力するデータを示している。図8は、テスト実行制御内容情報810、及び合否条件情報820を示す。テスト実行制御内容情報810は、番号811と、テスト実行制御の処理の種類812と、その処理の内容813とを構成項目として含む。また、合否条件情報820は、番号821と、テスト実行制御の処理の種類(合否判定もテスト実行制御の一種としている)822と、その処理の内容823とを構成項目として含む。図9は、テストケース900を示す。図8及び図9において、各情報の1行が1つのイベントや、テストシステムが実行する処理の1ステップを示している。なお、テストケース900は、テストシステムに入力な形式に別途変換されるものとする。
制御内容生成部240の処理について説明する。制御内容生成部240は、トレース730を入力として受け取り、その後、トレース730を解析し、入力変数aに1を代入している処理を抽出する。制御内容生成部240は、さらに、トレース730に記載された処理の位置(図7の720の12行目に対応する)と制御フローの情報とから、この処理が関数mainの中で実施されていると判定する。この判定結果を用いて、制御内容生成部240は、テスト実行制御内容情報810を出力する。制御内容生成部240が出力するテスト実行制御内容情報810では、イベント列の長さは2となる。1つめのイベントは、関数mainに入ることを条件とするトリガである。2つめのイベントは、変数aに1を代入する処理である。
次に、合否条件生成部250の処理について説明する。合否条件生成部250が、トレース730とプロパティG(x<=1)を解析し、合否条件情報820を出力する。この際、合否条件生成部250は、プロパティ解釈テーブル600に記載されたルールを参照する。この例では、合否条件生成部250が、プロパティ解釈テーブル600においてルール「R1」を選択(参照)し、その結果、制御フローの情報に沿って、関数mainの入口、関数func1の入口、関数func1の出口、関数mainの出口でトリガを設定し、各トリガの直後に合否判定を設定する。すなわち、出力される合否条件情報820は、関数mainの入口、関数func1の入口、関数func1の出口、関数mainの出口でトリガを掛けて、各トリガが掛かった直後にx<=1を判定する内容となっている。なお、1テストケース全体としての合否判定に各判定結果のANDを取ることは、図8、図9では省略したが、合否条件情報820、テストケース900にその情報が付与されている。すなわち、合否条件生成部250が、1テストケース全体としての合否判定に各判定結果のANDを取ることを示す情報を、合否条件情報に付加し、最終的に、テストケース生成部260は、上記情報を付加してテストケースを生成することになる。
次に、テストケース生成部260の処理について説明する。テストケース生成部260は、テスト実行制御内容情報810と合否条件情報820とから、テストケース900を出力する。図9に示すように、テストケース900は、ステップ番号901と、テスト実行制御の処理種類(合否判定もテスト実行制御の一種としている)902と、テスト実行制御の処理内容903とを構成項目として含む。ここで、テストケース生成部260が出力するテストケース900では、テスト実行制御内容情報810と合否条件情報820が合成されて1つ情報になっている。テストケース生成部260は、関数mainの入口でのトリガが重複していると判定し、重複している部分を1つに集約する。
図8及び図9の例では、テスト実行の処理種類として、入力値設定、トリガ、合否判定が記されている。この他に割込みやタスク起動を示す記述が用意されているものとする。割込みやタスク起動の処理を実行するタイミングを取る場合にもトリガを利用できる。このトリガ条件には、利用するテストシステムがプログラムのステートメント単位でタイミングを指定できるのであれば、トレースにてプロセスが切り替わる直前に実行されるステートメントの実行完了時を指定すればよい。利用するテストシステムが関数の出入口を検出できる場合には、上記ステートメントの関数の入口と、さらにそこから所定時間の経過をトリガ条件にする方法がありうる。
以上により、プログラムの実行の各所でプロパティの論理式(x<=1)が判定されるため、プロパティの「いつも」と同様の合否判定を実現することができる。関数の出入口のみで判定することは、モデル検査の各ステートメントでの判定を完全に再現してはいないが、それに準じた判定がなされる。また利用するテストシステムの機能に応じてプロパティ解釈テーブル600のルールを変更することで、判定頻度をモデル検査と同等にすることもできる。
次に、プロパティの時相演算子が「将来」である場合について説明する。この例では、合否条件生成部250が、プロパティ解釈テーブル600においてルール「R2」を選択(参照)し、制御フローの情報に沿って、トリガ及び合否判定を設定した合否条件情報を作成する。その後、テストケース生成部260が、この合否条件情報と、制御内容生成部240から出力されたテスト実行制御内容情報とから、テストケース900を出力する。
より詳細には、入力されるプロパティの時相演算子が「将来」のときには、1テストケース全体としての合否判定に各判定結果のORを取ることがテストケース900にて指定されるほか、最後のイベントとして合否判定のトリガが追加される。ここで、テストケース生成プログラム120には、プロパティとしてF(x>1)が指定されているものとする。F(x>1)であれば、x>1を条件とするトリガがテストケース900の最後に追加される。トリガのタイムアウト時間はテストケース生成プログラム120に設定されており、テストケース900に付与される(図に記載無し)。論理式を条件とするトリガが実行されたか否かは、テストシステム290において合否条件と同様に判定および記録される。また、この判定結果は、テストシステム290において、1テストケース全体の合否判定にも利用される。以上により、プログラムの実行中に少なくとも1箇所以上でプロパティの論理式(x>1)が成立した場合にはそのことを検出できるため、プロパティの「将来」と同様の合否判定を実現することができる。
以上により、オブジェクトコードを検査する際に、合否基準として時相論理式を用いることができる。これにより「いつも」や「将来」といった時相演算子の表現を合否条件に取り入れることができる。また、モデル検査を応用したテストケース生成において合否基準に時相論理式を取り入れれば、オブジェクトコードに対してモデル検査を実施するのと同様の検査を実現することができる。これらにより、ソフトウェアの不具合低減とシステムの信頼性向上を達成することができる。
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。上記実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることもできる。また、ある実施例の構成に他の実施例の構成を加えることもできる。また、各実施例の構成の一部について、他の構成を追加・削除・置換することもできる。
上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム等の情報は、何らかの記録装置あるいは記録媒体に格納することができる。また、図9で例示したようなデータ構造を有するテストケースのデータを、何らかの記録装置あるいは記録媒体に格納することができる。
100 :テストケース生成システム
110 :コンピュータ
111 :CPU
113 :ROM
114 :ハードディスク
120 :テストケース生成プログラム
130 :入力装置
140 :表示装置
200 :ソースコード
210 :検証モデル生成プログラム
215 :検証モデル
220 :実行経路探索プログラム
225 :トレース群
230 :実行経路解析部
235 :時相論理式
240 :制御内容生成部
250 :合否条件生成部
260 :テストケース生成部
280 :テストケース群
290 :テストシステム
600 :プロパティ解釈テーブル
710 :ソースコード
720 :検証モデル
730 :トレース
810 :テスト実行制御内容情報
820 :合否条件情報
900 :テストケース

Claims (13)

  1. 検査対象となるオブジェクトコードまたは実行可能形式ファイルのモデルから探索された実行経路情報から、テスト実行制御内容に関する情報を生成する制御内容生成部と、
    前記検査対象に対する、時間要素を含む検査式と、前記実行経路情報から、時間要素のない判定式とその判定式を実行するタイミングの組からなる合否条件に関する情報を生成する合否条件生成部と、
    前記テスト実行制御内容に関する情報と、前記合否条件に関する情報とから、前記検査式に対応する合否条件を有するテストケースを生成するテストケース生成部と、
    を備えることを特徴とするテストケース生成システム。
  2. 請求項1に記載のテストケース生成システムにおいて、
    前記検査式の前記時間要素が「いつも」の意味のときに、前記合否条件生成部は、前記合否条件に関する情報に、前記合否条件の判定結果のANDを取ることを示す第1の情報を付加し、
    前記テストケース生成部は、前記第1の情報を付加して前記テストケースを生成することを特徴とするテストケース生成システム。
  3. 請求項1に記載のテストケース生成システムにおいて、
    前記検査式の前記時間要素が「将来」の意味のときに、前記合否条件生成部は、前記合否条件に関する情報に、前記合否条件の判定結果のORを取ることを示す第2の情報を付加し、
    前記テストケース生成部は、前記第2の情報を付加して前記テストケースを生成することを特徴とするテストケース生成システム。
  4. 請求項1に記載のテストケース生成システムにおいて、
    前記検査式の前記時間要素が「将来」の意味のときに、前記テストケース生成部は、前記検査式に対応する前記合否条件のトリガが最後のイベントとして追加された前記テストケースを出力することを特徴とするテストケース生成システム。
  5. 請求項1に記載のテストケース生成システムにおいて、
    前記合否条件生成部は、前記検査式を前記合否条件に変換するルールを含む検査式解釈情報を参照して、前記合否条件に関する情報を生成することを特徴とするテストケース生成システム。
  6. 請求項5に記載のテストケース生成システムにおいて、
    前記検査式解釈情報は、前記検査式の構文形と、前記合否条件と、1つのテストケース全体で合否判定を行う際の合否条件間の関係とを構成項目として含むことを特徴とするテストケース生成システム。
  7. 請求項1に記載のテストケース生成システムにおいて、
    前記モデルから制御フローの情報を解析する実行経路解析部をさらに備えることを特徴とするテストケース生成システム。
  8. 請求項7に記載のテストケース生成システムにおいて、
    前記テストケース生成部は、前記制御フローの情報を用いて、前記テスト実行制御内容に関する情報と前記合否条件に関する情報とを整列することにより、前記テストケースを生成することを特徴とするテストケース生成システム。
  9. 請求項7に記載のテストケース生成システムにおいて、
    前記制御内容生成部は、前記制御フローの情報を用いて、前記テスト実行制御内容に関する情報を生成することを特徴とするテストケース生成システム。
  10. 請求項7に記載のテストケース生成システムにおいて、
    前記合否条件生成部は、前記制御フローの情報を用いて、前記合否条件に関する情報を生成することを特徴とするテストケース生成システム。
  11. コンピュータに、検査対象となるオブジェクトコードまたは実行可能形式ファイルを検査する処理を実行させるために用いられるテストケースのデータ構造であって、テスト実行制御内容に関する情報と、時間要素のない判定式とその判定式を実行するタイミングの組からなる合否条件に関する情報と、を含むデータ構造を有するデータを記録したコンピュータ読み取り可能な記録媒体。
  12. 請求項11に記載のコンピュータ読み取り可能な記録媒体において、
    前記データ構造に、前記合否条件の判定結果のANDまたはORを取ることを示す情報が付加されていることを特徴とするコンピュータ読み取り可能な記録媒体。
  13. 請求項12に記載のコンピュータ読み取り可能な記録媒体において、
    前記合否条件の判定結果のORを取ることを示す情報が付加されている場合、前記データ構造において、前記合否条件のトリガが最後のイベントとして追加されていることを特徴とするコンピュータ読み取り可能な記録媒体。
JP2014134156A 2014-06-30 2014-06-30 テストケース生成システム及びテストケースを記録した記録媒体 Active JP6316120B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2014134156A JP6316120B2 (ja) 2014-06-30 2014-06-30 テストケース生成システム及びテストケースを記録した記録媒体
EP15816004.4A EP3163448A4 (en) 2014-06-30 2015-06-03 Test case generation system and recording medium wherein test case is recorded
PCT/JP2015/065964 WO2016002417A1 (ja) 2014-06-30 2015-06-03 テストケース生成システム及びテストケースを記録した記録媒体
US15/308,299 US10162739B2 (en) 2014-06-30 2015-06-03 Test case generation system and recording medium wherein test case is recorded
CN201580023480.6A CN106415504B (zh) 2014-06-30 2015-06-03 测试用例生成系统及记录测试用例的记录介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014134156A JP6316120B2 (ja) 2014-06-30 2014-06-30 テストケース生成システム及びテストケースを記録した記録媒体

Publications (2)

Publication Number Publication Date
JP2016012274A true JP2016012274A (ja) 2016-01-21
JP6316120B2 JP6316120B2 (ja) 2018-04-25

Family

ID=55018969

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014134156A Active JP6316120B2 (ja) 2014-06-30 2014-06-30 テストケース生成システム及びテストケースを記録した記録媒体

Country Status (5)

Country Link
US (1) US10162739B2 (ja)
EP (1) EP3163448A4 (ja)
JP (1) JP6316120B2 (ja)
CN (1) CN106415504B (ja)
WO (1) WO2016002417A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101704338B1 (ko) * 2016-02-12 2017-02-08 강원대학교산학협력단 실시간 시스템을 위한 테스트 케이스 생성 장치 및 방법
WO2018158939A1 (ja) * 2017-03-03 2018-09-07 三菱電機株式会社 通信試験装置、通信試験方法及びプログラム
KR20190099894A (ko) * 2018-02-20 2019-08-28 주식회사 아이오티큐브 탐색 전략을 자동으로 생성하는 방법 및 자동으로 생성된 탐색 전략을 사용한 콘콜릭 테스팅 수행 방법

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180119857A (ko) * 2017-04-26 2018-11-05 현대자동차주식회사 소프트웨어 변경 영향성 분석 방법 및 장치
US10833688B2 (en) * 2017-06-23 2020-11-10 Hitachi Automotive Systems, Ltd. Electronic control device
EP3614217A3 (en) * 2018-08-24 2020-09-09 Tata Consultancy Services Limited Controlling behavior of an internet of things (iot) automation system by identifying policy violations
US20210349113A1 (en) * 2018-09-27 2021-11-11 Shimadzu Corporation Automatic suitability determination system
US10761961B2 (en) * 2018-12-21 2020-09-01 Fujitsu Limited Identification of software program fault locations
EP3859532B1 (en) * 2020-01-31 2022-10-12 Tata Consultancy Services Limited Method and system for counter example guided loop abstraction refinement
CN115934513A (zh) * 2022-11-16 2023-04-07 大商所飞泰测试技术有限公司 一种需求分析及测试设计适配方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009251936A (ja) * 2008-04-07 2009-10-29 Mitsubishi Electric Corp プログラマブル表示器の画面プログラム自動試験システム
JP2010250669A (ja) * 2009-04-17 2010-11-04 Denso Corp テストケース生成装置、オブジェクト検査装置、およびプログラム

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6499132B1 (en) * 2001-06-15 2002-12-24 Verisity Ltd. System and method for analyzing temporal expressions
US7340725B1 (en) * 2004-03-31 2008-03-04 Microsoft Corporation Smart test attributes and test case scenario in object oriented programming environment
US7503037B2 (en) * 2004-04-02 2009-03-10 Bea Systems, Inc. System and method for identifying bugs in software source code, using information from code coverage tools and source control tools to determine bugs introduced within a time or edit interval
JP2006024006A (ja) * 2004-07-08 2006-01-26 Denso Corp テストケース生成装置、テストケース生成プログラム、モデルベース開発プログラム、ソースコード生成妥当性診断装置、ソースコード生成妥当性診断プログラム、およびモデルベース開発方法。
CN100351811C (zh) * 2004-11-15 2007-11-28 华为技术有限公司 一种软件产品健壮性的测试方法及装置
US8146057B1 (en) * 2005-01-07 2012-03-27 Interactive TKO, Inc. Instrumentation system and method for testing software
US7644078B2 (en) * 2005-02-28 2010-01-05 Gm Global Technology Operations, Inc. System and method for mining of temporal data
US8266600B2 (en) * 2005-03-28 2012-09-11 Nec Laboratories America, Inc. Model checking of multi threaded software
CN1908892A (zh) * 2005-08-01 2007-02-07 王彤 测试用例设计方法和系统
US8683441B2 (en) * 2006-01-11 2014-03-25 International Business Machines Corporation Software equivalence checking
US8347271B1 (en) * 2007-03-05 2013-01-01 Emc Corporation Software testing
TWI347519B (en) * 2007-05-16 2011-08-21 Nat Univ Tsing Hua Method for generating software test cases
US7873945B2 (en) * 2007-06-29 2011-01-18 Microsoft Corporation Automatically generating test cases for binary code
US7506312B1 (en) * 2008-01-31 2009-03-17 International Business Machines Corporation Method and system for automatically determining risk areas to retest
US8495574B2 (en) * 2008-06-16 2013-07-23 International Business Machines Corporation Code coverage tool
US8387021B2 (en) * 2008-09-26 2013-02-26 Microsoft Corporation Symbolic runtime checking of quantified contracts
JP5176869B2 (ja) 2008-10-27 2013-04-03 富士通株式会社 テストケース生成プログラムとテストケース生成装置およびテストケース生成方法
US8359576B2 (en) * 2008-11-14 2013-01-22 Fujitsu Limited Using symbolic execution to check global temporal requirements in an application
US9117028B2 (en) * 2011-12-15 2015-08-25 The Boeing Company Automated framework for dynamically creating test scripts for software testing
CN103186466B (zh) * 2011-12-31 2016-06-15 中国银联股份有限公司 基于关联测试用例自动生成的信息交互测试装置及方法
US20130275946A1 (en) * 2012-04-16 2013-10-17 Oracle International Corporation Systems and methods for test development process automation for a test harness
US8972949B2 (en) * 2012-05-29 2015-03-03 Fujitsu Limited Rule-based method for proving unsatisfiable conditions in a mixed numeric and string solver
CN102693183B (zh) * 2012-05-30 2015-04-01 瑞斯康达科技发展股份有限公司 一种实现软件自动化测试的方法及系统
US8997064B2 (en) * 2012-08-16 2015-03-31 Fujitsu Limited Symbolic testing of software using concrete software execution
US9021449B2 (en) * 2012-08-16 2015-04-28 Fujitsu Limited Software regression testing using symbolic execution
US8856751B2 (en) * 2012-09-20 2014-10-07 Fujitsu Limited Abstract symbolic execution for scaling symbolic execution generation and automatic test generation
JP6003699B2 (ja) * 2013-02-08 2016-10-05 富士通株式会社 テストデータ生成プログラム、方法及び装置
JP6032095B2 (ja) * 2013-03-27 2016-11-24 富士通株式会社 テストケース生成方法、テストケース生成装置、およびテストケース生成プログラム
US10031841B2 (en) * 2013-06-26 2018-07-24 Sap Se Method and system for incrementally updating a test suite utilizing run-time application executions
US9251045B2 (en) * 2013-12-27 2016-02-02 International Business Machines Corporation Control flow error localization
US9336128B2 (en) * 2014-03-21 2016-05-10 Oracle International Corporation Method and system for code analysis using symbolic types
US9483380B2 (en) * 2014-04-15 2016-11-01 Fujitsu Limited Parameterized states in symbolic execution for software testing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009251936A (ja) * 2008-04-07 2009-10-29 Mitsubishi Electric Corp プログラマブル表示器の画面プログラム自動試験システム
JP2010250669A (ja) * 2009-04-17 2010-11-04 Denso Corp テストケース生成装置、オブジェクト検査装置、およびプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101704338B1 (ko) * 2016-02-12 2017-02-08 강원대학교산학협력단 실시간 시스템을 위한 테스트 케이스 생성 장치 및 방법
WO2018158939A1 (ja) * 2017-03-03 2018-09-07 三菱電機株式会社 通信試験装置、通信試験方法及びプログラム
JPWO2018158939A1 (ja) * 2017-03-03 2019-11-07 三菱電機株式会社 通信試験装置、通信試験方法及びプログラム
KR20190099894A (ko) * 2018-02-20 2019-08-28 주식회사 아이오티큐브 탐색 전략을 자동으로 생성하는 방법 및 자동으로 생성된 탐색 전략을 사용한 콘콜릭 테스팅 수행 방법
KR102104295B1 (ko) 2018-02-20 2020-04-24 주식회사 아이오티큐브 탐색 전략을 자동으로 생성하는 방법 및 자동으로 생성된 탐색 전략을 사용한 콘콜릭 테스팅 수행 방법

Also Published As

Publication number Publication date
WO2016002417A1 (ja) 2016-01-07
JP6316120B2 (ja) 2018-04-25
US20170046252A1 (en) 2017-02-16
EP3163448A1 (en) 2017-05-03
CN106415504A (zh) 2017-02-15
US10162739B2 (en) 2018-12-25
CN106415504B (zh) 2019-08-30
EP3163448A4 (en) 2018-06-13

Similar Documents

Publication Publication Date Title
JP6316120B2 (ja) テストケース生成システム及びテストケースを記録した記録媒体
US10025696B2 (en) System and method for equivalence class analysis-based automated requirements-based test case generation
JP5775829B2 (ja) ソフトウェアの構造可視化プログラムおよびシステム
CN104899147B (zh) 一种面向安全检查的代码静态分析方法
CN104536883B (zh) 一种静态缺陷检测方法及其系统
US9208451B2 (en) Automatic identification of information useful for generation-based functional verification
Hammouda et al. A design approach to automatically synthesize ansi-c assertions during high-level synthesis of hardware accelerators
Najm Measuring Maintainability Index of a Software Depending on Line of Code Only
US9471465B2 (en) Trace value correlation with data field declarations
Févotte et al. Studying the numerical quality of an industrial computing code: A case study on code_aster
KR101583932B1 (ko) 프로그램의 시그니처를 생성하는 시그니처 생성 장치 및 방법, 시그니처의 악성 코드를 검출하는 악성 코드 검출 장치 및 방법
TW201907304A (zh) 用於一微控制器程式之程式碼涵蓋範圍追蹤
Gupta et al. A dynamic approach to estimate change impact using type of change propagation
JP6002507B2 (ja) ソフトウェア検証用プログラムおよびソフトウェア検証システム
Puhan et al. Program crash analysis based on taint analysis
JP2017224185A (ja) バグ混入確率計算プログラム及びバグ混入確率計算方法
WO2012133606A1 (ja) プログラムの影響範囲設定装置、並びにこれを用いた影響範囲特定方法及び影響波及のあるプログラムの抽出方法
Gustafsson Usability aspects of WCET analysis
JP2015069400A (ja) ソフトウェアテストシステム
JPWO2019142266A1 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
JPWO2014141352A1 (ja) システム制御装置
Hong et al. Modified condition/decision coverage (MC/DC) oriented compiler optimization for symbolic execution
JP7059827B2 (ja) ソースコード生成装置
Rosiak et al. A model-based mutation framework for IEC61131-3 manufacturing systems
Gupta Automatic generation of coverage directives targeting signal relationships by statically analyzing RTL

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180213

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: 20180306

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180327

R150 Certificate of patent or registration of utility model

Ref document number: 6316120

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150