51Testing软件测试论坛

标题: 质疑:这组测试设计真能达到分支覆盖吗??? [打印本页]

作者: bluepop    时间: 2004-8-23 09:27
标题: 质疑:这组测试设计真能达到分支覆盖吗???
AUT:========
void  DoWork(int x,int y,int z)
{
   int  k=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
定义?
条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次;
所以:
此AUT的条件应该有四个,分别是——
   条件1:(x>3)
   条件2:(z<10)
   条件3:(x= =4)
   条件4:(y>5)
而根据上面的两组测试数据,只能满足条件1和条件3的覆盖,那条件2、条件4呢???【请大家多多指教!】
作者: 东方一华    时间: 2004-8-24 10:23
这里对语句块1 中的y其实应该有限制的,如果y<1/x语句块1就会出错

同时语句块3可能会考虑语句快1和语句快2执行的条件和情况(可能2个都不执行!)
作者: njypch    时间: 2004-8-24 11:31
上面的用例已经达到了分支覆盖.你说的是条件覆盖(逻辑覆盖).
作者: Kapok    时间: 2004-8-25 15:09
分支覆盖应该是branch coverage吧 比condition coverage弱
{ x=4、y=5、z=5}同时满足两个predicate
{ x=2、y=5、z=5}同时不满足两个predicate
因此足够覆盖所有分支
作者: bluepop    时间: 2004-8-25 20:43
其实我想问是否满足条件覆盖?Sorry,有些材料把分支覆盖也叫做条件覆盖……
作者: Kapok    时间: 2004-8-25 21:14
Originally posted by bluepop at 25-8-2004 20:43:
其实我想问是否满足条件覆盖?Sorry,有些材料把分支覆盖也叫做条件覆盖……


如果是condition coverage的话 你的第一个回帖没错
(z<10) 和 (y>5) 没有被覆盖
作者: bluepop    时间: 2004-8-26 09:24
谢谢——Kapok!
作者: 闪灵    时间: 2007-7-11 13:47
呵呵,这样的所谓覆盖有什么意义呢?sqrt函数的返回值是double型的,它把j定义成int,如果程序进入第一个条件而不进入第二个的话,返回值极可能是个奇怪负数。而你的测试用例更本不可能发现这个问题啊。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2