浅谈白盒测试中桩函数的灵活应用

上一篇 / 下一篇  2012-06-29 13:56:30 / 个人分类:杂谈

 首先我们得了解下什么是桩函数,如下有个定义,更具体可以查阅白盒测试相关文章了解。51Testing软件测试网4?k,u1kjS

  测试桩:代替被测模块调用的子模块的实体,该实体一般为桩函数,这个测试桩就是我们所说的桩函数。那么好好的一个函数,为啥我们非得要去整一个桩函数来替代呢,那不是没事找事么?说到点子上去了,这就是我要给各位看官讲的应用了。

l$j_ Ac0Au0H0b\051Testing软件测试网@}0`yJ*Q;Yso

  比如有如下被测代码(C代码,为了便于看官阅读样例代码简单了点):51Testing软件测试网|0h-jJ,hPO)l4]O5p

o7F*MZ.X{8jY`]0//被测源码
U8],}-z*cM0//被调用函数51Testing软件测试网TC0~*f^ n
int Callfunc()51Testing软件测试网,Dy:~B }[\
{
E"p8N_k@:wi0    return 88;
,C{!W"eU5?1y0}
51Testing软件测试网g U G+c'u+i4J

51Testing软件测试网 _)J-y ap^1`*Re

int Myfunc()51Testing软件测试网#ce-j+h%E)O
{
6YU|E0Y8gk\(G%[}0    if(Callfunc()>10)51Testing软件测试网Xu+QiY0X
    {51Testing软件测试网!N*?as#Zk h8i^
        return 1;51Testing软件测试网g#eL2lO*TI7U#P
    }51Testing软件测试网s,N(_3l$`h0K
    else
X[KR%c0    {
a-e b2X-T3C k0        return 0;
{1?5Ls_ scT0    }51Testing软件测试网$b2TK~:G-e+v
}
51Testing软件测试网 ~mA7I'hPg9C$A jqS9J

51Testing软件测试网dgrw0CSR

  一、排除故障:在 测试Myfunc()过程中发现问题,但不能确定是否因为Callfunc()引起时,我们使用桩函数来替代Callfunc(),桩函数的功能与 Callfunc()的功能完全一致,必须得保证桩函数100%正确,这样我们就能排除是Callfunc()的问题还是Myfunc()的问题。

!| |.W:r6rx051Testing软件测试网D6l |zh'Z+G8L

  二、彻底替换:被测函数中所调用的函数因为进度等原因未实现,为了测试模拟一个函数来替代保证测试的正常运行,特别是在敏捷快速迭代的开发模式中应该比较经常出现。比如Callfunc()就是个空函数根本没实现什么功能,那么我们要测试Myfunc()就必须得模拟一个桩函数来达到测试目的。51Testing软件测试网x s(W-tq_!gBd

51Testing软件测试网8] sfY5y

  三、特定目的:为 了达到特定的目的替代原始函数,比如强制改变测试分支,将复杂业务简单化,而不是真实的去构造设置很多业务环境来达到条件,为了节省开支使用简单实用的办 法直接替代,比如Callfunc()中一般情况下都返回88,在极端苛刻的条件下才返回小于10的值,那我们想构造这种情况就很难了,但是 Myfunc()中else分支要测试啊,那怎么办,只有打桩强制使得Callfunc()的返回值小于10即可。样例如下:

9{.OZ6F~w0

*fn$Cieo0#测试代码
FTDQy prDa8n0#定义一个桩函数51Testing软件测试网s;iR%S/|vI1P @
func stub_func(vc):
(Ec7f%NF eh#ox/n0    print("in stub_func");51Testing软件测试网5X/P}3M!Op wS
    return 851Testing软件测试网-{(z'X*f;oe
end;

1{X@$U%O\ s051Testing软件测试网3x?Dg;Ch/u^

#对Callfunc函数进行打桩51Testing软件测试网,_q6c{6Wr `
vd.Callfunc.stub(global.stub_func);
51Testing软件测试网d&{?;\x+Sb

51Testing软件测试网(Ki!f4?7i$k zDt

#打桩时调用被测函数
)U"R1r~6U6p4X m M/B0vd.Myfunc();

JNi-D ^)s;g6G"JR051Testing软件测试网4r^ K`q@-a#V

#删除桩
.e#i.H!qH S0vd.Callfunc.stub(nil);
51Testing软件测试网 T k c-g4[tb


TAG:

引用 删除 zjj51test   /   2016-08-11 21:02:25
5
引用 删除 xingshen318   /   2013-01-23 10:45:31
5
 

评分:0

我来说两句

Open Toolbar