51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8192|回复: 7
打印 上一主题 下一主题

求编写测试驱动模块以及桩模块的实例,谢谢

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-7-3 17:13:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求编写测试驱动模块以及桩模块的实例,谢谢
例如被测代码为(随便举了个例子,如果有更好的例子,请给出):
int Max()
{
int a = fun1(); //需要打桩
int b = fun2(); //需要打桩

if (a>b)
    return a;
else
   return b;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2005-7-6 19:26:45 | 只看该作者
论坛里相关的帖子,我把给你传一个吧,上面有个例子,你看看吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-3-30 19:18:38 | 只看该作者
我也看看  学习一下
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-3-30 20:56:02 | 只看该作者
驱动无非就是使被测试函数得以执行的代码,通常是很简单的。例如:
int main()
{
    //初始化
    int ret = Max();
    //判断结果是否符合预期
}
当然,实际应用中,不可能每个测试都使用一个main函数,因此需要对驱动进行组织和管理。cppunit的主要功能就对测试的组织,以及显示测试结果。

对于大规模的项目,可测性是可想而知的,不见得是设计的问题,因为事物本身是互相纠缠的,代码间的大量耦合无法避免,打桩是解耦合的常用手段。 另外,并行开发也通常因相关代码未实现而需打桩。

桩代码大概是这样子的:
int fun1(){return 0;};
int fun2(){return 0;};
主要功能是让链接能够通过。

打桩是很简单的技术,如果用手工方法的话,大致过程是这样的:
1)编译链接源文件,编译错误通常跟打桩无关的,要先解决.
2)编译过了后,如果产生"未定义的外部符号"之类的链接错误,如VC6的L2001错误,就是缺少符号定义,可能是函数,也可能是非局部全量.
3)根据缺少的函数或变量的声明,编写函数实现或变量定义.

如果使用工具,工作原理也很简单,自己写一个工具也不需要多高的技术:
1)对源代码进行解析,找出缺少的定义
2)根据声明生成定义.

但打桩导致一个大问题,导致测试可能无法进行,例如:
int a,b;
a = subfunc(&b, arg); //arg是函数的一个参数
if(b > 0) {...}
else if(a > 0){...}
...
如果subfunc是用桩来代替的,桩通常会是这个样子:int subfunc(int* b, DATA* arg){return 0;},即什么也不做,直接返回0,这样,a永远是0,b永远未初始化,根本就测试不下去,称为失真。修改桩代码一般也不行,因为每个用例,a和b的值应该是不同的,不可能执行一个用例又去改一下。为了解决失真,需要使用仿真技术,在用例中直接设置subfunc的行为,例如:
用例一,subfunc返回1, 并把b的值设为2
用例二,subfunc返回10, 并把b的值设为20
....
有了隔离和仿真,就可以对大项目的现有代码进行随意的分割和测试了。

Visual Unit 2.2可以自动完成上述工作,包括驱动/桩/仿真。目前,我所知道的最大的成功案例,是测试某电信企业的约有一千万行代码的项目。楼主不妨一试。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-5-8 09:23:03 | 只看该作者
楼上的懂得真多,写的挺好的,我稍微明白一点点了
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-7-29 17:52:20 | 只看该作者
觉得白盒测试挺难的......
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2011-3-1 09:52:39 | 只看该作者
啊啊啊,就要找这个
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2011-3-16 14:00:30 | 只看该作者
谢谢分享
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-11 13:16 , Processed in 0.072853 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表