B模块的代码可能如下:
int B (int a, int b){ … int x= D (a); …. int y= E(b); …. return x+y; } |
B的驱动函数是指通过页面或者编译器可以调用的函数,通常设置为主函数,即main()函数。
main (){ int a=3; int b=5; int c=B(a,b); } |
StubD,StubE为B的桩函数。桩函数为模拟被测单元的调用模块,由于测试的是模块B,所以桩函数可以简单地返回一个符合要求类型的变量。
int StubD(int x){ return x+5; } int StubE(int x){ return x+6; } |
这样,B函数就可改为:
int B (int a, int b){ …. int x= StubD (a); …. int y= StunE(b); …. return x+y; } |
这里,单元测试主要验证模块B的功能,在验证过程中可以采用等价类、边界值、错误输入等方法来实现。
对于软件测试桩,现在有许多新的技术,如图1-4所示。
图1-4 软件测试桩
这些新技术的介绍不在本书的范畴中,有兴趣的读者可以自己查找相关的文献。
6.集成测试(Integration Testing)
集成测试是一种暴露接口以及集成组件/系统间交互时存在缺陷的软件测试方法。集成方法有自上而下测试法、自下而上测试法、自上而下和自下而上混合(又称三明治)测试法3种。
案例1-3:集成测试。
下面来看一个程序架构,如图1-5所示。
可以采取如下方法对此进行集成测试。
自下而上集成:
(1)模块6与模块7集成,模块6与模块8集成;
(2)模块3与模块5集成,模块3与模块6集成;
(3)模块2与模块4集成,模块2与模块5集成;
(4)模块1与模块2集成,模块1与模块3集成。
图1-5 集成测试案例
自上而下集成:
(1)模块1与模块2集成,模块1与模块3集成;
(2)模块2与模块4集成,模块2与模块5集成;
(3)模块3与模块5集成,模块3与模块6集成;
(4)模块6与模块7集成,模块6与模块8集成。
三明治集成:
(1)模块6与模块7集成,模块6与模块8集成;
(2)模块3与模块5集成,模块3与模块6集成;
(3)模块1与模块2集成,模块1与模块3集成;
(4)模块2与模块4集成,模块2与模块5集成;
(5)模块3与模块5集成,模块3与模块6集成。
7.系统测试(System Testing)
系统测试是软件测试的主要部分,是利用各种方法验证软件是否满足产品显性或者隐形需求的活动。
8.验收测试(Accept Testing)
验收测试一般由用户/客户或者运维人员进行确认是否可以接受一个系统的验证性的软件测试。可根据用户需求、业务流程进行的正式的软件测试,以确保系统符合所有验收准则(与IEEE 610一致)。验收测试可以分为Alpha测试和Beta测试。
(1)Alpha测试
Alpha测试是由潜在用户或者独立的软件测试团队在开发环境下或者模拟实际操作环境下进行的软件测试,通常在开发组织外进行,是对现货软件(off-the-shelf software)进行内部验收测试的一种方式。
(2)Beta测试
Beta测试是潜在现有用户/客户在开发组织外的场所,没有开发工程师参与的情况下进行的软件测试,检验软件是否满足客户及业务需求。这种软件测试经常是为了获得市场反馈对现货软件进行外部验收测试的一种形式。
9.静态测试(Static Testing)
静态测试是对组件/系统进行规格或实现级别的测试,但并不执行这个软件,如代码评审或静态代码分析等。
10.动态测试(Dynamic Testing)
动态测试通过运行软件的组件或系统来测试软件。
更多的软件测试术语,请参见参考文献【33】。
本文选自《软件测试技术实战-设计、工具及管理》第一章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。