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

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

 首先我们得了解下什么是桩函数,如下有个定义,更具体可以查阅白盒测试相关文章了解。51Testing软件测试网:^}6z]0?;h9]D]

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

51Testing软件测试网TdW@5B/X7{4L S_

  比如有如下被测代码(C代码,为了便于看官阅读样例代码简单了点):51Testing软件测试网7xkRl s0mX%DC

2Pa$}A-lv0//被测源码
`&Np$R.h"n0//被调用函数
;Q| JDlk4^a ?0int Callfunc()51Testing软件测试网'xI~axWy7\
{51Testing软件测试网+n]"T&l9J&Ki
    return 88;51Testing软件测试网Kvq)zh,bp'\0t
}
51Testing软件测试网 L;R*EsUq.Xg/G

'b"e1Xtqe0int Myfunc()
]Xd{zh Ud0{
(\!u3p0C,A0    if(Callfunc()>10)
w+e%t)@9R0    {
)kTc"vg:N&y[0        return 1;51Testing软件测试网#^3Qg8?&W)G
    }
0[%P+B|W^J5u0    else51Testing软件测试网 ?8F`eeF:L7z x o6n
    {
Hy#O;r+|L0        return 0;51Testing软件测试网 bsP)r'].?2n
    }
iW"Ap'v)aZ0}
51Testing软件测试网jY Q*d+n*HRk+n

51Testing软件测试网cpfVel6w

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

51Testing软件测试网TIv]7Q0}[A B

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

W1wL2[7v-MX q051Testing软件测试网 J2wQH6F9Fmp

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

c0qn'?6dj `1k0

8TzB;W0DO4Fc0#测试代码51Testing软件测试网1| MVC_
#定义一个桩函数51Testing软件测试网|;{ W&YEF9M
func stub_func(vc):51Testing软件测试网v9}XF#h7] \2}.q \
    print("in stub_func");51Testing软件测试网d|)Q Ine
    return 8
8H\M%a5q"?7EN0wZ0end;
51Testing软件测试网"dF9JAZzw

51Testing软件测试网H&tkdDr2A/\K

#对Callfunc函数进行打桩
d_V-B~!S6CpX$Q {0vd.Callfunc.stub(global.stub_func);
51Testing软件测试网 i@v/k"gEP H

x+j&U*[x:zV0#打桩时调用被测函数51Testing软件测试网4h9RS sH'c6G
vd.Myfunc();

M3^$D1QphI051Testing软件测试网1y(f2c-U,M H+M

#删除桩
GRw*W\#D(Ne O$D0vd.Callfunc.stub(nil);

8R,HGj^D0

TAG:

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

评分:0

我来说两句

Open Toolbar