第六章集成测试

一、学习目的与要求

集成测试是介于单元测试和系统测试之间的过渡阶段。通过本章的学习,应了解集成测试与系统测试的区别,了解集成测试与开发过程之间的关系,了解集成测试的层次和集成测试的重点,理解集成测试的概念和集成测试的过程,掌握集成测试的分析方法及集成测试的策略,掌握集成测试用例设计的方法。

二、考核知识点与考核目标

(一)集成测试概述(一般)

  1. 理解:集成测试的概念

介于单元测试和系统测试之间的过渡阶段,与概要设计对应,是单元测试的扩展和延伸

  1. 理解:集成测试与系统测试的区别
类别 集成测试 系统测试
对象不同 各个模块集成的组件 软硬件等
时间不同 单元测试之后 集成测试之后
方法不同 灰盒测试 黑盒测试
内容不同 模块之间的接口和集成后的功能 整个系统的功能和内容
目的不同 发现单元之间的错误,和与概要设计不同的地方 比较需求说明发现不符合或矛盾的地方
角度不同 测试工作人员 用户
  1. 理解:集成测试与开发的关系(相辅相成
  2. 理解:集成测试的重点
  1. 数据是否会丢失,是否正常传递
  2. 是否存在资源竞争
  3. 是否实现组合起来的父功能
  4. 是否兼容
  5. 数据结构是否正确且不被不正常修改
  6. 误差是否会累积扩大
  1. 理解:集成测试的层次

传统软件

  1. 模块内集成
  2. 子系统内集成
  3. 子系统间集成

面向对象应用系统

  1. 类内集成
  2. 类间集成

(二)集成测试的分析方法(重点)

  1. 理解:体系结构分析
  1. 跟踪需求分析,划分结构层次
  2. 分析组件间的依赖关系,确定集成模块大小
  1. 理解:模块分析(体系结构的细化)

模块分析角度

  1. 确定测试模块
  2. 找出相关的所有模块,并排列优先级
  3. 按优先级集成模块

易错模块特性

  1. 与多个软件需求相关,或与关键功能相关
  2. 处于系统架构顶层
  3. 本身实现逻辑复杂或容易出错
  4. 被多个模块调用或被频繁调用

确定关键模块建议

  1. 与生产者交流
  2. 根据镜头分析工具找出高内聚模块、被多次调用模块、顶层模块
  3. 需求分析
  4. 相关文档分析
  1. 理解:接口分析(以概要设计为基础)

步骤

  1. 确定系统边界
  2. 确定模块内部接口
  3. 确定子系统哪模块接口
  4. 确定子系统间接口
  5. 确定系统与操作系统接口
  6. 确定系统与硬件接口
  7. 确定系统与第三方软件接口

分类

  1. 函数或方法接口
  2. 消息接口
  3. 类接口
  4. 其他接口
  1. 理解:风险分析
  1. 风险类型:项目风险、商业风险、技术风险
  2. 风险识别:集成测试常见风险(技术风险、人员风险、物料仪器风险、管理风险、市场风险)
  3. 风险评估:确定风险发生的概率和后果
  4. 风险处理
    1)风险控制:主动采取措施避免风险、消灭风险,或一旦风险发生,立即采取紧急应急方案
    2)风险自留:风险后果不大
    3)风险转移:转移到其他测试阶段
  1. 理解:可测试性分析(项目开发工作开始的需求)
  2. 理解:集成测试策略分析
  1. 可以对被测对象进行充分测试,尤其是关键模块
  2. 按照策略划分模块和接口清晰明了,尽可能地减少后续操作难度盒辅助工作量
  3. 各种资源能充分利用

(三)集成测试策略(重点)

  1. 理解:基于调用图的集成

成对集成:免除桩/驱动器开发工作,用实际代码代替
相邻集成:降低桩/驱动器开发工作量,用邻居代替

  1. 理解:基于路径的集成:结合功能测试和结构测试,需要投入标识MM路径的时间
  2. 理解:分层集成(通讯系统)

目的:验证稳定性和可互操作性
步骤:

  1. 划分层次
  2. 确定内部集成策略
  3. 确定层次间的集成策略

适用范围:有明显线性层次关系的系统

  1. 理解:基于功能的集成

目的:验证关键功能
步骤:

  1. 确定优先级别
  2. 分析优先级最高的功能路径
  3. 增加关键功能,继续步骤2,到模块全部集成

适用范围:主要功能风险性大的产品、探索型技术研发项目、注重功能实现的项目、对所实现对功能信心不强的产品

  1. 理解:高频集成

目的:避免遗留集成故障,控制基线偏差
步骤:

  1. 开发人员提供增量代码,测试人员完成测试包
  2. 集成测试人员将修改部分形成新的集成体并运行测试包
  3. 评价结果

优点:高效、可预测、并行、容易定位错误、尽早查处错误、减少桩代码
缺点:不容易发现有价值的问题、初始阶段集成不平稳、风险高
适应范围:迭代或增量过程模型开发产品

  1. 理解:基于进度的集成

