(4)MC/DCテストケースを探す

RAC0164_draft
RENTACO
(4)MC/DCテストケースを探す
Copyright© 2013-2014 RENTACO. All Rights Reserved.
46
RENTACO
RAC0164_draft
構造網羅度の相違
網羅度を満たすために必要なテストケース
網羅
変数
A
Z=A and B and C
Z=1
命令⽂
Z=0
B
C
Z
1
0
0
0
0
2
0
0
1
0
3
0
1
0
0
4
0
1
1
0
5
1
0
0
0
6
1
0
1
0
7
1
1
0
0
8
1
1
1
1
命
令
判
定
条
件
条
件/
判
定
MC
/D
C
複
合
条
件
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
MC/DC:
1)判定(分岐)網羅と条件網羅が満たされ、
2)全条件に対して単独で判定を決定するペアをテスト。
Copyright© 2013-2014 RENTACO. All Rights Reserved.
48
RENTACO
RAC0164_draft
MC/DCを満⾜するテストケースの導出法
判定: Z=A and B and C
番
号
単⼀条件で判定が
異なるテスト番号
変数
A
B
C
Z
1
0
0
0
0
2
0
0
1
0
3
0
1
0
0
4
0
1
1
0
5
1
0
0
0
6
1
0
1
0
7
1
1
0
0
8
1
1
1
1
A
B
C
8
X
8
4
MC/DC
テスト
ケース
6
X
8
X
7
X
判定(分岐)網羅と条件網羅を満たし、全条件に対して単独で判定を決定するペアをテスト。
条件数 + 1 ≦ テストケース数 ≦ 条件数 × 2
Copyright© 2013-2014 RENTACO. All Rights Reserved.
49
RENTACO
RAC0164_draft
条件式の状態とその遷移
条件A
条件B
判定Z
条件式
条件C
状態: (Ai,Bi,Ci),Zi
どれかひとつの条件を変えたときの組、
それに対応する判定
どれかひとつの条件を変える
Copyright© 2013-2014 RENTACO. All Rights Reserved.
どれかひとつの条件を変える
50
RENTACO
RAC0164_draft
テストに関する状態遷移
初期状態:
(A0,B0,C0),Z0
ひとつの条件だけを変える
(A1,B0,C0),Z1
Z2!=Z1であれば、
(A1,B0,C0),(A1,B2,C0)のペア
が、条件Bに対するMC/DCテスト
ケースとなる
ひとつの条件だけを変える
(A1,B2,C0),Z2
ひとつの条件だけを変える
順次、他の条件に対するMC/DCテ
ストケースを探し、すべての条件に対
するMC/DCテストケースを⾒つけれ
ば、MC/DC網羅度は100%になる
⾒つけた物の中から最⼩限の
組み合わせを選ぶ。
Copyright© 2013-2014 RENTACO. All Rights Reserved.
51
RAC0164_draft
RENTACO
テストケース探索のためのPromela記述
inline decide(a,b,c,z){ z = ((a && c) || (!a && b && c)) }
bool a, b, c, z; bool a_done=0, b_done=0,c_done=0;
active proctype MCDC(){
bool a0, b0, c0, z0;
a = 0; b = 0; c = 0; decide(a,b,c,z);
do
::a0 =a; b0 = b; c0 = c; z0 = z; /* before value*/
if ::a = !a0
::b = !b0
::c = !c0
fi;
decide(a,b,c,z);
if
ltl p1 {!<>(a_done &&
::z != z0 ->
if ::a != a0 -> a_done = true
b_done && c_done)}
::b != b0 -> b_done = true
::c != c0 -> c_done = true
fi;
elseの前にprintfを追加する
::else -> skip
fi;
od
}
Copyright© 2013-2014 RENTACO. All Rights Reserved.
54