集成测试
1. 什么是集成测试?
集成测试(Integration testing)又称为组装测试、联合测试、子系统测试或部件测试。
集成测试是在单元测试的基础上,将所有模块按照设计要求组装成子系统或系统进行的测试活动,是一种旨在暴露单元接口之间、组件/系统间交互或协同工作时所存在的缺陷的测试。
2. 集成测试的层次
集成测试按层次可分为:
- 软件单元与软件单元的集成测试
- 软件子系统和子系统的集成测试
- 软件系统和第三方系统的集成测试
- 软件系统和硬件的集成测试
3. 集成测试的模式
3.1 非渐增式测试模式
大棒模式(Big-bang Integration):一次性将众多的模块集成起来进行的测试。
- 优点:方法简单,允许多个测试人员并行工作
- 缺点:发现错误后难以定位
3.2 渐增式测试模式
把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个已测试的模块结合进来测试,逐模块地进行。
- 优点:发现错误较容易定位
- 缺点:整个测试工作周期长
按渐增式集成的方式,渐增式测试又可分为:
- 自顶向下(Top-down Integration)
- 自底向上(Bottom-up Integration)
- 三明治方法(Sandwich Integration)
4. 自顶向下法
步骤:
- 对主控模块进行测试,测试时用桩(Stub)程序代替所有直接附属于主控模块的模块
- 根据选定的结合策略(深度优先或宽度优先),每次用一个实际模块代替一个桩程序
- 在结合下一个模块的同时进行测试
- 为了保证加入模块没有引进新的错误,可能需要进行回归测试
- 重复上述过程,直至完成
深度优先 vs 广度优先
- 深度优先:先集成处于软件结构中较深层的模块
- 广度优先:先集成处于软件结构中较浅层的模块
5. 自底向上法
步骤:
- 把低层模块组合成实现某个特定的软件子功能的族
- 写一个驱动程序(用于测试的控制程序),协调测试数据的输入和输出
- 对由模块组成的子功能族进行测试
- 去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族
- 循环第2-4步
6. 三明治方法
三明治方法结合了自顶向下和自底向上两种方式,同时从顶层和底层开始集成测试。
7. 集成测试的重点
集成测试的重点在于接口测试。
主要关注:
- 模块间的数据传递
- 模块间的调用关系
- 模块间的控制流
- 模块间的接口一致性
8. 相关概念
桩程序(Stub)
在自顶向下集成测试中,用于代替被测模块的下层模块,模拟被代替模块的功能。
驱动程序(Driver)
在自底向上集成测试中,用于协调测试数据的输入和输出的控制程序。
回归测试
在集成测试中,当加入新模块后,可能需要重新执行以前做过的测试,以确保没有引进新的错误。