第六章集成测试

一、学习目的与要求

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

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

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

  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 小时前
强大的开源API接口可视化管理平台-YApi
自动化测试·软件测试·yapi
daopuyun21 小时前
CNAS/CMA软件检测实验室源代码漏洞测试工具选型要求与比对
软件测试·测试工具·软件检测·cnas认可·cma认定
Warren981 天前
Pytest Fixture 作用域与接口测试 Token 污染问题实战解析
功能测试·面试·单元测试·集成测试·pytest·postman·模块测试
美团程序员2 天前
80道经典常见测试面试题
软件测试·面试·职场和发展·软件测试面试
测试秃头怪2 天前
面试大厂就靠这份软件测试八股文了【含答案】
自动化测试·软件测试·python·功能测试·面试·职场和发展·单元测试
测试杂货铺2 天前
软件测试面试题大全,你要的都在这。。
自动化测试·软件测试·python·功能测试·面试·职场和发展·测试用例
测试大圣2 天前
软件测试基础知识总结(超全的)
软件测试·python·功能测试·测试工具·职场和发展·单元测试·测试用例
程序员小远2 天前
UI自动化测试用例管理平台搭建
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
懒羊羊大王&3 天前
软件测试之博客系统项目实战(补充和解析部分)
selenium·单元测试·测试用例·集成测试