定义:集成测试又称组装测试,是在单元测试的基础上,将所有模块按照设计要求组装成 子系统或系统进行的测试活动。又称子系统测试、联合测试。
目的:确保各单元组合在一起后能够按既定意图协作运行,并确保增量的行为正确,所测试的内容包括单元间的接口以及集成后的功能。
集成测试需要考虑的问题:
-
在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
-
各个子功能组合起来,能否达到预期要求的父功能;
-
一个模块的功能是否会对另一个模块的功能产生不利的影响;
-
全局数据结构是否有问题
-
单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。
集成测试的层次:
-
模块内集成测试。
-
子系统内集成测试:先测试子系统内的功能模块,然后将各个功能模块组合起来确认子系统的功能是否达到预期要求。
-
子系统间集成测试:测试的单元是子系统之间的接口。子系统是可单独运行的程序或进程。
集成测试方法
-
静态测试技术——针对概要设计的测试
-
动态测试技术——灰盒测试
灰盒测试的优点:
-
能够进行基于需求的测试和基于路径的覆盖测试。
-
可深入被测对象的内部,便于错误的识别分析和解决。
-
能够保证设计的黑盒测试用例的完整性,防止功能或功能组合的遗漏。
-
能够减小需求或设计不详细或不完整性对测试有效性造成影响。
集成策略:
-
非增量式集成策略:一步到位(适合小系统)
-
优点:①方法简单 ②允许多测试人员同时并行工作,人力物力资源利用率较高。
-
缺点:①必须为每个模块准备相应的驱动模块和桩模块,测试成本较高 ②一旦集成后包含多种错误,难以纠正。
在非增量式集成测试时,应当确定关键模块,对这些关键模块及早进行测试。
-
-
增量式集成策略:逐步实现
分类:
自顶向下增量式测试
-
自顶向下集成测试的整个过程由3个步骤完成:
(1)主控模块作为测试驱动器。
(2)根据集成的方式(深度或广度),下层的桩模块一次一次地被替换为真正的模块。
(3)在每个模块被集成时,都必须进行单元测试。重复第2步,直到整个系统被测试完成
-
深度优先方式:首先集成在结构中的一个主控路径下的所有模块,主控路径的选择是任意的。
-
广度优先方式:首先沿着水平方向,把每一层中所有直接隶属于上一层的模块集成起来,直到底层。
-
优点:
-
较早地验证了主要控制和判断点;
-
功能较早证实;
-
只需一个驱动;
-
支持故障隔离;
-
-
缺点:
-
桩的开发量大;
-
底层验证被推迟;
-
底层组件测试不充分;
-
-
适用范围:
-
产品控制结构比较清晰和稳定;
高层接口变化较小;
底层接口未定义或经常可能被修改;
产口控制组件具有较大的技术风险,需要尽早被验证;
希望尽早能看到产品的系统功能行为。
-
自底向上增量式测试
-
从具有最小依赖性的底层组件开始,按照依赖关系树的结构,逐层向上集成,以检验系统的稳定性。
•最常用的集成策略,其他方法都或多或少应用此种方法。
-
(1)起始于模块依赖关系树的底层叶子模块,也可以把两个或多个叶子模块合并到一起进行测试
(2)使用驱动模块对步骤1选定的模块(或模块组)进行测试
(3)用实际模块代替驱动模块,与它已测试的直属子模块组装成一个更大的模块进行测试
(4)重复上面的行为,直到系统最顶层模块被加入到已测系统中
-
优点:
-
对底层组件行为较早验证;
-
工作最初可以并行集成;
-
减少了桩的工作量;
-
能较好锁定软件故障所在位置;
-
-
缺点:
-
驱动的开发工作量大;
-
对高层的验证被推迟,设计上的错误不能被及时发现;
-
-
适用范围:
适应于底层接口比较稳定;
高层接口变化比较频繁;
底层组件较早被完成。
三明治增量式测试(混合增量式测试)
-
优点:集合了自顶向下和自底向上两种策略的优点
-
缺点:中间层测试不充分
-
适用范围:
适应于大部分软件开发项目
-