第六章集成测试

一、学习目的与要求

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

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

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

  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. 混合集成具有自顶向下和自底向上两种集成策略的优点,但是在被集成之前,中间层不能尽早得到充分的测试。
  1. 集成测试是介于单元测试和 系统测试之间的测试。
  2. 实现接口和代码复用的有效机制是继承
  3. 集成测试主要是为了发现概要设计阶段的错误码。
  4. 简述集成测试过程。

根据集成测试不同阶段的任务,可以把集成测试划分为5个阶段:
(1)制定集成测试计划;
(2)设计集成测试;
(3)实施集成测试;
(4)执行集成测试;
(5)评估集成测试;

  1. 通常用于系统规模较小的测试项目中的集成方式是()
    A一次性集成
    B自顶向下集成
    C自底向上集成
    D混合集成
  2. 通常用于嵌入式系统和面向对象系统的集成方式是()
    A基于消息的集成
    B基于使用的集成
    C高频集成
    D混合集成
  3. 经验表明,在程序测试中,某模块与其他模块相比,若该模块已发现并改正的错误较多,则该模块中残存的错误数目与其他模块相比,通常应该
    A较少
    B较多
    C相似
    D不确定
  4. 集成测试对系统内部的交互以及集成后系统功能检验了__质量的
    A正确性
    B可靠性
    C可使用性
    D可维护
  5. 简述面向对象的软件测试与传统的软件测试的区别。
  1. 传统的测试计算机软件的策略是从"小型测试"开始·逐步走向"大型测试"
  2. 即从单元测试开始,然后逐步进入集成测试、最后是有效性和系统测试。
  3. 面向对象程序的结构不再是传统的功能模块结构,作为一个整体,
  4. 原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不可能
  5. 而且面向对象软件抛弃了传统的开发模式。
  6. 对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果
  7. 因此传统的测试模型对面向对象软件已经不再适用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值