google搜索 站内搜索                 软件测试门户 | 软件测试培训 | 文章资料精选 | 软件测试论坛 | 测试解决方案 | 软件测试博客 | 测试招聘求职 
打印

单元测试的困惑,请大侠指点一下,谢谢

单元测试的困惑,请大侠指点一下,谢谢


我现在在做白盒测试,看了书上的方法,现在采用基本路径方法测试

请问如果有这样一个函数
BOOL A_Fun(HANDLE hMn, BOOL Redraw)
{
  if (!hMn)
  {
    return (FALSE);
  }

  ...;
  ...;
  ...; // 很多逻辑操作

    if (!B_Fun(hMn, (XXX*)hMn->uiItmIdx, fgRedraw))
   {
      Assert(0);          // 开发人员断定不应该进入此路径
      return(FALSE);
   }

   ...;
   return TRUE;
}

XXX为一结构体

测试用例1: bRet = A_Fun(NULL, TRUE); 预期结果FALSE,这种非常简单并且明了的路径需要进行判断吗???也就是说,针对这个路径,需要写测试用例吗

测试用例2: 传入一个正确的句柄,bRet = A_Fun(hMn, TRUE); 由于多个逻辑调用以及B_Fun函数,我也不能断定是否进入Assert(0)或者是到return TRUE; 请问这个预期结果应该填什么呢,是我必须把B_fun理解透? 若B_fun又调用了多个函数呢

应该还有个测试用例3

有点困惑,刚刚做测试,不大懂

TOP

引用:
Originally posted by ljan at 1-8-2005 17:39:
测试用例2: 传入一个正确的句柄,bRet = A_Fun(hMn, TRUE); 由于多个逻辑调用以及B_Fun函数,我也不能断定是否进入Assert(0)或者是到return TRUE; 请问这个预期结果应该填什么呢,是我必须把B_fun理解透? 若B_fun又调用了多个函数呢
用 symbolic execution 的技术可以判断在怎样的 test input 的情况下可以进入 Assert(0) 所在的 branch

既然 B_Fun 是另外一个函数 那就是 integration testing 了

TOP

可一般我们测试一个函数时,基本都会调用到其他接口,那都称为集成测试吗

TOP

引用:
Originally posted by ljan at 4-8-2005 20:15:
可一般我们测试一个函数时,基本都会调用到其他接口,那都称为集成测试吗
在unit testing阶段用stub和driver来解决调用和被调用的问题

TOP

楼主提到:
请问这个预期结果应该填什么呢,是我必须把B_fun理解透? 若B_fun又调用了多个函数呢

正如Kapok所说的,如果是对A_Fun进行单元测试,B_fun通过stub也就是桩来替代,这样就不存在B_fun还调用其它函数的问题了。
我不想不想长大
长大后就没树爬
我不想不想长大
长大后就没牙刷
我只想做一只快乐的koala。。。。。。

TOP

晕倒,单元测试用例怎么能这么设计啊!代码都已经摆这里了,还装模作样的去给定输入和预期输出,最终执行结果能不对吗?

TOP

 
当前时区 GMT+8, 现在时间是 2008-12-5 18:05Copyright(C)上海博为峰软件技术有限公司 2001-2007 电话:021-64471599-8017
当您在访问网站、论坛及博客过程中遇到问题时可发送email:webmaster@51testing.com或发送论坛短信至管理员风在吹