问题 问答题

请将以下程序分别按照语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多条件覆盖设计测试用例。
if((a>2 && b<3) && (c>4 || d<5))

statement1;

else

statement2;

答案

参考答案:语句覆盖是基本的覆盖,只要能让statement1和statement2都被执行一次就达到语句覆盖的标准。测试用例(a=0,b=0,c=0,d=0)和(a=3,b=1,c=5,d=0)即满足语句覆盖标准的要求。
判定覆盖就是让程序的判定分别为真和假一次,因此上面满足语句覆盖的测试用例(a=0,b=0,c=0,d=0)、(a=3,b=1,c=5,d=0)也满足判定覆盖标准的要求。
条件覆盖需要让判定中的所有条件取一次真和一次假,因此测试用例(a=5,b=0,c=5,d=0)和(a=0,b=5,c=0,d=5)让所有条件都取到了真和假,满足条件判定覆盖要求。
判定/条件覆盖要求判定覆盖和条件覆盖要被同时满足,而恰好测试用例(a=5,b=0,c=5,d=0)和(a=0,b=5,c=0,d=5)就满足判定/条件覆盖要求。
多条件覆盖要取条件真和假的组合,4个条件则有16种可能的组合,因此需要很多的测试用例才能满足。满足多条件覆盖的测试用例如附表所示。

满足多条件覆盖的测试用例
用例编号 a b c d a>2 b<3 c>4 d<5
1 0 5 0 5 F F F F
2 0 5 0 0 F F F T
3 0 5 5 5 F F T F
4 0 5 5 0 F F T T
5 0 0 0 5 F T F F
6 0 0 0 0 F T F T
7 0 0 5 5 F T T F
8 0 0 5 0 F T T T
9 5 5 0 5 T F F F
10 5 5 0 0 T F F T
11 5 5 5 5 T F T F
12 5 5 5 0 T F T T
13 5 0 0 5 T T F F
14 5 0 0 0 T T F T
15 5 0 5 5 T T T F
16 5 0 5 0 T T T T

单项选择题
单项选择题 A1/A2型题