也称组装测试。在单元测试之后,需要按照设计时作出的结构图,将它们联结起来,进行集成测试。集成测试是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与接口有关的各种错误。
把所有模块按设计要求一次全部组装起来,然后进行集成测试,这称为非增量式集成。这种方法容易出现混乱。因为测试时可能发现一大堆错误,为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误。新旧错误混杂,更难断定出错的原因和位置。与之相反的是增量式集成方法,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,界面的测试亦可做到完全彻底。常用的有下面两种增量式集成方法。
a.自顶向下集成
自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。深度优先策略首先是把主控制路径上的模块集成在一起,至于选择哪一条路径作为主控制路径,这多少带有些随意性,要根据问题的特性确定。
自顶向下集成测试的具体步骤为:(1)以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;(2)依据所选的集成策略,每次只替代一个桩模块;(3)每集成一个模块立即测试一遍;(4)只有每组测试完成后,才着手替换下一个桩模块;(5)为避免引入新错误,须不断地进行回归测试。从第(2)步开始,循环执行上述步骤,直至整个程序结构构造完毕。
自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检验,因此能较早地发现错误。缺点是在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,重要数据也不能及时回送到上层模块,因此测试并不充分。解决这个问题有几种办法,第一种是把某些测试推迟到用真实模块替代桩模块之后进行,第二种是开发能模拟真实模块的桩模块;第三种是自底向上集成模块。第一种方法又回退为非增量式的集成方法,使错误难于定位和纠正,并失去了在组装模块时进行一些特定测试的可能性;第二种方法无疑要大大增加开销;第三种方法更切实可行。
b.自底向上集成
自底向上测试是从软件结构最低层的模块开始组装测试。因测试到较高层模块时,所需的下层模块功能均已具备,所以不再需要桩模块。
自底向上集成测试的步骤分为:(1)把低层模块组织成实现某个子功能的模块群;(2)开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;(3)对每个模块群进行测试;(4)删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群。从第(1)步开始循环执行上述各步骤,直至整个程序构造完毕。
自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但缺点是程序最后一个模块加入时才具有整体形象。它与自顶向上集成测试方法优缺点相反。因此,在测试软件系统时,应根据软件的特点和工程的进度,选用适当的测试策略。有时混和使用两种策略更为有效,上层模块用自顶向下的方法,下层模块用自底向上的方法。
此外,在集成测试中尤其要注意关键模块。所谓关键模块一般都具有下述一个或多个特征:(1)对应几条需求;(2)具有高层控制功能;(3)复杂、易出错;(4)有特殊的性能要求。关键模块应尽早测试,并反复进行回归测试。
把所有模块按设计要求一次全部组装起来,然后进行集成测试,这称为非增量式集成。这种方法容易出现混乱。因为测试时可能发现一大堆错误,为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误。新旧错误混杂,更难断定出错的原因和位置。与之相反的是增量式集成方法,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,界面的测试亦可做到完全彻底。常用的有下面两种增量式集成方法。
a.自顶向下集成
自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。深度优先策略首先是把主控制路径上的模块集成在一起,至于选择哪一条路径作为主控制路径,这多少带有些随意性,要根据问题的特性确定。
自顶向下集成测试的具体步骤为:(1)以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;(2)依据所选的集成策略,每次只替代一个桩模块;(3)每集成一个模块立即测试一遍;(4)只有每组测试完成后,才着手替换下一个桩模块;(5)为避免引入新错误,须不断地进行回归测试。从第(2)步开始,循环执行上述步骤,直至整个程序结构构造完毕。
自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检验,因此能较早地发现错误。缺点是在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,重要数据也不能及时回送到上层模块,因此测试并不充分。解决这个问题有几种办法,第一种是把某些测试推迟到用真实模块替代桩模块之后进行,第二种是开发能模拟真实模块的桩模块;第三种是自底向上集成模块。第一种方法又回退为非增量式的集成方法,使错误难于定位和纠正,并失去了在组装模块时进行一些特定测试的可能性;第二种方法无疑要大大增加开销;第三种方法更切实可行。
b.自底向上集成
自底向上测试是从软件结构最低层的模块开始组装测试。因测试到较高层模块时,所需的下层模块功能均已具备,所以不再需要桩模块。
自底向上集成测试的步骤分为:(1)把低层模块组织成实现某个子功能的模块群;(2)开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;(3)对每个模块群进行测试;(4)删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群。从第(1)步开始循环执行上述各步骤,直至整个程序构造完毕。
自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但缺点是程序最后一个模块加入时才具有整体形象。它与自顶向上集成测试方法优缺点相反。因此,在测试软件系统时,应根据软件的特点和工程的进度,选用适当的测试策略。有时混和使用两种策略更为有效,上层模块用自顶向下的方法,下层模块用自底向上的方法。
此外,在集成测试中尤其要注意关键模块。所谓关键模块一般都具有下述一个或多个特征:(1)对应几条需求;(2)具有高层控制功能;(3)复杂、易出错;(4)有特殊的性能要求。关键模块应尽早测试,并反复进行回归测试。