if A and B then Action1
if C or D then Action2
语句覆盖最弱,只需要让程序中的语句都执行一遍即可 。上例中只需设计测试用例使得A=true B=true C=true 即可。
分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。上例需要设计测试用例使其分别满足下列条件即可(1)A=true,B=true,C=true,D=false(2)A=true,B=false,C=false,D=false。
条件覆盖:要使得每个判断中的每个条件的可能取值至少满足一次。上例中第一个判断应考虑到A=true,A=false,B=true,B=false第二个判断应考虑到C=true,C=false,D=true,D=false,所以上例中可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false。
路径覆盖:要求覆盖程序中所有可能的路径。所以可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false(3)A=true,B=true,C=false,D=false(4)A=false,B=false,C=true,D=true。
不论那种覆盖方法,都不能保证程序的正确性。

答案:a
解析:
1、A可以让3个语句都执行一遍
第一个语句:
if(x>0 and y>0) then
z=z/x
end if
第二个语句:
if (x>1 or z>1) then
z=z+1
end if
第三个语句
z=y+z
2、A让两个if块的取真分支都经历了一次,B让两个if的取假分支都经历了一次
本文探讨了从语句覆盖到路径覆盖的不同测试策略,包括如何通过设计测试用例实现A、B、C、D条件下的判定覆盖、条件覆盖和路径覆盖,强调这些方法对于确保程序正确性的局限性。
3768





