JP5149225B2 - テストケース生成装置およびテストケース生成方法 - Google Patents
テストケース生成装置およびテストケース生成方法 Download PDFInfo
- Publication number
- JP5149225B2 JP5149225B2 JP2009063281A JP2009063281A JP5149225B2 JP 5149225 B2 JP5149225 B2 JP 5149225B2 JP 2009063281 A JP2009063281 A JP 2009063281A JP 2009063281 A JP2009063281 A JP 2009063281A JP 5149225 B2 JP5149225 B2 JP 5149225B2
- Authority
- JP
- Japan
- Prior art keywords
- transition
- state
- test case
- group
- states
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
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)
- Stored Programmes (AREA)
Description
・ 場合1: 状態「タスク1が待ち状態」で、イベント「wakeup(タスク1)」が発生
・ 場合2: 状態「タスク2が待ち状態」で、イベント「wakeup(タスク2)」が発生
複数の内部変数の値の組によって表される前記システムの状態と、前記システムに対して発生する外部イベントに応じた状態変化を表す第1遷移とを含む状態遷移系を記憶する第1の記憶手段と、
前記システムに対して発生し得る外部イベント毎に、前記外部イベントが発生する前の前記システムの状態を定義した事前条件と、前記外部イベントの発生後の前記システムの状態を定義した事後条件とを記述した要求項目を記憶する第2の記憶手段と、
前記第2の記憶手段からm個(mは1以上の整数)の要求項目を選択し、前記m個の要求項目から前記事前条件と前記事後条件とを抽出する条件抽出手段と、
与えられた状態を、前記与えられた状態に対する前記条件抽出手段により抽出したすべての事前条件および事後条件の真偽の組へ写像する状態写像関数を生成する状態写像生成手段と、
前記状態遷移系に含まれる前記複数の状態のそれぞれを、前記状態写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づき、同じ写像値をもつ状態群を同じグループに分類することにより前記複数の状態をグループ化して、複数のグループを生成するグループ化手段と、
前記複数のグループのうちの2つのグループを指定し、一方のグループに含まれる状態のうちの1つから他方のグループに含まれる状態のうちの1つへの少なくとも1つの第1遷移が前記状態遷移系に存在するときは、前記一方のグループから前記他方のグループへの第2の遷移を設定し、前記グループの指定と第2の遷移の設定とを繰り返し、これにより複数の前記グループ間の第2遷移を表す剰余状態遷移系を生成する剰余状態遷移系生成手段と、
前記剰余状態遷移系の所定のグループから開始して、前記剰余状態遷移系における前記第2遷移を順次辿ることによって、前記第2遷移のシーケンスである代表遷移パスを生成する代表遷移パス生成手段と、
前記第2遷移が追跡された順番で前記代表遷移パスの前記第2遷移を順次選択し、前記順次選択された第2遷移のそれぞれについて、前記選択された第2遷移の遷移元グループにおける状態のうちの1つと同じ遷移元状態を有し、かつ前記選択された第2遷移の遷移先グループにおける状態のうちの1つと同じ遷移先状態を有し、かつ、直前に特定された第1遷移の遷移先状態と同じ遷移元状態を有する、第1遷移を特定し、前記順次選択された第2遷移に対して特定された各第1遷移のシーケンスと前記各第1遷移にそれぞれ対応する外部イベントとを含むテストケースを生成する、遷移パス変換手段と、
を含むテストケース生成手段と、
前記テストケースを出力する出力手段と、
を備えたことを特徴とする。
複数の内部変数の値の組によって表される前記システムの状態と、前記システムに対して発生する外部イベントに応じた状態変化を表す第1遷移とを含む状態遷移系を記憶する第1の記憶手段と、
前記システムに対して発生し得る外部イベント毎に、前記外部イベントが発生する前の前記システムの状態を定義した事前条件と、前記外部イベントの発生後の前記システムの状態を定義した事後条件とを記述した要求項目を記憶し、前記事前条件および前記事後条件は、それぞれ1つの内部変数の条件を定めた1つ以上の原子述語の論理演算により形成されている、第2の記憶手段と、
前記第2の記憶手段からm個(mは1以上の整数)の要求項目を選択し、前記m個の要求項目における前記事前条件と前記事後条件に含まれるすべての原子述語を抽出する原子述語抽出手段と、
各抽出された原子述語のうちh個(hは1以上の整数)の原子述語を選択し、与えられた状態を、前記与えられた状態に対する前記h個の原子述語の真偽の組へ写像する状態写像関数を生成する状態写像生成手段と、
前記状態遷移系に含まれる前記複数の状態のそれぞれを、前記状態写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づき、同じ写像値をもつ状態群を同じグループに分類することにより前記複数の状態をグループ化して、複数のグループを生成するグループ化手段と、
前記複数のグループのうちの2つのグループを指定し、一方のグループに含まれる状態のうちの1つから他方のグループに含まれる状態のうちの1つへの少なくとも1つの第1遷移が前記状態遷移系に存在するときは、前記一方のグループから前記他方のグループへの第2の遷移を設定し、前記グループの指定と第2の遷移の設定とを繰り返し、これにより複数の前記グループ間の第2遷移を表す剰余状態遷移系を生成する剰余状態遷移系生成手段と、
前記剰余状態遷移系の所定のグループから開始して、前記剰余状態遷移系における前記第2遷移を順次辿ることによって、前記第2遷移のシーケンスである代表遷移パスを生成する代表遷移パス生成手段と、
前記第2遷移が追跡された順番で前記代表遷移パスの前記第2遷移を順次選択し、前記順次選択された第2遷移のそれぞれについて、前記選択された第2遷移の遷移元グループにおける状態のうちの1つと同じ遷移元状態を有し、かつ前記選択された第2遷移の遷移先グループにおける状態のうちの1つと同じ遷移先状態を有し、かつ、直前に特定された第1遷移の遷移先状態と同じ遷移元状態を有する、第1遷移を前記状態遷移系において特定し、前記順次選択された第2遷移に対して特定された各第1遷移のシーケンスを含むテストケースを生成する遷移パス変換手段と、
を含むテストケース生成手段と、
前記m個の要求項目のそれぞれについて前記テストケースにおいて遷移元状態が前記事前条件を満たし遷移先状態が前記事後条件を満たす第1遷移が網羅されているか否かを評価し、前記m個の要求項目のうち前記テストケースにより網羅されている要求項目の割合または個数を示す網羅度を計算する網羅性評価手段と、
前記網羅度が閾値を満たすときの前記テストケースを出力する出力手段と、を備え、
前記状態写像生成手段は、前記閾値を満たす前記網羅度が得られるように前記各抽出された原子述語を取捨選択して前記状態写像関数を生成する
ことを特徴とする。
読み出し手段が、複数の内部変数の値の組によって表される前記システムの状態と、前記システムに対して発生する外部イベントに応じた状態変化を表す第1遷移とを含む状態遷移系を記憶する第1の記憶手段から前記状態遷移系を読み出し、
条件抽出手段が、前記システムに対して発生し得る外部イベント毎に、前記外部イベントが発生する前の前記システムの状態を定義した事前条件と、前記外部イベントの発生後の前記システムの状態を定義した事後条件とを記述した要求項目を記憶する第2の記憶手段からm個(mは1以上の整数)の要求項目を選択し、前記m個の要求項目から前記事前条件と前記事後条件とを抽出し、
状態写像生成手段が、与えられた状態を、前記与えられた状態に対する前記条件抽出手段により抽出したすべての事前条件および事後条件の真偽の組へ写像する状態写像関数を生成し、
グループ化手段が、前記状態遷移系に含まれる前記複数の状態のそれぞれを、前記状態写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づき、同じ写像値をもつ状態群を同じグループに分類することにより前記複数の状態をグループ化して、複数のグループを生成し、
剰余状態遷移系生成手段が、前記複数のグループのうちの2つのグループを指定し、一方のグループに含まれる状態のうちの1つから他方のグループに含まれる状態のうちの1つへの少なくとも1つの第1遷移が前記状態遷移系に存在するときは、前記一方のグループから前記他方のグループへの第2の遷移を設定し、前記グループの指定と第2の遷移の設定とを繰り返し、これにより複数の前記グループ間の第2遷移を表す剰余状態遷移系を生成し、
代表遷移パス生成手段が、前記剰余状態遷移系の所定のグループから開始して、前記剰余状態遷移系における前記第2遷移を順次辿ることによって、前記第2遷移のシーケンスである代表遷移パスを生成し、
遷移パス変換手段が、前記第2遷移が追跡された順番で前記代表遷移パスの前記第2遷移を順次選択し、前記順次選択された第2遷移のそれぞれについて、前記選択された第2遷移の遷移元グループにおける状態のうちの1つと同じ遷移元状態を有し、かつ前記選択された第2遷移の遷移先グループにおける状態のうちの1つと同じ遷移先状態を有し、かつ、直前に特定された第1遷移の遷移先状態と同じ遷移元状態を有する、第1遷移を前記状態遷移系において特定し、前記順次選択された第2遷移に対して特定された各第1遷移のシーケンスを含むテストケースを生成し、
出力手段が、前記テストケースを出力する、
ことを特徴とする。
読み出し手段が、複数の内部変数の値の組によって表される前記システムの状態と、前記システムに対して発生する外部イベントに応じた状態変化を表す第1遷移とを含む状態遷移系を記憶する第1の記憶手段から前記状態遷移系を読み出し、
原子述語抽出手段が、前記システムに対して発生し得る外部イベント毎に、前記外部イベントが発生する前の前記システムの状態を定義した事前条件と、前記外部イベントの発生後の前記システムの状態を定義した事後条件とを記述した要求項目を記憶した、前記事前条件および前記事後条件は、それぞれ1つの内部変数の条件を定めた1つ以上の原子述語の論理演算により形成されている、第2の記憶手段からm個(mは1以上の整数)の要求項目を選択し、前記m個の要求項目における前記事前条件と前記事後条件に含まれるすべての原子述語を抽出し、
状態写像生成手段が、各抽出された原子述語のうちh個(hは1以上の整数)の原子述語を選択し、与えられた状態を、前記与えられた状態に対する前記h個の原子述語の真偽の組へ写像する状態写像関数を生成し、
グループ化手段が、前記状態遷移系に含まれる前記複数の状態のそれぞれを、前記状態写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づき、同じ写像値をもつ状態群を同じグループに分類することにより前記複数の状態をグループ化して、複数のグループを生成し、
剰余状態遷移系生成手段が、前記複数のグループのうちの2つのグループを指定し、一方のグループに含まれる状態のうちの1つから他方のグループに含まれる状態のうちの1つへの少なくとも1つの第1遷移が前記状態遷移系に存在するときは、前記一方のグループから前記他方のグループへの第2の遷移を設定し、前記グループの指定と第2の遷移の設定とを繰り返し、これにより複数の前記グループ間の第2遷移を表す剰余状態遷移系を生成し、
代表遷移パス生成手段が、前記剰余状態遷移系の所定のグループから開始して、前記剰余状態遷移系における前記第2遷移を順次辿ることによって、前記第2遷移のシーケンスである代表遷移パスを生成し、
遷移パス変換手段が、前記第2遷移が追跡された順番で前記代表遷移パスの前記第2遷移を順次選択し、前記順次選択された第2遷移のそれぞれについて、前記選択された第2遷移の遷移元グループにおける状態のうちの1つと同じ遷移元状態を有し、かつ前記選択された第2遷移の遷移先グループにおける状態のうちの1つと同じ遷移先状態を有し、かつ、直前に特定された第1遷移の遷移先状態と同じ遷移元状態を有する、第1遷移を前記状態遷移系において特定し、前記順次選択された第2遷移に対して特定された各第1遷移のシーケンスを含むテストケースを生成し、
網羅性評価手段が、前記m個の要求項目のそれぞれについて前記テストケースにおいて遷移元状態が前記事前条件を満たし遷移先状態が前記事後条件を満たす第1遷移が網羅されているか否かを評価し、前記m個の要求項目のうち前記テストケースにより網羅されている要求項目の割合または個数を示す網羅度を計算し、
出力手段が、前記網羅度が閾値を満たすときの前記テストケースを出力し、
前記状態写像生成手段は、前記閾値を満たす前記網羅度が得られるように前記各抽出された原子述語を取捨選択して前記状態写像関数を生成する
ことを特徴とする。
図1のテストケース生成装置は、検査対象のシステムの仕様の入力を受け付ける。仕様は要求項目表(要求項目データ)20a、原子述語表20b、および状態遷移系21を含む。テストケース生成装置は、入力された状態遷移系21を記憶する第1の記憶手段と、入力された要求項目表20aおよび原子述語表20bを記憶する第2の記憶手段と、各第1および第2の記憶手段からデータを読み出す読み出し手段を含む。
上記検査対象のシステムは、外部イベントの発生と共に内部処理が行われ、刻々と内部状態が変化する。状態遷移系は、検査対象のシステムがとり得る状態と、当該システムに対して発生する外部イベントに応じたシステムの状態変化を表す状態遷移(第1遷移)から構成される体系である(後述する図7参照)。システムの状態は、複数の内部変数の値の組により表される。
外部イベント(簡単のため単にイベントと称することもある)に対して、イベント発生を受入れる為の内部状態に関する条件と、内部処理後の内部状態の変化に関する条件が規定されている。前者の条件は事前条件と呼ばれ、後者の条件は事後条件と呼ばれる。すなわち事前条件はイベント発生前にシステムに要求される状態の条件であり、事後条件はイベント発生後にシステムに要求される状態の条件である。事前条件および事後条件は状態述語として記述される。これらイベントと、事前条件と、事後条件との組は、要求項目と呼ぶ。要求項目はイベント毎に規定されている。これらを表形式にしたものが要求項目表である(後述する図5参照)。要求項目が、設計者が上記システムに要求する振舞いの条件であり、転じてシステム開発後に検証すべき事項になる。
要求項目表における事前条件及び事後条件の状態述語を構成する原子述語の表である(後述する図6参照)。原子述語は1つの内部変数の値に関する条件を記述したものである。
テストケース:
図1のテストケース生成装置は、検査対象のシステムのテストケース26を出力する。テストケース26は、検査対象のシステムをテストする為の操作手順(イベントのシーケンス)と、その操作手順で検査対象のシステムをテストした結果の期待値(状態遷移のシーケンス)とを含むリストである。テストケース生成装置は、テストケース26を出力する出力手段を含む。
図1のテストケース生成装置の詳細を説明するに先立ち、本明細書で扱う題材を説明する。
クルーズコントローラは、3つの内部変数
・ 車速(変数名“vel”)
・ クルーズランプの点灯状態(変数名“cruise”)
・ セットランプの点灯状態(変数名“set”)
を持つ。
クルーズコントローラは、4種類の外部イベントを受け付ける。外部イベントの発生と共に内部処理が行われ、刻々と内部変数の値が変化する。これによりクルーズコントローラの内部状態も変化する。
・ アクセル(イベント名”Accel”)
・ ブレーキ(イベント名”Brake”)
・ クルーズスイッチ(イベント名”Cruise”)
・ セットスイッチ(イベント名”Set”)
図5はクルーズコントローラの要求項目表、図6はクルーズコントローラの原子述語表を示す。例えば、要求項目1はイベント「クルーズスイッチをONにする」のイベント処理に関する要求であり、事前条件が「P1 ∧ ¬P2∧ ¬P3」即ち「車速が40km/h以上で、クルーズランプとセットラップが共に消えている」であり、事後条件は「P2」即ち「クルーズランプが点灯している」である。クルーズコントローラは、内部状態がこの事前条件を満たすときに、このイベントを受入れ、イベント処理後にはこの事後条件を必ず満たす。
図7はクルーズコントローラの状態遷移系(状態数10、状態遷移数22)を示す。例えば状態4(すなわちs(4))は、内部変数vel(車速)が40、cruise(クルーズランプ)がOFF、set(セットランプ)がOFFである状態である。状態遷移9は外部イベント「クルーズスイッチON」による内部処理に対応する遷移であり、状態4においてこの外部イベントが発生すると状態遷移9により状態5に至る。
状態写像関数の構成法例と、状態写像関数によるテストケース規模削減とについて、上記のクルーズコントローラを更に単純化した例で説明する。ここでは要求項目を図5の要求項目1だけに限定し(要求項目数m=1)、状態遷移系も図8のように単純化する。
前節では要求項目を一つに限定して、状態写像関数の構成方法の具体例を挙げた。この方法は、複数の要求項目を網羅する一般の場合に拡張可能である。複数の要求項目を網羅する効率的なテストケースを生成する為には、全要求項目の事前条件と事後条件の充足性(真偽)の組合せを出力する状態写像関数を構成すれば十分である。これを“構成法1”(後述する実施例1に対応)と呼ぶ事にする。
検査対象のシステムがとり得る状態と状態遷移から構成される状態遷移系が予め用意され、また、該システムに対する外部イベントと期待される事前条件と事後条件との組合せとして形式的に表現されたシステムに対する幾つかの要求項目が準備されていることを前提とする。
本装置の入力は、検査対象のシステムの仕様である。仕様は、要求項目表20a、原子述語表20b、状態遷移系21からなる。装置の出力は、テストケース26である。
要求項目表20aの各要求項目は図12のように、原子述語表20bの各原子述語は図13のように、計算機が解釈可能に形式化されて記述される。これらは、プログラミング言語Scheme(非特許文献2)の関数として表現される。即ち、この関数は、状態を入力し、述語の充足性(真偽)を出力する関数である。なお図12の要求項目は図5と同一内容であり、図13の原子述語も図6と同一内容である。
状態遷移系21は、図14に示す状態表と、図15に示す状態遷移表で表現される。初期状態は状態0である。状態表(図14)は各状態の識別子(SID:State ID)と内容(ステート)とを示している。状態遷移表(図15)は各遷移の識別子(TID:Transition ID)と遷移元の状態識別子(SID0)と遷移先の状態識別子(SID1)と遷移の内容(外部イベント)とを示している。
図16は本装置が出力したテストケースの例である。テストケースは、初期状態から始まる15回の連続的な遷移により表される。
本装置による処理の流れを説明する。
図17は本装置による全体の処理の流れを示すフローチャートである。
・ 処理1: 状態述語抽出
> 処理:要求項目表20aの事前条件及び事後条件として記述される状態述語を抽
出する。要求項目表20aのすべての要求項目を対象としてもよいし、選択した
幾つかの要求項目を対象としてもよい。たとえば図12の場合、2個の要求項目が
存在するため、1つの要求項目(m=1)または2つの要求項目(m=2)を対
象とすればよい。
> 入力: 要求項目表20a
> 出力: 状態述語
> 担当手段:「状態述語抽出手段1」
・ 処理2:状態写像関数の構成
> 処理: 抽出された形式的な状態述語(事前条件および事後条件)を直積して、状
態写像関数22を構成する。
> 入力: 状態述語(事前条件および事後条件)
> 出力: 状態写像関数22
> 担当手段:「直積手段2」
・ 処理3: テストケースの生成 (生成方法の詳細は後述する実施例4で説明する)
> 処理: 状態写像関数22により状態遷移系21を縮約し、縮約された状態遷移系
(剰余状態遷移系)の全状態遷移を網羅するようなパスをテストケース26とし
て生成する。
> 入力: 状態遷移系21、状態写像関数22
> 出力: テストケース26
> 担当手段:「テストケース生成手段3」
要求項目表20aの事前条件及び事後条件として記述される状態述語を抽出する。状態述語が原子述語でない場合は、状態述語定義の文字列を解析して、述語名を取得する。例えば、図12(要求項目表)の「(define (P1notP2notP3 s) (and (P1 s) (not (P2 s)) (not (P3 s))))」は状態述語の定義である。状態述語名は「P1notP2notP3」である。
処理1で抽出した状態述語から、各状態述語の充足性をリスト形式で出力する関数として、状態写像関数を構成する。
以下、「3. 処理の流れ」で説明した処理の具体例を示す。
Step1 (処理1: 状態述語抽出)
出力: 状態述語「P1notP2notP3」、「P2」、「P3」(ここではすべての要求項目表のすべての要求項目(m=2)を対象としている。)
Step2 (処理2: 状態写像関数を構成)
出力: 状態写像関数「(define (fun s) (list (P1notP2notP3 s) (P2 s) (P3 s)))」
Step3 (処理3: テストケース生成)
出力: テストケース(図16)
(中間データである、縮約された状態遷移系を図18に示す)
実施例1をベースに、状態写像関数の構成方法を拡張する。
実施例2の装置は、実施例1の装置の入出力と同じである。
本装置の処理の流れを説明する。図19が本装置の処理の流れを示すフローチャートである。実施例2は実施例1を拡張したものであり、実施例1との差分箇所はフローチャートの斜線ブロックとして示されている。以下、実施例1との差分を中心に説明する。
・ 処理1a: 原子述語抽出
> 処理: 状態述語表より原子述語を抽出する。
> 入力: 状態述語表(状態述語抽出手段1で抽出された状態述語の集合)
> 出力:原子述語リスト
> 担当手段:「原子述語抽出手段4」
・ 処理1b:原子述語の出現頻度分析
> 処理: 処理1aで抽出された各原子述語に関して、状態述語集合全体における各原
子述語の出現頻度を分析する。
> 入力: 原子述語リスト
> 出力:原子述語の出現頻度順リスト
> 担当手段:「出現頻度分析手段5」
・ 処理1c:高頻度原子述語抽出
> 処理: 処理1bで得られた出現頻度順リストのトップ(最も頻出する原子述語)を取
り出す。
> 入力:原子述語の出現頻度順リスト
> 出力: (高頻度な)原子述語
> 担当手段:「高頻度原子述語抽出手段6」
・ 処理2’: 状態写像関数を構成
> 処理: まだ状態写像関数が構成されていない場合、処理1cで取り出された原子述
語を状態写像関数とする。状態写像関数が既に構成されている場合は、既存の状
態写像関数に、処理1cで取り出された原子述語を直積して状態写像関数を構成す
る。直積は、実施例1と同様の方法で行う。
> 入力: 原子述語、状態写像関数
> 出力: 状態写像関数
> 担当手段:「直積手段2」
・ 処理4: 網羅性評価
> 処理: 処理3で生成されたテストケースの、要求項目に対する網羅度(テストケ
ースにより網羅される要求項目の割合または個数)を評価する。具体的には、処
理1で選択された各要求項目に関して、要求項目の事前条件及び事後条件の状態
述語を形式化して得られた形式的状態述語を用いて、遷移元状態が事前条件を、
遷移先状態が事後条件を満たす状態遷移がテストケースに存在するかを検索す
る。存在する場合、その状態遷移が要求項目の検証に対応するテストケースの一
工程であるので、その要求項目は生成されたテストケースにより網羅されると評
価される。この処理を全要求項目に関して繰り返す事で、網羅性評価を行い、全
要求項目のうちテストケースにより網羅される要求項目の割合または個数である
網羅度を得る。
> 入力:テストケース26
> 出力: テストケースの網羅度
> 担当手段:「網羅性評価手段8」
以下、「3. 処理の流れ」で説明した処理の具体例を示す。
Step1 (処理1:状態述語抽出)
出力: 状態述語「P1notP2notP3」、「P2」、「P3」
Step2 (処理1a:原子述語抽出)
出力: 原子述語リスト「P1, P2, P3」
Step3 (処理1b:原子述語の出現頻度分析)
出力: 原子述語の出現頻度順リスト「P2, P3, P1」(Step2で得られた原子述語リストに関して状態述語集合における各原子述語の出現頻度を計算し、各原子述語を出現頻度順に並べる。P2が最も頻出である。)
Step4 (処理1c:高頻度原子述語抽出)
出力: 原子述語「P2」(Step3で得られた出現頻度リストのトップ(最も頻出する原子述語)を取り出す。同時にStep3のリストから「P2」が削除される。)
Step5 (処理2’:状態写像関数を構成)
出力: 状態写像関数「P2」(現時点で状態写像関数が無いので、Step4の原子述語がそのまま状態写像関数となる。)
Step6 (処理3:テストケース生成)
出力: テストケース(図21)(テストケースサイズ7)
(中間データである、縮約された状態遷移系は図20(状態数2、状態遷移数4)に示される。)
Step7 (処理4:網羅性評価)
出力: 網羅度50%
※ 要求項目1は状態遷移9で網羅されるが、要求項目2は網羅されない。
Step8 (条件分岐: 網羅性)
出力: No(上記網羅度は網羅性基準を満たさない。網羅性基準はここでは100%とする。)
Step9 (処理1c:高頻度原子述語抽出)
出力: 原子述語「P3」(原子述語の出現頻度順リストのトップ(次に最も頻出する原子述語)を取り出す。同時に原子述語の出現頻度順リストから「P3」が削除される。)
Step10 (処理2’:状態写像関数を構成)
出力: 状態写像関数「(define (stateFunc s) (list (P2 s) (P3 s)))」 (既に状態写像関数「P2」が存在するので、「P2」及び「P3」を直積する。)
Step11 (処理3:テストケース生成)
出力: テストケース(図23)(テストケースサイズ11)
(中間データである、縮約された状態遷移系は図22(状態数3、状態遷移数7)に示される。)
Step12 (処理7:網羅性評価)
出力: 網羅度100%
※ 要求項目1は状態遷移9で、要求項目2は状態遷移12で網羅される。
Step13 (条件分岐: 網羅性)
出力: Yes
Step14 (終了)
出力: Step12で得られたテストケース(網羅性基準を満たしたので処理を終了する。)
本実施例3における状態写像関数の構成方法では、要求項目の全原子述語を直積した状態写像関数から開始し(最大セット)、生成されるテストケースが要求項目を網羅している間、頻出頻度が低い原子述語を徐々に削除する操作を繰り返す。
実施例1の入出力と同様である。
本装置の処理の流れを説明する。図24が本装置の処理の流れを示すフローチャートである。実施例3は実施例2と大きく類似し、実施例2との差分箇所はフローチャートにおける斜線ブロックで示される。以下、実施例2との差分を中心に説明する。
・ 処理1c:低頻度原子述語抽出
> 処理: 処理1bで得られた出現頻度リストから、最後尾(最も出現頻度が低い原子
述語)を削除する。
> 入力:原子述語の出現頻度順リスト
> 出力: 原子述語の出現頻度順リスト
> 担当手段:「低頻度原子述語抽出手段7」
・ 処理2’: 状態写像関数を構成
> 処理:処理1aで出力された原子述語リスト(1回目の処理の場合)、または処理1
cで出力された出現頻度順リスト(2回目以降の処理の場合)を対象に、当該リ
スト内の原子述語を直積して状態写像関数を構成する。直積は、実施例1と同様
の方法で行う。
> 入力: 原子述語リストまたは出現頻度順リスト
> 出力: 状態写像関数
> 担当手段:「直積手段2」
「3. 処理の流れ」で説明した処理の具体例を示す。
Step1 (処理1:状態述語抽出)
出力: 状態述語「P1notP2notP3」、「P2」、「P3」
Step2 (処理1a:原子述語抽出)
出力: 原子述語リスト「P1, P2, P3」
Step3 (処理1b:原子述語の出現頻度分析)
出力: 原子述語の出現頻度順リスト「P2, P3, P1」((Step2で得られた原子述語リストに含まれる各原子述語について状態述語集合における出現頻度を計算し、各原子述語を出現頻度順に並べる。)
Step4 (処理2’:状態写像関数を構成)
出力: 状態写像関数「(define (fun s) (list (P1 s) (P2 s) (P3 s)))」
Step5 (処理3:テストケース生成)
出力: テストケース(図16)(テストケースサイズ15)
(中間データである、縮約された状態遷移系は図18(状態数4、状態遷移数10)に示される。)
Step6 (処理4:網羅性評価)
出力: 網羅性100%
※ 要求項目1は状態遷移9で、要求項目2は状態遷移19、21で網羅される。
Step7 (条件分岐: 網羅性)
出力: Yes
Step8 (処理1c:低頻度原子述語抽出)
出力: 原子述語の出現頻度順リスト「P2, P3」(Step3で得られたリストの最後尾(最も出現頻度が低い原子述語)「P1」を削除する。)
Step9 (処理2’:状態写像を構成)
出力: 状態写像関数「(define (fun s) (list (P2 s) (P3 s)))」
Step10 (処理3:テストケース生成)
出力: テストケース(図23)(テストケースサイズ11)
(中間データである、縮約された状態遷移系は図22(状態数3、状態遷移数7)に示される。)
Step11 (処理4:網羅性評価)
出力: 網羅性100%
※ 要求項目1は状態遷移9で、要求項目2は状態遷移12で網羅される。
Step12 (条件分岐: 網羅性)
出力: Yes
Step13 (処理1c:低頻度原子述語抽出)
出力: 原子述語の出現頻度順リスト「P2」(Step8で得られた出現頻度リストの最後尾(最も出現頻度が低い原子述語)「P3」を削除する。)
Step14 (処理2’:状態写像を構成)
出力: 状態写像関数「(define (fun s) (list (P2 s)))」
Step15 (処理3:テストケース生成)
出力: テストケース(図21)(テストケースサイズ7)
(中間データである、縮約された状態遷移系は図20(状態数2、状態遷移数4)に示される。)
Step16 (処理4:網羅性評価)
出力: 網羅性50%
※ 要求項目1は状態遷移9で網羅されるが、要求項目2は網羅されない。
Step17 (条件分岐: 網羅性)
出力: No
Step18 (終了)
出力: Step10で得られたテストケース (処理を終了する。)
上述した実施例3および実施例2の考えを実施例1に適用することも可能である。
ここで複数のタスクが存在する情報システムで、タスクの実行状態を制御するモニタ機能を考える。図25に示すように、モニタ上の各タスクは、実行(RUN)状態と実行可能(RDY)状態とスリープ(WAI)状態の三つの状態を有する。
この状態遷移系(図26、表1と表2)で記述されるタスク制御モニタの動作を確認するには、システムの初期状態から各タスクの遷移に対応するAPI関数を順番に呼び出して、遷移先の状態に対応したタスクの切り替えが起きることを確認すれば良い。たとえば、初期状態s0からタスク1が(sleep 1)を呼ぶとタスク2が実行中となり、次にタスク2が(sleep 2)を呼ぶとタスク2が実行中となり、次にタスク3が(yield 3)を呼ぶとタスク3が実行可能となり、という風な手順で動作を確認する。この確認手順は状態遷移系の上の状態s0から出発して状態s5へ至る遷移パスt0→t5→t18に対応する。
ここでシステムの全ての遷移を網羅するテストは、一般にシステムの規模が大きくなるとテストケースのサイズが指数関数的に増大するため現実的でない。実行可能なテストとするため、一定のテスト基準を与えてテストケースのサイズを減らす必要が生ずる。たとえば、例題のタスク制御モニタは16の状態を有するが、これらの状態はタスク識別子の番号の並び替えにより一致する状態を含む。たとえば状態s0と状態s2はタスク識別子の順番を並び替えると一致するが、状態s0と状態s1はタスク識別子の順番を変えても一致しない状態であるなどの区別が考えられる。一定のテスト基準の例として「タスク識別子の番号を並び変えて一致する状態を等価な状態と見なし、等価でない状態間の遷移のみを動作確認する」などが考えられる。
実施例1〜3では、与えられた状態を、各状態述語あるいは各原子述語の充足性(真偽)の値の組へ写像する状態写像関数を示したが、本実施例4では説明の題材として、後述するようにRUN、RDY、WAIの各状態のタスク数へ写像する状態写像関数を用いることに注意されたい。このように状態写像関数の種類が異なっていてもテストケース生成手段の処理に本質的な違いはないため問題はない。
ここで状態遷移系と剰余状態遷移系(縮約された状態遷移系)とについて説明する。
状態遷移系:F = <S, T, s0>
状態集合:S
遷移集合:T ⊆ S×S
初期状態:s0 ∈ S
剰余状態遷移系:F/~ = <S/~,T/~,[s0]>
剰余状態:S/~ = { [s] | s ∈ S }
剰余遷移:T/~ = { ([s],[s’]) | (s,s’) ∈ T }
同値クラス: [s] = { s’ ∈ S | equiv(s,s’) = true }
遷移元の状態: dst: T → S
遷移先の状態: src: T → S
状態遷移系から剰余遷移系を計算するには状態間の同値関係を定義する必要がある。状態間の同値関係equiv(s,s’)は、同値関係の定義として反射律、対称律、推移律を満たす必要がある。なおBは真または偽を表すブルーム値(真偽値)の集合を表す。s,s’が同値のとき、equiv(s,s)は真を返す。
同値関係 equiv: S×S → B
反射律:∀s∈S. equiv(s,s)
対称律:∀s∈S.∀s’∈S. equiv(s,s’) ⇒ equiv(s’,s)
推移律:∀s∈S.∀s’∈S. equiv(s,s’)∧equiv(s’,s’’) ⇒ equiv(s,s’’)
状態同値関係を構成するために、状態を抽象化する状態写像(写像map)関数22を用意し、これをテストケース生成手段3に入力する。状態同値関係定義部(グループ化手段)11は、状態写像関数22と状態遷移系21とから、剰余遷移系24の生成に利用される状態同値関係23(後述する図34の表4)を定義する。なお、関数equal?は写像mapの値域V上の等号関係とする。
状態写像 map: S → V
同値関係 equiv(s,s’) = equal?(map(s), map(s’))
テスト基準から決まるタスク識別子の入れ替えで一致する状態を同一視する状態写像の事例を以下に示す。なお、この写像例は公知のプログラミング言語Scheme(非特許文献2)の書式で記述している。
写像例:
(define (len s)
(map (lambda (v) (length (getval s v))) '(RUN RDY WAI)))
作用例:
s = ((RUN (1)) (RDY (2 3)) (WAI ())) のとき (len s) => (1 2 0)
s = ((RUN ()) (RDY ()) (WAI (1 2 3))) のとき (len s) => (0 0 3)
下記のアルゴリズムの記述において記号φは空集合の意味とし、記号←は右辺の左辺への代入を意味する。KEYSは写像の値域を取得する手順を意味し、“P(X)”はXのすべてのサブセットの集合(the set of all subsets of X)である、Xの累乗集合(power set)を意味する。
入力:状態遷移系F、同値関係equiv
出力:剰余状態遷移系F/~
変数:
SMAP: S → P(S)
TMAP: S×S → P(T)
REPL: S → S
ステップ1:状態の同値分割(図29のフローチャートの符号B11)
事前:SMAPが空
事後:SMAPが状態の同値分割結果
SMAP ← φ
for each s ∈ S do
if ∃s' ∈ KEYS(SMAP). equiv(s,s') then
SMAP(s') ← SMAP(s')∪{s}
else
SMAP(s) ← {s}
end if
end do
ステップ2:代表状態の決定(図29のフローチャートの符号B12)
事前:SMAPが状態の同値分割
事後:REPLが代表状態の検索表
REPL ← φ
for each s ∈KEYS(SMAP) do
for each s' ∈ SMAP(s) do
REPL(s') ← s
end do
end do
ステップ3:遷移の同値分割(図29のフローチャートの符号B13)
事前:TMAPが空、REPLが代表状態の対応表
事後:TMAPが遷移の同値分割結果
for each t ∈ T do
key ← (REPL(src(t)),REPL(dst(t)))
if ∃t' ∈ KEYS(TMAP). key=t' do
TMAP(t') ← TMAP(t')∪{t}
else
TMAP(key) ← {t}
end if
end do
ステップ4:結果出力(図29のフローチャートの符号B14)
状態分割SMAPからS/~、遷移分割TMAPからT/~を決め、
剰余遷移系F/~=<S/~, T/~, [s0]>を出力して停止
状態同値関係定義部11において状態の同値クラスへの分割が済めば各状態SIDに対して代表状態[SID]が定まる(図34の表4の一番左の列)。剰余遷移系の状態となる状態クラスは代表状態の識別子でラベルする。
SMAP(s0) = {s0,s2,s4,s10,s14,s15}
SMAP(s1) = {s1,s3,s6,s7,s9,s13}
SMAP(s5) = {s5,s8,s11}
SMAP(s12) = {s12}
REPL(s0) = s0
REPL(s1) = s1
REPL(s2) = s0
... 中略
REPL(s14) = s0
REPL(s15) = s0
TMAP((s0,s0)) = {t1,t3,t8,t34,t39,t41}
TMAP((s0,s1)) = {t0,t2,t7,t33,t38,t40}
... 中略
TMAP((s5,s5)) = {t18,t28,t32}
代表遷移パス生成部13は、剰余状態遷移系24(図27)の遷移を網羅するパス25(代表状態または代表遷移イベントで表現された代表遷移パス25)を求める。これにはたとえば公知のアルゴリズム(非特許文献1)を用いることができる。ここでテストとして実行可能な遷移パスは初期状態s0から始まる連続な遷移パスである。連続な遷移パスとは遷移系列の中で、現在の遷移の遷移先の状態と、次の遷移の遷移元の状態とが一致することを意味する。剰余状態遷移系の上で連続な代表遷移パス25をそのまま状態遷移系の上の遷移パスと見なすと、連続な遷移パスになるとは限らない。したがって、剰余状態遷移系24を網羅する最短の代表遷移パス25を生成した後、これが元の状態遷移系上で連続したパスにならないときは、この代表遷移パス25を手がかりに連続な遷移パスに変換する必要がある。このパス変換の手順を以下に示す。またこの変換手順に対応する処理の流れを図30のフローチャートに示す。この処理は遷移パス変換部14により行われる。なおこの処理は、元の状態遷移系上で代表遷移パス25が連続したパスにならないと遷移パス変換部14が判断したときのみ行うようにしてもよいし、代表遷移パス25が元の状態遷移系上で連続したパスになるか否かの判断を行うことなく、常に行うようにすることも可能である。
遷移選択 SELECT: T/~ × S → P(T)
機能: 遷移クラス[t]の中で状態sを始点とする遷移を選択する。
詳細: SELECT([t],s) = { t’ ∈ [t] | src(t’) = s }
状態選択 SOURCE: T/~ → P(S)
機能: 遷移クラス[t]に含まれる遷移の始点を列挙する。
詳細: SOURCE([t]) = { src(t’) ∈ S | t’ ∈ [t] }
パス生成 SHORTP: S × P(S) → [T]
機能: 状態sから状態集合dstsへ至るパスの中で最短のパスを選択する
詳細: SHORTP(s,dsts) = DIJKSTRA(s,s’)
ただしDIJKSTRAは公知の最短パス計算手順(例:ダイクストラ法)とし
状態s’∈dstsはパス長|DIJKSTRA(s,s’')|が状態s''∈dstsの中で最小とする
入力:開始状態s0、代表遷移列tin=([t0],[t1],...)
出力:遷移列tout=(t0’,t1’,...)
手順:
ステップ1:初期化(図30のフローチャートのC11)
s ← 開始状態s0
todo ← 代表遷移列tin
tout ← 空列
ステップ2:遷移選択(図30のフローチャートのC12、C13)
next ← SELECT(todoの先頭, s)
if 集合nextが空 then
ステップ3:選択による連結不可(図30のフローチャートのC15)
dsts ← SOURCE(todoの先頭)
path ← SHORTP(s,dsts)
s ← パスpathの最後の状態
tout ← tout + path
else
ステップ4:選択による連結可能(図30のフローチャートのC14)
t ← 遷移集合nextから一つ遷移を選択
s ← dst(t)
todo ← todoの末尾
tout ← tout + t
end if
ステップ5:終了判定(図30のフローチャートのC16)
if リストtodoが空 then
(ステップ6)へ
else
(ステップ2)へ
end if
ステップ6:結果出力
遷移パスtoutを出力して停止
剰余状態遷移系24(図27)の遷移を網羅するパスを公知のアルゴリズム(非特許文献1)を用いて代表遷移パス生成部13により求めると図37の表7に示す遷移系列(代表遷移パス25)が得られる。この遷移系列は剰余状態遷移系24(図27)の上では連結したパスとなるが、元の状態遷移系(図26)の上では連結したパスとなるとは限らない。その場合、そのままでは実行可能なテストケースとならない。
2:直積手段(状態写像生成手段)
3:テストケース生成手段
4:原子述語抽出手段
5:出現頻度分析手段
6:高頻度原子述語抽出手段
7:低頻度原子述語抽出手段
8:網羅性評価手段
11:状態同値関係定義部(グループ化手段)
12:剰余状態遷移系生成部
13:代表遷移パス生成部
14:遷移パス変換部
21:状態遷移系
22:状態写像関数
23:状態同値関係
24:剰余状態遷移系
25:代表遷移パス
26:遷移パス(テストケース)
Claims (6)
- 検査対象のシステムのテストケース生成装置であって、
複数の内部変数の値の組によって表される前記システムの状態と、前記システムに対して発生する外部イベントに応じた状態変化を表す第1遷移とを含む状態遷移系を記憶する第1の記憶手段と、
前記システムに対して発生し得る外部イベント毎に、前記外部イベントが発生する前の前記システムの状態を定義した事前条件と、前記外部イベントの発生後の前記システムの状態を定義した事後条件とを記述した要求項目を記憶する第2の記憶手段と、
前記第2の記憶手段からm個(mは1以上の整数)の要求項目を選択し、前記m個の要求項目から前記事前条件と前記事後条件とを抽出する条件抽出手段と、
与えられた状態を、前記与えられた状態に対する前記条件抽出手段により抽出したすべての事前条件および事後条件の真偽の組へ写像する状態写像関数を生成する状態写像生成手段と、
前記状態遷移系に含まれる前記複数の状態のそれぞれを、前記状態写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づき、同じ写像値をもつ状態群を同じグループに分類することにより前記複数の状態をグループ化して、複数のグループを生成するグループ化手段と、
前記複数のグループのうちの2つのグループを指定し、一方のグループに含まれる状態のうちの1つから他方のグループに含まれる状態のうちの1つへの少なくとも1つの第1遷移が前記状態遷移系に存在するときは、前記一方のグループから前記他方のグループへの第2の遷移を設定し、前記グループの指定と第2の遷移の設定とを繰り返し、これにより複数の前記グループ間の第2遷移を表す剰余状態遷移系を生成する剰余状態遷移系生成手段と、
前記剰余状態遷移系の所定のグループから開始して、前記剰余状態遷移系における前記第2遷移を順次辿ることによって、前記第2遷移のシーケンスである代表遷移パスを生成する代表遷移パス生成手段と、
前記第2遷移が追跡された順番で前記代表遷移パスの前記第2遷移を順次選択し、前記順次選択された第2遷移のそれぞれについて、前記選択された第2遷移の遷移元グループにおける状態のうちの1つと同じ遷移元状態を有し、かつ前記選択された第2遷移の遷移先グループにおける状態のうちの1つと同じ遷移先状態を有し、かつ、直前に特定された第1遷移の遷移先状態と同じ遷移元状態を有する、第1遷移を前記状態遷移系において特定し、前記順次選択された第2遷移に対して特定された各第1遷移のシーケンスを含むテストケースを生成する、遷移パス変換手段と、
を含むテストケース生成手段と、
前記テストケースを出力する出力手段と、
を備えたことを特徴とするテストケース生成装置。 - 検査対象のシステムのテストケース生成装置であって、
複数の内部変数の値の組によって表される前記システムの状態と、前記システムに対して発生する外部イベントに応じた状態変化を表す第1遷移とを含む状態遷移系を記憶する第1の記憶手段と、
前記システムに対して発生し得る外部イベント毎に、前記外部イベントが発生する前の前記システムの状態を定義した事前条件と、前記外部イベントの発生後の前記システムの状態を定義した事後条件とを記述した要求項目を記憶し、前記事前条件および前記事後条件は、それぞれ1つの内部変数の条件を定めた1つ以上の原子述語の論理演算により形成されている、第2の記憶手段と、
前記第2の記憶手段からm個(mは1以上の整数)の要求項目を選択し、前記m個の要求項目における前記事前条件と前記事後条件に含まれるすべての原子述語を抽出する原子述語抽出手段と、
各抽出された原子述語のうちh個(hは1以上の整数)の原子述語を選択し、与えられた状態を、前記与えられた状態に対する前記h個の原子述語の真偽の組へ写像する状態写像関数を生成する状態写像生成手段と、
前記状態遷移系に含まれる前記複数の状態のそれぞれを、前記状態写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づき、同じ写像値をもつ状態群を同じグループに分類することにより前記複数の状態をグループ化して、複数のグループを生成するグループ化手段と、
前記複数のグループのうちの2つのグループを指定し、一方のグループに含まれる状態のうちの1つから他方のグループに含まれる状態のうちの1つへの少なくとも1つの第1遷移が前記状態遷移系に存在するときは、前記一方のグループから前記他方のグループへの第2の遷移を設定し、前記グループの指定と第2の遷移の設定とを繰り返し、これにより複数の前記グループ間の第2遷移を表す剰余状態遷移系を生成する剰余状態遷移系生成手段と、
前記剰余状態遷移系の所定のグループから開始して、前記剰余状態遷移系における前記第2遷移を順次辿ることによって、前記第2遷移のシーケンスである代表遷移パスを生成する代表遷移パス生成手段と、
前記第2遷移が追跡された順番で前記代表遷移パスの前記第2遷移を順次選択し、前記順次選択された第2遷移のそれぞれについて、前記選択された第2遷移の遷移元グループにおける状態のうちの1つと同じ遷移元状態を有し、かつ前記選択された第2遷移の遷移先グループにおける状態のうちの1つと同じ遷移先状態を有し、かつ、直前に特定された第1遷移の遷移先状態と同じ遷移元状態を有する、第1遷移を前記状態遷移系において特定し、前記順次選択された第2遷移に対して特定された各第1遷移のシーケンスを含むテストケースを生成する遷移パス変換手段と、
を含むテストケース生成手段と、
前記m個の要求項目のそれぞれについて前記テストケースにおいて遷移元状態が前記事前条件を満たし遷移先状態が前記事後条件を満たす第1遷移が網羅されているか否かを評価し、前記m個の要求項目のうち前記テストケースにより網羅されている要求項目の割合または個数を示す網羅度を計算する網羅性評価手段と、
前記網羅度が閾値を満たすときの前記テストケースを出力する出力手段と、を備え、
前記状態写像生成手段は、前記閾値を満たす前記網羅度が得られるように前記各抽出された原子述語を取捨選択して前記状態写像関数を生成する
ことを特徴とするテストケース生成装置。 - 前記m個の要求項目に含まれる前記事前条件および前記事後条件の集合において、前記各抽出された原子述語のそれぞれの出現頻度を計算する出現頻度解析手段をさらに備え、
前記状態写像生成手段は、前記網羅度が前記閾値を満たす前記状態写像関数が生成されるまで、前記各抽出された原子述語から出現頻度の高い順に1つの原子述語を追加的に選択して前記状態写像関数を生成することを繰り返す
ことを特徴とする請求項2に記載のテストケース生成装置。 - 前記m個の要求項目に含まれる前記事前条件および前記事後条件の集合において、前記各抽出された原子述語のそれぞれの出現頻度を計算する出現頻度解析手段をさらに備え、
前記状態写像生成手段は、前記各抽出された原子述語の全てを選択して前記状態写像関数を生成し、前記網羅度が前記閾値を満たしている間、前記原子述語の全てから、出現頻度の低い順に原子述語を1つ順番に除去しながら前記状態写像関数を生成することを繰り返す、
ことを特徴とする請求項2に記載のテストケース生成装置。 - コンピュータにおいて検査対象のシステムのテストケースを生成するテストケース生成方法であって、
読み出し手段が、複数の内部変数の値の組によって表される前記システムの状態と、前記システムに対して発生する外部イベントに応じた状態変化を表す第1遷移とを含む状態遷移系を記憶する第1の記憶手段から前記状態遷移系を読み出し、
条件抽出手段が、前記システムに対して発生し得る外部イベント毎に、前記外部イベントが発生する前の前記システムの状態を定義した事前条件と、前記外部イベントの発生後の前記システムの状態を定義した事後条件とを記述した要求項目を記憶する第2の記憶手段からm個(mは1以上の整数)の要求項目を選択し、前記m個の要求項目から前記事前条件と前記事後条件とを抽出し、
状態写像生成手段が、与えられた状態を、前記与えられた状態に対する前記条件抽出手段により抽出したすべての事前条件および事後条件の真偽の組へ写像する状態写像関数を生成し、
グループ化手段が、前記状態遷移系に含まれる前記複数の状態のそれぞれを、前記状態写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づき、同じ写像値をもつ状態群を同じグループに分類することにより前記複数の状態をグループ化して、複数のグループを生成し、
剰余状態遷移系生成手段が、前記複数のグループのうちの2つのグループを指定し、一方のグループに含まれる状態のうちの1つから他方のグループに含まれる状態のうちの1つへの少なくとも1つの第1遷移が前記状態遷移系に存在するときは、前記一方のグループから前記他方のグループへの第2の遷移を設定し、前記グループの指定と第2の遷移の設定とを繰り返し、これにより複数の前記グループ間の第2遷移を表す剰余状態遷移系を生成し、
代表遷移パス生成手段が、前記剰余状態遷移系の所定のグループから開始して、前記剰余状態遷移系における前記第2遷移を順次辿ることによって、前記第2遷移のシーケンスである代表遷移パスを生成し、
遷移パス変換手段が、前記第2遷移が追跡された順番で前記代表遷移パスの前記第2遷移を順次選択し、前記順次選択された第2遷移のそれぞれについて、前記選択された第2遷移の遷移元グループにおける状態のうちの1つと同じ遷移元状態を有し、かつ前記選択された第2遷移の遷移先グループにおける状態のうちの1つと同じ遷移先状態を有し、かつ、直前に特定された第1遷移の遷移先状態と同じ遷移元状態を有する、第1遷移を前記状態遷移系において特定し、前記順次選択された第2遷移に対して特定された各第1遷移のシーケンスを含むテストケースを生成し、
出力手段が、前記テストケースを出力する、
ことを特徴とするテストケース生成方法。 - コンピュータにおいて検査対象のシステムのテストケースを生成するテストケース生成方法であって、
読み出し手段が、複数の内部変数の値の組によって表される前記システムの状態と、前記システムに対して発生する外部イベントに応じた状態変化を表す第1遷移とを含む状態遷移系を記憶する第1の記憶手段から前記状態遷移系を読み出し、
原子述語抽出手段が、前記システムに対して発生し得る外部イベント毎に、前記外部イベントが発生する前の前記システムの状態を定義した事前条件と、前記外部イベントの発生後の前記システムの状態を定義した事後条件とを記述した要求項目を記憶した、前記事前条件および前記事後条件は、それぞれ1つの内部変数の条件を定めた1つ以上の原子述語の論理演算により形成されている、第2の記憶手段からm個(mは1以上の整数)の要求項目を選択し、前記m個の要求項目における前記事前条件と前記事後条件に含まれるすべての原子述語を抽出し、
状態写像生成手段が、各抽出された原子述語のうちh個(hは1以上の整数)の原子述語を選択し、与えられた状態を、前記与えられた状態に対する前記h個の原子述語の真偽の組へ写像する状態写像関数を生成し、
グループ化手段が、前記状態遷移系に含まれる前記複数の状態のそれぞれを、前記状態写像関数によりそれぞれ写像して複数の写像値を取得し、取得された複数の写像値に基づき、同じ写像値をもつ状態群を同じグループに分類することにより前記複数の状態をグループ化して、複数のグループを生成し、
剰余状態遷移系生成手段が、前記複数のグループのうちの2つのグループを指定し、一方のグループに含まれる状態のうちの1つから他方のグループに含まれる状態のうちの1つへの少なくとも1つの第1遷移が前記状態遷移系に存在するときは、前記一方のグループから前記他方のグループへの第2の遷移を設定し、前記グループの指定と第2の遷移の設定とを繰り返し、これにより複数の前記グループ間の第2遷移を表す剰余状態遷移系を生成し、
代表遷移パス生成手段が、前記剰余状態遷移系の所定のグループから開始して、前記剰余状態遷移系における前記第2遷移を順次辿ることによって、前記第2遷移のシーケンスである代表遷移パスを生成し、
遷移パス変換手段が、前記第2遷移が追跡された順番で前記代表遷移パスの前記第2遷移を順次選択し、前記順次選択された第2遷移のそれぞれについて、前記選択された第2遷移の遷移元グループにおける状態のうちの1つと同じ遷移元状態を有し、かつ前記選択された第2遷移の遷移先グループにおける状態のうちの1つと同じ遷移先状態を有し、かつ、直前に特定された第1遷移の遷移先状態と同じ遷移元状態を有する、第1遷移を前記状態遷移系において特定し、前記順次選択された第2遷移に対して特定された各第1遷移のシーケンスを含むテストケースを生成し、
網羅性評価手段が、前記m個の要求項目のそれぞれについて前記テストケースにおいて遷移元状態が前記事前条件を満たし遷移先状態が前記事後条件を満たす第1遷移が網羅されているか否かを評価し、前記m個の要求項目のうち前記テストケースにより網羅されている要求項目の割合または個数を示す網羅度を計算し、
出力手段が、前記網羅度が閾値を満たすときの前記テストケースを出力し、
前記状態写像生成手段は、前記閾値を満たす前記網羅度が得られるように前記各抽出された原子述語を取捨選択して前記状態写像関数を生成する
ことを特徴とするテストケース生成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009063281A JP5149225B2 (ja) | 2009-03-16 | 2009-03-16 | テストケース生成装置およびテストケース生成方法 |
US12/724,096 US8370808B2 (en) | 2009-03-16 | 2010-03-15 | Apparatus and a method for generating a test case |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009063281A JP5149225B2 (ja) | 2009-03-16 | 2009-03-16 | テストケース生成装置およびテストケース生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010218152A JP2010218152A (ja) | 2010-09-30 |
JP5149225B2 true JP5149225B2 (ja) | 2013-02-20 |
Family
ID=42731742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009063281A Expired - Fee Related JP5149225B2 (ja) | 2009-03-16 | 2009-03-16 | テストケース生成装置およびテストケース生成方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8370808B2 (ja) |
JP (1) | JP5149225B2 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010128583A (ja) * | 2008-11-25 | 2010-06-10 | Toshiba Corp | テスト容易化設計装置ならびにその方法およびプログラム |
JP5072889B2 (ja) * | 2009-03-16 | 2012-11-14 | 株式会社東芝 | 事前条件生成装置および事後条件生成装置、ならびにこれらの方法 |
US8818783B2 (en) * | 2011-09-27 | 2014-08-26 | International Business Machines Corporation | Representing state transitions |
US10078575B2 (en) * | 2013-03-13 | 2018-09-18 | Microsoft Technology Licensing, Llc | Diagnostics of state transitions |
JP6102448B2 (ja) * | 2013-04-10 | 2017-03-29 | 富士通株式会社 | 検証支援プログラム、検証支援装置、および検証支援方法 |
US9495489B2 (en) * | 2014-06-02 | 2016-11-15 | Freescale Semiconductor, Inc. | Correlation of test results and test coverage for an electronic device design |
US9442830B1 (en) * | 2014-06-25 | 2016-09-13 | Emc Corporation | Automated test coverage analysis, execution and reporting |
JP2016126693A (ja) * | 2015-01-08 | 2016-07-11 | 富士通株式会社 | 制御手順方法、制御手順プログラム及び制御手順装置 |
US9697098B2 (en) * | 2015-03-19 | 2017-07-04 | International Business Machines Corporation | Independent hardware operating state transitions by a test unit |
US10025696B2 (en) | 2016-02-09 | 2018-07-17 | General Electric Company | System and method for equivalence class analysis-based automated requirements-based test case generation |
JP6658297B2 (ja) * | 2016-05-19 | 2020-03-04 | 富士通株式会社 | テストケース生成方法、テストケース生成プログラムおよびテストケース生成装置 |
US10417115B1 (en) * | 2018-04-27 | 2019-09-17 | Amdocs Development Limited | System, method, and computer program for performing production driven testing |
CN109669436B (zh) * | 2018-12-06 | 2021-04-13 | 广州小鹏汽车科技有限公司 | 一种基于电动汽车的功能需求的测试用例生成方法和装置 |
US11334623B2 (en) | 2019-03-27 | 2022-05-17 | Western Digital Technologies, Inc. | Key value store using change values for data properties |
US11080239B2 (en) * | 2019-03-27 | 2021-08-03 | Western Digital Technologies, Inc. | Key value store using generation markers |
US11507277B2 (en) | 2019-06-25 | 2022-11-22 | Western Digital Technologies, Inc. | Key value store using progress verification |
US11218398B2 (en) * | 2019-10-29 | 2022-01-04 | Amdocs Development Limited | System, method, and computer program for closed loop management of a network |
CN111611170A (zh) * | 2020-05-22 | 2020-09-01 | 泰康保险集团股份有限公司 | 测试方法及装置 |
CN111723008B (zh) * | 2020-05-29 | 2024-06-11 | 北京机电工程研究所 | 一种基于状态转换图的测试路径生成方法 |
CN111679960B (zh) * | 2020-05-30 | 2021-01-26 | 北京航空航天大学 | 一种可靠性、弹性、脆性的系统状态评估方法 |
CN112015639B (zh) * | 2020-07-31 | 2024-03-15 | 北京轩宇信息技术有限公司 | 一种星载软件测试用例的生成方法及装置 |
CN113468044B (zh) * | 2021-05-27 | 2022-06-24 | 长江大学 | 一种基于改进的灰色预测演化算法的测试用例生成方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038378A (en) * | 1993-07-29 | 2000-03-14 | Digital Esquipment Corporation | Method and apparatus for testing implementations of software specifications |
US7584455B2 (en) * | 2003-10-23 | 2009-09-01 | Microsoft Corporation | Predicate-based test coverage and generation |
JP2009211503A (ja) * | 2008-03-05 | 2009-09-17 | Nec Corp | ソースコード検証装置、及びソースコード検証方法 |
JP5107131B2 (ja) | 2008-04-28 | 2012-12-26 | 株式会社東芝 | テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラム |
JP5106447B2 (ja) | 2009-03-10 | 2012-12-26 | 株式会社東芝 | テストケース生成装置およびその生成方法、ならびにコンピュータプログラム |
-
2009
- 2009-03-16 JP JP2009063281A patent/JP5149225B2/ja not_active Expired - Fee Related
-
2010
- 2010-03-15 US US12/724,096 patent/US8370808B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8370808B2 (en) | 2013-02-05 |
JP2010218152A (ja) | 2010-09-30 |
US20100235814A1 (en) | 2010-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5149225B2 (ja) | テストケース生成装置およびテストケース生成方法 | |
JP5107131B2 (ja) | テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラム | |
US11610117B2 (en) | System and method for adapting a neural network model on a hardware platform | |
JP6216757B2 (ja) | ビジネスルールの編集およびコンパイルの、方法、コンピュータプログラム、およびシステム | |
US20180365287A1 (en) | Source code search engine | |
KR102349573B1 (ko) | 데이터에 적용되는 규칙 평가 | |
CN109697500B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
EP2196905A1 (en) | Recommended application evaluation system | |
US20160299771A1 (en) | Collaborative generation of configuration technical data for a product to be manufactured | |
Basciani et al. | Automated chaining of model transformations with incompatible metamodels | |
KR101975272B1 (ko) | 협업 의존성 기반 컴포넌트 재사용 추천 시스템 및 방법 | |
JP3765923B2 (ja) | ハードウェア合成方法およびハードウェア合成装置並びにハードウェア合成プログラムを記録した記録媒体 | |
CN113568604B (zh) | 风控策略的更新方法、装置及计算机可读存储介质 | |
CN116204847A (zh) | 一种计算图优化方法、装置及设备 | |
CN110069455B (zh) | 一种文件合并方法及装置 | |
CN108009298B (zh) | 一种互联网人物搜索信息整合分析控制方法 | |
CN113176999A (zh) | 基于分布式应用程序的软件测试方法及系统 | |
CN115934106A (zh) | 快速检测apt仓库源依赖完整性的方法 | |
JP6511793B2 (ja) | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 | |
CN106155898B (zh) | 一种流程图的路径获取方法及装置 | |
JP6802109B2 (ja) | ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法 | |
US20220147850A1 (en) | Hypothesis verification apparatus, hypothesis verification, and computer-readable recording medium | |
US8694293B2 (en) | Simulation support method, computer-readable storage medium storing simulation support program, and simulation support apparatus | |
KR20160025881A (ko) | 공유 라이브러리 파일의 악성을 진단하기 위한 장치 및 방법 | |
EP2856396A2 (en) | Buildable part pairs in an unconfigured product structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110325 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120822 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120824 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121023 |
|
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: 20121102 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121129 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151207 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |