51Testing软件测试论坛

标题: 请教:什么是桩模块啊,谢谢! [打印本页]

作者: zxj155    时间: 2005-8-31 13:06
标题: 请教:什么是桩模块啊,谢谢!
请教:什么是桩模块啊,谢谢!

[ 本帖最后由 ermine 于 2009-12-28 17:29 编辑 ]
作者: pplike    时间: 2005-9-1 11:51
桩模块就是用来代替被测模块所调用的模块。它的作用是返回被测试模块所需要的信息,而驱动模块的作用是用来模拟被测试模块的上级调用模块,它只完成接受测试数据,以及上级模块调用被测模块的格式驱动被测模块,接受被测模块的测试结果并输出.
作者: smail    时间: 2005-9-1 12:26
又学到了东西 呵呵~~~~  给自己加加油! yeah~~~
作者: zxj155    时间: 2005-9-1 20:12
谢谢大侠的指点。还真够绕人的阿,哪位能够举个例子阿
作者: weisszq    时间: 2005-9-2 00:02
比如::(下面代码可能写的有错误,请大家原谅吧,但应该能说明我的意思)
void main(void)
{
        int a , b , x;
        scanf("%d,%d,%d",&a,&b,&x);
        if (a>1 && b=0)
        {
            x=x/a;
            if (x>1)
            {
               x=x-1;
               x=abs(x);       
            }
            else
            {
              x=x+1;
              x=abs(x);
            }
        }
        else
        {
           x=abs(x);       
        }
}

abs(int m)
{
        if(m>=0)
        {
          return m;
        }
        else       
          return -m;
}
在测试main()时,其中abs()这个函数是要被调用的;所以为了保证abs()所返回的值是正确无误的(因为可能main()函数无错,但abs()有错,导致测试结果认为main()是有错的可能),所以要写桩来代替abs(),来保证测试main()不会得出错误结论。

如,设计用例:
case1: 输入 a = 2 , b = 0 , x = 4
case2: 输入 a = 2 , b = 0 , x = 2
case3: 输入 a = 1 , b = 1 , x = 1
所以代替abs()的桩函数应该是:
stub_abs()
{
   if (a= 2 && b= 0 && x = 4)
   {
        return x = 1 ;
   }
   if (a= 2 && b= 0 && x = 2)
   {
        return x = 2 ;
   }
   if (a= 1 && b= 1 && x = -1)
   {
        return x = 1 ;
   }
}

其实我理解的桩函数就是:“他想要什么你就给他什么”。希望我说明白了。请高手指正!!
作者: zxj155    时间: 2005-9-2 08:38
蛮透彻的,谢谢阿,这样理解起来好多了,各位真是没得话说阿,谢谢!!!
作者: ototototo    时间: 2009-10-29 18:37
       学到了
作者: llq0118    时间: 2009-10-29 19:51
我也学到了~~~
作者: 千里    时间: 2009-12-28 15:04
标题: 论坛管理员天网的解答
http://bbs.51testing.com/thread-875-1-1.html




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