Skip to content

Latest commit

 

History

History
86 lines (52 loc) · 5.99 KB

3_2_集成测试详解.md

File metadata and controls

86 lines (52 loc) · 5.99 KB

§ 3.2 - 集成测试详解

一、概念

即使软件中的各个单元经过单元测试后发现均无问题,将这些单元集成到一起后,各单元在协同工作时仍然可能出现预料之外的问题。因此,执行集成测试工作是非常必要的。

集成测试 (Integration Test) (亦称综合测试、组装测试、联合测试):指的是在单元测试工作完成之后,按照软件在设计阶段时所确定的结构图将每一个模块连接起来,进行进一步测试的流程。

  • 目标:软件中的各单元连接完毕后可以正常协同工作、软件行为正常。
  • 测试内容:各单元间的接口、集成后的功能。
  • 开始时间
    • ...... -> 详细设计 -> 编码 -> 编译 -> 单元测试 -> 集成测试 -> 系统测试 -> ...... (理论)
    • 集成测试与单元测试同步进行 (实际工作)
  • 设计依据:概要设计说明书、详细设计说明书。[详见下图 ]

软件开发流程

二、测试内容

集成测试主要针对以下五个方面对软件单元进行测试:

  1. 数据在软件各单元的接口之间传输时是否会出现丢失。
  2. 某个模块是否会破坏另一个模块的功能。
  3. 各个子功能组装完毕后能否实现主功能。
  4. 全局数据结构是否存在问题。
  5. 是否存在误差堆积的问题。

注:集成测试一般由开发工程师与测试工程师共同完成,结合使用白盒与黑盒测试方法。

三、测试形式

1️⃣ 非增量式测试

非增量式测试(先分散再集中):指的是使用一步到位的方法来构造测试,在软件各个相关联模块均完成单元测试后,直接将多个模块集成起来,共同开展集成测试工作。在实际工作中,一般不使用非增量式测试

  • 优点:节省时间。
  • 缺点:难以定位与修复缺陷、可能导致新旧缺陷混杂。

2️⃣ 增量式测试

增量式测试(逐步集中与测试):指的是使用逐步集成的方法来构造测试。增量式测试方法优于非增量式测试方法,具体分为 “自顶向下”、“自底向上”、“混合增量” 三种形式,将通过下方的示例进行详细介绍。

示例:假设待测试软件的各模块结构图如下:

  1. 自顶向下:首先找到主控模块(亦称关键模块),主控模块通常至少具备以下特征之一:

    • 满足软件的主要需求。
    • 在软件的模块结构中位于较高层次。
    • 复杂且易出错。
    • 有明确定义了的性能要求。

    将主控模块作为测试驱动器,根据集成方式,将下层的桩模块依次替换为真正的软件模块进行测试。在每个模块被集成时,都要先进行单元测试。按照深度优先广度优先的方式进行集成。

    • 深度优先方式:优先集成软件结构中的某一个主控路径下的所有模块,路径可以任意选择。
    • 广度优先方式:沿着水平方向依次将每一层中直接隶属于上一层的模块集成起来,直到最后一层。

    以上方的待测试软件为例,深度优先与广度优先的集成顺序分别如下图所示 (按红橙黄绿蓝紫颜色顺序):

  1. 自底向上:与自顶向下形式相反,从底层模块逐渐向主控模块进行测试 (按红橙黄绿蓝紫颜色顺序):

  1. 混合增量:将自顶向下与自底向上两种形式混合使用,同时利用二者优点并摒弃缺点。在实际工作中,一般会优先测试输入输出模块引入了新算法的模块(衍变了的自顶向下形式)。

3️⃣ 比较

自顶向下与自底向上测试方式的比较

自顶向下增量式测试 自底向上增量式测试
优点 可以做到逐步求精、可以直接的看到系统框架、容易发现上层接口存在的缺陷、不需要驱动模块。 容易发现底层模块中存在的缺陷、驱动模块可以模拟所有调用参数,便于生成测试数据。
缺点 需要提供桩模块、底层模块中的缺陷发现时间较晚、如果未接入输入输出模块的话,难以在桩模块中表示测试数据。 直至最后一个模块继承完毕后才可以看到系统框架。

回到顶部

下一章节:§ 3.3 - 系统测试详解

回到主页