浅谈白盒测试中桩函数的灵活应用
作者:网络转载 发布时间:[ 2012/6/28 11:44:43 ] 推荐标签:
首先我们得了解下什么是桩函数,如下有个定义,更具体可以查阅白盒测试相关文章了解。
测试桩:代替被测模块调用的子模块的实体,该实体一般为桩函数,这个测试桩是我们所说的桩函数。那么好好的一个函数,为啥我们非得要去整一个桩函数来替代呢,那不是没事找事么?说到点子上去了,这是我要给各位看官讲的应用了。
比如有如下被测代码(C代码,为了便于看官阅读样例代码简单了点):
//被测源码
//被调用函数
int Callfunc()
{
return 88;
}
int Myfunc()
{
if(Callfunc()>10)
{
return 1;
}
else
{
return 0;
}
}
一、排除故障:在测试Myfunc()过程中发现问题,但不能确定是否因为Callfunc()引起时,我们使用桩函数来替代Callfunc(),桩函数的功能与Callfunc()的功能完全一致,必须得保证桩函数正确,这样我们能排除是Callfunc()的问题还是Myfunc()的问题。
二、彻底替换:被测函数中所调用的函数因为进度等原因未实现,为了测试模拟一个函数来替代保证测试的正常运行,特别是在敏捷快速迭代的开发模式中应该比较经常出现。比如Callfunc()是个空函数根本没实现什么功能,那么我们要测试Myfunc()必须得模拟一个桩函数来达到测试目的。
三、特定目的:为了达到特定的目的替代原始函数,比如强制改变测试分支,将复杂业务简单化,而不是真实的去构造设置很多业务环境来达到条件,为了节省开支使用简单实用的办法直接替代,比如Callfunc()中一般情况下都返回88,在极端苛刻的条件下才返回小于10的值,那我们想构造这种情况很难了,但是Myfunc()中else分支要测试啊,那怎么办,只有打桩强制使得Callfunc()的返回值小于10即可。样例如下:
#测试代码
#定义一个桩函数
func stub_func(vc):
print("in stub_func");
return 8
end;
#对Callfunc函数进行打桩
vd.Callfunc.stub(global.stub_func);
#打桩时调用被测函数
vd.Myfunc();
#删除桩
vd.Callfunc.stub(nil);
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11