51Testing软件测试论坛

标题: 单元测试的困惑,请大侠指点一下,谢谢 [打印本页]

作者: ljan    时间: 2005-8-1 17:39
标题: 单元测试的困惑,请大侠指点一下,谢谢
我现在在做白盒测试,看了书上的方法,现在采用基本路径方法测试

请问如果有这样一个函数
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

有点困惑,刚刚做测试,不大懂
作者: Kapok    时间: 2005-8-2 14:26
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 了
作者: ljan    时间: 2005-8-4 20:15
可一般我们测试一个函数时,基本都会调用到其他接口,那都称为集成测试吗
作者: Kapok    时间: 2005-8-5 12:48
Originally posted by ljan at 4-8-2005 20:15:
可一般我们测试一个函数时,基本都会调用到其他接口,那都称为集成测试吗


在unit testing阶段用stub和driver来解决调用和被调用的问题
作者: skinapi    时间: 2005-8-9 10:00
楼主提到:
请问这个预期结果应该填什么呢,是我必须把B_fun理解透? 若B_fun又调用了多个函数呢

正如Kapok所说的,如果是对A_Fun进行单元测试,B_fun通过stub也就是桩来替代,这样就不存在B_fun还调用其它函数的问题了。
作者: 天网    时间: 2005-8-12 12:05
晕倒,单元测试用例怎么能这么设计啊!代码都已经摆这里了,还装模作样的去给定输入和预期输出,最终执行结果能不对吗?




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