集成测试(自顶向下,自底向上,三明治)

文章目录

      • 集成测试(Integration test)
      • 集成测试方法和策略
        • 非渐增式集成
        • 渐增式集成
      • 自顶向下集成
      • 自底向上集成
      • 三明治集成

集成测试(Integration test)

  • 也叫组装测试或联合测试,是在单元测试的基础上,将所有模块按照设计要求,集成为系统或子系统,并进行测试。
  • 验证程序和概要设计说明的一致性,具体检测包括功能正确性验证、接口测试、全局数据结构等。
  • 单元测试与集成测试分别谁来完成?
    • 单元测试主要是由开发人员来承担,相关测试人员辅助。
    • 集成测试主要由测试人员负责测试。为了更好的进行集成测试,测试人员需要参加到产品的概要设计中去。

集成测试方法和策略

非渐增式集成

  • 定义
    • 又叫大棒集成(Big-bang Integration)
    • 把所有通过了单元测试的模块按设计要求,一次全部组装起来,然后进行整体测试。
  • 目的
    • 尽可能缩短测试时间,使用最少的测试用例验证系统。
  • 特点
    • “急于求成”
  • 适用于整体测试
    • 当项目更新少数功能时可以用大棒集成法。
  • 缺点
    • 大爆炸集成也称为一次性组装或整体拼装,这种集成测试策略的做法就是把所有通过单元测试的模块一次性集成到一起进行测试,不考虑组件之间的互相依赖性及可能存在的风险。
    • 可能发现一大堆错误,为每个错误定位和纠正非常困难。

渐增式集成

  • 定义
    • 从一个模块开始,测一次添加一个模块,边组装边测试,以发现与接口相联系的问题。
    • 渐增式集成策略是先进行模块测试,然后将这些模块逐步组装成较大的系统,每连接一个模块进行一次测试。按组装次序,渐增式又常有多种方案:自顶而下增值策略、自底向上增值策略、混合增值策略。
    • 无论采用哪种方案,都需要设计驱动模块或桩模块,对每一个新组装的子系统进行测试主要采用黑盒法,对发现问题较多的子系统或模块应该用白盒法作回归测试。
  • 缺点
    • 编写驱动模块与桩模块
  • 优点
    • 更早发现模块间的接口错误,有利于错误定位。
  • 集成分类
    • 基于功能分解的集成(基于功能结构图)
      • 自顶向下集成
      • 自底向上集成
      • 三明治集成
    • 基于调用图的集成
      • 基于路径的集成

自顶向下集成

  • 定义
    • 自顶向下集成(Top-down Integration)
    • 按照系统层次结构图,以主程序模块为中心,自上而下按照深度优先或者广度优先策略,对各个模块一边组装一边进行测试。
  • 类型
    • 广度优先
    • 深度优先
  • 步骤
    集成测试(自顶向下,自底向上,三明治)_第1张图片
    • 首先以主模块为所测模块兼驱动模块,所有直属于主模块的下层模块全部用桩模块代替,对主模块进行测试;
    • 采用深度优先或广度优先的策略,用实际模块替换相应的桩模块,每次只替换一个桩模块。然后再把该桩模块的直接下属模块用新的桩模块代替,与已测试过的模块或子系统组装成新的子系统;
    • 回归测试(即重新执行以前做过的全部测试或部分测试),排除组装过程中引入新的错误的可能;
    • 只有每组测试完成后,才着手替换下一个桩模块;
    • 判断是否所有的模块都已组装到系统中?是则结束测试,否则转到第二步继续执行(着手替换下一个桩模块 )。
  • 优点
    • 能尽早地对程序的主要控制和决策机制进行检验,因此较早地发现错误。(在功能划分合理的程序结构中,错误常常出现在较高的层次里,因而较早就能遇到。)
    • 减少了驱动模块开发的费用。
  • 缺点
    • 在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,重要数据不能及时回送到上层模块,因此测试并不充分。
    • 需要建立大量的桩模块。
  • 解决这个问题有几种办法
    • 把某些测试推迟到用真实模块替代桩模块之后进行;
    • 进一步开发能模拟真实模块功能的桩模块;
    • 和自底向上集成模块一块进行测试。
    • 总结
      • 第一种方法又回退为非增量式的集成方法,使错误难于定位和纠正;
      • 第二种方法无疑要大大增加开销;
      • 第三种方法比较切实可行,后面专门讨论。

自底向上集成

  • 定义
    • 自底向上集成(Bottom-up Integration)
    • 从系统层次结构图的最底层模块开始进行组装和集成测试的方式。
  • 目的
    • 从依赖性最小的底层模块开始,按照层次结构图,逐层向上集成,验证系统的稳定性。
  • 步骤
    集成测试(自顶向下,自底向上,三明治)_第2张图片
    • 由驱动模块控制最底层模块的并行测试,也可以把最底层模块组合起来以实现某一特定软件功能的簇,由驱动模块控制它进行测试。
    • 用实际模块代替驱动模块,与它已测试的直属子模块集成为子系统。
    • 为子系统配备驱动模块,进行新的测试
    • 判断是否已集成到达主模块,是否结束测试,否则执行2。
    • 为避免引入新错误,还需要不断地进行回归测试,即全部或部分地重复已做过的测试。
  • 优点
    • 自底向上集成方法不用桩模块;
    • 多个模块可并行测试,提高测试效率;
    • 测试用例的设计亦相对简单(因驱动模块+模块群构成的子系统只是完成特定功能,而不是全部功能)。
  • 缺点
    • 程序到最后一个模块加入时才具有整体形象,即对程序的主要控制直到最后才接触到;
    • 需要大量驱动模块。
  • 适用范围
    • 底层模块接口比较稳定的产品;
    • 高层模块接口变更比较频繁的产品;
    • 底层模块开发和单元测试工作完成较早的产品。
  • 总结
    • 自底向上集成测试与自顶向下集成测试方法优缺点正好相反。
    • 因此,在测试软件系统时,应根据软件的特点和工程的进度,选用适当的测试策略。
    • 有时混合两种策略更有效,即采用混合式集成–三明治集成

三明治集成

  • 定义
    • 三明治集成方法(Sandwich Integration)
    • 三明治集成是一种混合增殖式测试策略,综合了自顶向下和自底向上两种集成方法的优点。
  • 方法
    • 一般对软件结构的上层使用自顶向下结合的方法;
    • 对下层使用自底向上结合的方法;
  • 步骤
    • 首先,确定以哪一层为界来决定使用三明治集成策略。我们确定以B模块为界;
    • 其次,对模块B及其所在层下面的各层使用自底向上的集成策略;
    • 再次,对模块B所在层上面的层次使用自顶向下的集成策略;
    • 然后,把模块B所在层各模块同相应的下层集成;
    • 最后,对系统进行整体测试。
  • 优点
    • 除了具有自顶向下和自底向上两种集成策略的优点之外,运用一定的技巧,能够减少了桩模块和驱动模块的开发。
  • 缺点
    • 在被集成之前,中间层不能尽早得到充分的测试。

你可能感兴趣的:(软件测试-理论知识)