JP6511793B2 - テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 - Google Patents
テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 Download PDFInfo
- Publication number
- JP6511793B2 JP6511793B2 JP2014255605A JP2014255605A JP6511793B2 JP 6511793 B2 JP6511793 B2 JP 6511793B2 JP 2014255605 A JP2014255605 A JP 2014255605A JP 2014255605 A JP2014255605 A JP 2014255605A JP 6511793 B2 JP6511793 B2 JP 6511793B2
- Authority
- JP
- Japan
- Prior art keywords
- true
- conditional expression
- false
- operator
- false value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
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、1Bに、比較例としての、MC/DCのテスト網羅度を満たすテストケースの生成についての説明図を例示する。図1Aは、複数の処理プロセスが記述されたテスト対象となるプログラムの例である。
の論理演算子で結合した論理積による処理が記述されている。第2ステップには、“if (x==3) or (y>2) then z=2 * Z”との、変数x,yのそれぞれに対する条件成立の可否を
“or”との論理演算子で結合して変数zを導出する論理和による処理が記述されている。
・網羅規則1:プログラムの全入り口/出口は少なくとも一回はテストすること。
・網羅規則2:プログラムの判定に含まれる全条件は可能な値を少なくとも一回はテストすること。
・網羅規則3:プログラムの全判定は可能な値を少なくとも一回はテストすること。
・網羅規則4:プログラムの判定の全条件は、判定の出力に独立に影響することを示すこと。(他方の条件の値を固定し、一方の条件の値を変更することで、判定の真偽値の出力値を変更すること)
(x=0,y=3)”といった変数x,yについての数値の組合せが例示できる。なお、以下の
説明では、図1AのブロックP1に例示の第2ステップのプログラムを対象例として、MC/DCのテスト網羅度を満たすテストケースを説明する。
、“(x==3) or (y>2)”である。このため、各条件に含まれる変数x,yについての変数
値の組合せ(x,y)は、網羅規則1を満たすテストケースとなる。
数値“2”以下の範囲の変数値は、条件“(y>2)”を不成立させる変数値となる。
及び、条件“(y>2)”を不成立させる変数値、例えば、“1” を用いたテストは、第2ステップの判定式に含まれる変数yについての条件“(y>2)”の可能な値を少なくとも一回
はテストすることとなる。このため、変数yに対する変数値“1”,“3”は、MC/DCの網羅規則2を満たすテストケースに含まれる。
数値の組合せであるテストケース(x=1,y=1)、(x=1,y=3)、(x=3,y=1)は、MC/D
Cの網羅規則2を満たすこととなる。
たすテストケースとして存在し得る。しかしながら、第2ステップの判定式に含まれる“(x==3)”との条件についての条件成立テストは、(x=3,y=1)により少なくとも1回は実
行され、同様に、“(y>2)”との条件について条件成立テストは、(x=1,y=3)により少なくとも1回は実行される。MC/DCの網羅規則2では、条件“(x==3)”、“(y>2)”に
ついて、可能な変数値を少なくとも1回、テストすればよいので、(x=3,y=3)との組合
せは、他のテストケースによる条件成立の可否と重複するため、余剰なテストケースとなる。
)において、(x=1,y=1)との組合せは、第2ステップの判定式“(x==3) or (y>2)”を不成立させるテストケースである。また、(x=1,y=3)との組合せは、第2ステップの判定
式“(X==3) or (y>2)”を成立させるテストケースである。このため、例えば、MC/D
Cの網羅規則2を満たすテストケースにおいて、変数x,yについての(x=1,y=1)、(x=1,y=3)の組合せは、第2ステップのプログラムの判定式の可能な値を少なくとも1回はテストするテストケースとなる。変数x,yについての(x=1,y=1)、(x=1,y=3)の組合せによるテストケースは、MC/DCの網羅規則3を満たすこととなる。
(false)”、条件“(y>2)”について“偽(false)”とし、プログラムの判定式“(x==3) or (y>2)”を不成立(偽(false))させるテストケースである。また、例えば、変数
x,yについての(x=3,y=1)は、条件“(x==3)”について“真(true)”、条件“(y>2)”について“偽(false)”とし、プログラムの判定式“(x==3) or (y>2)”を成立(真(true))させるテストケースである。
“偽(false)”に固定し、条件“(x==3)”に対する真偽値を変更する関係にあり、プロ
グラムの判定式“(x==3) or (y>2)”の真偽値を変更する関係にある。つまり、テストケ
ース(x=1,y=1)と(x=3,y=1)との関係は、第2ステップのプログラムの判定式“(x==3)
or (y>2)”の真偽値の出力に独立に影響することとなる。
て“偽(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)との関係は、第2ステップのプログラムの判定式“(x==3) or (y>2)”の真偽値の出力に独立に影響することとなる。
となるプログラムの判定式に係る条件数がn個の場合、n+1個を最小としてn+1通り以上の、MC/DCのテスト網羅度を満たすテストケースが生成される。
といったテストケースであってもよい。
定に係る各条件には、それぞれに真偽値が存在し、条件毎の真偽値の組合せにより、プログラムとしての判定式の真偽値が決定される。
図1Bの、破線で囲まれた領域Z1に例示のように、判定に係る条件“A”、“B”、“C”について、それぞれの真偽値の全組合せを生成する。図1Bの例では、判定に係る条
件数が3個であるため、2の3乗個である8通りの真偽値の組合せ(識別番号1−8)が生成される。
図1Bの、破線で囲まれた領域Z2に例示するように、判定に係る条件“A”、“B”、“C”について生成された真偽値の全組合せに対する、判定式の真偽値を生成する。ここ
で、プログラムの判定式は“(A or B) and C”である。
ため、少なくとも一方の条件が“真(true)”であれば、左項(A or B)は“真”となる。条件“A”、“B”の真偽値の組合せとして(A,B)=(真、真)、(真、偽)、(偽、真
)の3通りが、論理和(or)で結ばれた左項(A or B)を“真”とする。
”とが“真”である場合に、判定式としての真偽値が“真”となる。従って、条件“A”
、“B”、“C”の真偽値の組合せとして(A,B,C)=(真、真、真)、(真、偽、真)、
(偽、真、真)の3通りが、判定式“(A or B) and C”を“真”とする(他の組合せでは、判定式は“偽”となる)。図1Bの例では、識別番号1,3,5の各条件の組合せが、判定式“(A or B) and C”を“真”とする。
図1Bの、破線で囲まれた領域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の真偽値が変更になる組合せを求める。
また、条件“B”、“C”を(偽(false)、偽(false))に固定した識別番号4、8の場合でも条件“A”の真偽値の変更に関らず、判定式の真偽値は変わらない。
されることとなる。従って、条件“A”、“B”、“C”について、識別番号3の(真(true)、偽(false)、真(true))の真偽値の組合せ、識別番号7の(偽(false)、偽(false)、真(true))の真偽値の組合せは、MC/DCの網羅規則4を満たす真偽関係となる。
、真(true))に固定した場合、識別番号2、6の(真(true)、偽(false))に固定
した場合では、条件“B”の真偽値の変更に関らず、判定式の真偽値は変わらない。また
、条件“A”、“C”を(偽(false)、偽(false))に固定した識別番号6、8の場合でも条件“B”の真偽値の変更に関らず、判定式の真偽値は変わらない。
されることとなる。従って、条件“A”、“B”、“C”について、識別番号5の(偽(false)、真(true)、真(true))の真偽値の組合せ、識別番号7の(偽(false)、偽(false)、真(true))の真偽値の組合せは、MC/DCの網羅規則4を満たす真偽関係となる。
従って、条件“C”について、識別番号1と2、3と4、5と6の真偽値の組合せは、
MC/DCの網羅規則4を満たす真偽関係となる。
図1Bの説明例では、条件“A”に対する真偽値の組合せは、識別番号3と7の1組で
あり、条件“B”に対する真偽値の組合せは、識別番号5と7の1組である。また、条件
“C”に対する真偽値の組合せは、識別番号1と2,3と4,5と6の3組である。それ
ぞれの条件に対する真偽値の組合せの中から、少なくとも条件毎に1組の真偽値の組合せをテストケースとして持つことにより、対象となるプログラムについての最小となるテストケースの和集合を求めることができる。
した場合、条件“A”、“B”と合わせて、テストケースとなる真偽値の組合せの総数は識
別番号1、2、3、5、7の5通りとなる。また、識別番号3と4の1組を選択した場合では、識別番号3が条件“A”のテストケースとなる組合せと重複するため、テストケー
スとなる真偽値の組合せの総数は識別番号3、4、5、7の4通りとなる。同様に、識別番号5と6の1組を選択した場合では、識別番号5が条件“B”のテストケースとなる組
合せと重複するため、テストケースとなる真偽値の組合せの総数は識別番号3、5、6、7の4通りとなる。
なる真偽値の組合せの総数が最小となる和集合は、識別番号3、4、5、7によるテストケース、或いは、識別番号3、5、6、7によるテストケースとなる。
図1Bで説明したように、テスト対象となるプログラムの判定式に含まれる各条件についての真偽値の組合せの内(図1Bでは8通り)、MC/DCのテスト網羅度の網羅規則を満たす最小数の組合せ以外の、真偽値の組合せ(図1Bでは4通り)は余剰となる。
する論理演算子の論理関係に基づいて、上述の網羅規則2、3を満たすよう判定式としての真偽値と条件毎の真偽関係の組合せとを求めることにより、各条件についての余剰な真偽値の組合せを排除する。
図2A(1)、(2)に、テスト対象となる判定式に含まれる論理積(and)、論理和
(or)についての真偽値関係の説明図を例示する。図2A(1)は、論理積についての真偽値関係の説明図であり、図2A(2)は論理和についての真偽値関係の説明図である。なお、説明例の判定式は、“(A or B) and (C)”とする。
値の組合せとして(A,B)=(真(true)、真(true))、(真(true)、偽(false))、(偽(false)、真(true))、(偽(false)、偽(false))の4つの組合せが存在
する。そして、各条件の4通りの真偽値の組合せに対し、MC/DCのテスト網羅度の網羅規則3を満たすように、論理積の判定結果を“真(true)”、“偽(false)”とする
条件の組合せを抽出する。
DCのテスト網羅度の網羅規則3を満たすためには、論理積の判定結果を“偽(false)
”とする各条件の3通りの真偽値の組合せから、少なくとも1通り以上を抽出すればよい。
、MC/DCのテスト網羅度の網羅規則2を満たすように、論理積の判定結果を“偽(false)”とする各条件の3通りの真偽値の組合せの中から所定の組合せを抽出する。
))との組合せは、論理積の判定結果を“偽(false)”とする他の2通りの組合せで真
偽値のテストが網羅されるため、余剰な組合せとなる。
件“A”、“B”についての3通りの真偽値の組合せが、MC/DCのテスト網羅度の網羅規則2,3を満たす組合せとして提示できる。論理積:(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)”とする条件の組合せを抽出する。
組合せの中の、(A,B)=(偽(false)、偽(false))の1通りである。他の、(A,B)=(真(true)、真(true))、(真(true)、偽(false))、(偽(false)、真(true))の組合せは、論理和の判定結果を“真(true)”とする条件の組合せである。MC/DCのテスト網羅度の網羅規則3を満たすためには、論理和の判定結果を“真(true)”とする各条件の3通りの真偽値の組合せから、少なくとも1通り以上を抽出すればよい。
ue)”とする各条件の3通りの真偽値の組合せの中から所定の組合せを抽出する。
となる真偽値の組合せは既に確定している。従って、MC/DCのテスト網羅度の網羅規則2を満たすためには、条件“A”を“真(true)”としてテスト可能な条件“A”、“B
”の組合せがあればよい。また、同様にして、条件“B”を“真(true)”としてテスト
可能な条件“A”、“B”の組合せがあればよい。
(A,B)=(真(true)、偽(false))の組合せ、条件“B”を“真(true)”とする(A,B)=(偽(false)、真(true))の組合せが、網羅規則2の関係を満たすこととなる
。なお、各条件の4通りの真偽値の組合せの中で、(A,B)=(真(true)、真(true)
)との組合せは、論理和の判定結果を“真(true)”とする他の2通りの組合せで真偽値のテストが網羅されるため、余剰な組合せとなる。
、“B”の真偽値の組合せとして(A,B)=(真(true)、偽(false))、(偽(false)、真(true))、(偽(false)、偽(false))の3通りの組合せがMC/DCのテスト網羅度を満たす組合せとして抽出される。
位の処理プロセスであり、条件“A”、“B”の論理和(A or B)と条件(C)との論理積
が上位の処理プロセスとなる。
、真(true))の2通りとなる。また、論理和の条件(A or B)を“偽(false)”とす
る条件“A”、“B”の真偽値の組合せは、図2A(2)より、(A,B)=(偽(false)、偽(false))の1通りとなる。
して、(A,B,C)=(真(true)、偽(false)、偽(false))、(偽(false)、真(true)、偽(false))の2通りの真偽値の組合せが生成される。
組合せを適用することで、(A,B,C)=(偽(false)、偽(false)、真(true))の1
通りの真偽値の組合せが生成される。判定式の各条件を結合する論理演算子の論理種別に応じて、図2A(1)、(2)に例示の論理積、論理和による基本ルールとしての真偽値を、各条件に対して階層的に適用することにより、冗長性を排除した5通りの真偽値の組合せを得ることができる。
し、条件数が3個の場合では、最小限となる各条件の真偽値の組合せは4通りであるため、未だ1個の余剰な真偽値の組合せ存在することとなる。次に、論理積、論理和による基本ルールを適用した場合に残された余剰な真偽値の組合せを排除可能な、MC/DCのテスト網羅度の網羅規則4を考慮した、各条件に対する真偽値の組合せルールを説明する。
図2B(1)、(2)に、論理積(and)、論理和(or)についてのMC/DCのテス
ト網羅度を満たす3通りの真偽値関係の説明図を例示する。図2B(1)は、論理積についての真偽値関係の説明図であり、図2B(2)は論理和についての真偽値関係の説明図である。
の組合せが存在する。ここで、判定結果に独立に影響を及ぼす各条件の真偽値の組合せとは、各条件についての真偽値を反転させた場合に、判定結果としての真偽値が変更される各条件の真偽値の組合せをいう。
ドに示すように、条件“A”が“真(true)”、条件“B”が“偽(false)”の真偽値の
組み合わせでは、判定結果(A and B)は“偽(false)”となる。ID=1のレコードの真偽値の組合せにおいて、例えば、条件“A”を“真(true)”→“偽(false)”に変更した場合、判定結果は“偽(false)”となり、変更の前後では真偽値は変化しない。
=1のレコードの真偽値の組合せでは、条件“B”の真偽値は、判定結果の真偽値に独立
に影響を及ぼすということができる。
”に変更した場合には、判定結果(A and B)の真偽値が“真(true)”→“偽(false)”に変更されるからである。同様に、例えば、条件“B”を“真(true)”→“偽(false)”に変更した場合にも、判定結果(A and 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)”に変更されるからである。
せが存在する。従って、例えば、基本ルールの階層的(再帰的)な各条件の真偽値の組合せに対し、以下に定義する組合せルール1、2を適用することにより、網羅規則1−4を満たす各条件の真偽値関係を得ることが可能となる。
・組合せルール1:判定結果としての真偽値に独立に影響しない(対象となる条件の真偽値を反転しても判定結果が変わらない)場合には、判定結果の真偽値が共通する条件の組合せから1つの組合せを抽出し、適用する。
・組合せルール2:判定結果としての真偽値に独立に影響する(対象となる条件の真偽値を反転すると判定結果が変わる)場合には、判定結果の真偽値が共通する条件の組合せを全て抽出し、適用する。
和(or)の真偽値表に、予め対応付けておくことができる。例えば、図2B(1)、(2)の例では、右上がり斜線でハッチングされた領域の真偽値に対し、組合せルール2が適用されることを対応付けておけばよい。また、図2B(1)、(2)の例において、組合せルール2が適用される領域以外の真偽値に対しては、例えば、組合せルール1が適用されることを対応付けるとしてもよい。
本ルールの階層的(再帰的)な適用についての説明図を例示する。なお、図2C(1)、(2)における、判定式は“(A or B) and C”とする。
、“C”についての、MC/DCのテスト網羅度を満たす3通りの真偽値の組合せが生成
される。
(true))の3通りの真偽値の組合せが生成される。そして、3通りの真偽値の各組合せについて、条件“(A or B)”に対し、図2A(2)に例示の論理和の真偽値の組合せを適用することで、基本ルールの階層的(再帰的)な真偽値の組合せを反映したテストケースが生成される。
し、条件(A or B)を“真(true)”とする場合では、論理和“A or B”が“真(true)”となる、図2A(2)に例示の条件“A”、“B”の組合せを適用すればよい。同様にして、条件“(A or B)”、“C”について生成された3通りの真偽値の組合せに対し、条
件(A or B)を“偽(false)”とする場合では、論理和“A or B”が“偽(false)”となる、図2A(2)に例示の条件“A”、“B”の組合せを適用すればよい。
組合せに対し、論理和で結合された条件“A”、“B”の真偽値の組合せを適用することで、基本ルールの階層的(再帰的)な真偽値の組合せに基づくテストケースが生成できる。
B)”の真偽値である“真(true)”は、図2B(1)で説明したように、論理積の判定結果の真偽値に独立に影響しない。従って、条件“(A or B)”について、論理和の基本ルールを階層的(再帰的)適用する際には、組合せルール1を採用すればよい。つまり、図2A(2)に例示の、ID=1、或いは、ID=2のどちらか一方の、論理和“A or B”の真偽値が“真(true)”となる、条件“A”、“B”についての真偽値の組合せを適用すればよい。
積の判定結果の真偽値に独立に影響する。このため、条件“(A or B)”について、論理和の基本ルールを階層的(再帰的)に適用する際には、組合せルール2を採用すればよい。つまり、図2A(2)に例示のID=3の、論理和“A or B”の真偽値が“偽(false
)”となる、条件“A”、“B”についての真偽値の組合せを全て適用すればよい。
件“A”、“B”の真偽値の組合せはID=3に例示の1通りである。従って、図2C(1)のID=2のレコードの、条件“(A or B)”の“偽(false)”に対する、論理和の
基本ルールの階層的(再帰的)な適用では、図2A(2)のID=3に例示の1通りの条件“A”、“B”についての真偽値の組合せが採用される。
(A or B)”の真偽値である“真(true)”は、図2B(1)で説明したように、論理積の判定結果の真偽値に独立に影響する。このため、ID=3のレコードの条件“(A or B)”に対し、論理和の基本ルールを階層的(再帰的)に適用する際には、組合せルール2を採用すればよい。例えば、図2A(2)に例示のID=1、2の、論理和“A or B”の真偽値が“真(true)”となる、条件“A”、“B”についての真偽値の組合せを全て適用すればよい。
2に例示の(偽(false)、真(true))の2通りである。従って、図2C(1)のID
=3のレコードの、条件“(A or B)”の“真(true)”に対する、論理和の基本ルールの階層的(再帰的)な適用では、図2A(2)のID=1、2に例示の2通りの条件“A
”、“B”についての真偽値の組合せが採用される。
を有する。
)”とする条件“A”、“B”の1通りの真偽値の組合せである、(A,B)=(偽(false)、偽(false))が格納されている。
を“真(true)”とする条件“A”、“B”の2通りの真偽値の組合せの内、(A,B)=(
真(true)、偽(false))が格納されている。また、図2C(2)のID=3_2のレコードには、条件“(A or B)”の真偽値を“真(true)”とする条件“A”、“B”の2通りの真偽値の組合せの内、(A,B)=(偽(false)、真(true))が格納されている。
偽(false))、(偽(false)、真(true))の2通りである。ここで、図2C(1)に例示のように、論理和(A or B)を条件とする論理積の基本ルールでは、論理和(A or B
)の真偽値を組合せる相手側の条件の真偽値が“偽(false)”である場合には、論理和
(A or B)の真偽値は判定結果の真偽値に独立に影響しない。このため、論理和(A or B)の真偽値を“真(true)”とする条件“A”、“B”の真偽値の組合せに対し、組合せルール1が適用されることとなる。
(偽(false)、真(true))の真偽値の組合せを排除することが可能となる。なお、条
件“A”、“B”の真偽値の組合せとして、(A,B)=(偽(false)、真(true))が抽出された場合には、(A,B)=(真(true),偽(false))が余剰な真偽値の組合せとして排除されることとなる。
(x>0)”とする。判定式“((x>10) or (y==0)) and (x>0)”では、条件“(x>10)”、“(y==0)”についての論理和が下位の処理プロセスであり、条件“(x>10)”、“(y==0)”の論理和“((x>10) or (y==0))”と条件“(x>0)”との論理積が上位の処理プロセスとなる。
通りの真偽値の組合せが求められる。
偽値の組合せにおいて、論理和“((x>10) or (y==0))”を“真(true)”とする条件“(x>10)”、“(y==0)”の真偽値の組合せには組合せルール1が適用される。従って、例えば、図2B(2)に例示の基本ルールとなる論理和の真偽値の組合せから、ID=1、或いは、ID=2のどちらか一方の組合せを、論理和“((x>10) or (y==0))” を“真(true
)”とする条件“(x>10)”、“(y==0)”の真偽値の組合せに適用すればよい。
and not(y==0)”で表すことができる。
した条件“(x>10)”、“(y==0)”、“(x>0)”の組合せは、以下の結合式(A1)として
表すことができる。
・結合式:(x>10) and not(y==0) and not(x>0) …結合式(A1)
結合式(A1)では、条件“(x>10)”、“not(x>0)”を同時に含むため、条件“(x>10)”、“not(x>0)”に共通する変数xについて矛盾が生じることとなる。このため、MC/DCのテスト網羅度を満たすテストケースとして生成された真偽値の組合せを反映した結合式(A1)を充足する、テストセット(各条件を充足する変数値の組合せ)を求めることが不能となってしまう。
、条件“(y==0)”の真偽値は“真(true)”となる。従って、真偽値が“偽(false)”
となる条件に、論理否定を示す“not”を付加し、図2B(2)のID=2の論理和の条
件“(x>10)”、“(y==0)”の組合せを表すと、結合式“not(x>10) and (y==0)”となる。
下の結合式(A2)として表すことができる。
・結合式:not(x>10) and (y==0) and not(x>0) …結合式(A2)
結合式(A2)では、条件“not(x>10)”、“not(x>0)”を同時に含むこととなるが、
条件“not(x>10)”、“not(x>0)”に共通する変数xについて矛盾は生じない。このため
、MC/DCのテスト網羅度を満たすテストケースとして生成された真偽値の組合せを反映した結合式(A2)を充足する、テストセットを求めることが可能となる。
実施例1では、情報処理装置は、組み合わせルール1において、判定結果としての真偽値に独立に影響しない(対象となる条件の真偽値を反転しても判定結果が変わらない)場合には、判定結果の真偽値が共通する条件の組合せから1つの組合せを抽出し、適用した。今、例えば、真偽値に独立に影響しない、判定結果の真偽値が共通する条件の組合せが、組み合わせAと、組み合わせBであるとする。
となる。そして、実施例2での情報処理装置の処理は、最上位の処理プロセスの論理演算子に基づく各条件の真偽値の組合せに基づいて、選択演算子で結合された状態で抽出された下位の処理プロセスでの各条件の真偽値の組合せについての、各変数に対する充足可能性を判定する。選択演算子を用いること以外の実施例2の処理は実施例1と同様である。
(y==0)) and (x>0)”では、条件“(x>10)”、“(y==0)”についての論理和が下位の処理プロセスであり、条件“(x>10)”、“(y==0)”の論理和“((x>10) or (y==0))”と条件“(x>0)”との論理積が上位の処理プロセスである。
(true)”とする条件“(x>10)”、“(y==0)”の真偽値の組合せには組合せルール1が適用される。
・部分式:((x>10) and not(y==0)) || ((not(x>10) and (y==0)) …部分式(A3)
部分式(A3)では、論理和“((x>10) or (y==0))”を“真(true)”とする条件“(x>10)”、“(y==0)”の真偽値の全ての組合せが、“((x>10) and not(y==0))か((not(x>10) and (y==0))”といった選択関係で表すことができる。
く結合式(A4)を生成する。なお、図4のブロックP5に示すID=1のレコードでは、条件“(x>0)”に対する真偽値は“偽(false)”であるため、真偽値を反映させた条件は“not(X>0)”となる。
・結合式:(((x>10) and not(y==0)) || ((not(x>10) and (y==0))) and not(X>0) …結合式(A4)
結合式(A4)には、図4のブロックP5に示すID=1のレコードの、論理和“((x>10) or (y==0))”を“真(true)”、条件“(X>0)”を“偽(false)”とする真偽値を反
映した条件“(x>10)”、“(y==0)”、“(X>0)”の組合せが含まれる。
・部分式:((x>10) and not(y==0)) and not(X>0) …部分式(A5)
・部分式:((not(x>10) and (y==0)) and not(X>0) …部分式(A6)
部分式(A5)には、図2B(2)のID=1に例示の真偽値を反映した条件“(x>10)”、“(y==0)”、“(X>0)”の組合せが含まれる。また、部分式(A6)では、図2B(
2)のID=2に例示の真偽値を反映した条件“(x>10)”、“(y==0)”、“(X>0)”の組
合せが含まれる。
図5に、実施例2(以下、本実施形態と称す)の情報処理装置のハードウェアの構成を例示する。図5に例示の情報処理装置10は、例えば、PC(Personal Computer)、サ
ーバ等のコンピュータである。情報処理装置10は、接続バスB1によって相互に接続されたCPU(Central Processing Unit)11、主記憶部12、補助記憶部13、入力部
14、出力部15、通信部16を有する。主記憶部12及び補助記憶部13は、情報処理装置10が読み取り可能な記録媒体である。
12の作業領域に実行可能に展開し、プログラムの実行を通じて周辺機器の制御を行う。これにより、情報処理装置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)等の公衆ネットワーク、通信基地局を含む携帯電話網等の無線ネットワーク等が含まれる。
に、テストケース条件式DB204、テストケースDB205を備える。
図6に、本実施形態の情報処理装置10における、処理ブロックの説明図を例示する。図6に例示の説明図において、情報処理装置10は、判定式解析部101、真偽値ルール適用部102、テストケース生成部103、充足可能性判定部104の各処理手段を有する。判定式解析部101には、2分木変換部101aの処理手段が含まれる。テストケース生成部103には、選択分析部103aの処理手段が含まれる。
判定式解析部101の二分木変換部101aは、受け付けた判定式C1を解析し、判定式B1に含まれる論理演算子、論理演算子で結合される各条件式、論理演算子による各条件式についての処理プロセスの階層関係を特定する。そして、二分木変換部101aは、特定した論理演算子、各条件式、処理プロセスの階層関係に基づいて、受け付けた判定式C1の判定に係る各条件の階層的な論理演算関係を木構造に変換する。
等の括弧記号の配列やスペース等により区切られた領域範囲から“or”、“and”等の論
理演算子の文字列を特定する。
配置されている。そして、論理演算子“or”による処理プロセスと条件式“y>0”とは、
木構造の最上位の論理演算子“and”により結び付けられている。
子“and”、及び、条件式“y==1”、“z>1”を含む処理プロセスの論理演算子“and”に
対応付けられている。また、最上位の論理演算子“and”には、論理演算子“or”,条件
式“y>0”に対応付けられている。
真偽値ルール適用部102は、例えば、判定式解析部101により生成された判定式の木構造(判定式二分木)に基づいて、組合せルールが適用された論理積、論理和の真偽値を反映した各条件式(リーフ)の組合せを生成する。なお、真偽値ルール適用部102は、例えば、組合せルール1が適用される論理積、論理和の真偽値の組合せでは、上位の処理プロセスにおける真偽値を共通とする全ての各条件式(リーフ)の真偽値の組合せを、選択演算子“||”で結合して抽出する。
偽値関係が反映された“条件式”は、“リーフ”、“¬リーフ”の2通りとなる。
ての条件式マップを生成する。そして、真偽値ルール適用部102は、例えば、生成した各条件式マップを組合せ、{(リーフ,true),(¬(リーフ),false)}といったリ
ーフ毎の“条件式マップ集合”を生成する。
図7Bに、判定式C1より生成された木構造についての条件式マップ、条件式マップ集合の生成処理の説明図を例示する。なお、実施例2では、各リーフについての条件式マップ、条件式マップ集合の生成は、例えば、木構造の左側に配置されたノードの処理プロセスから行われるとして説明を行う。同一の階層にノード(論理演算子)が複数個配置された場合では、例えば、左側に配置された処理プロセスを優先とすることができるためである。ただし、本情報処理装置の処理が、左側に配置された処理プロセスを優先とするものに限定される訳ではなく、右側に配置された処理プロセスを優先ものであってもよい。
。
偽値との組合せの条件式マップ((x>0),true)を生成し、“偽(false)の真偽値との組合せの条件式マップ(¬(x>0),false)を生成する。そして、真偽値ルール適用部102は、例えば、リーフ“x>0”について生成した各条件式マップを組合せ、ブロックD1に
示す条件式マップ集合{((x>0),true),(¬(x>0),false)}を生成する。
”の真偽値との組合せの条件式マップ((z==5),true)を生成し、“偽(false)の真偽
値との組合せの条件式マップ(¬(z==5),false)を生成する。真偽値ルール適用部10
2は、例えば、リーフ“z==5”について生成した各条件式マップを組合せ、ブロックD1に示す条件式マップ集合{((z==5),true),(¬(z==5),false)}を生成する。
た条件式マップ集合を、例えば、主記憶部12の所定の領域に一時的に記憶する。
した条件式マップ集合を生成する。
条件式マップ集合の生成処理の説明図を例示する。なお、図7Cの説明図において、リーフ“x>0”について生成された条件式マップ集合は、ブロックD1に示すように、“左辺
の条件式マップ集合”とも称し、リーフ“z==5”について生成された条件式マップ集合は、“右辺の条件式マップ集合”とも称する。また、生成処理の対象となるノード及びリーフを、破線で囲まれた矩形領域に示す。
いる。ここで、例えば、真偽値情報“(true,0)”、“(false,1)”等において、
真偽値“true”、“false”と組合せられた“0”、“1”といった数値は、適用される
組合せルールを指定する識別子である。
を結び付けるノードは論理積“and”である。真偽値ルール適用部102は、例えば、論
理積ルールTb1を真偽値ルールDB201から取得し、取得した論理積ルールTb1を主記憶部12の所定の領域に一時的に記憶する。
えば、真偽値表の「全体」カラムに格納された真偽値と、「左辺」カラム、「右辺」カラムの真偽値情報を反映させた条件式の結合式とを組合せ、レコード毎の条件式マップを生成する。ノードに対応した真偽値表に基づいて生成されたノード毎の生成された条件式マップ集合は、例えば、主記憶部12の所定の領域に一時的に記憶される。
図7Cの論理積ルールTb1において、ID=1のレコードの「左辺」カラムには真偽値情報(true,0)が格納され、「右辺」カラムには真偽値情報(false,1)が格納さ
れている。「左辺」カラムは、例えば、ノードによって結び付けられるリーフ“x>0”に
対応し、「右辺」カラムは、ノードによって結び付けられるリーフ“z==5”に対応する。また、「左辺」カラムに対応するリーフの真偽値には組合せルール1が適用され、「右辺」カラムに対応するリーフの真偽値には組合せルール2が適用される。
ップ集合は、{((z==5),true),(¬(z==5),false)}であり、真偽値“false”と組合せられた条件式は単一の“¬(z==5)”である。
集合から、真偽値“true”となる条件式を選択演算子を用いて結合し、抽出する。
“(x>0)”を抽出する。
る。条件式マップは、例えば、リーフ“x>0”の条件式マップ集合から抽出された条件式(x>0)、及び、リーフ“z==5”の条件式マップ集合から抽出された条件式(¬(z==5))に基づいて生成される。
、ID=1のレコードの真偽値に対応する条件式マップ“((x>0) ∧ ¬(z==5),false)”を生成する。生成された条件式マップ“((x>0) ∧ ¬(z==5),false)”は、例えば、論理積ルールTb1のIDに対応付けられて、主記憶部12の所定の領域に一時的に記憶される。
図7Cの論理積ルールTb1において、ID=2のレコードについてもID=1と同様にして、条件式マップが生成される。例えば、論理積ルールTb1の、ID=2のレコードの「左辺」カラムには真偽値情報(false,1)が格納され、「右辺」カラムには真偽
値情報(true,0)が格納されている。「左辺」カラムに対応するリーフの真偽値には組合せルール2が適用され、「右辺」カラムに対応するリーフの真偽値には組合せルール1が適用される。
ら、真偽値“false”となる条件式を全て抽出する。リーフ“x>0”の条件式マップ集合は、{((x>0),true),(¬(x>0),false)}であり、真偽値“false”と組合せられた条件式は単一の“¬(x>0)”である。
“¬(x>0)”を抽出する。
フ“(z==5)”についての真偽値“true”となる条件式は複数に存在しないため、選択演算子は使用されずに、真偽値“true”と組合せられた条件式“(z==5)”が抽出されることとなる。
マップは、例えば、リーフ“x>0”の条件式マップ集合から抽出された条件式(¬(x>0))、及び、リーフ“z==5”の条件式マップ集合から抽出された条件式(z==5)に基づいて生成される。
、ID=2のレコードの真偽値に対応する条件式マップ“(¬(x>0) ∧ (z==5),false)”を生成する。生成された条件式マップ“(¬(x>0) ∧ (z==5),false)”は、例えば、論理積ルールTb1のIDに対応付けられて、主記憶部12の所定の領域に一時的に記憶される。
図7Cの論理積ルールTb1のID=3のレコードについてもID=1と同様にして、
条件式マップが生成される。例えば、論理積ルールTb1のID=3のレコードの「左辺」カラムには真偽値情報(true,1)が格納され、「右辺」カラムには真偽値情報(true,1)が格納されている。「左辺」カラム、「右辺」カラムのそれぞれに対応するリーフの真偽値には組合せルール2が適用される。
ら、真偽値“true”となる条件式を全て抽出する。リーフ“x>0”の条件式マップ集合は
、{((x>0),true),(¬(x>0),false)}であり、真偽値“true”と組合せられた条
件式は単一の“(x>0)”である。
“(x>0)”を抽出する。
られた条件式は単一の“(z==5)”である。
。生成された条件式マップ“((x>0) ∧ (z==5),true)”は、例えば、論理積ルールTb
1のIDに対応付けられて、主記憶部12の所定の領域に一時的に記憶される。
図7Cの論理積ルールTb1について、レコード毎に生成した条件式マップに基づいて、真偽値ルール適用部102は、リーフ“x>0”、“z==5”に係る処理プロセスについて
の真偽値を反映した条件式マップ集合を生成する。真偽値ルール適用部102は、例えば、ブロックD2に示す各条件式マップに基づいて、ブロックD3に示す条件式マップ集合を生成する。
==5),false),((x>0) ∧(z==5),true)}を生成する。論理積ルールTb1のレコード毎に生成した条件式マップに基づいて生成された、リーフ“x>0”、“z==5”に係る処理プ
ロセスについての真偽値を反映した条件式マップ集合は、例えば、条件式マップ集合DB203に格納される。
次に、第2の真偽値ルール適用処理では、真偽値ルール適用部102は、例えば、木構造の同一の階層の右側に配置されたノード(論理演算子)処理についての、条件式マップ、及び、条件式マップ集合を生成する。図7Dに、第2の真偽値ルール適用処理に係る、判定式C1の木構造についての条件式マップ、条件式マップ集合の生成処理の説明図を例示する。
プロセスに係る各リーフは、破線で囲まれた矩形領域に示すリーフ“y==1”、“z>1”で
ある。
処理と同様にして、右側のノードの処理プロセスに係るリーフ“y==1”、“z>1”につい
ての条件式マップ、条件式マップ集合を生成する。
組合せの条件式マップ(¬(y==1),false)を生成する。そして、真偽値ルール適用部1
02は、例えば、リーフ“y==1”について生成した各条件式マップを組合せ、ブロックD4に示す条件式マップ集合{((y==1),true),(¬(y==1),false)}を生成する。
”の真偽値との組合せの条件式マップ((z>1),true)を生成し、“偽(false)の真偽値との組合せの条件式マップ(¬(z>1),false)を生成する。真偽値ルール適用部102は、例えば、リーフ“z>1”について生成した各条件式マップを組合せ、ブロックD4に示
す条件式マップ集合{((z>1),true),(¬(z>1),false)}を生成する。
た条件式マップ集合を、例えば、主記憶部12の所定の領域に一時的に記憶する。
した条件式マップ集合を生成する。
条件式マップ集合の生成処理の説明図を例示する。なお、図7Eの説明図において、リーフ“y==1”について生成された条件式マップ集合は、ブロックD4に示すように、“左辺の条件式マップ集合”とも称し、リーフ“z>1”について生成された条件式マップ集合は
、“右辺の条件式マップ集合”とも称する。
を結び付けるノードは論理積“and”である。真偽値ルール適用部102は、例えば、論
理積ルールTb1を真偽値ルールDB201から取得し、取得した論理積ルールTb1を主記憶部12の所定の領域に一時的に記憶する。
様の処理が行われる。すなわち、論理積テーブルTb1に沿ってレコード毎の条件式マップを生成し、生成したレコード毎の条件式マップを組合せ、ノード毎の条件式マップ集合を生成する。
図7Eの論理積ルールTb1において、ID=1のレコードの「左辺」カラムには真偽値情報(true,0)が格納され、「右辺」カラムには真偽値情報(false,1)が格納さ
れている。このため、「左辺」カラムに対応するリーフ“y==1”の真偽値には組合せルール1が適用され、「右辺」カラムに対応するリーフ“z>1”の真偽値には組合せルール2
が適用されることとなる。
ら、真偽値“false”となる条件式を全て抽出する。ここで、リーフ“z>1”の条件式マップ集合は、{((z>1),true),(¬(z>1),false)}であり、真偽値“false”と組合せられた条件式は単一の“¬(z>1)”である。
“¬(z>1)”を抽出する。
であり、真偽値“true”と組合せられた条件式は複数に存在せずに単一の“(y==1)”である。このため、選択演算子は使用されずに、真偽値“true”と組合せられた条件式“(y==
1)”が抽出されることとなる。
る。条件式マップは、例えば、リーフ“y==1”の条件式マップ集合から抽出された条件式(y==1)、及び、リーフ“z>1”の条件式マップ集合から抽出された条件式(¬(z>1))に基づいて生成される。
∧ ¬(z>1))”を生成する。そして、真偽値ルール適用部102は、例えば、論理積ルールTb1のID=1のレコードの「全体」カラムに格納された真偽値“false”と組合せ
、ID=1のレコードの真偽値に対応する条件式マップ“((y==1) ∧ ¬(z>1),false)”を生成する。生成された条件式マップ“((y==1) ∧ ¬(z>1),false)”は、例えば、論理積ルールTb1のIDに対応付けられて、主記憶部12の所定の領域に一時的に記憶される。
図7Eの論理積ルールTb1において、ID=2のレコードの「左辺」カラムには真偽値情報(false,1)が格納され、「右辺」カラムには真偽値情報(true,0)が格納さ
れている。このため、「左辺」カラムに対応するリーフ“y==1”の真偽値には組合せルール2が適用され、「右辺」カラムに対応するリーフ“z>1”の真偽値には組合せルール1
が適用されることとなる。
は、{((y==1),true),(¬(y==1),false)}であり、真偽値“false”と組合せられた条件式は単一の“¬(y==1)”である。
集合から、真偽値“true”となる条件式を選択演算子を用いて結合し、抽出する。リーフ“z>1”の条件式マップ集合は、{((z>1),true),(¬(z>1),false)}であり、真偽値“true”と組合せられた条件式は複数に存在せずに単一の“(z>1)”である。このため
、選択演算子は使用されずに、真偽値“true”と組合せられた条件式“(z>1)”が抽出さ
れることとなる。
“(z>1)”を抽出する。
る。条件式マップは、例えば、リーフ“y==1”の条件式マップ集合から抽出された条件式(¬(y==1))、及び、リーフ“z>1”の条件式マップ集合から抽出された条件式(z>1)に基づいて生成される。
、ID=2のレコードの真偽値に対応する条件式マップ“(¬(y==1) ∧ (z>1),false)”を生成する。生成された条件式マップ“(¬(y==1) ∧ (z>1),false)”は、例えば、論理積ルールTb1のIDに対応付けられて、主記憶部12の所定の領域に一時的に記憶される。
図7Eの論理積ルールTb1において、ID=3のレコードの「左辺」カラムには真偽値情報(true,1)が格納され、「右辺」カラムには真偽値情報(true,1)が格納されている。このため、「左辺」カラムに対応するリーフ“y==1”の真偽値、及び、「右辺」カラムに対応するリーフ“z>1”の真偽値には組合せルール2が適用されることとなる。
条件式は単一の“(y==1)”である。
集合から、真偽値“true”となる条件式を全て抽出する。リーフ“z>1”の条件式マップ
集合は、{((z>1),true),(¬(z>1),false)}であり、真偽値“true”と組合せら
れた条件式は単一の“(z>1)”である。
“(z>1)”を抽出する。
1のID=3のレコードの「全体」カラムに格納された真偽値“true”と組合せ、ID=3のレコードの真偽値に対応する条件式マップ“((y==1) ∧ (z>1),true)”を生成する
。生成された条件式マップ“((y==1) ∧ (z>1),true)”は、例えば、論理積ルールTb
1のIDに対応付けられて、主記憶部12の所定の領域に一時的に記憶される。
図7Eの論理積ルールTb1の、レコード毎に生成した条件式マップに基づいて、真偽値ルール適用部102は、リーフ“y==1”、“z>1”に係る処理プロセスについての真偽
値を反映した条件式マップ集合を生成する。真偽値ルール適用部102は、例えば、ブロックD5に示す各条件式マップに基づいて、ブロックD6に示す条件式マップ集合を生成する。
ロセスについての真偽値を反映した条件式マップ集合は、例えば、条件式マップ集合DB203に格納される。
次に、第3の真偽値ルール適用処理では、真偽値ルール適用部102は、例えば、木構造において、下位の処理プロセスの各ノードを結び付けるノード(論理演算子)処理についての、条件式マップ、及び、条件式マップ集合を生成する。
では、例えば、同一階層に配置された下位ノード毎に生成された条件式マップ集合に基づいて、各下位ノードを結び付ける上位ノード(論理和“or”)処理についての、条件式マップ、及び、条件式マップ集合が生成される。
ードで生成された条件式マップ集合は、{((x>0) ∧ ¬(z==5),false),(¬(x>0) ∧ (z==5),false),((x>0) ∧(z==5),true)}である。また、リーフ“y==1”、“z>1”を結
び付ける右側の下位ノードで生成された条件式マップ集合は、{((y==1) ∧ ¬(z>1),false),(¬(y==1) ∧ (z>1),false),((y==1) ∧(z>1),true)}である。
”を結び付ける左側の下位ノードで生成された条件式マップ集合は、“左辺の条件式マップ集合”とも称する。同様にして、ブロックD7に示すように、リーフ“y==1”、“z>1
”を結び付ける右側の下位ノードで生成された条件式マップ集合は、“右辺の条件式マップ集合”とも称する。
論理和ルールTb2において、「No」カラムに「1」が格納されたレコードを“ID=1のレコード”とも称する。「No」カラムに「2」、「3」が格納されたレコードについても、同様に、“ID=2のレコード”、“ID=3のレコード”とも称する。
る。真偽値ルール適用部102は、例えば、論理和ルールTb2を真偽値ルールDB201から取得し、取得した論理和ルールTb2を主記憶部12の所定の領域に一時的に記憶する。
図7Fの論理和ルールTb2において、ID=1のレコードの「左辺」カラムには真偽値情報(true,1)が格納され、「右辺」カラムには真偽値情報(false,0)が格納さ
れている。ここで、「左辺」カラムは、例えば、処理対象となる上位ノードで結び付けられる左側の下位ノードの条件式マップ集合に対応し、「左辺」カラムは、処理対象となる上位ノードで結び付けられる右側の下位ノードの条件式マップ集合に対応する。
∧(z==5),true)}であり、真偽値“true”と組合せられた条件式は、単一の“(x>0) ∧ (z==5)”である。
“((y==1) ∧ ¬(z>1) ||¬(y==1) ∧ (z>1))”が抽出されることとなる。
式“((y==1) ∧ ¬(z>1) ||¬(y==1) ∧ (z>1))”に基づいて生成される。
¬(z>1) ||¬(y==1) ∧ (z>1))”を生成する。
図7Fの論理和ルールTb2において、ID=2のレコードの「左辺」カラムには真偽値情報(false,0)が格納され、「右辺」カラムには真偽値情報(true,1)が格納さ
れている。このため、「左辺」カラムに対応する左側の下位ノードの条件式マップ集合の真偽値には組合せルール1が適用され、「右辺」カラムに対応する右側の下位ノードの条件式マップ集合の真偽値には組合せルール2が適用されることとなる。
¬(x>0) ∧ (z==5),false),((x>0) ∧(z==5),true)}である。真偽値“false”と組合せられた条件式は複数に存在し、“(x>0) ∧ ¬(z==5)”、“¬(x>0) ∧ (z==5)”の2通りである。このため、真偽値ルール適用部102では、例えば、真偽値“false”と組合
せられた複数の条件式が選択演算子“||”を用いて結合され、結合された条件式“((x>0)
∧ ¬(z==5)||¬(x>0) ∧ (z==5))”が抽出されることとなる。
図7Fの論理和ルールTb2において、ID=3のレコードの「左辺」カラムには真偽値情報(false,1)が格納され、「右辺」カラムには真偽値情報(false,1)が格納されている。このため、「左辺」カラムに対応する左側の下位ノードの条件式マップ集合の真偽値、及び、「右辺」カラムに対応する右側の下位ノードの条件式マップ集合の真偽値には組合せルール2が適用されることとなる。
¬(x>0) ∧ (z==5),false),((x>0) ∧(z==5),true)}である。真偽値“false”と組合せられた条件式は、{(x>0) ∧ ¬(z==5),¬(x>0) ∧ (z==5)}の2通りである。このため、真偽値ルール適用部102では、例えば、真偽値“false”と組合せられた2通りの
条件式が全て抽出されることとなる。なお、真偽値“false”と組合せられた2通りの条
件式は、例えば、記号“{}”を用いた集合形式で抽出される。
左辺」カラムに対応する条件式として、左側の下位ノードの条件式マップ集合から、条件式の集合形式で表された“{(x>0) ∧ ¬(z==5),¬(x>0) ∧ (z==5)}”を抽出する。
る。このため、真偽値ルール適用部102では、例えば、右側の下位ノードにおいても、真偽値“false”と組合せられた2通りの条件式が全て抽出されることとなる。真偽値“false”と組合せられた2通りの条件式は、例えば、記号“{}”を用いた集合形式で抽出される。
偽値に対応する条件式マップを生成する。なお、論理和ルールTb2のID=3では、左側の下位ノードについて2通りの条件式が抽出され、右側の下位ノードについても2通りの条件式が抽出されている。このため、論理和ルールTb2のID=3では、各下位ノードで抽出された条件式の組合せである、条件式2×条件式2=4通りの条件式の組合せが生成される。真偽値ルール適用部102は、例えば、各下位ノードで抽出された条件式の組合せから生成された4通りの条件式のそれぞれについて、論理和ルールTb2のID=3のレコードの「全体」カラムに格納された真偽値“false”を組合せ、条件式マップを
生成する。
れぞれに組合せ、4通りの条件式を生成する。生成される条件式は、“((x>0) ∧ ¬(z==5)) ∧ ((y==1) ∧ ¬(z>1))”、“((x>0) ∧ ¬(z==5)) ∧ (¬(y==1) ∧ (z>1))”、“(¬(x>0) ∧ (z==5)) ∧ ((y==1) ∧ ¬(z>1))”、“(¬(x>0) ∧ (z==5)) ∧ (¬(y==1)
∧ (z>1))”の4通りである。
件式マップは、例えば、記号“{}”を用いた集合形式で、以下に示すように表される。
真偽値ルール適用部102は、例えば、論理和ルールTb2のID=3のレコードの真偽値を反映して生成された条件式マップを、例えば、論理和ルールTb2のIDに対応付けて、主記憶部12の所定の領域に一時的に記憶する。
図7Fの論理和ルールTb2の、レコード毎に生成した条件式マップに基づいて、真偽
値ルール適用部102は、同一階層に配置された複数の下位ノードを結び付ける上位ノードの処理プロセスに対する、真偽値を反映した条件式マップ集合を生成する。真偽値ルール適用部102は、例えば、ブロックD8に示す各条件式マップに基づいて、ブロックD9に示す条件式マップ集合を生成する。
,true)、(((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧ (y==1) ∧(z>1),true)、((x>0) ∧ ¬(z==5) ∧ (y==1) ∧ ¬(z>1),false)、((x>0) ∧ ¬(z==5) ∧ ¬(y==1) ∧ (z>1),false)、(¬(x>0) ∧ (z==5) ∧(y==1) ∧ ¬(z>1),false)、(¬(x>0) ∧ (z==5) ∧ ¬(y==1) ∧ (z>1),false)}
第4の真偽値ルール適用処理では、真偽値ルール適用部102は、例えば、木構造において、最上位の処理プロセスのノード(論理演算子)処理についての条件式マップ、条件式マップ集合を生成する。真偽値ルール適用処理部102は、例えば、第3の真偽値ルール適用処理の処理対象となったノードと同一階層に配置されたリーフとを結び付ける最上位のノード(論理積“and”)の処理プロセスについての条件式マップ、条件式マップ集
合を生成する。
部102は、例えば、判定式二分木DB202を参照し、図7Gに例示の木構造から、リーフ“y>0”を特定し、リーフ“y>0”についての条件式マップ、条件式マップ集合を生成する。
偽値との組合せの条件式マップ((y>0),true)を生成し、“偽(false)の真偽値との組合せの条件式マップ(¬(y>0),false)を生成する。そして、真偽値ルール適用部102は、例えば、リーフ“(y>0)”について生成した各条件式マップを組合せ、ブロックD10
に示す条件式マップ集合{((y>0),true),(¬(y>0),false)}を生成する。真偽値
ルール適用部102は、例えば、リーフ“y>0”について生成された条件式マップ集合{
((y>0),true),(¬(y>0),false)}を、主記憶部12の所定の領域に一時的に記憶
する。
のノードの処理プロセスについての真偽値を反映した条件式マップ集合を生成する。
10に示すように“右辺の条件式マップ集合”とも称する。
、((x>0) ∧ ¬(z==5) ∧ ¬(y==1) ∧ (z>1),false)、(¬(x>0) ∧ (z==5) ∧(y==1)
∧ ¬(z>1),false)、(¬(x>0) ∧ (z==5) ∧ ¬(y==1) ∧ (z>1),false)}
また、図7Hの説明図において、論理積ルールTb1は、図7C等に例示の、組合せルールが適用された論理積の真偽値表を表す。なお、以下の説明では、図7Fに例示の論理積ルールTb1において、「No」カラムに「1」が格納されたレコードを“ID=1のレコード”とも称する。「No」カラムに「2」、「3」が格納されたレコードについても、同様に、“ID=2のレコード”、“ID=3のレコード”とも称する。
図7Hの論理積ルールTb1において、ID=1のレコードの「左辺」カラムには真偽値情報(true,0)が格納され、「右辺」カラムには真偽値情報(false,1)が格納さ
れている。このため、「左辺」カラムに対応する左側のノード(論理和“or”)の条件式マップ集合の真偽値には組合せルール1が適用され、「右辺」カラムに対応する右側のリーフ“y>0”の真偽値には組合せルール2が適用される。
次に、真偽値ルール適用部102は、例えば、論理積ルールTb1のID=1のレコードの「右辺」カラムに格納された真偽値情報に基づいて、右側のリーフ“y>0”の条件式
マップ集合から、真偽値“false”となる条件式を全て抽出する。ここで、リーフ“y>0”の条件式マップ集合は、{((y>0),true),(¬(y>0),false)}であり、真偽値“false”と組合せられた条件式は単一の“¬(y>0)”である。
“¬(y>0)”を抽出する。
る。条件式マップは、例えば、左側のノードの条件式マップ集合から抽出された条件式、及び、右側のリーフ“y>0”の条件式マップ集合から抽出された条件式(¬(y>0))に基づいて生成される。
条件式マップを生成する。
図7Hの論理積ルールTb1において、ID=2のレコードの「左辺」カラムには真偽値情報(false,1)が格納され、「右辺」カラムには真偽値情報(true,0)が格納さ
れている。このため、「左辺」カラムに対応する左側のノード(論理和“or”)の条件式マップ集合の真偽値には組合せルール2が適用され、「右辺」カラムに対応する右側のリーフ“y>0”の条件式マップ集合の真偽値には組合せルール1が適用される。
、4通りである。真偽値ルール適用部102は、例えば、左側のノードの条件式マップ集合から、真偽値“false”となる4通りの条件式を記号“{}”を用いた集合形式で全て
抽出する。左側のノードの条件式マップ集合から、記号“{}”を用いた集合形式で抽出される条件式は以下の通りである。
∧ ¬(z==5)) ∧ (¬(y==1) ∧ (z>1)),((¬(x>0) ∧ (z==5)) ∧ ((y==1) ∧ ¬(z>1)),((¬(x>0) ∧ (z==5)) ∧ (¬(y==1) ∧ (z>1))}
次に、真偽値ルール適用部102は、例えば、論理積ルールTb1のID=2のレコードの「右辺」カラムに格納された真偽値情報に基づいて、リーフ“y>0”の条件式マップ
集合から、真偽値“true”となる条件式を選択演算子を用いて結合し、抽出する。ここで、リーフ“y>0”の条件式マップ集合では、真偽値“true”と組合せられた条件式は複数
に存在しない。このため、選択演算子は使用されずに単一の条件式“(y>0)”が抽出され
ることとなる。
“(y>0)”を抽出する。
る。条件式マップは、例えば、左側のノードの条件式マップ集合から集合形式で抽出された条件式、及び、右側のリーフ“y>0”の条件式マップ集合から抽出された条件式(y>0)に基づいて生成される。
せ、ID=2の真偽値に対応する条件式マップを生成する。
¬(y==1) ∧ (z>1)) ∧ (y>0),false)}
図7Hの論理積ルールTb1において、ID=3のレコードの「左辺」カラムには真偽値情報(true,1)が格納され、「右辺」カラムには真偽値情報(true,1)が格納されている。このため、「左辺」カラムに対応する左側のノード(論理和“or”)の条件式マップ集合、及び、「右辺」カラムに対応する右側のリーフ“y>0”のマップ集合の真偽値
には、それぞれに組合せルール2が適用されることとなる。
、2通りである。真偽値ルール適用部102は、例えば、左側のノードの条件式マップ集合から、真偽値“true”となる2通りの条件式を記号“{}”を用いた集合形式で全て抽出する。左側のノードの条件式マップ集合から、記号“{}”を用いた集合形式で抽出される条件式は以下の通りである。
ID=3の左辺の条件式:{((x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1))),(((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1))}
集合から、真偽値“true”となる条件式を全て抽出する。ここで、リーフ“y>0”の条件
式マップ集合は、{((y>0),true),(¬(y>0),false)}であり、真偽値“true”と
組合せられた条件式は単一の“(y>0)”である。
“(y>0)”を抽出する。
ID=3の条件式マップ:{((x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1)) ∧ (y>0),true),(((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1)
∧ (y>0),true)}
図7Hの論理積ルールTb1の、レコード毎に生成した条件式マップに基づいて、同一階層の左側に配置されたノードと右側に配置されたリーフとを結び付ける最上位ノードの処理プロセスについての、真偽値を反映した条件式マップ集合が生成される。真偽値ルール適用部102は、例えば、図7HのブロックD11に示す条件式マップ集合を生成する。
マップ集合DB203に格納する。
図6に例示の説明図に戻り、テストケース生成部103は、例えば、真偽値ルール適用部102で生成された判定式C1についての条件式マップ集合に基づいて、MC/DCのテスト網羅度を満たすテストケースの条件式を生成する。テストケース生成部103で生成された、MC/DCのテスト網羅度を満たすテストケースの条件式は、例えば、テストケース条件式DB204に格納される。
テストケース生成部103は、例えば、条件式マップ集合DB203を参照し、処理対象の判定式に対応付けられた条件式マップ集合を取得する。取得された条件式マップ集合は、例えば、主記憶部12の所定の領域に一時的に記憶される。
・No=1の条件式:[(x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1))]||[((x>0) ∧ ¬(z==5)||¬(x>0) ∧ (z==5)) ∧(y==1) ∧ (z>1)] ∧ ¬(y>0)
・No=2の条件式:(x>0) ∧ ¬(z==5) ∧ (y==1) ∧ ¬(z>1) ∧ (y>0)
・No=3の条件式:(x>0) ∧ ¬(z==5) ∧ ¬(y==1) ∧(z>1) ∧ (y>0)
・No=4の条件式:¬(x>0) ∧ (z==5) ∧ (y==1) ∧ ¬(z>1) ∧ (y>0)
・No=5の条件式:¬(x>0) ∧ (z==5) ∧ ¬(y==1) ∧(z>1) ∧ (y>0)
・No=6の条件式:((x>0) ∧ (z==5) ∧ ((y==1) ∧ ¬(z>1)||¬(y==1) ∧(z>1)) ∧
(y>0)
・No=7の条件式:((x>0) ∧ ¬(z==5)||¬(x>0) ∧(z==5)) ∧ (y==1) ∧ (z>1) ∧ (y>0)
テストケース生成部103の選択分析部103aは、例えば、テストケース条件式DB204を参照し、処理対象となる判定式で生成されたテストケース条件式テーブルから、選択演算子が含まれる条件式を抽出する。抽出された条件式は、例えば、該条件式が格納されたテストケース条件式テーブルのレコードの番号(No)に対応付けられて、主記憶部12の所定の領域に一時的に記憶される。例えば、図8Aに例示のテストケース条件式テーブルでは、レコードNo=1,6,7の条件式が順に抽出される。
・部分条件式1:(x>0) ∧(z==5) ∧ (y==1) ∧ ¬(z>1) ∧ ¬(y>0)
係を含むため、充足可能性判定部104は、部分条件式C1の各変数関係を充足する変数値の組合せを生成することができない。このため、充足可能性判定部104は、例えば、部分条件式C1を引き渡した選択分析部103aに対して、“充足不能”との応答を返却する。
)に例示のように、探索した条件式において、選択演算子で結合された右側の条件式“¬(y==1) ∧ (z>1)”に基づいて行われる。
・部分条件式2:(x>0) ∧(z==5) ∧ ¬(y==1) ∧ (z>1) ∧ ¬(y>0)
¬(y==1) ∧ (z>1) ∧(y>0)”に更新される。また、例えば、No=7の更新前の条件式“((x>0) ∧ ¬(z==5)||¬(x>0) ∧(z==5)) ∧ (y==1) ∧ (z>1) ∧ (y>0)”は、部分条
件式“(x>0) ∧ ¬(z==5) ∧ (y==1) ∧(z>1) ∧ (y>0)”に更新される。
判る。なお、選択分析部103aによって更新されたテストケース条件式テーブルは、例えば、テストケース条件式DB204に格納される。
テストケース生成部103は、例えば、選択分析部103aで更新されたテストケース条件式テーブルに基づいて、処理対象となる判定式の真偽値が反映された各条件式を充足する変数値の組合せであるテストセットを生成する。なお、テストセットの生成は、例えば、充足判定部104により行われる。
、“1”等を特定する。そして、充足可能性判定部104は、例えば、各変数に対する数
値との大小関係、及び、各変数条件に付加された否定演算子“¬t”との論理関係から、
変数条件“(x>0)”、“(z==5)”、“¬(y==1)”、“(z>1)”、“¬(y>0)”を充足する
変数値の組合せを生成する。
を生成する。また、例えば、充足可能性判定部104は、変数条件“(z==5)”、“(z>1)
” を充足する変数値として“z=5”を生成する。そして、充足可能性判定部104は、例えば、引き渡された条件式の変数関係を充足する充足解として“x=1,y=-1,z=5”といった変数値の組合せをテストケース生成部103に引き渡す。
∧ ¬(z>1)”といった矛盾が含まれる。このため、テストケース条件式テーブルTb3のレコードNo=4の条件式に対し、充足可能性判定部104は、充足不能”との応答をテストケース生成部103に返却することとなる。
テストケーステーブルを生成する。図8Dに例示のテストケーステーブルTb4では、例えば、No=4のレコードには、“UNSAT(充足解なし)”といった情報が格納されている
。
ケースC2として出力する。
ストセットである。つまり、本実施形態の情報処理装置10は、処理対象となる条件数nの判定式に対して、n+1個を最小数とするn+1通り以上の充足可能性を向上させたMC/DCのテスト網羅度を充足するテストケースを生成し、出力することができる。
(全体処理)
以下、図9A−9Hに例示のフローチャートを参照し、本実施形態の情報処理装置10の、MC/DCのテスト網羅度を満たすテストケース生成処理を説明する。図9A−9Bは、MC/DCのテスト網羅度を満たすテストケース生成処理の全体処理を示すフローチャートの例示である。
報に対応付けられて、判定式二分木DB202に格納される。
場合には(S4,yes)、S5の処理に移行する。S5の処理では、情報処理装置10は、テストケース条件式テーブルから、処理対象となるテストケース条件式を抽出する。
えば、S9の処理でテストケース条件式DB204から取得したテストケース条件式テーブルに基づいて生成されたテストケーステーブルが情報処理装置10に返却される。
図9C−9Gに例示のフローチャートを参照し、図9Aに例示のS2の真偽値ルール適用処理を説明する。なお、図9Cに例示のS21−S25の処理、図9D−9Eに例示のS31−S44の処理、図9F−9Gに例示のS51−S64の処理は、例えば、図7B−7Hで説明した。
する。また、例えば、情報処理装置10は論理積のノード処理に係る右子木(右側のノード、或いは、リーフ)に真偽値ルール適用処理を適用し条件式マップ集合を生成する。
そして、情報処理装置10は、例えば、左右子木のそれぞれについて生成された条件式マップ集合から、論理和のノードに係る処理プロセス(OR演算子処理)についての真偽値を反映した条件式マップ集合を生成し、処理中のテストケース生成処理に返却する。なお、S24の処理については、図9F−9Gで詳細を説明する。
図9D−9Eに例示のフローチャートを参照し、図9Cに例示のS23のAND演算子処理を説明する。なお、以下の説明では、論理積のノード処理に係る左子木で生成された条件式マップ集合を“左マップ集合”とも称し、右子木で生成された条件式マップ集合を“右マップ集合”とも称する。
。生成された結合式“leftcond1”は以下の通りである。なお、条件式に付加された識別
子“n”は、抽出された条件式マップの数量を表す。
S32の処理では、情報処理装置10は、例えば、右マップ集合から真偽値“false”
と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“rightcond1”を生成する。なお、抽出した条件式マップが複数の場合には、“rightcond1”は、集合を表す記号“{}”を用いて以下のように表される。条件式に付加された識別子“n”は、抽出された条件式マップの数量を表す。
S33の処理では、情報処理装置10は、例えば、S32の処理で生成した“rightcon
d1”の中に未処理の条件式が存在するかを判定する。情報処理装置10は、例えば、“rightcond1”の中に未処理の条件式が存在する場合には(S33,yes)、S34の処理に移行する。一方、情報処理装置10は、例えば、“rightcond1”の中に未処理の条件式が存在しない場合には(S33,no)、S35の処理に移行する。
結合演算子“∧”で結合する。条件式(rightcond1)には、複数の条件式が含まれる。“leftcond1”と条件式(rightcond1)との結合式は、“leftcond1 ∧ rightcond1”で表される。
ルールTb1のID=1の真偽値“false”とを組合せた条件式マップ(leftcond1 ∧ rightcond1,false)を生成する。情報処理装置10は、例えば、生成した条件式マップを返
却用条件式マップ集合に追加する。
S36の処理では、情報処理装置10は、例えば、左マップ集合から真偽値“false”
と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“leftcond2”を生成する。なお、抽出した条件式マップが複数の場合には、“leftcond2”は、集合を表す記号を用いて以下のように表される。条件式に付加された識別子“n”は、抽出された条件式マップの数量を表す。
S37の処理では、情報処理装置10は、例えば、S36の処理で生成した“leftcond2”の中に未処理の条件式が存在するかを判定する。情報処理装置10は、例えば、“leftcond2”の中に未処理の条件式が存在する場合には(S37,yes)、S38の処理に移行する。一方、情報処理装置10は、例えば、“leftcond2”の中に未処理の条件式が
存在しない場合には(S37,no)、図9Eに例示するフローチャートのS39の処理に移行する。
合演算子“∧”で結合する。S34と同様に、条件式(leftcond2)には、複数の条件式が
含まれる。“leftcond2”と条件式(rightcond2)との結合式は、“leftcond2 ∧ rightcond2”で表される。
ルールTb1のID=2の真偽値“false”とを組合せた条件式マップ(leftcond2 ∧ rightcond2,false)を生成する。情報処理装置10は、例えば、生成した条件式マップを返
却用条件式マップ集合に追加する。
が複数の場合には、“leftcond3”は、集合を表す記号を用いて以下のように表される。
条件式に付加された識別子“n”は、抽出された条件式マップの数量を表す。
同様にして、情報処理装置10は、例えば、右マップ集合から真偽値“true”と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“rightcond3”を生成する(S40)。抽出した条件式マップが複数の場合には、“rightcond3”は、集合を表す記号を用いて以下のように表される。条件式に付加された識別子“n”は、抽出された条件式マップの数量を表す。
S41の処理では、情報処理装置10は、例えば、S39の処理で生成した“leftcond3”の中に未処理の条件式が存在するかを判定する。情報処理装置10は、例えば、“leftcond3”の中に未処理の条件式が存在する場合には(S41,yes)、S42の処理に移行する。一方、情報処理装置10は、例えば、“leftcond3”の中に未処理の条件式が
存在しない場合には(S41,no)、S44の処理に移行する。
ば、生成した条件式マップを返却用条件式マップ集合に追加する。
図9F−9Gに例示のフローチャートを参照し、図9Cに例示のS24のOR演算子処
理を説明する。以下の説明においても、AND演算子処理と同様に、論理和のノード処理に係る左子木で生成された条件式マップ集合を“左マップ集合”とも称し、右子木で生成された条件式マップ集合を“右マップ集合”とも称する。
の条件式に基づいて、選択演算子で結合された結合式“rightcond1”を生成する(S51)。生成された結合式“rightcond1”は以下の通りである。なお、条件式に付加された識別子“n”は、抽出された条件式マップの数量を表す。
S52の処理では、情報処理装置10は、例えば、左マップ集合から真偽値“true”と組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“leftcond1”を生成する。なお、抽出した条件式マップが複数の場合には、“leftcond1”は、集合を表す記号“{}”を用いて以下のように表される。条件式に付加された識別子“n”は、抽出された条件式マップの数量を表す。
S53の処理では、情報処理装置10は、例えば、S52の処理で生成した“leftcond1”の中に未処理の条件式が存在するかを判定する。情報処理装置10は、例えば、“leftcond1”の中に未処理の条件式が存在する場合には(S53,yes)、S54の処理に移行する。一方、情報処理装置10は、例えば、“leftcond1”の中に未処理の条件式が
存在しない場合には(S53,no)、S55の処理に移行する。
合演算子“∧”で結合する。条件式(leftcond1)には、複数の条件式が含まれる。“leftcond1”と条件式(rightcond1)との結合式は、“leftcond1 ∧ rightcond1”で表される。
ルールTb2のID=1の真偽値“true”とを組合せた条件式マップ(leftcond1 ∧ rightcond1,true)を生成する。情報処理装置10は、例えば、生成した条件式マップを返却
用条件式マップ集合に追加する。
条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、選択演算子で結合された結合式“leftcond2”を生成する(S55)。生成された結合式“leftcond2”は以下の通りである。条件式に付加された識別子“n”は、抽出された条件式マップの数量を表す。
S56の処理では、情報処理装置10は、例えば、右マップ集合から真偽値“true”と
組となった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“rightcond2”を生成する。なお、抽出した条件式マップが複数の場合には、“rightcond2”は、集合を表す記号を用いて以下のように表される。条件式に付加された識別子“n”は、抽出された条件式マップの数量を表す。
S57の処理では、情報処理装置10は、例えば、S56の処理で生成した“rightcond2”の中に未処理の条件式が存在するかを判定する。情報処理装置10は、例えば、“rightcond2”の中に未処理の条件式が存在する場合には(S57,yes)、S58の処理に移行する。一方、情報処理装置10は、例えば、“rightcond2”の中に未処理の条件式が存在しない場合には(S57,no)、図9Gに例示するフローチャートのS59の処理に移行する。
結合演算子“∧”で結合する。条件式(rightcond2)には、複数の条件式が含まれる。“leftcond2”と条件式(rightcond2)との結合式は、“leftcond2 ∧ rightcond2”で表される。
ルールTb2のID=2の真偽値“true”とを組合せた条件式マップ(leftcond2 ∧ rightcond2,true)を生成する。情報処理装置10は、例えば、生成した条件式マップを返却
用条件式マップ集合に追加する。
の条件式に基づいて、“leftcond3”を生成する(S59)。なお、抽出した条件式マッ
プが複数の場合には、“leftcond3”は、集合を表す記号を用いて以下のように表される
。条件式に付加された識別子“n”は、抽出された条件式マップの数量を表す。
同様にして、情報処理装置10は、例えば、右マップ集合から真偽値“false”と組と
なった条件式マップを全て抽出し、抽出した各条件式マップの条件式に基づいて、“rightcond3”を生成する(S60)。抽出した条件式マップが複数の場合には、“rightcond3”は、集合を表す記号を用いて以下のように表される。条件式に付加された識別子“n”は、抽出された条件式マップの数量を表す。
S61の処理では、情報処理装置10は、例えば、S59の処理で生成した“leftcond3”の中に未処理の条件式が存在するかを判定する。情報処理装置10は、例えば、“leftcond3”の中に未処理の条件式が存在する場合には(S61,yes)、S62の処理に移行する。一方、情報処理装置10は、例えば、“leftcond3”の中に未処理の条件式が
存在しない場合には(S61,no)、S64の処理に移行する。
た条件式マップ(leftcond3 ∧ rightcond3,false)を生成する。情報処理装置10は、例えば、生成した条件式マップを返却用条件式マップ集合に追加する。
図9Hに例示のフローチャートを参照し、図9Bに例示のS7のテストケース選択処理を説明する。なお、図9Hに例示のS71−S75の処理については、例えば、図8B(1)、(2)で説明した。
る場合であっても、変数関係を充足する変数値の組合せを生成することができる。
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
以上の実施形態は、さらに以下の付記と呼ぶ態様を含む。以下の各付記に含まれる構成要素は、他の付記に含まれる構成と組み合わせることができる。
(付記1)
コンピュータに、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たす演算対象式を特定し、前記所定関係にある演算対象式が複数特定される場合に、特定される複数の演算対象式を保持して、前記演算対象式の真偽値を求める解析ステップと、
前記所定関係にある複数の前記演算対象式について演算対象式の充足可能性を判定し、充足可能と判定された演算対象式を選択する選択ステップと、
を実行させるためのテストケース生成プログラム。
(付記2)
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得ステップと、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に前記取得ステップと前記解析ステップとを適用するステップと、
をさらに実行させる付記1に記載のテストケース生成プログラム。
(付記3)
前記選択ステップは、前記演算対象式に含まれる第1部分式と第2部分式との組合せ関係の矛盾の有無により充足可能性を判定する、付記1または付記2に記載のテストケース生成プログラム。
(付記4)
前記階層は、論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される演算対象式とを上位の階層とし、前記上位の階層とされた演算対象式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の演算対象式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで形成される、付記2または付記3に記載のテストケース生成プログラム。
(付記5)
前記解析ステップは、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響しない、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択するステップを含む、付記4に記載のテストケース生成プログラム。
(付記6)
前記解析ステップは、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響し、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、付記4に記載のテストケース生成プログラム。
(付記7)
前記解析ステップは、第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択するステップを含む、付記4から付記6の何れか一の付記に記載のテストケース生成プログラム。
(付記8)
前記解析ステップは、第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択するステップを含む、付記4から付記6の何れか一の付記に記載のテストケース生成プログラム。
(付記9)
第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの第1の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が真となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記7に記載のテストケース生成プログラム。
(付記10)
第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が偽となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記8に記載のテストケース生成プログラム。
コンピュータを用いてテストケースを生成する方法であって、
前記コンピュータの有するプロセッサが、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たす演算対象式を特定し、前記所定関係にある演算対象式が複数特定される場合に、特定される複数の演算対象式を保持して、前記演算対象式の真偽値を求め、
前記所定関係にある複数の前記演算対象式について演算対象式の充足可能性を判定し、充足可能と判定された演算対象式を選択する、
テストケース生成方法。
(付記12)
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得し、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子
で結合される演算対象式以下の論理式に前記取得と前記演算対象式の真偽値を求めることとを行う、付記11に記載のテストケース生成方法。
(付記13)
前記充足可能と判定された演算対象式を選択することは、前記演算対象式に含まれる第1部分式と第2部分式との組合せ関係の矛盾の有無により充足可能性を判定する、付記11または付記12に記載のテストケース生成方法。
(付記14)
前記階層は、論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される演算対象式とを上位の階層とし、前記上位の階層とされた演算対象式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の演算対象式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで形成される、付記12または付記13に記載のテストケース生成方法。
(付記15)
前記演算対象式の真偽値を求めることは、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響しない、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択することを含む、付記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の何れか一の付記に記載のテストケース生成方法。
(付記19)
第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの第1の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が真となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記17に記載のテストケース生成方法。
(付記20)
第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が偽となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記18に記載のテストケース生成方法。
演算子による演算結果の真偽値と、前記演算子によって演算の対象となる演算対象式の真偽値とが所定関係を満たすように、且つ、前記所定関係にある複数の前記演算対象式の中から一の演算対象式を選択可能なように、前記演算対象式の真偽値を求める解析手段と、
前記所定関係にある複数の前記演算対象式について演算対象式の充足可能性を判定し、充足可能と判定された演算対象式を選択する選択手段と、
を備えるテストケース生成装置。
(付記22)
判定に係る論理式中の演算子と演算対象式との組み合わせに基づく階層中の最上位の階層の演算子を取得する取得手段と、
前記所定関係を満たす演算対象式の真偽値を用いて前記階層中の最上位の階層の演算子で結合される演算対象式以下の論理式に前記取得手段と前記解析手段とを適用する手段と、
をさらに備える付記21に記載のテストケース生成装置。
(付記23)
前記選択手段は、前記演算対象式に含まれる第1部分式と第2部分式との組合せ関係の矛盾の有無により充足可能性を判定する、付記21または付記22に記載のテストケース生成装置。
(付記24)
前記階層は、論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される演算対象式とを上位の階層とし、前記上位の階層とされた演算対象式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の演算対象式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで形成される、付記22または付記23に記載のテストケース生成装置。
(付記25)
前記解析手段は、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響しない、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択する手段を含む、付記24に記載のテストケース生成装置。
(付記26)
前記解析手段は、第1の階層に含まれる第1の演算子による演算結果の真偽値に影響し、前記第1の演算子によって演算の対象となる第1の演算対象式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の演算対象式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択する手段を含む、付記24に記載のテストケース生成装置。
(付記27)
前記解析手段は、第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択する手段を含む、付記24から付記26の何れか一の付記に記載のテストケース生成装置。
(付記28)
前記解析手段は、第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の演算対象式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第1の階層直下の第2の演算対象式中の真偽値の組合せを選択する手段を含む、付記24から付記26の何れか一の付記に記載のテストケース生成装置。
(付記29)
第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの
第1の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が真となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記27に記載のテストケース生成装置。
(付記30)
第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の演算対象式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が偽となる演算対象式を選択可能な演算対象式として選択演算子で結合する、付記28に記載のテストケース生成装置。
11 CPU
12 主記憶部
13 補助記憶部
14 入力部
15 出力部
16 通信部
101 判定式解析部
101a 二分木変換部
102 真偽値ルール適用部
103 テストケース生成部
103a 選択分析部
104 充足可能性判定部
201 真偽値ルールDB
202 判定式二分木DB
203 条件式マップ集合DB
204 テストケース条件式DB
205 テストケースDB
Tb1 論理積ルール真偽値表
Tb2 論理和ルール真偽値表
Tb3 テストケース条件式テーブル
Tb4 テストケーステーブル
Claims (12)
- コンピュータに、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求める解析ステップと、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択する選択ステップと、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成する形成ステップと、を実行させ、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記選択ステップは、前記条件式に含まれる第1部分式と第2部分式との組合せ関係の矛盾の有無により充足可能性を判定し、
前記解析ステップは、前記階層構造のうちの第1の階層に含まれる第1の演算子による演算結果の真偽値に影響しない、かつ、前記第1の演算子によって演算の対象となる第1の条件式の真偽値を共通の値にする、かつ、前記第1の階層直下の第2の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択するステップを含む、
テストケース生成プログラム。 - コンピュータに、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求める解析ステップと、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択する選択ステップと、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成する形成ステップと、を実行させ、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記選択ステップは、前記条件式に含まれる第1部分式と第2部分式との組合せ関係の矛盾の有無により充足可能性を判定し、
前記解析ステップは、前記階層構造のうちの第1の階層に含まれる第1の演算子による演算結果の真偽値に影響し、前記第1の演算子によって演算の対象となる第1の条件式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、
テストケース生成プログラム。 - 前記階層構造中の最上位の階層の演算子を取得する取得ステップと、
前記所定関係を満たす条件式の真偽値を用いて前記階層構造中の最上位の階層の演算子で結合される条件式以下の論理式に前記取得ステップと前記解析ステップとを適用するステップと、
をさらに実行させる請求項1または請求項2に記載のテストケース生成プログラム。 - 前記解析ステップは、前記第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの第1の条件式の真偽値の組合せが真と偽、偽と真、または真と真となるように、前記第1の階層直下の第2の条件式中の真偽値の組合せを選択するステップを含む、請求項1から請求項3の何れか一項に記載のテストケース生成プログラム。
- 前記解析ステップは、前記第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の条件式の真偽値の組合せが真と偽、偽と真、または偽と偽となるように、前記第1の階層直下の第2の条件式中の真偽値の組合せを選択するステップを含む、請求項1から請求項3の何れか一項に記載のテストケース生成プログラム。
- 前記第1の階層の演算子が積演算子である場合に、積演算子による演算の対象となる2つの第1の条件式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が真となる条件式を選択可能な条件式として選択演算子で結合する、請求項4に記載のテストケース生成プログラム。
- 前記第1の階層の演算子が和演算子である場合に、和演算子による演算の対象となる2つの第1の条件式のうち、真と偽、または、偽と真となる組み合わせにおいて、真偽値が
偽となる条件式を選択可能な条件式として選択演算子で結合する、請求項5に記載のテストケース生成プログラム。 - コンピュータを用いてテストケースを生成する方法であって、
前記コンピュータの有するプロセッサが、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求め、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択し、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成し、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記条件式を選択する処理は、前記条件式に含まれる第1部分式と第2部分式との組合せ関係の矛盾の有無により充足可能性を判定しする処理を含み、
前記真偽値を求める処理は、前記階層構造のうちの第1の階層に含まれる第1の演算子による演算結果の真偽値に影響しない、かつ、前記第1の演算子によって演算の対象となる第1の条件式の真偽値を共通の値にする、かつ、前記第1の階層直下の第2の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択するステップを含む、
テストケース生成方法。 - 演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求める解析手段と、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択する選択手段と、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成する形成手段と、を備え、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条
件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記選択手段は、前記条件式に含まれる第1部分式と第2部分式との組合せ関係の矛盾の有無により充足可能性を判定し、
前記解析手段は、前記階層構造のうちの第1の階層に含まれる第1の演算子による演算結果の真偽値に影響しない、かつ、前記第1の演算子によって演算の対象となる第1の条件式の真偽値を共通の値にする、かつ、前記第1の階層直下の第2の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せを選択可能な選択演算子で結合し、前記選択演算子で結合された真偽値の組合せを選択するステップを含む、
テストケース生成装置。 - 演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求める解析手段と、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択する選択手段と、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成する形成手段と、を備え、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記選択手段は、前記条件式に含まれる第1部分式と第2部分式との組合せ関係の矛盾の有無により充足可能性を判定し、
前記解析手段は、前記階層構造中の第1の階層に含まれる第1の演算子による演算結果の真偽値に影響し、前記第1の演算子によって演算の対象となる第1の条件式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、
テストケース生成装置。 - コンピュータを用いてテストケースを生成する方法であって、
前記コンピュータの有するプロセッサが、
演算子による演算結果の真偽値と前記演算子によって演算の対象となる条件式の真偽値とが所定関係を満たす条件式を特定し、前記所定関係にある条件式が複数特定される場合に、特定される複数の条件式を保持して、前記条件式の真偽値を求め、
前記所定関係にある複数の前記条件式について前記真偽値を反映して前記条件式の充足可能性を判定し、充足可能と判定された条件式を選択し、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成し、
前記所定関係を満たす条件式を特定することは、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼさない場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせから一つを選択することと、
前記演算子によって演算の対象となる条件式の真偽値が前記演算子による演算結果の真偽値に独立して影響を及ぼす場合には、前記演算子による演算結果を共通にする前記条件式の組み合わせを全て選択することと、の少なくとも一方を含み、
前記条件式を選択する処理は、前記条件式に含まれる第1部分式と第2部分式との組合せ関係の矛盾の有無により充足可能性を判定しする処理を含み、
前記真偽値を求める処理は、前記階層構造中の第1の階層に含まれる第1の演算子による演算結果の真偽値に影響し、前記第1の演算子によって演算の対象となる第1の条件式の真偽値を共通の値にする、前記第1の階層直下の第2の階層の条件式の真偽値の組合せが複数にある場合には、前記複数ある真偽値の組合せのうち、全ての組合せを選択するステップを含む、
テストケース生成方法。 - コンピュータに、
論理式中に複数の演算子が含まれる場合に、演算子による演算順序の優先度順に、優先度が後の演算子と前記演算子によって演算される条件式とを上位の階層とし、前記上位の階層とされた条件式中でさらに、演算子による演算順序の優先度順に、次の演算子と前記次の演算子によって演算される次の条件式とを次の階層として、前記上位の階層の直下に前記次の階層を位置づけることで、判定に係る論理式中の演算子と条件式との組み合わせに基づく階層構造を形成する形成する形成ステップと、
前記階層構造のうちの第1の階層に含まれる第1の演算子によって演算の対象となる条件式それぞれに対して真偽値として真を適用し、前記真が適用された条件式それぞれと前記真とを組み合わせた第1の条件式マップを生成し、前記第1の演算子によって演算の対象となる条件式それぞれに対して真偽値として偽を適用し、前記偽が適用された条件式それぞれと前記偽とを組み合わせた第2の条件式マップを生成する第1生成ステップと、
前記第1の条件式マップと前記第2の条件式マップとを含む第1の条件式マップ集合を生成する第2生成ステップと、
演算子の種別毎にテストを行う候補として抽出する条件式のルールを記憶した記憶部を参照して、前記第1の条件式マップ集合からテストを行う候補とする条件式を含む条件式マップを抽出し、抽出した前記条件式マップを含む第2の条件式マップ集合を生成する第3生成ステップと、
前記第2の条件式マップ集合に含まれる条件式それぞれについて充足可能性を判定し、充足可能と判定された条件式を選択する選択ステップと、を実行させる、
テストケース生成プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014255605A JP6511793B2 (ja) | 2014-12-17 | 2014-12-17 | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014255605A JP6511793B2 (ja) | 2014-12-17 | 2014-12-17 | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016115287A JP2016115287A (ja) | 2016-06-23 |
JP6511793B2 true JP6511793B2 (ja) | 2019-05-15 |
Family
ID=56142085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014255605A Expired - Fee Related JP6511793B2 (ja) | 2014-12-17 | 2014-12-17 | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6511793B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116383070B (zh) * | 2023-04-07 | 2023-12-05 | 南京航空航天大学 | 一种面向高mc/dc的符号执行方法 |
CN117540671A (zh) * | 2023-04-25 | 2024-02-09 | 北京芯思维科技有限公司 | 基于关键值真值表的数字电路仿真方法及装置 |
CN117851254B (zh) * | 2024-01-09 | 2024-07-26 | 浙江大学 | 一种基于符号执行和路径数缩减的mc/dc覆盖用例生成方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009181292A (ja) * | 2008-01-30 | 2009-08-13 | Toyota Motor Corp | Mc/dcパターン生成装置 |
JP5772607B2 (ja) * | 2012-01-12 | 2015-09-02 | 富士通株式会社 | 生成装置、生成方法、および生成プログラム |
JP5900197B2 (ja) * | 2012-01-31 | 2016-04-06 | 富士通株式会社 | 経路条件選択装置、該プログラム、及び該方法 |
US9639442B2 (en) * | 2012-08-29 | 2017-05-02 | Hcl Technologies Limited | Modified condition/decision coverage test case automation |
-
2014
- 2014-12-17 JP JP2014255605A patent/JP6511793B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2016115287A (ja) | 2016-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8041729B2 (en) | Categorizing queries and expanding keywords with a coreference graph | |
US7996819B2 (en) | Generating functional test scripts | |
US8566789B2 (en) | Semantic-based query techniques for source code | |
JP5159713B2 (ja) | システムの構成要素の設計アーキテクチャを自動設計する自動設計装置、自動設計方法及び自動設計プログラム | |
US8370808B2 (en) | Apparatus and a method for generating a test case | |
US20140310053A1 (en) | Method and systems for providing business process suggestions and recommendations utilizing a business process modeler | |
JP6996629B2 (ja) | 検証自動化装置、検証自動化方法、およびプログラム | |
CN105809389A (zh) | 一种bom树的生成方法及装置 | |
JP6511793B2 (ja) | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 | |
CN110737779A (zh) | 知识图谱的构建方法、装置、存储介质和电子设备 | |
CN104598661B (zh) | 用于涉及it系统的项目的变更请求分析的方法和装置 | |
CN109144498A (zh) | 一种面向对象实例化任务的api自动推荐方法及装置 | |
JP6120607B2 (ja) | 要件検出装置及び要件検出プログラム | |
JP6459267B2 (ja) | テストケース生成プログラム、テストケース生成方法及びテストケース生成装置 | |
CN115130043B (zh) | 基于数据库的数据处理方法、装置、设备及存储介质 | |
JP2006277282A (ja) | モデル評価解析システムおよびモデル評価解析プログラム | |
JP2019133534A (ja) | 併合方法、併合装置、および併合プログラム | |
WO2022018899A1 (ja) | Kpiツリーから部分ツリーを抽出するシステム | |
CN115525629A (zh) | 数据处理方法、装置、存储介质及电子设备 | |
JP5648336B2 (ja) | 不整合検出装置、プログラム及び方法、修正支援装置、プログラム及び方法 | |
JP2009211599A (ja) | マッピング定義作成システムおよびマッピング定義作成プログラム | |
JP5447054B2 (ja) | データ生成方法,データ生成装置,およびデータ生成プログラム | |
JP2019200631A (ja) | Kpiツリー作成支援システムおよびkpiツリー作成支援方法 | |
WO2013180920A2 (en) | Buildable part pairs in an unconfigured product structure | |
JP5600826B1 (ja) | 非構造化データ処理システム、非構造化データ処理方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171113 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180718 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180731 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181001 |
|
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: 20190312 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190325 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6511793 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |