bluepop 发表于 2004-8-23 09:27:12

质疑:这组测试设计真能达到分支覆盖吗???

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}

bluepop 发表于 2004-8-23 09:36:30

定义?
条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次;
所以:
此AUT的条件应该有四个,分别是——
   条件1:(x>3)
   条件2:(z<10)
   条件3:(x= =4)
   条件4:(y>5)
而根据上面的两组测试数据,只能满足条件1和条件3的覆盖,那条件2、条件4呢???【请大家多多指教!】

东方一华 发表于 2004-8-24 10:23:04

这里对语句块1 中的y其实应该有限制的,如果y<1/x语句块1就会出错

同时语句块3可能会考虑语句快1和语句快2执行的条件和情况(可能2个都不执行!)

njypch 发表于 2004-8-24 11:31:57

上面的用例已经达到了分支覆盖.你说的是条件覆盖(逻辑覆盖).

Kapok 发表于 2004-8-25 15:09:19

分支覆盖应该是branch coverage吧 比condition coverage弱
{ x=4、y=5、z=5}同时满足两个predicate
{ x=2、y=5、z=5}同时不满足两个predicate
因此足够覆盖所有分支

bluepop 发表于 2004-8-25 20:43:12

其实我想问是否满足条件覆盖?Sorry,有些材料把分支覆盖也叫做条件覆盖……

Kapok 发表于 2004-8-25 21:14:13

Originally posted by bluepop at 25-8-2004 20:43:
其实我想问是否满足条件覆盖?Sorry,有些材料把分支覆盖也叫做条件覆盖……

如果是condition coverage的话 你的第一个回帖没错
(z<10) 和 (y>5) 没有被覆盖

bluepop 发表于 2004-8-26 09:24:13

谢谢——Kapok!

闪灵 发表于 2007-7-11 13:47:42

呵呵,这样的所谓覆盖有什么意义呢?sqrt函数的返回值是double型的,它把j定义成int,如果程序进入第一个条件而不进入第二个的话,返回值极可能是个奇怪负数。而你的测试用例更本不可能发现这个问题啊。
页: [1]
查看完整版本: 质疑:这组测试设计真能达到分支覆盖吗???