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

原创 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

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

函数的打桩和hook

刚参加工作,总是听到PM分配任务的时候提到打桩的概念。查看项目代码的时候又碰到打桩函数中的HOOK技术。对于这两种技术我以前都没有接触过,在网上查了下资料,备份如下,希望对自己和他人都能有所帮助。 ...

打桩步骤与难点解决

为了让测试代码正确链接到桩函数,一般来说,要让函数具有与原函数相同的原形,这样就产生了一个问题:原函数与桩函数冲突。打桩过程中必须解决这个问题。 在实际工作中,打桩可以分两步来完成:       ...

GCC中的编译选项“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数

参考文章;http://hi.baidu.com/njuhappy/item/83f8bfbd7c5d3162bb0e1237 http://blog.sina.com.cn/s/blog_7745...
  • digent
  • digent
  • 2014年10月26日 16:41
  • 1124

CUnit C单元测试轻量级框架

CUnit下载地址: http://sourceforge.net/projects/cunit/ CUnit 在线文档帮助:http://cunit.sourceforge.net/doc/ind...

浅谈白盒测试和黑盒测试的应用之道

软件测试的众多方法是辩证统一的,它们相互依赖、相互对立又相互补充,任何一种测试方法都有其优势。同时,任何一种测试方法都不能满足所有测试的需求,它们在某些场合存在一定的局限性。下面介绍一下白盒测试和黑盒...

WP_Windows phone 应用开发[12]-Pex 构建自动化白盒测试[下]

本篇承接于上篇Windows phone 应用开发[11]-Pex 构建自动化白盒测试[上] .大概了解Pex作为自动化白盒测试工具工作方式.以及提出参数化单元测试的概念.为开发人员减少手动编写大量独...

“钩子”技术在白盒测试中的应用

“钩子”技术在白盒测试中的应用 一、什么是hook技术? 提到钩子技术相信大家多少不会感觉陌生,Windows操作系统是建立在事件驱动机制之上的,系统各个部分之间的沟通也都是通过消息的相互...
  • sogouqa
  • sogouqa
  • 2015年04月23日 01:38
  • 407

白盒测试在西电捷通平台鉴别通用组件PAI中的应用

平台鉴别通用组件是可信网络连接的核心基础组件,提供包含平台身份鉴别和完整性评估在内的平台鉴别安全服务,可被三元对等(Tri-elementPeer Architecture, TePA)网络安全技术架...
  • ITwarm
  • ITwarm
  • 2017年02月14日 11:40
  • 246

实验二、白盒测试方法应用

  • 2014年05月09日 16:58
  • 6.61MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅谈白盒测试中桩函数的灵活应用
举报原因:
原因补充:

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