参考答案:
【问题1】
(1)P1 (2)P3
【问题2】
(3)B (4)F (5)C (6)G
【问题3】
(7)P1
【问题4】
(8)C (9)G (10)D (11)E
【问题5】
(12)G (13)A (14)B (15)E
详细解析:
【问题1】
(1)(2)语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。根据题意,AD和BCD这两条路径将所有语句执行了一次。
【问题2】
(3)(4)(5)(6)判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次;每个判断的取真、取假至少执行一次。由题中可知,只要使得题中的3条路径各执行一次即可;即令a=2,b=1,c=3,执行P2路径;令a=2,b=1,c=0,d=4,执行P3路径。
【问题3】
(7)条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。从题中给的测试用例a=2,b=0,c=2,d=0得知,两个条件语句中的值分别为(T,F)(T,F),则另外一组测试用例的值为(F,T)(F,T),所以相对应的路径为AD。
【问题4】
(8)(9)(10)(11)判断-条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。由题中给出的测试用例a=2,b=-1,c=2,d=-1其条件值为(T,F)(T,T),则另外两组测试用例应使条件值满足(T,T)(F,F)和(F,T)(T,F),所以相应测试用例应选择C和D,其路径分别为G和E。
【问题5】
(12)(13)(14)(15)条件组合覆盖要求选择足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。(12)根据测试用例a=2,b=1,c=0,d=1得知,该执行路径为P3;再由题中给出的两组测试用例得知其条件值为(T,F)(T,T)和(T,T)(F,F),所以在选项中选择满足条件值为(F,T)(F,T)或(F,F)(T,F)的测试用例即可;即可得到两组测试用例为A和B,执行路径都为P1。