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

原创 2012年03月23日 14:58:19

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

作者:张元礼

http://blog.csdn.net/vincetest

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

测试桩:代替被测模块调用的子模块的实体,该实体一般为桩函数,这个测试桩就是我们所说的桩函数,

那么好好的一个函数,为啥我们非得要去整一个桩函数来替代呢,那不是没事找事么?说到点子上去了,这就是我要给各位看官讲的应用了。

比如有如下被测代码(C代码,为了便于看官阅读样例代码简单了点): 

//被测源码
//被调用函数
int Callfunc()
{
    return 88;
}

int Myfunc()
{
    if(Callfunc()>10)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

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

白盒测试相关文章《白盒测试技术》
欢迎转载此文,转载时请注明文章来源:张元礼的博客 http://blog.csdn.net/vincetest

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

白盒测试技术

白盒测试技术作者:张元礼http://blog.csdn.net/vincetest 目   录Chapter 1 白盒测试理论1.1 白盒测试概念1.2 白盒测试目的1.3 白盒测试范围1.4 白盒...

白盒测试技术-白盒测试理论篇

白盒测试技术-白盒测试理论篇作者:张元礼http://blog.csdn.net/vincetest1.1 白盒测试概念白盒测试定义:白盒测试也称结构测试或逻辑驱动测试,是一种测试用例设计方法,它从程...

白盒测试技术-方法与实践篇

白盒测试技术-方法与实践篇作者:张元礼http://blog.csdn.net/vincetest 3.1 白盒测试方法一、用例设计1、测试用例的组成(在单元测试中测试用例基本上由测试脚本组成)1)用...

白盒测试技术-单元测试理论篇

白盒测试技术-单元测试理论篇作者:张元礼http://blog.csdn.net/vincetest 2.1 单元测试概念单元测试:单元测试又称模块测试,属于白盒测试,是最小单位的测试。模块分为程序模...

C语言中typedef用法详解

在C语言中,经常有如下的用法:typedef struct  tag{    ...} MyType, *MyPtr;一旦通过如上定以后,就可以用MyType来定义struct tag结构了。以前我使...

C语言中的二级指针(双指针)

http://blog.csdn.net/yming0221/article/details/7220688

source insight 快捷键 汇总

按住"ctrl", 再用鼠标指向某个变量,点击一下,就能进入这个变量的定义。 等宽字体设置快捷键是                       :"Alt +...

测试用例设计白皮书--等价类划分方法

测试用例设计白皮书--等价类划分方法Author: Vince      来源:http://blog.csdn.net/vincetest 一.方法简介1.定义  是把所有可能的输入数据,即程序的输...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)