请将以下程序分别按照语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多条件覆盖设计测试用例。
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