目的:缩短进度
优点:可并行、进度快
缺点:缺乏整体性、不稳定、桩模块/驱动模块工作量大
适应范围:进度优先质量的产品

  1. 理解:基于风险的集成

目的:保证系统稳定性
优点:系统快速稳定开发
缺点:测试成本高
适应范围:模块风险大的项目

  1. 理解:基于事件的集成

目的:验证消息路径的正确性从而验证稳定性
优点:直观性强、耗时少、使用实例少、只维护顶模块驱动器
缺点:忽略接口错误、测试冗余
适应范围:面向对象系统、基于有限状态机的嵌入式系统

  1. 理解:基于使用的集成

目的:根据依赖关系验证稳定性
步骤:划分类的耦合关系,测试独立的类,测试服务器的类
适应范围: 面向对象软件系统

  1. 应用:大爆炸集成(所有单元测试模块一次性集成进行测试)

目的:缩短测试时间
优点:可并行、测试用例少、简单易行
缺点:容易遗漏潜在错误、不能全局测试、容易出现大量错误
适应范围:前期稳定产品、功能不多产品

  1. 应用:自顶向下集成

目的:按设计顺序测试验证稳定性
步骤:主模块为测试驱动,其他为桩模块;重复测试
优点:提前发现问题,可并行,减少驱动维护,容易错误定位
缺点:底部变更影响全部
适应范围:结构化编程产品

  1. 应用:自底向上集成

目的:从依赖关系最小开始验证稳定性
优点:效率提高、减少桩模块
缺点:驱动模块工作量大
适应范围:结构简单的产品

  1. 应用:三明治集成

目的:综合利用自顶向下集成自底向上集成
步骤:确定那一层为界
优点:减少桩模块和驱动模块的工作量
缺点:中间层不能充分测试
适应范围:多数软件开发项目

  1. 应用:改进的三明治集成

目的:重复发挥测试的并行性
步骤:并行测试目标层
优点:继承三明治集成优点,且中间层能充分测试
缺点:中间层选择不适当,增加驱动模块和桩模块工作量
适应范围:大多数软件开发项目

  1. 集成测试过程
  1. 制定测试计划
    1)确定测试对象和范围
    2)评估数量、难度和工作量
    3)确定角色分工和任务划分
    4)标识测试各个阶段时间任务和约束条件
    5)考虑一定的风险分析和应急计划
    6)考虑测试工具、环境等资源
    7)考虑外援支持力度和深度
  2. 设计集成测试:被测对象结构分析;集成测试模块、接口、策略、工具、环境分析;集成测试工作量估计和安排
  3. 实施集成测试:集成测试用例、规程、代码设计;集成测试脚本开发;集成测试工具选择或开发
  4. 执行集成测试
  5. 评估集成测试

(四)集成测试用例设计(重点

  1. 应用:集成测试用例设计
类别 分析技术
系统运行 等价类划分、边界值分析、基于决策表的测试
正向测试 输入域、输出域、等价类划分、状态转换、规范导出
逆向测试 错误猜测、基于风险、基于故障、边界值分析、特殊值、状态转换
满足特殊需求 规范导出
高覆盖 功能覆盖分析、接口覆盖分析
补充 需求增加分析

三、习题

  1. 集成测试有哪些不同的集成方法?简述不同方法的特点。

集成测试通常有一次性集成、自顶向下集成、自底向上集成和混合集成 4 种集成方法。

  1. 一次性集成方法
    1)需要的测试用例数目少,
    2)测试方法简单、易行。
    3)但是由于不可避免存在模块间接口、全局数据结构等方面的问题,所以一次运行成功的可能性不大;
    4)如果一次集成的模块数量多,集成测试后可能会出现大量的错误,给程序的错误定位与修改带来很大的麻烦;即使集成测试通过,也会遗漏很多错误进入系统测试。
  2. 自顶向下集成在测试的过程中,
    1)可以较早地验证主要的控制和判断点;
    2)一般不需要驱动程序,减少了测试驱动程序开发和维护的费用;
    3)可以和开发设计工作一起并行执行集成测试,能够灵活的适应目标环境;
    4)容易进行故障隔离和错误定位。但是在测试时需要为每个模块的下层模块提供桩模块,桩模块的开发和维护费用大;
    5)桩模块不能反映真实情况,重要数据不能及时回送到上层模块,导致测试不充分;
    6)涉及复杂算法和真正 I/O 的底层模块最易出问题,在后期才遇到导致过多的回归测试。
  3. 自底向上集成
    1)可以尽早的验证底层模块的行为;
    2)提高了测试效率;
    3)一般不需要桩模块;
    4)容易对错误进行定位。
    5)但是直到最后一个模块加进去之后才能看到整个系统的框架;
    6)驱动模块的设计工作量大;
    7)不能及时发现高层模块设计上的错误。
  4. 混合集成具有自顶向下和自底向上两种集成策略的优点,但是在被集成之前,中间层不能尽早得到充分的测试。

你可能感兴趣的:(#,01335软件测试技术,集成测试,软件测试)