JP2016021163A - テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 - Google Patents
テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 Download PDFInfo
- Publication number
- JP2016021163A JP2016021163A JP2014144783A JP2014144783A JP2016021163A JP 2016021163 A JP2016021163 A JP 2016021163A JP 2014144783 A JP2014144783 A JP 2014144783A JP 2014144783 A JP2014144783 A JP 2014144783A JP 2016021163 A JP2016021163 A JP 2016021163A
- Authority
- JP
- Japan
- Prior art keywords
- true
- false
- operator
- value
- truth
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【解決手段】判定式解析部101は、テスト対象となるプログラムの判定式A1(論理式)を解析し、判定に係る各条件、及び、各条件を結び付ける論理演算子を特定する。真偽値ルール適用部102は、特定した論理演算子毎に、論理演算子によって結び付けられる各条件の真偽値を、所定関係を満たすように階層的に組合せ、MC/DCを満たす各条件の真偽値の組合せを生成する。テストケース生成部103は、生成された各条件の真偽値の組合せに基づいて、各条件を充足する変数値のセットをテストケースB1として生成する。
【選択図】図3
Description
Condition/Decision Coverage)によるテスト網羅度が知られている。MC/DCは、テスト対象となるソフトウェアのプログラムコード(内部ロジック)に対して実行されたテストの網羅度を示すコードカバレッジの一種であり、航空機ソフトウェアのテスト時に使用されるカバレッジとして米国の航空機産業団体によって開発された。なお、他のコードカバレッジとして、例えば、テスト対象となるソフトウェアのプログラムコード内の全ての条件判定、判定結果としての分岐を全て確認可能なC/DC(Condition/Decision Coverage)が例示できる。また、テスト対象となるソフトウェアのプログラムコードの判定
に含まれる条件値の全組合せを2のn乗個(nは条件数)のテストケースで確認可能なMCC(Multiple Condition Coverage)等が例示できる。
誤記を検出可能とし、n個の条件数に対してn+1個以上のテストケースでプログラムコードの判定に含まれる条件値の全組合せを確認可能なコードカバレッジである。なお、本明細書においては、“真”、“偽”を得る式を条件と呼び、プログラムの判定文の判定対象の式を判定、或いは、判定式と呼ぶことにする。判定式は、“and”、“or”等の論理
演算子によって条件を組合せることができる。MC/DCによるテスト網羅度は、以下の網羅規則を満たす。
・網羅規則1:プログラムの全入り口/出口は少なくとも一回はテストすること。
・網羅規則2:プログラムの判定に含まれる全条件は可能な値を少なくとも一回はテストすること。
・網羅規則3:プログラムの全判定は可能な値を少なくとも一回はテストすること。
・網羅規則4:プログラムの判定の全条件は、判定の出力に独立に影響することを示すこと。
(1)各条件の真偽値の全組合せを生成する。
(2)各真偽値の組合せに対応する判定式の真偽値を求める。
(3)各条件について、他方の条件を固定して、一方の条件の真偽値を変更した時、判定式の真偽値も変更するようなテストケースの組を求める。
(4)各条件の組の(最小となるような)和集合がMC/DCのテスト網羅度の網羅規則を満たすテストケースとなる。
則を満たすテストケースを生成する技術を提供する。
<比較例>
図1A−1Cに、比較例としての、MC/DCのテスト網羅度を満たすテストケースの生成についての説明図を例示する。図1Aは、テスト対象となるソフトウェアのプログラムの例である。図1Aの第1ステップでは、“if (X>2) and (y==5) then return”との処理プロセスが記述され、変数x,yのそれぞれに対する条件成立の可否を組合せた論理積が記述されている。また、第2ステップでは、“if (X==3) or (y>2) then z=2 * Z”と
の処理プロセスが記述され、変数x,yのそれぞれに対する条件成立の可否を組合せて変数zを導出する論理和が記述されている。
・網羅規則1:プログラムの全入り口/出口は少なくとも一回はテストすること。
・網羅規則2:プログラムの判定に含まれる全条件は可能な値を少なくとも一回はテストすること。
・網羅規則3:プログラムの全判定は可能な値を少なくとも一回はテストすること。
・網羅規則4:プログラムの判定の全条件は、判定の出力に独立に影響することを示すこと。(他方の条件の値を固定し、一方の条件の値を変更することで、判定の真偽値の出力値を変更すること)
件”とは、第1ステップの“(X>2)”、“(y==5)”、第2ステップの“(X==3)”“(y>2)”を指す。
れ、「(X==3) or (y>2)」、「(X==3)」、「(y>2)」カラムには、各変数、或いは各変数の組合せに対する真偽値(“true”、“false”)が格納される。
yの数値の組合せは、例えば、図1Aに例示の第2ステップの“if (X==3) or (y>2) then z=2 * Z”とのプログラムに対し、MC/DCのテスト網羅度を満たすこととなる。例
えば、(x=1,y=3)とのテストケースは、テスト対象のプログラムの“(X==3) or (y>2)”との論理和の判定を“真(true)”とし、プログラムの入り口/出口のテストを少なくとも一回は実行するため、MC/DCの網羅規則1を満たすこととなる。
判定に含まれる“(X==3)”との条件について少なくとも1回は“真偽(true/false)”をテストする。同様に、変数:yに対する値“1”、“3”は、プログラムの“(X==3) or (y>2)”との判定に含まれる“(y>2)”との条件について少なくとも1回は“真偽(true/false)”をテストする。このため、プログラムの“(X==3) or (y>2)”との判定に含まれ
る“(X==3)”、“(y>2)”との条件について、上述の関係を満たす各変数値の組合せであ
るテストケース(x=1,y=1)、(x=1,y=3)、(x=3,y=1)は、MC/DCの網羅規則2を
満たすこととなる。
たすテストケースとして存在し得る。しかしながら、プログラムの判定に含まれる“(X==3)”との条件についての“真(true)”テストは、(x=3,y=1)により少なくとも1回は
実行され、同様に、“(y>2)”との条件についての真(true)”テストは、(x=1,y=3)により少なくとも1回は実行される。MC/DCの網羅規則2では、プログラムの判定に含まれる“(X==3)”、“(y>2)”との条件についての“真偽”が少なくとも1回のテストが
実行されればよいので、他のテストケースと重複する(x=3,y=3)との組合せは、余剰な
テストケースとなる。
は、プログラムの“(X==3) or (y>2)”との判定を“偽(false)”とするテストケースである。また、変数x、yについての(x=1,y=3)との組合せは、プログラムの“(X==3) or
(y>2)”との判定を“真(true)”とするテストケースである。このため、変数x、yについての(x=1,y=1)と(x=1,y=3)の組合せは、プログラムの“(X==3) or (y>2)”との
判定を、少なくとも1回は“真偽(true/false)”をテストするテストケースとなり、MC/DCの網羅規則3を満たすこととなる。
偽(false)”、条件“(y>2)”について“偽(false)”とし、プログラムの判定である
“(X==3) or (y>2)”を“偽(false)”とするテストケースである。そして、テストケース(x=3,y=1)は、条件“(X==3)”について“真(true)”、条件“(y>2)”について“偽(false)”とし、プログラムの判定である“(X==3) or (y>2)”を“真(true)”とするテストケースである。テストケースである(x=1,y=1)と(x=3,y=1)との関係は、条件“(y>2)”の真偽値を“偽(false)”に固定し、条件“(X==3)”の真偽値を変更することで、プログラムの判定である“(X==3) or (y>2)”の真偽値を変更する関係にある。つまり
、テストケース(x=1,y=1)とテストケース(x=3,y=1)とは、判定である“(X==3) or (y>2)”の出力に独立に影響するため、MC/DCの網羅規則4を満たすテストケースに含
まれる。
(false)”、条件“(y>2)”について“真(true)”とし、プログラムの判定である“(X
==3) or (y>2)”を“真(true)”とするテストケースである。テストケースである(x=1,y=1)と(x=1,y=3)との関係は、条件“(X==3)”の真偽値を“偽(false)”に固定し、条件“(y>2)”の真偽値を変更することで、プログラムの判定である“(X==3) or (y>2)”の真偽値を変更する関係にある。つまり、テストケース(x=1,y=1)とテストケース(x=1,y=3)とは、判定である“(X==3) or (y>2)”の出力に独立に影響するため、MC/DC
の網羅規則4を満たすテストケースに含まれる。
場合では、MC/DCの網羅規則1−4を満たす、3個のテストケース“(x=1,y=1)、
(x=1,y=3)、(x=3,y=1)”が生成される。MC/DCのテスト網羅度を満たすテストケースは、テスト対象となるプログラムの判定に係る条件数がn個の場合、n+1個を最小としてn+1通り以上のテストケースが生成される。
定“(X==3) or (y>2)”の真偽値をテストできるものであればよい。例えば、テストケー
スに用いられる変数x、yの変数値の組合せとして、“(x=2,y=2)、(x=2,y=4)、(x=3,y=2)”といったテストケースが例示できる。
件には、それぞれに真偽値が存在し、各条件の真偽値の組合せにより、プログラムの判定の真偽値が決定される。
図1Cの、破線で囲まれた領域Z1に例示のように、判定に係る条件“A”、“B”、“C”について、それぞれの真偽値の全組合せを生成する。図例では、判定に係る条件数が
3個であるため、2の3乗個である8通りの真偽値の組合せ(番号1−8)が生成される。
図1Cの、破線で囲まれた領域Z2に例示するように、判定に係る条件“A”、“B”、“C”について生成された真偽値の全組合せに対する、判定の真偽値を生成する。説明例
での判定は“(A or B) and C”である。論理積(and)で結ばれる左項(A or B)は条件“A”、“B”の論理和であるため、少なくとも一方の条件が“真(true)”であれば、左項(A or B)は“真”となる。条件“A”、“B”の真偽値の組合せとして(A,B)=(真、真)、(真、偽)、(偽、真)の3通りが、論理和(or)で結ばれる左項(A or B)を“真”とする。
せとして(A,B,C)=(真、真、真)、(真、偽、真)、(偽、真、真)の3通り(番号
1,3,5の組合せ)が、“(A or B) and C”との判定を“真”とする(他の組合せでは、判定は“偽”となる)。
図1Cの、破線で囲まれた領域Z3に例示するように、判定に係る条件“A”、“B”、“C”のそれぞれについて、MC/DCの網羅規則4を満たすためのテストケースの組合
せを求める。例えば、条件“A”の場合では、条件“B”、“C”の真偽値を固定し、条件
“A”の真偽値を“真(true)”、“偽(false)”と変更した場合に、領域Z2の真偽値が変更になるテストケースの組合せを求める。同様にして、条件“B”の場合では、条件
“A”、“C”の真偽値を固定し、条件“B”の真偽値を“真(true)”、“偽(false)”と変更した場合に、領域Z2の真偽値が変更になるテストケースの組合せを求める。条件“C”の場合では、条件“A”、“B”の真偽値を固定し、条件“C”の真偽値を“真(true)”、“偽(false)”と変更した場合に、領域Z2の真偽値が変更になるテストケース
の組合せを求める。
、真(true))に固定した場合、番号2、6の(真(true)、偽(false))に固定した
場合には、条件“A”の真偽値の変更に関らず、判定の真偽値は変わらない。また、条件
“B”、“C”を(偽(false)、偽(false))に固定した番号4、8の場合にも条件“A
”の真偽値の変更に関らず、判定の真偽値は変わらない。
。従って、条件“A”、“B”、“C”について、番号3の(真(true)、偽(false)、真(true))のテストケースと、番号7の(偽(false)、偽(false)、真(true))のテストケースの組合せは、MC/DCの網羅規則4を満たすテストケースの組合せに含まれる。
”を(偽(false)、偽(false))に固定した番号6、8の場合にも条件“B”の真偽値
の変更に関らず、判定の真偽値は変わらない。
て、条件“A”、“B”、“C”について、番号5の(偽(false)、真(true)、真(true))のテストケースと、番号7の(偽(false)、偽(false)、真(true))のテストケースの組合せは、MC/DCの網羅規則4を満たすテストケースの組合に含まれる。
)に固定した場合に、条件“C”の真偽値の変更に関らず、判定の真偽値は変わらない。
他の、番号1、2の条件“A”、“B”を(真(true)、真(true))に固定した場合、番号3、4の(真(true)、偽(false))に固定した場合、番号5、6の(偽(false)、真(true))に固定した場合は、条件“B”の真偽値の変更に応じて判定の真偽値が変更
される。従って、番号1と2、3と4、5と6のテストケースの組合せは、MC/DCの網羅規則4を満たすテストケースの組合せに含まれる。
図1Cの説明例では、条件“A”についてのテストケースの組は、番号3と7の1組で
あり、条件“B”についてのテストケースの組も、番号5と7の1組である。一方、条件
“C”についてのテストケースの組は、番号1と2、3と4、5と6の3組となる。条件
“A”、“B”、“C”のそれぞれについて、少なくとも各1組のテストケースを持つよう
にすることで、最小となる各条件の組の和集合を求めることができる。
合、テストケースの総数は番号1、2、3、5、7の5通りとなる。条件“C”について
のテストケースの3組の内、番号3と4の組を選択した場合は、番号3が条件“A”のテ
ストケースの組と重複するため、テストケースの総数は番号3、4、5、7の4通りとなる。同様にして、条件“C”についてのテストケースの3組の内、番号5と6の組を選択
した場合、番号5は条件“B”のテストケースの組と重複するため、テストケースの総数
は番号3、5、6、7の4通りとなる。条件“C”についてのテストケースの3組に対し
、条件“A”、“B”の各テストケースの組を含め、テストケースの総数が最小となる和集合は、番号3、4、5、7のテストケース、或いは、番号3、5、6、7のテストケースとなる。
ように、テストケースの総数について比較を行うことで、該総数が最小となる番号3、4、5、7のテストケース、或いは、番号3、5、6、7のテストケースを求めることができる。
本実施形態の情報処理装置は、例えば、テスト対象となるプログラムの判定式(論理式)を解析し、判定に係る各条件、及び、各条件を結び付ける論理演算子を特定する。情報処理装置は、特定した論理演算子毎に、論理演算子によって結び付けられる各条件の真偽値を、所定関係を満たすように階層的に組合せ、MC/DCを満たす各条件の真偽値の組合せを生成する。ここで、所定関係とは、特定した論理演算子に応じた真偽値の冗長性を排除する各条件の組合せ関係である。
図2に、本実施形態の情報処理装置のハードウェアの構成を例示する。図2に例示の情報処理装置10は、例えば、PC(Personal Computer)、サーバ等のコンピュータであ
る。情報処理装置10は、接続バスB1によって相互に接続されたCPU(Central Processing Unit)11、主記憶部12、補助記憶部13、入力部14、出力部15、通信部
16を有する。主記憶部12及び補助記憶部13は、情報処理装置10が読み取り可能な記録媒体である。
テートドライブ装置、ハードディスクドライブ(HDD、Hard Disk Drive)装置等であ
る。また、補助記憶部13としては、例えば、CDドライブ装置、DVDドライブ装置、BD(Blu-ray(登録商標) Disc)ドライブ装置等が提示できる。記録媒体としては、例えば、不揮発性半導体メモリ(フラッシュメモリ)を含むシリコンディスク、ハードディスク、CD、DVD、BD、USB(Universal Serial Bus)メモリ、メモリカード等がある。
ル、有機ELパネル、プリンタ、スピーカ等の出力デバイスである。通信部16は、例えば、ネットワーク等とのインターフェースである。情報処理装置10が接続するネットワークには、例えば、LAN(Local Area Network)、インターネット(Internet)等の公衆ネットワーク、通信基地局を含む携帯電話網等の無線ネットワーク等が含まれる。
図3に、本実施形態の情報処理装置10における、機能ブロックの説明図を例示する。図3に例示の説明図において、情報処理装置10は、判定式解析部101、真偽値ルール適用部102、テストケース生成部103、充足可能性判定部104の各機能手段を有する。判定式解析部101には、2分木変換部101a、条件収集部101bの機能手段が含まれる。テストケース生成部103には、判定式生成部103aの機能手段が含まれる。
判定式解析部101の2分木変換部101aは、受け付けた判定式A1を解析し、判定式A1に含まれる論理演算子、及び、論理演算子によって結び付けられる判定に係る各条件を特定する。そして、2分木変換部101aは、特定した各条件と論理演算子と結びつけ、受け付けた判定式A1の判定に係る階層的な論理関係を、木構造に変換する。
2分木変換部101aは、例えば、言語解析等を行うことにより、判定式A1に含まれる“(”、“)”等の括弧記号、或いは、スペース等の領域の区切りを検出する。そして、2分木変換部101aは、区切られた領域範囲に含まれる論理演算子の文字列、及び、判定に係る条件を特定する。
、特定された条件に対し、例えば、判定式A1の文頭から順に連番による識別番号を付与する。そして、2分木変換部101aは、特定した条件を結び付ける論理演算子と、特定された条件に付与された識別番号との対応付けを行う。
、“if (x>2) then return”といった単一の条件“(x>2)”により記述されるケースが想
定できる。2分木変換部101aは、例えば、上述の判定式A1のように、論理演算子を検出しないケースでは、特定した条件“x>2”に対して識別番号を付与しないとすること
ができる。特定した条件に対する識別番号の有無により、例えば、受け付けた判定式A1が論理演算子を含まず、単一の条件により記述されていることが識別できる。
件を木構造の判定式A1の“リーフ”とする。
付けを行う。図4Aに例示のように、論理演算子“or”によって結び付けられる条件“x>0”、“y==1”の木構造の関係が特定される。2分木変換部101aは、例えば、論理演
算子“or”によって結び付けられる条件の識別番号と、識別番号が付与されたリーフ“(x>0,0)”、“(y==1,1)”とを、主記憶部12の所定の領域に一時的に格納する。
但し、判定式A1では、論理演算子である“and”により結び付けられる条件は、“((x>0) or (y==1))”、“z<0”である。論理演算子である“and”により結び付けられる“((x>0) or (y==1))”は、論理演算子“or”で結び付けられた各リーフ“(x>0,0)”、“(y==1,1)”の真偽関係である。このため、2分木変換部101aは、論理演算子である“and”により結び付けられる一方を論理演算子“or”とし、他方の条件“z<0”に対して、例えば、判定式A1の文頭から連番で“0(斜体文字)”から始まる識別番号を付与する。
えば、識別番号“2(斜体文字)”を付与し、論理演算子である“and”により結び付け
られるリーフ“(z<0,2)”とする。そして、2分木変換部101aは、論理演算子である“and”により結び付けられるリーフ“(z<0,2)”の識別番号と、論理演算子である
“and”の対応付けを行う。2分木変換部101aは、例えば、論理演算子“and”によって結び付けられる条件の識別番号と、識別番号が付与されたリーフ“(z<0,2)”とを、主記憶部12の所定の領域に一時的に格納する。また、2分木変換部101aは、論理演算子である“and”により結び付けられる論理演算子“or”を、例えば、“ノード”とし
、主記憶部12の所定の領域に一時的に格納する。
きる。また、同様にして、2分木変換部101aは、論理演算子である“and”について
も、該論理演算子によって結び付けられるリーフ“(z<0,2)”、及び、ノードとしての論理演算子“or”を対応付けることができる。この結果、2分木変換部101aは、図4Aに例示のように、判定式A1に含まれる論理演算子、及び、該論理演算子により結び付けられる各条件をリーフとした、論理演算子の関係を階層化した判定式A1の木構造を生成することができる。
付けられるリーフ間の関係では、判定式A1において、相対的に先行して出現したリーフ“(x>0,0)”が左側に、相対的に後行して出現したリーフ“(y==1,1)”が右側に配
置されている。論理演算子“and”についても、同様に、判定式A1において、相対的に
先行して出現した論理関係のノード“or”が右側に配置され、相対的に後行して出現したリーフ“(z<0,2)”が右側に配置されている。論理演算子“and”で結び付けられる、
ノード“or”とリーフ“(z<0,2)”は、同階層に配置されている。なお、判定式A1では、論理演算子“and”が木構造の最上位階層として表される。以下の説明では、木構造
の最上位階層に位置する論理演算子を“ルート”とも称する。
判定式解析部101の条件収集部101bは、2分木変換部101aから引き渡された各論理演算子、各リーフに基づいて、テスト対象となる判定式A1の真偽表テーブルを生成する。生成された真偽値表テーブルは、例えば、真偽値表DB201に格納される。
「(z<0,2)」の各カラムを有する。「(x>0,0)」、「(y==1,1)」、「(z<0,2)
」の各カラムは、左側から順に、各リーフに付与された識別番号順に配列される。「No」カラムには、例えば、テスト対象の判定式A1に対するMC/DCのテスト網羅度を満たすテストケースの識別番号が格納される。各リーフのカラムには、それぞれに“真(true)”、“偽(false)”といったリーフの条件の成立に係る真偽値が格納される。
(基本ルール)
真偽値ルール適用部102は、判定式解析部101により生成された真偽値表テーブルに基づいて、判定式A1の各条件の真偽値を、所定関係を満たすように階層的(再帰的)に組合せ、MC/DCを満たす各条件の真偽値の組合せを生成する。ここで、所定関係とは、特定した論理演算子に応じた真偽値の冗長性を排除する各条件の組合せ関係である。
(or)についての真偽値関係の説明図を例示する。図4C(1)は、論理積についての真偽値関係の説明図であり、図4C(2)は論理和についての真偽値関係の説明図である。
なお、説明例の判定式は、“(A or B) and (C)”とする。
値の組合せとして(A,B)=(真(true)、真(true))、(真(true)、偽(false))、(偽(false)、真(true))、(偽(false)、偽(false))の4つの組合せが存在
する。論理積の4通りの条件の組合せに対し、MC/DCのテスト網羅度の網羅規則3から、論理積の判定結果を“真(true)”、“偽(false)”とする条件の組合せが抽出で
きる。
真(true))の1通りであり、他は論理積の判定結果を“偽(false)”とする条件の組
合せである。MC/DCのテスト網羅度の網羅規則3を満たすためには、論理積の判定結果を“偽(false)”とする3通りの条件の組合せから、少なくとも1通り以上を抽出す
ればよい。
)の条件に対し、MC/DCのテスト網羅度の網羅規則2を満たすように、論理積の判定結果を“偽(false)”とする3通りの条件の組合せの中から所定の組合せを抽出する。
つまり、条件“A”、“B”のそれぞれについて“真(true)”となるケースは既に確定しているため、MC/DCのテスト網羅度の網羅規則2を満たすためには、条件“A”を“
偽(false)”とする条件“A”、“B”の組合せがあればよい。また、同様にして、条件
“B”を“偽(false)”とする条件“A”、“B”の組合せがあればよい。
りの真偽値の組合せが提示できる。論理積:(A and B)の関係では、条件“A”、“B”
の真偽値の組合せとして(A,B)=(真(true)、真(true))、(真(true)、偽(false))、(偽(false)、真(true))の3通りの組合せがMC/DCのテスト網羅度を
満たす組合せとして抽出される。
、真(true))、(真(true)、偽(false))、(偽(false)、真(true))、(偽(false)、偽(false))の4通りの組合せが存在する。そして、論理和の4通りの条件の組合せに対し、MC/DCのテスト網羅度の網羅規則3を満たす、論理和の判定結果を“真(true)”、“偽(false)”とする条件の組合せが抽出される。
se))の1通りであり、他は論理和の判定結果を“真(true)”とする条件の組合せである。MC/DCのテスト網羅度の網羅規則3を満たすためには、論理和の判定結果を“真(true)”とする3通りの条件の組合せから、少なくとも1通り以上を抽出すればよい。
しているため、MC/DCのテスト網羅度の網羅規則2を満たすためには、条件“A”を
“真(true)”とする条件“A”、“B”の組合せがあればよい。また、同様にして、条件“B”を“真(true)”とする条件“A”、“B”の組合せがあればよい。
の組合せ、条件“B”を“真(true)”とする(A,B)=(偽(false)、真(true))の
組合せが、網羅規則2の関係を満たすこととなる。論理和の4通りの条件の組合せの中で、(A,B)=(真(true)、真(true))との組合せは、論理和の判定結果を“真(true
)”とする他の2通りの組合せで真偽値のテストが網羅されるため、余剰な組合せとなる。
偽(false)、偽(false))の3通りの組合せがMC/DCのテスト網羅度を満たす組合せとして抽出される。
2通りが適用される。また、論理和を“偽(false)”とする条件“A”、“B”の真偽値
の組合せは、図4C(2)より、(A,B)=(偽(false)、偽(false))の1通りが適
用される。図4C(2)の論理和の関係を、論理演算子“and”の組合せに適用すること
により、(A,B,C)=(真(true)、偽(false)、真(true))、(偽(false)、真(t
rue)、真(true))の2通りの組合せが生成される。同様にして、(A,B,C)=(真(true)、偽(false)、偽(false))、(偽(false)、真(true)、偽(false))、(偽(false)、偽(false)、真(true))の3通りの組合せが生成される。
)について論理積、論理和による基本ルールの適用により5個のテストケースが生成される。条件数が3個のテストケースの、最小限の数量は4個であるため、図4C(1)、(2)に例示の基本ルールの適用では、未だ1個の余剰なテストケースが存在することとなる。以下、論理演算子毎の基本ルールとなる真偽値の階層的(再帰的)な組合せで残されたテストケースの冗長性について、排除可能な真偽値の組合せルールを図4D−4Eを参照し説明する。
図4D(1)、(2)に、論理積(and)、論理和(or)についてのMC/DCのテス
ト網羅度を満たす3通りの真偽値関係の説明図を例示する。図4D(1)は、論理積についての真偽値関係の説明図であり、図4D(2)は論理和についての真偽値関係の説明図である。
存在する。ここで、真偽値の判定結果に独立に影響を及ぼす条件とは、各条件の真偽値を反転させた場合に、判定結果の真偽値の結果が変更される条件をいう。
1のレコードに示すように、条件“A”が“真(true)”、条件“B”が“偽(false)”
となる組み合わせでは、判定結果(A and B)は“偽(false)”となる。ID=1のレコードの条件の組合せにおいて、例えば、条件“A”を“真(true)”→“偽(false)”に変更した場合、判定結果は“偽(false)”となり、変更の前後で変化しない。
”の真偽値の変更の前後で変化することとなる。つまり、図4D(1)のID=1のレコードの条件の組合せにおいて、条件“B”は、真偽値の判定結果に独立に影響を及ぼす条
件ということができる。
)が“真(true)”→“偽(false)”に変更されるからである。
果(A or B)は“真(true)”となる。ID=1のレコードの条件の組合せにおいて、例えば、条件“A”を“真(true)”→“偽(false)”に変更した場合には、判定結果は“偽(false)”となり、条件“A”の真偽値の変更の前後で変化することとなる。ID=1のレコードの条件の組合せにおいて、条件“A”は、真偽値の判定結果に独立に影響を及
ぼす条件ということができる。
真(true)”となる組み合わせにおける、条件“B”についても、真偽値の判定結果に独
立に影響を及ぼす条件ということができる。ID=2のレコードの条件“A”、“B”の組合せでは、条件“B”を“真(true)”→“偽(false)”に変更した場合、判定結果(A or B)が“真(true)”→“偽(false)”に変更されるからである。
偽(false)”となる組み合わせでは、条件“A”、条件“B”がそれぞれに真偽値の判定
結果に独立に影響を及ぼす条件ということができる。ID=3のレコードの条件“A”、
“B”の組合せでは、条件“A”を“偽(false)”→“真(true)”に変更した場合には
、判定結果(A or B)が“偽(false)”→“真(true)”に変更されるからである。同
様に、条件“B”を“偽(false)”→“真(true)”に変更した場合にも、判定結果(A or B)が“偽(false)”→“真(true)”に変更されるからである。
の組合せでは、それぞれに真偽値の判定結果に独立に影響を及ぼす条件が存在する。本実施形態の情報処理装置10では、解析された判定式について、基本ルールの階層的(再帰的)な条件の組合せにおいて、以下の組合せルール1、2を適用し、MC/DCのテスト網羅度を満たすテストケースを生成する。
・組合せルール2:真偽値の判定結果に独立に影響する(対象となる条件の真偽値を反転すると判定結果が変わる)場合には、判定結果が共通する条件の組合せを全て抽出し、適用する。
、“C”の組合せについての、MC/DCのテスト網羅度を満たす3通りの組合せが生成
される。
)、(偽(false)、真(true))、(真(true)、真(true))との3通りの条件“(A
or B)”、“C”組合せが生成される。そして、3通りの組合せのそれぞれについて、条件“(A or B)”に対し、図4C(2)に例示の論理和の真偽値の組合せを適用することで、基本ルールの階層的(再帰的な)な組合せに基づくテストケースが生成される。
”は、図4D(1)で説明したように、論理積の真偽値の判定結果に独立に影響する真偽値である。このため、ID=2のレコードの条件“(A or B)”に対し、論理和の基本ルールを階層的(再帰的)に適用する際には、組合せルール2が採用される。つまり、図4C(2)のID=3の、“A or B”が“偽(false)”となる、条件“A”、“B”につい
ての真偽値の組合せを全て適用すればよい。
“A”、“B”の真偽値の組合せはID=3に例示の1通りである。従って、図4E(1)のID=2のレコードの、条件“(A or B)”の“偽(false)”についての、論理和の
基本ルールの階層的(再帰的)な適用では、図4C(2)のID=3に例示の1通りの条件“A”、“B”についての真偽値の組合せが採用される。
“B”の真偽値の組合せはID=1の(真(true)、偽(false))、及び、ID=2の(偽(false)、真(true))の2通りである。従って、図4E(1)のID=3のレコー
ドの、条件“(A or B)”の“真(true)”についての、論理和の基本ルールの階層的(再帰的)な適用では、図4C(2)のID=1、2に例示の2通りの条件“A”、“B”についての真偽値の組合せが採用される。
(偽(false)、真(true))の組合せであってもよい。
る1通りの組合せである、(A,B)=(偽(false)、偽(false))が格納されている。
ている。また、図4E(2)のID=3#2のレコードには、条件“(A or B)”を“真
(true)”とする2通りの組合せの内、(A,B)=(偽(false)、真(true))が格納されている。
真偽値ルール適用部102は、例えば、判定式解析部101により生成された真偽値表テーブルについて、図4C−4Eで説明した、論理積、論理和の基本ルールの階層的(再帰的)な組合せ、及び、組合せルールを適用する。そして、真偽値ルール適用部102は
、MC/DCのテスト網羅度を満たす最小限のテストケースを生成する。
b2は、論理和(or)の3通りの条件の組合せに対する真偽値表である。Tb1,Tb2の各真偽値表は、例えば、真偽値ルールDB202に格納される。
)”との対応付けが行われている。
の真偽値が対応する論理関係の判定結果に独立に影響しない、或いは、独立に影響することを表す識別子が付与される。
0”、“1”との数値が対象となる条件の真偽値が対応する論理関係の判定結果に独立に影響しない、或いは、独立に影響することを表す識別子である。
辺」カラムに対応する。
積の結果が「全体」カラムに格納される。Tb1の論理積の真偽値表の、ID=1のレコードの「全体」カラムには、真偽値“false”との論理積の結果が格納されている。
ール適用部102は、図4Fに例示の論理積の真偽値表Tb1に基づいて、該真偽値表に格納された3通りの組合せに従って、真偽値ルール適用処理を行う。
真偽値ルール適用部102は、例えば、論理演算子“and”に対応付けられたリーフの
識別番号、論理演算子“or”に対応付けられたリーフの識別番号から、リーフ“(z<0,
2)”は、論理演算子“and”の右側に位置することを特定する。そして、真偽値ルール
適用部102は、例えば、論理演算子“and”に対応する論理積の真偽値表Tb1を参照
し、ID=1のレコードの「右辺」カラムに格納された真偽値情報を取得する。論理積の真偽値表Tb1のID=1のレコードの「右辺」カラムに格納された真偽値情報は、“false、1”である。真偽値ルール適用部102は、真偽値情報“false、1”から、真偽値は“false”であり、組合せルール2が適用されることを特定する。
の(z<0,2)カラムに格納する。なお、取得した真偽値の適用対象は、論理演算子“and”により結び付けられるリーフ“(z<0,2)”である。このため、リーフ“(z<0,2)”には、階層化されたリーフ、或いは、論理演算子等のノードは存在しない。真偽値ルール適用部102は、例えば、取得した真偽値の適用対象がリーフである場合には、取得した組合せルールを適用しないとすることができる。取得した真偽値情報の適用対象がリーフである場合には、真偽値情報の真偽値がリーフの真偽値に適用される。
情報が格納されている。また、同真偽値表のID=2のレコードでは、「左辺」カラムに“false、0”、「右辺」カラムに“true、1”との真偽値情報が格納されている。
得する。論理和の真偽値表Tb2から取得された真偽値の組合せは、論理演算子“or”で結び付けられる各リーフについての真偽値の組合せとなる。真偽値ルール適用部102は、論理和の真偽値表Tb2から取得した真偽値情報の組合せ(レコード情報)を、例えば、論理積の真偽値表Tb1から取得した真偽値“true”と対応付けて、主記憶部12の所定の領域に一時的に記憶する。
「左辺」カラムの真偽値は、例えば、論理演算子“or”で結び付けられる左側の条件の真偽値に対応し、「右辺」カラムの真偽値は、同論理演算子で結び付けられる右側の条件の真偽値に対応する。判定式A1について、論理演算子“or”で結び付けられる左側の条件は“(x>0,0)”であり、右側の条件は“(y==1,1)”である。このため、真偽値ルー
ル適用部102は、取得した「左辺」カラムの真偽値“true”を、真偽値表テーブルTb3の「(x>0,0)」カラムに格納し、「右辺」カラムの真偽値“false”を、真偽値表テ
ーブルTb3の「(y==1,1)」カラムに格納する。
ている。「左辺」カラムの真偽値は、論理演算子“or”で結び付けられる左側の条件“(x>0,0)”の真偽値に対応し、「右辺」カラムの真偽値は、論理演算子“or”で結び付けられる右側の条件“(y==1,1)”の真偽値に対応する。このため、真偽値ルール適用部
102は、取得した「左辺」カラムの真偽値“false”を、真偽値表テーブルTb3の「
(x>0,0)」カラムに格納し、「右辺」カラムの真偽値“true”を、真偽値表テーブルTb3の「(y==1,1)」カラムに格納する。
図4Hに、真偽値ルール適用処理の説明図を例示する。真偽値ルール適用部102は、例えば、図4Hに例示の、論理積の真偽値表Tb1のID=2のレコードに格納された真偽値の組合せに基づいて、真偽値ルール適用処理を行う。なお、図4Hに例示の説明図において、真偽値表テーブルTb3には、上述した第1の真偽値ルール適用処理で生成されたテストケースが格納されている。
表Tb1を参照し、ID=2のレコードの「右辺」カラムに格納された真偽値情報を取得する。論理積の真偽値表Tb1のID=2のレコードの「右辺」カラムに格納された真偽値情報は、“true、0”である。真偽値ルール適用部102は、真偽値情報“true、0”から、真偽値は“true”であり、組合せルール1が適用されることを特定する。なお、真偽値ルール適用部102は、取得した真偽値情報の適用対象がリーフであるため、取得した真偽値情報の真偽値をリーフの真偽値に適用する。
,2)カラムに、論理積の真偽値表Tb1から取得した真偽値“true”を格納する。
。真偽値ルール適用部102は、真偽値情報“false、1”から、真偽値は“false”であり、組合せルール2が適用されることを特定する。なお、組合せルール2では、例えば、判定結果が共通する条件の組合せを全て抽出し適用すればよい。
ラムの格納値を検索する。論理演算子“or”で結び付けられる各リーフに対し、論理積の真偽値表Tb1から取得した“false、1”との真偽値情報を階層的(再帰的)に適用す
るためである。
致する真偽値を有するレコードは、ID=3のレコードである。論理和の真偽値表Tb2のID=3のレコードには、「左辺」カラムに“false、1”、「右辺」カラムに“false、1”との真偽値情報が格納されている。真偽値ルール適用部102は、真偽値“false
”と一致する真偽値を「全体」カラムに格納した全ての真偽値の組合せ(ID=3の1通り)を取得する。論理和の真偽値表Tb2から取得された真偽値の組合せは、論理演算子“or”で結び付けられる各リーフについての真偽値の組合せとなる。
と対応付けて、主記憶部12の所定の領域に一時的に記憶する。
ることとなる。また、論理演算子“or”で結び付けられる右側の条件“(y==1,1)”に
は、論理和の真偽値表Tb3のID=3のレコードの「右辺」カラムから取得した真偽値情報“false、1”が対応することとなる。
、真偽値表テーブルTb3の「(x>0,0)」カラムに格納し、「右辺」カラムの真偽値“false”を、真偽値表テーブルTb3の「(y==1,1)」カラムに格納する。なお、論理和の真偽値表Tb2から取得した真偽値情報の適用対象は、論理演算子“or”で結び付けられるリーフである。このため、真偽値情報に含まれる組合せルールは適用されず、真偽値情報に含まれる真偽値が適用されることとなる。
図4Kに、真偽値ルール適用処理の説明図を例示する。真偽値ルール適用部102は、
例えば、図4Kに例示の、論理積の真偽値表Tb1のID=3のレコードに格納された真偽値の組合せに基づいて、真偽値ルール適用処理を行う。なお、図4Kに例示の説明図において、真偽値表テーブルTb3には、上述した第1、2の真偽値ルール適用処理で生成されたテストケースが格納されている。
表Tb1を参照し、ID=3のレコードの「右辺」カラムに格納された真偽値情報を取得する。論理積の真偽値表Tb1のID=3のレコードの「右辺」カラムに格納された真偽値情報は、“true、1”である。真偽値ルール適用部102は、真偽値情報“true、1”
から、真偽値は“true”であり、組合せルール2が適用されることを特定する。なお、真偽値ルール適用部102は、取得した真偽値情報の適用対象がリーフであるため、取得した真偽値情報の真偽値をリーフの真偽値に適用する。
,2)カラムに、論理積の真偽値表Tb1から取得した真偽値“true”を格納する。
レコードには、「左辺」カラムに“false、0”、「右辺」カラムに“true、1”との真
偽値情報が格納されている。
b3のID=3のレコードの「(y==1,1)」カラムに格納する。
ID=4のレコードの「(x>0,0)」カラムに格納する。また、真偽値ルール適用部102は、例えば、同レコードの「右辺」カラムから取得した真偽値“true”を、真偽値表テーブルTb3のID=4のレコードの「(y==1,1)」カラムに格納する。
図3に例示の説明図に戻り、テストケース生成部103の判定式生成部103aは、真偽値ルール適用部102で生成された真偽値表テーブルTb3に基づいて、MC/DCのテスト網羅度を満たすテストケースの判定式テーブルTb4を生成する。判定式テーブルTb4には、真偽値表テーブルTb3のレコードに対応した判定式が格納される。なお、MC/DCのテスト網羅度を満たすテストケースの変数値は、判定式テーブルTb4に格納された判定式に基づいて決定される。判定式生成部103aで生成された判定式テーブルTb4は、例えば、判定式DB203に格納される。
した真偽値表テーブルTb3を、例えば、主記憶部12の所定の領域に一時的に記憶する。
の場合には、カラムとしての各条件に対して論理演算子“not”を付加し、判定式の条件
を生成する。また、例えば、判定式生成部103aは、例えば、取得したレコードのカラム毎の真偽値が“true”の場合では、カラムとしての各条件を判定式の条件とする。そして、判定式生成部103aは、カラムとしての各条件に真偽値を組合せた条件を、各条件に付加された識別番号順に論理演算子“and”で結合し、真偽値表テーブルTb3のレコ
ードの真偽値の組合せに応じた判定式を生成する。生成された判定式は、例えば、判定式テーブルTb4の、判定式生成処理の対象となる真偽値表テーブルTb3のレコードと同一のIDが付与されたレコードの「判定式」カラムに格納される。
が取得される。
”、“not(z<0,2)”といった真偽値の種別に応じて変換された各条件が生成される。
、判定式を生成する。例えば、“(x>0) and not(y==1) and not(z<0)”といった判定式が生成される。判定式生成部103aは、例えば、生成した判定式“(x>0) and not(y==1) and not(z<0)”を、判定式テーブルTb4のID=1のレコードに格納する。
図3に例示の説明図に戻り、テストケース生成部103は、判定式生成部103aで生成された判定式テーブルTb4に基づいて、判定式の条件を満たす変数値を組合せ、MC/DCのテスト網羅度を満たすテストケースを生成する。なお、判定式テーブルTb4に基づく変数値の組合せ(セット)は、例えば、充足可能性判定部104により生成される。
C/DCのテスト網羅度を満たす真偽値の組合せを反映させた4通りの判定式が格納されている。
該論理演算子で結び付けられる各条件を抽出する。例えば、図4Nに例示の判定式テーブルTb4のID=1のレコードの判定式“(x>0) and not(y==1) and not(z<0)”では、充足可能性判定部104は、論理演算子“and”で結合された条件“(x>0)”、“not(y==1)”、“not(z<0)”を抽出する。
“1”を特定する。そして、充足可能性判定部104は、例えば、各変数値に対する数値
との大小関係、及び、各条件に付加された論理演算子“not”との論理関係から、条件“
(x>0)”、“not(y==1)”、“not(z<0)”を充足する変数値の組合せを生成する。例えば、充足可能性判定部104は、条件“(x>0)”を充足する変数値として“x=1”を生成し、条件“not(y==1)”を充足する変数値として“y=0”を生成し、条件“not(z<0)”を充足する変数値として“z=0”を生成する。そして、充足可能性判定部104は、例
えば、抽出された各条件を満たす充足解として、“x=1,y=0,z=0”との変数値の組合せを
テストケース生成部103に引き渡す。
(全体処理)
以下、図5A−5Eに例示のフローチャートを参照し、本実施形態の情報処理装置10の、MC/DCのテスト網羅度を満たすテストケース生成処理を説明する。本実施形態の情報処理装置10では、例えば、図3に例示のように、入力された、テスト対象となるプログラムの判定式を解析する。情報処理装置10は、例えば、解析結果から、判定式に含まれる論理演算子、及び、該論理演算子によって結び付けられる判定に係る各条件を特定する。
は、S2の処理で取得した各リーフについて、MC/DCのテスト網羅度を満たす真偽値の組合せを生成する。情報処理装置10は、S4−S11の処理で生成した、各リーフについてのMC/DCのテスト網羅度を満たす真偽値の組合せを、例えば、真偽値表テーブルに格納する。情報処理装置10は、各リーフについての、MC/DCのテスト網羅度を満たす真偽値の組合せが格納された真偽値表テーブルを、例えば、真偽値表DB201に格納する。なお、S4−S11の真偽値表テーブルの生成処理は、例えば、図4F−4H、4J−4Lで説明した。
“or”、組合せルール)が存在するか否かを判定する。情報処理装置10は、例えば、適用する各種ルールが存在する場合には(S5,yes)、S6の処理に移行し、適用する各種ルールが存在しない場合には(S5,no)、S12の処理に移行する。
値表Tb1を取得する。
右側の子ノード(図4Fの例では、子ノード“or”)を特定し選択する。そして、情報処理装置10は、例えば、S6で取得した論理積の真偽値表を参照し、S9の処理で選択した右側の子ノードに対する真偽値ルールの適用処理を行う(S10)。なお、S9の処理で選択した子ノードに対する真偽値ルールの適用処理については、図5D−5Eで説明する。
するか否かの判定処理を行う。
場合には、カラムに設定されたリーフに論理演算子“not”を付与し、判定式の条件とす
る。そして、情報処理装置10は、カラムに格納された真偽値に応じて変換されたリーフを条件として、各条件を論理演算子“and”で結合し、対象となるレコードの判定式(論
理式)を生成する。
未処理の判定式が存在しない場合には(S16,no)、S17−S18の処理をスキップしS19の処理に移行する。
ールとなる真偽値表は、論理積の真偽値表となる。論理積の真偽値表には、真偽値、及び、組合せルールを含む真偽値情報が格納されている。
理で取得した論理積の真偽値表の「左辺」カラムに格納された真偽値情報を取得し、該真偽値情報に含まれる真偽値を取得する。情報処理装置10は、例えば、S3の処理で取得した真偽値表テーブルに真偽値表テーブルにID=1のレコードを新たに追加し、該レコードの、リーフと対応するカラムの領域に、論理積の真偽値表から取得した真偽値を格納する。情報処理装置10は、当該処理を終了し、例えば、図5BのS9の処理に移行する。
S6の処理で取得した論理積の真偽値表の「右辺」カラムに格納された真偽値情報を取得し、該真偽値情報に含まれる真偽値を取得する。情報処理装置10は、例えば、S3の処理で取得した真偽値表テーブルに真偽値表テーブルにID=1のレコードを新たに追加し、該レコードの、リーフと対応するカラムの領域に、論理積の真偽値表から取得した真偽値を格納する。情報処理装置10は、当該処理を終了し、例えば、図5AのS5の処理に移行する。
応付けて、主記憶部12の所定の領域に一時的に記憶する。
に従って、論理演算子で結び付けられた各条件の真偽値関係を特定できる。また、情報処理装置10は、例えば、論理演算子で結び付けられた各条件に条件式が含まれる場合には、条件式が含まれる条件について特定された真偽値の値と一致する判定結果を持つ真偽値関係を、各真偽値表から特定することができる。このため、本実施形態の情報処理装置10は、階層化された最上位の論理演算子で結び付く各条件の真偽値関係を特定し、さらに、各条件に含まれる条件式についての真偽値関係を階層的(再帰的)に求めることができる。
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
以上の実施形態は、さらに以下の付記と呼ぶ態様を含む。以下の各付記に含まれる構成要素は、他の付記に含まれる構成と組み合わせることができる。
(付記1)
コンピュータに、
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得ステップと、
前記取得した演算子による演算結果の真偽値と、前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たすように、前記演算対象式の真偽値を求める解析ステップと、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に前記取得ステップと前記解析ステップとを適用するステップと、
を実行させるためのテストケース生成プログラム。
(付記2)
前記階層は、論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される演算対象式とを上位の階層とし、前記上位の階層とされた演算対象式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の演算対象式とを次の階層として
、前記上位の階層の直下に前記次の階層を位置づけることで形成される、付記1に記載のテストケース生成プログラム。
(付記3)
前記解析ステップは、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響しない、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、いずれか1つの組合せを選択するステップを含む、付記2に記載のテストケース生成プログラム。
(付記4)
前記解析ステップは、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響し、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、付記2に記載のテストケース生成プログラム。
(付記5)
前記解析ステップは、第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択するステップを含む、付記2から付記4の何れか一の付記に記載のテストケース生成プログラム。
(付記6)
前記解析ステップは、第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択するステップを含む、付記2から付記4の何れか一の付記に記載のテストケース生成プログラム。
(付記7)
コンピュータが、
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得ステップと、
前記取得した演算子による演算結果の真偽値と、前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たすように、前記演算対象式の真偽値を求める解析ステップと、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に前記取得ステップと前記解析ステップとを適用するステップと、
を実行するテストケース生成方法。
(付記8)
前記階層は、論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される演算対象式とを上位の階層とし、前記上位の階層とされた演算対象式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の演算対象式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで形成される、付記7に記載のテストケース生成方法。
(付記9)
前記解析ステップは、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響しない、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、いずれか1つの組合せを選択するステップを含む、付記8に記載の生成方法。
(付記10)
前記解析ステップは、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響し、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、付記8に記載の生成方法。
(付記11)
前記解析ステップは、第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択するステップを含む、付記8から付記10の何れか一の付記に記載の生成方法。
(付記12)
前記解析ステップは、第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択するステップを含む、付記8から付記10の何れか一の付記に記載の生成方法。
(付記13)
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得手段と、
前記取得した演算子による演算結果の真偽値と、前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たすように、前記演算対象式の真偽値を求める解析手段と、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に前記取得手段と前記解析手段とを適用する手段と、
を備えるテストケース生成装置。
(付記14)
前記階層は、論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される演算対象式とを上位の階層とし、前記上位の階層とされた演算対象式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の演算対象式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで形成される、付記13に記載のテストケース生成装置。
(付記15)
前記解析手段は、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響しない、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、いずれか1つの組合せを選択する手段を含む、付記14に記載のテストケース生成装置。
(付記16)
前記解析手段は、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響し、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択する手段を含む、付記14に記載のテストケース生成装置。
(付記17)
前記解析手段は、第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択する手段を含む、付記14から付記16の何れか一の付記に記載のテストケース生成装置。
(付記18)
前記解析手段は、第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択する手段を含む、付記14から付記16の何れか一の付記に記載のテストケース生成装置。
11 CPU
12 主記憶部
13 補助記憶部
14 入力部
15 出力部
16 通信部
101 判定式解析部
101a 2分木変換部
101b 条件収集部
102 真偽値ルール適用部
103 テストケース生成部
103a 判定式生成部
104 充足可能性判定部
201 真偽値表DB
202 真偽値ルールDB
203 判定式DB
Tb1 論理積真偽値表
Tb2 論理和真偽値表
Tb3 真偽値表テーブル
Tb4 判定式テーブル
Claims (8)
- コンピュータに、
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得ステップと、
前記取得した演算子による演算結果の真偽値と、前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たすように、前記演算対象式の真偽値を求める解析ステップと、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に前記取得ステップと前記解析ステップとを適用するステップと、
を実行させるためのテストケース生成プログラム。 - 前記階層は、論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される演算対象式とを上位の階層とし、前記上位の階層とされた演算対象式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の演算対象式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで形成される、請求項1に記載のテストケース生成プログラム。
- 前記解析ステップは、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響しない、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、いずれか1つの組合せを選択するステップを含む、請求項2に記載のテスト生成ケースプログラム。
- 前記解析ステップは、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響し、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、請求項2に記載のテストケース生成プログラム。
- 前記解析ステップは、第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択するステップを含む、請求項2から請求項4の何れか一項に記載のテストケース生成プログラム。
- 前記解析ステップは、第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択するステップを含む、請求項2から請求項4の何れか一項に記載のテストケース生成プログラム。
- コンピュータが、
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得ステップと、
前記取得した演算子による演算結果の真偽値と、前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たすように、前記演算対象式の真偽値を求める解析ステップと、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に前記取得ステップと前記解析ステップとを適用するステップと、
を実行するテストケース生成方法。 - 判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得手段と、
前記取得した演算子による演算結果の真偽値と、前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たすように、前記演算対象式の真偽値を求める解析手段と、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に前記取得手段と前記解析手段とを適用する手段と、
を備えるテストケース生成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014144783A JP6459267B2 (ja) | 2014-07-15 | 2014-07-15 | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014144783A JP6459267B2 (ja) | 2014-07-15 | 2014-07-15 | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016021163A true JP2016021163A (ja) | 2016-02-04 |
JP6459267B2 JP6459267B2 (ja) | 2019-01-30 |
Family
ID=55265963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014144783A Active JP6459267B2 (ja) | 2014-07-15 | 2014-07-15 | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6459267B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984540A (zh) * | 2020-08-27 | 2020-11-24 | 北京一仿科技有限公司 | 最小代价测试用例生成方法 |
CN112052177A (zh) * | 2020-09-14 | 2020-12-08 | 北京一仿科技有限公司 | 一种多值耦合信号的mc/dc测试用例集生成方法 |
CN117851254A (zh) * | 2024-01-09 | 2024-04-09 | 浙江大学 | 一种基于符号执行和路径数缩减的mc/dc覆盖用例生成方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009181292A (ja) * | 2008-01-30 | 2009-08-13 | Toyota Motor Corp | Mc/dcパターン生成装置 |
US20140068364A1 (en) * | 2012-08-29 | 2014-03-06 | Hcl Technologies Limited | Modified condition/decision coverage test case automation |
-
2014
- 2014-07-15 JP JP2014144783A patent/JP6459267B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009181292A (ja) * | 2008-01-30 | 2009-08-13 | Toyota Motor Corp | Mc/dcパターン生成装置 |
US20140068364A1 (en) * | 2012-08-29 | 2014-03-06 | Hcl Technologies Limited | Modified condition/decision coverage test case automation |
Non-Patent Citations (2)
Title |
---|
MATEUS ANDRADE ALMEDIA ET AL.: "Automatic generation of test cases for critical systems based on MC/DC criteria", 2013 IEEE/AAA 32ND DIGITAL AVIONICS SYSTEMS CONFERENCE, JPN6018012943, 10 October 2013 (2013-10-10), US, pages pages:1-10 * |
藤倉 俊幸: "「新・組み込みソフトへの数理的アプローチ 〜形式仕様記述をどのように使うか〜」", INTERFACE, vol. 第35巻 第7号, JPN6018012946, 1 July 2009 (2009-07-01), JP * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984540A (zh) * | 2020-08-27 | 2020-11-24 | 北京一仿科技有限公司 | 最小代价测试用例生成方法 |
CN112052177A (zh) * | 2020-09-14 | 2020-12-08 | 北京一仿科技有限公司 | 一种多值耦合信号的mc/dc测试用例集生成方法 |
CN117851254A (zh) * | 2024-01-09 | 2024-04-09 | 浙江大学 | 一种基于符号执行和路径数缩减的mc/dc覆盖用例生成方法 |
Also Published As
Publication number | Publication date |
---|---|
JP6459267B2 (ja) | 2019-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227668B (zh) | 数据处理方法和装置 | |
JP4153883B2 (ja) | 階層型データベース装置および階層型データベース装置における製品選定方法およびプログラム | |
US9336019B2 (en) | Information processing apparatus and method therefor | |
CN104765621B (zh) | 一种在集群节点中部署程序的方法和系统 | |
JP2016015026A (ja) | 作業対象確定プログラム、作業対象確定装置及び作業対象確定方法 | |
JP2008191833A (ja) | 論理構造認識処理プログラム、論理構造認識処理方法および論理構造認識処理装置 | |
JP6996629B2 (ja) | 検証自動化装置、検証自動化方法、およびプログラム | |
JP6459267B2 (ja) | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 | |
JP2001175596A (ja) | コマンド処理装置、コマンド処理方法、およびそのプログラムを記録した記録媒体 | |
JP2016126693A (ja) | 制御手順方法、制御手順プログラム及び制御手順装置 | |
CN109710951A (zh) | 基于翻译历史的辅助翻译方法、装置、设备及存储介质 | |
JP2018073228A (ja) | ケーブル配線プログラム、情報処理装置、およびケーブル配線方法 | |
CN105446952A (zh) | 用于处理语义片段的方法和系统 | |
JP6899797B2 (ja) | 問合せ機器特定システム、問合せ機器特定方法 | |
WO2019167282A1 (ja) | 応答処理プログラム、応答処理方法、応答処理装置および応答処理システム | |
KR101942905B1 (ko) | 통신 데이터 모델링 방법 | |
US8510693B2 (en) | Changing abstraction level of portion of circuit design during verification | |
JPWO2016181526A1 (ja) | 制御ロジック図解析装置および制御ロジック図解析方法 | |
CN115329753B (zh) | 一种基于自然语言处理的智能数据分析方法和系统 | |
JP6511793B2 (ja) | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 | |
CN110196952A (zh) | 程序代码的搜索处理方法、装置、设备及存储介质 | |
JP2007249826A (ja) | テスト項目生成装置 | |
CN110727428B (zh) | 一种转换业务逻辑层代码的方法、装置和电子设备 | |
JP4672714B2 (ja) | 文書データ処理装置 | |
JP2018120256A (ja) | 設定操作入力支援装置、設定操作入力支援システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170406 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180329 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180410 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180611 |
|
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: 20181204 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181217 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6459267 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |