集成测试的主要目的是检查模块之间的接口是否正确,发现与接口相关的错误。集成测试是组装和测试软件的一种系统化技术,在单元测试的基础上,以概要设计阶段得到的软件体系结构为蓝图,决定模块集成与测试的次序。集成测试主要以黑盒测试技术为主产生测试用例,必要时可以采用白盒测试技术补充一些测试用例。集成测试应关注如下问题:①在模块组装过程中,通过模块接口的数据是否丢失。②不同模块之间是否存在耦合效应,即一个模块的功能影响另一个模块的功能。③不同模块在使用全局数据结构时是否存在冲突。④各个模块组装起来后,能否实现预期要求的功能。⑤单个模块的误差累积起来,是否会放大到不可接受的程度。
把模块组装成为软件系统的方式有两种,即一次性集成方式(非增量式)和增量式集成方式。相应地,集成测试也分为非增量式与增量式集成测试。非增量式集成测试首先对每个模块分别进行模块测试,然后将所有模块集成在一起进行测试,最终得到要求的软件系统。增量式集成测试首先对一个个模块进行单元测试,然后将这些模块依据体系结构逐步组装成较大的系统,在组装的过程中边连接边测试,以发现连接过程中产生的问题。在实施集成测试时,人们普遍采用增量式集成测试方式,主要因为:①非增量式集成测试可能遇到若干的错误,改正错误更加困难。②增量式集成测试容易定位和改正错误,对接口可以进行更彻底的测试,可以使用系统化的测试方法。
增量式集成测试策略可以进一步分为自顶向下和自底向上两种。
自顶向下的增量式集成测试策略依据软件系统的体系结构,沿控制层自顶向下进行组装测试。该增量式集成测策略的主要优点包括:不需要开发测试驱动模块、能够在早期测试阶段实现并验证系统的主要功能、能在早期发现上层模块的接口错误。主要缺点包括:需要开发测试桩模块、低层关键模块中的错误发现较晚、由于早期阶段测试并行度不高不利于测试进度安排。具体实施时,又有两种方式:①深度优先的方式。沿着软件结构垂直地移动,集成与验证完成一个软件功能的相关模块,然后再处理下一个软件功能的相关模块。②宽度优先的方式。沿着软件结构水平地移动,首先把处于同一个控制层次上的模块逐个组装起来,对其进行测试,然后再集成与测试下一层次的模块。
自底向上的增量式集成测试策略从软件体系结构最底层的模块开始集成和测试,然后沿着软件结构向上移动,逐个集成并测试某个模块所调用的所有模块。对于某个特定层次上的模块,由于它所调用的模块都已经集成并测试,所以不再需要桩模块。自底向上增量式集成测试策略的优缺点与上述自顶向下增量式集成测试策略的优缺点刚好相反。
基于上述经典的增量式集成测试策略进一步改进,提出各种混合的增量式集成测试策略。例如,对自顶向下的增量式集成测试策略进行改进:总体上仍采用自顶向下策略,但在早期使用自底向上的策略测试软件中的少数关键模块。具体说来,首先对输入/输出模块和引入新算法的模块进行测试,然后自底向上组装成为功能相对完整且相对独立的子系统,然后由主模块开始自顶向下进行增量测试。所谓的关键模块是指具备下列特征的模块:①满足某些软件的主要需求。②在程序的模块结构中位于较高的层次(高层控制模块)。 ③较复杂、较易发生错误。④有明确定义的性能要求。