软件测试之桩模块和驱动模块
来源:互联网 发布:html调用外部js文件 编辑:程序博客网 时间:2024/06/04 14:21
所谓的测试桩,就是你负责测试的模块/方法“所需要调用的”那一部分,所以你需要模仿他们做一个返回值(假的,但符合设计)以供你的模块来调用。
所谓驱动测试,就是你负责测试模块/方法“上层的(包括main入口)的模块”,用于启动你所要负责的这个模块。就像下图中就需要写一个带main()的方法来调用你的模块/方法,这个就是驱动测试。
模块结构实例图:
假设现在项目组把任务分给了7个人,每个人负责实现一个模块。你负责的是B模块,你很优秀,第一个完成了编码工作,现在需要开展单元测试工作,先分析结构图:
1、由于B模块不是最顶层模块,所以它一定不包含main函数(A模块包含main函数),也就不能独立运行。
2、B模块调用了D模块和E模块,而目前D模块和E模块都还没有开发好,那么想让B模块通过编译器的编译也是不可能的。
那么怎样才能测试B模块呢?需要做:
1、写两个模块Sd和Se分别代替D模块和E模块(函数名、返回值、传递的参数相同),这样B模块就可以通过编译了。Sd模块和Se模块就是桩模块。
2、写一个模块Da用来代替A模块,里面包含main函数,可以在main函数中调用B模块,让B模块运行起来。Da模块就是驱动模块。
知识点:
桩模块的使命除了使得程序能够编译通过之外,还需要模拟返回被代替的模块的各种可能返回值(什么时候返回什么值需要根据测试用例的情况来决定)。
驱动模块的使命就是根据测试用例的设计去调用被测试模块,并且判断被测试模块的返回值是否与测试用例的预期结果相符。
代码举例如下:
所谓驱动测试,就是你负责测试模块/方法“上层的(包括main入口)的模块”,用于启动你所要负责的这个模块。就像下图中就需要写一个带main()的方法来调用你的模块/方法,这个就是驱动测试。
模块结构实例图:
假设现在项目组把任务分给了7个人,每个人负责实现一个模块。你负责的是B模块,你很优秀,第一个完成了编码工作,现在需要开展单元测试工作,先分析结构图:
1、由于B模块不是最顶层模块,所以它一定不包含main函数(A模块包含main函数),也就不能独立运行。
2、B模块调用了D模块和E模块,而目前D模块和E模块都还没有开发好,那么想让B模块通过编译器的编译也是不可能的。
那么怎样才能测试B模块呢?需要做:
1、写两个模块Sd和Se分别代替D模块和E模块(函数名、返回值、传递的参数相同),这样B模块就可以通过编译了。Sd模块和Se模块就是桩模块。
2、写一个模块Da用来代替A模块,里面包含main函数,可以在main函数中调用B模块,让B模块运行起来。Da模块就是驱动模块。
知识点:
桩模块的使命除了使得程序能够编译通过之外,还需要模拟返回被代替的模块的各种可能返回值(什么时候返回什么值需要根据测试用例的情况来决定)。
驱动模块的使命就是根据测试用例的设计去调用被测试模块,并且判断被测试模块的返回值是否与测试用例的预期结果相符。
代码举例如下:
<span style="font-size:18px;">public class ddd{ //Test driver public static void main(String[] args) { ddd d = new ddd(); d.Add(); } //My module public int Add() { int output=this.Stub1() + this.Stub2(); System.out.print("My module: return value is "+output+"\n"); return output; } //Stub1 public int Stub1() { int output=3; System.out.print("Stub 1 : return value is "+output+"\n"); return output; } //Stub2 public int Stub2() { int output=7; System.out.print("Stub 2 : return value is "+output+"\n"); return output; }}</span>
0 0
- 软件测试之桩模块和驱动模块
- 驱动模块和桩模块
- 桩模块和驱动模块
- 桩模块和驱动模块
- 桩模块和驱动模块
- 桩模块和驱动模块
- 软件测试中桩模块与驱动模块的概念与区别(转载)
- 软件测试中桩模块与驱动模块的概念与区别(转载)
- 软件测试中桩模块与驱动模块的概念与区别
- 驱动模块(driver)和桩模块(stub)
- led驱动模块编译、加载和测试
- 桩模块与驱动模块
- 驱动模块与桩模块
- 驱动模块和桩模块的概念和区别
- 驱动模块和桩模块的概念和区别
- 举例说明驱动模块和桩模块的概念和区别
- 驱动模块和桩模块的概念和区别
- 驱动模块和桩模块的概念和区别
- 二分查找需要注意的几点及优化
- [ACM] POJ 3740 Easy Finding (DFS)
- cocos2d-x-3.3beta0 编译apk方法(eclipse and cmd)
- poj Firing(最大权闭合图)
- iOS开发者账号申请总结
- 软件测试之桩模块和驱动模块
- VC6中编译选项/Gd /Gr /Gz与_stdcall, _cdcel, _fastcall
- 设计模式之动态代理-proxy
- 1.Android调用摄像头
- 收集常用的正则表达式
- 对比iOS中的四种数据存储
- ACM-进制转换
- ShellCode编写实例
- STL栈与队列的操作