时常有这样的情况发生,每个模块都能单独工作,但这些模块集成在一起之后却不能正常工作。主要原因是,模块相互调用时接口会引入许多问题。例如,数据经过接口可能丢失;一个模块对另一个模块可能造成不应有的影响;几个子功能组合起来不能实现主功能;误差不断积累达到不可接受的程度;全局数据结构出现错误等等。综合测试是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起后,进行综合测试以便发现与接口有关的各种错误。
某设计人员习惯于把所有模块按设计要求一次全部组装起来,然后进行整体测试,这称为非增量式集成。这种方法容易出现混乱。因为测试时可能发现一大堆错误,为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误,新旧错误混杂,更难断定出错的原因和位置。与之相反的是增量式集成方法,程序一段一段的扩展,测试的范围一步一步地增大,错误易于定位和纠正,界面的测试变可做到完全彻底。
下面讨论两种增量式集成方法:
1、自顶向下集成
自顶向下集成是构造程序的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先和广度优先的策略,逐步把各个模块集成在一起。深度优先策略首先是把主控制路径上的模块集成在一起,至于选择哪一个路径做为主控制路径,这多少带有随意性,一般根据问题的特性决定。
自顶向下集成的具体步骤:
1) 以主动模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;
2) 依据所选的集成策略(深度优先或广度优先),每次只替代一个桩模块;
3) 每集成一个模块立即测试一遍;
4) 只有每组测试完成后,才着手替代下一个桩模块;
5) 为避免引入新错误,需不断地进行回归测试(即全部或部分地重复已做过的测试)。
优点在于能尽早地对程序的主要控制和决策机制进行检验,因此较早地发现错误。
2、自底向上集成
自底向上测试是从“原子”模块(即软件结构最低层的模块)开始组装测试,因测试到较高层模块时,所需的下层模块功能均已具备,所以不再需要桩模块。
自底向上综合测试的步骤分为:
1)把低层模块组织成实现某个子功能的模块群;
2)开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;
3)对每个模块群进行测试;
4)删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块样。
从第一步开始循环执行上述各步骤,直至整个程序构造完毕。这种方法不用桩模块,测试用例的设计相以简单,但缺点是程序最后一个模块加入时才具有整体形象。
在系统测试时应根据软件的特点和工程的进度,选用适当的测试策略,有时混用两种策略更为有效,上层模块用自顶向下的方法,下层模块用自底向上的方法。
此外,在综合测试中尤其注意关键模块,所谓关键模块一般都具有下述一或多个特征:
1)对应几条需求;
2)具有高层控制功能;
3)复杂、易出错;
4)有特殊的性能要求。
关键模块应尽早测试,并反复进行回归测试。
本站技术原创栏目文章均为中睿原创或编译,转载请注明:文章来自中睿,本站保留追究责任的权利。