质疑:这组测试设计真能达到分支覆盖吗???
AUT:========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
}
TestCase:======
测试用例的输入为:
{ x=4、y=5、z=5}
{ x=2、y=5、z=5} 定义?
条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次;
所以:
此AUT的条件应该有四个,分别是——
条件1:(x>3)
条件2:(z<10)
条件3:(x= =4)
条件4:(y>5)
而根据上面的两组测试数据,只能满足条件1和条件3的覆盖,那条件2、条件4呢???【请大家多多指教!】 这里对语句块1 中的y其实应该有限制的,如果y<1/x语句块1就会出错
同时语句块3可能会考虑语句快1和语句快2执行的条件和情况(可能2个都不执行!) 上面的用例已经达到了分支覆盖.你说的是条件覆盖(逻辑覆盖). 分支覆盖应该是branch coverage吧 比condition coverage弱
{ x=4、y=5、z=5}同时满足两个predicate
{ x=2、y=5、z=5}同时不满足两个predicate
因此足够覆盖所有分支 其实我想问是否满足条件覆盖?Sorry,有些材料把分支覆盖也叫做条件覆盖…… Originally posted by bluepop at 25-8-2004 20:43:
其实我想问是否满足条件覆盖?Sorry,有些材料把分支覆盖也叫做条件覆盖……
如果是condition coverage的话 你的第一个回帖没错
(z<10) 和 (y>5) 没有被覆盖 谢谢——Kapok! 呵呵,这样的所谓覆盖有什么意义呢?sqrt函数的返回值是double型的,它把j定义成int,如果程序进入第一个条件而不进入第二个的话,返回值极可能是个奇怪负数。而你的测试用例更本不可能发现这个问题啊。
页:
[1]