集成测试既有白盒测试的成分,也有黑盒测试的成分,结合了白盒测试和黑盒测试的特点,现在一般把它归入“灰盒测试”的范畴。
集成测试是必需的吗?
通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:
1)在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;
2)一个模块的功能是否会对另一个模块的功能产生不利的影响;
3)各个子功能组合起来,能否达到预期要求的父功能;
4)全局数据结构是否有问题;
5)单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。
什么情况下必须要做集成测试
以下情况一定要做集成测试:
1)对软件质量有较高要求的软件系统,如航天软件、电信软件、系统底层软件等都必须做集成测试;
2)使用范围较广、用户群数量较大的软件必须做集成测试;
3)使用类似C/C++这种带指针的语言来开发的软件一般都需要做集成测试;
4)类库、中间件等产品必须做集成测试
集成测试和单元测试与系统测试的区别如下:
1.测试的单元不同
单元测试是针对软件基本单元(如函数)所做的测试,而集成测试则是以模块和子系统为单位进行的测试,主要测试接口间的关系。
2.测试的依据不同
单元测试是针对软件详细设计做的测试,测试用例设计的主要依据是详细设计。而集成测试是针对概要设计做的测试,测试用例设计的主要依据是概要设计。系统测试主要是依据需求来做的测试,测试用例设计的主要依据是需求规格。
3.测试空间不同
集成测试主要测试的是接口层的测试空间,它的测试空间与单元测试和系统测试是不同的。集成测试也不关心内部实现层的测试空间,它重点关注接口层可变数据间的组合关系。
4.集成测试使用的方法和单元测试不同
集成测试关注的是接口的集成,和单元测试只关注单个单元不同,因此在具体的测试方法上也不同,集成测试在用例设计方面和单元测试会有一定的差别。
集成测试的集成方法
集成方法分类:大棒集成、自底向上集成、自顶向下集成、三明治集成
采用三明治方法的优点:
它将自顶向下和自底向上的集成方法有机地结合起来,不需要写桩程序,因为在测试初自底向上集成已经验证了底层模块的正确性。
采用三明治方法的缺陷:在真正集成之前每一个独立的模块没有完全测试过。
大棒集成方法:
采用大棒集成方法,先是对每一个子模块进行测试(单元测试阶段),然后将所有模块一次性的全部集成起来进行集成测试。
因为所有模块一次集成的,所以很难确定出错的真正位置、所在模块、错误的原因。这种方法并不推荐在任何系统中使用,适合在规模较小的应用系统中使用。