Hello!大家好,我是 BugBear,一个专注于分享软件测试干货的测试开发。上一篇文章我们讲了 单元测试 相关知识,今天我们来聊聊集成测试的相关内容。

一、什么是集成测试?

我们通过工厂组装手机的例子明白了单元测试,每个电子元件或者零部件就是一个单元测试,那么将这些电子元件或者零部件组装起来形成一个功能模块组件,例如喇叭,听筒,麦克,FPC,按键板,摄像头,LCD 等。针对这些功能模块组件进行测试,就类比于我们所知的集成测试。

集成测试的定义如下:

集成测试也叫组装测试、联合测试、子系统测试或部件测试。集成测试是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统。

集成测试的含义非常简单,就是将单元测试模块逐个集成/组合,并将行为测试为组合单元。该测试的主要功能或目标是测试单元/模块之间的接口。我们通常在单元测试之后进行集成测试。一旦创建并测试了所有单个单元,我们就开始组合这些 “单元测试” 模块并开始进行集成测试。首先单独测试各个模块。模块经过单元测试后,逐个集成,直到所有模块都集成在一起,检查组合行为,验证需求是否正确实现。在这里我们应该理解,集成测试不会在周期结束时发生,而是与开发同时进行,基于开发实现不断在原来的基础上逐步融入新的子模块进行集成测试。

二、为什么要做集成测试?

有人可能会提出疑问,我们把每个单元测试都测试完毕了,每个单元都按照要求实现了对应功能,为什么还需要将单元组合起来进行集成测试?

三、集成测试层次

集成测试层次如下:

四、集成测试类型

集成测试基于不同的测试策略衍生出不同类型的测试方式,下面将介绍主要的集成测试的类型。

1、大爆炸集成类型


大爆炸集成类型(俗称 Big bang)一次性集成了所有模块,即它不会逐个集成模块。它会在集成后验证系统是否按预期工作。如果在完全集成的模块中检测到任何问题,则很难找出导致该问题的模块。
- 优点

- 缺点
大爆炸集成类型是一个耗时的过程,找到一个自身有缺陷的模块会耗费大量时间与精力,因为他是一次性集成了所有模块,我们无法明确知道具体是哪个模块出了问题,必须要进行逐一排查来定位问题模块。修复完毕问题模块后若继续出现问题,我们没法判断是由于修复代码时造成了其他缺陷还是其他模块本身存在的缺陷导致,为了定位问题又需要花费时间排查。

- 适用范围

2、自上而下集成策略类型

自上而下集成策略分为 深度优先集成广度优先集成 两种策略。我们先来看看深度优先集成策略。

- 深度优先集成策略

从上图可以看出深度优先集成策略以纵向为基础不断向下集成模块组件进行集成测试,给 A 加一个驱动调用 A,先给 A 加一个 B,其他的虚拟数据(使用 Stub 桩程序),然后才给 B 加入 E(替换 S4),以此类推。。观察各单元的功能是否正常。深度优先集成策略的核心是先保证一条流程先走下来

- 广度优先集成策略

从上图可以看出广度优先集成策略以横向为基础不断横向集成模块组件进行集成测试,给 A 加一个驱动调用 A,先给 A 加一个 B,其他的虚拟数据(使用 Stub 桩程序),然后才给 B 加入 E(替换 S2),以此类推。。观察各单元的功能是否正常。广度优先集成策略的核心是先保证同一级的单元先集成

- 自上而下集成策略优点:

- 自上而下集成策略缺点:

- 自上而下集成策略适用范围:

3、自下而上集成策略类型

自下而上集成策略是先对程序结构最底层的代码进行集成与测试,然后不断融入上级模块或代码再次进行扩展测试。
组件是自底向上进行组装,对于一个给定层次的组件,它的子组件 (包括子组件的所有下属组件) 已经组装并测试完成,所以不再需要桩程序

通过上图可以看到,从程序结构最底层从下往上进行组装与测试,先测试 E,然后 E+B,以此类推。其他分支按照同样的方式进行组装测试,最后将所有分支与上级模块 A 组装进行测试。

- 自下而上集成策略优点:

- 自下而上集成策略缺点:

- 自下而上集成策略适用范围:

4、三明治集成策略类型

通过上面的学习我们不难发现,自上而下集成策略与自下而上集成策略都有各自的优点与缺点,那么我们能不能发展两者所长,避其两者所短呢?答案是当然的,这就出现了三明治集成策略!

三明治集成策略相当于将自下而上集成策略和自上而下集成策略结合起来

- 优点:集合了自下而上集成策略和自上而下集成策略,发展两者所长,避其两者所短
- 缺点:中间层在被集成前测试不充分
- 适用范围:大部分软件开发项目都可以使用这种集成策略

文末结语

BugBear 软件测试,专注于分享测试干货,在分享的过程中提升自己,欢迎关注,交流成长。


↙↙↙阅读原文可查看相关链接,并与作者交流