[白盒测试]关于条件覆盖中的一个例子的疑问
“条件覆盖”的含义是:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。我看到的一个范例:
voidDoWork(int x,int y,int z)
{intk=0,j=0;
if((x>3)&&(z<10))
{ k=x*y-1; //语句块1
j=sqrt(k);
}
if((x= =4)||(y>5))
{ j=x*y+10; //语句块2
}
j=j%3; //语句块3
}
按照我的理解:
对于第一个判断:
条件x>3取真值为T1,取假值为-T1
条件z<10 取真值为T2,取假值为-T2
对于第二个判断:
条件x=4取真值为T3,取假值为-T3
条件y>5取真值为T4,取假值为-T4
那么,采用两个测试案例:
x=3,y=5,z=10
x=4,y=6,z=9
就可以了。
但是,看书上说,需要3个测试案例:
x=3,y=5,z=5
x=4,y=6,z=5
x=4,y=5,z=10
哪个是正确的,为什么?
回复 1# 的帖子
根据定义,条件覆盖测试:选取足够多的测试数据,使被测试程序中不仅每条语句至少执行一次,而且每个判定表达式中的每个条件都取到各种可能的结果。楼主的用例也是正确的。即能使每条语句达到至少执行一次,每个条件都至少取得一次真假 谢谢.
页:
[1]