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

2023-05-16

文章目录

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

集成测试(Integration test)

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

集成测试方法和策略

非渐增式集成

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

渐增式集成

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

自顶向下集成

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

自底向上集成

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

三明治集成

  • 定义
    • 三明治集成方法(Sandwich Integration)
    • 三明治集成是一种混合增殖式测试策略,综合了自顶向下和自底向上两种集成方法的优点。
  • 方法
    • 一般对软件结构的上层使用自顶向下结合的方法;
    • 对下层使用自底向上结合的方法;
  • 步骤
    • 首先,确定以哪一层为界来决定使用三明治集成策略。我们确定以B模块为界;
    • 其次,对模块B及其所在层下面的各层使用自底向上的集成策略;
    • 再次,对模块B所在层上面的层次使用自顶向下的集成策略;
    • 然后,把模块B所在层各模块同相应的下层集成;
    • 最后,对系统进行整体测试。
  • 优点
    • 除了具有自顶向下和自底向上两种集成策略的优点之外,运用一定的技巧,能够减少了桩模块和驱动模块的开发。
  • 缺点
    • 在被集成之前,中间层不能尽早得到充分的测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

集成测试(自顶向下,自底向上,三明治) 的相关文章

  • 自顶向下(top down)简介

    无论是在实际生活中还是在学术问题上 xff0c 复杂的问题比比皆是 xff0c 当我们对此类问题毫无头绪的时候 xff0c 自顶向下 xff08 top down xff09 为我们提供了一种可靠的解决方法 自顶向下法将复杂的大问题分解为相
  • 集成测试:自底向上、自顶向下、Big-Bang集成测试、三明治集成测试

    集成测试 xff1a 自底向上 自顶向下 Big Bang集成测试 三明治集成测试 详解测试过程测试方案自顶向下自底向上三明治测试Big Bang集成测试 详解 集成测试也叫组装测试或者联合测试 xff0c 在单元测试完成的基础上进行模块
  • 集成测试(自顶向下,自底向上,三明治)

    文章目录 集成测试 Integration test 集成测试方法和策略非渐增式集成渐增式集成 自顶向下集成自底向上集成三明治集成 集成测试 Integration test 也叫组装测试或联合测试 xff0c 是在单元测试的基础上 xff
  • 软件测试类型——集成测试

    已剪辑自 https blog csdn net vikeyyyy article details 80900540 简介 集成测试 xff08 Integration Testing xff09 xff0c 也叫组装测试或联合测试 在单元
  • C/C++的单元/集成测试工具 - VectorCAST/C++

    什么是VectorCAST C VectorCAST C 是一套集成的软件测试解决方案 能显著降低C C 测试过程中为达到安全性检测和嵌入式系统关键任务检测所必需的时间 工作量及成本 VectorCAST C 可自动实现 为单元测试和集成测
  • 【软件测试】理论知识基础第一章

    前言 骗取自己的救赎 直到和染尘斑驳的玫瑰一起坠入深渊 软件测试 理论知识基础第一章 一 认识软件测试 1 什么是软件测试 二 常见的测试分类 1 阶段划分 2 代码可见度划分 3 扩展 总结 三 模型 1 质量模型 2 W模型 四 软件测
  • 05 集成测试:如何进行微服务的集成测试?

    上一课时 我讲解了微服务架构下的单元测试 它是一种白盒测试技术 目的是验证软件代码中的每个单元 方法或类等 是否符合预期 本节课我来讲解微服务架构下的集成测试 集成测试的概念 说到集成测试 相信每个测试工程师并不陌生 它不是一个崭新的概念
  • 如何使用Java进行集成测试?

    在Java中进行集成测试有很多种方法 以下介绍一种比较常见的基于JUnit框架的集成测试方法 确定需要测试的代码 首先需要确定需要进行集成测试的代码 可以是整个应用程序 也可以是特定的模块或者方法 配置测试环境 在测试环境中创建测试数据库
  • CPU性能测试项

    CPU性能测试项 一 思维导图 二 CPU简介 中央处理器 CPU 是电子计算机的主要设备之一 电脑中的核心配件 其功能主要是解释计算机指令以及处理计算机软件中的数据 CPU是计算机中负责读取指令 对指令译码并执行指令的核心部件 中央处理器
  • 持续集成——jenkins自动化测试环境安装部署

    介绍 Jenkins是一个独立的开源软件项目 是基于Java开发的一种持续集成工具 用于监控持续重复的工作 旨在提供一个开放易用的软件平台 使软件的持续集成变成可能 前身是Hudson是一个可扩展的持续集成引擎 可用于自动化各种任务 如构建
  • Jmeter性能测试3——JMETER-脚本优化

    断言 作用 用于检查检测在测试中得到的响应结果是否符合预期 用以保证性能测试过程中数据交互与预期一致 主要是用来调试 真正执行压力测试时候 断言禁用 目的 在request 请求 返回层面加一层判断机制 实现的过程 在请求下添加断言 请求不
  • 【测试开发篇】测试用例及方法

    文章目录 测试用例的基本要素 案例 设计测试用例的具体设计方法 基于需求进行测试用例的设计 等价类 边界值 判定表 因果图 场景设计法 错误猜测法 正交排列 测试用例的基本要素 测试用例 Test Case 是为了实施测试而向被测试的系统提
  • 【华为OD】

    目录 一 题目描述 二 输入描述 三 输出描述 四 题目解析 五 Java玩法 六 JavaScript玩法 一 题目描述 现在有 n 个容器服务 服务的启动可能有一定的依赖性 有些服务启动没有依赖 其 次服务自身启动加载会消耗一些时间 给
  • 单元测试、集成测试、系统测试、验收测试

    本文是按照开发阶段划分测试技术 单元测试 单元测试是对软件组成单元进行测试 目的是检验软件基本组成单元的正确性 测试对象是软件设计的最小单位 模块 又称为模块测试 单元测试的实质是代码测代码 测试阶段 编码后或者编码前 TDD 编码前属于测
  • 【软件测试】单元测试、系统测试、集成测试的区别及示例

    目录 一 单元测试 二 集成测试 三 系统测试 一 单元测试 定义 单元测试是对软件组成单元进行测试 细粒度 测试目的 用于检验软件基本组成单位的正确性 测试对象 一个工作单元 通常是类内部的一个方法 测试使用方法 白盒测试 测试依据 详细
  • 华为OD机试真题- 微服务的集成测试【2023Q1】【JAVA、Python、C++】

    题目描述 现在有n个容器服务 服务的启动可能有一定的依赖性 有些服务启动没有依赖 其次服务自身启动加载会消耗一些时间 给你一个 nxn 的二维矩阵 useTime 其中 useTime i i 10 表示服务 i 自身启动加载需要消耗10s
  • 芯片测试(3)——DC测试

    芯片测试 3 DC测试 一 电源电压测试 二 地引脚测试 三 I V测试 四 电阻测试 五 对应测试项 六 简述及测试方法描述 6 1 VIL VIH 加流测压 FIMV 6 2 VOL VOH 加流测压 FIMV 6 3 IIL IIH
  • python3.10+selenium4.9.1初始化安装踩坑记

    2023年了 又开始捯饬web UI自动化 前些年appium写的比较多 现在又开始依据记忆中对于selenium的留存 开始练习用python来写 一 安装 首先 pycharm安装 python3 10安装 python环境变量设置为前
  • 什么是集成测试?集成测试方法有哪些?

    1 基本概念 将软件集成起来后进行测试 集成测试又叫子系统测试 组装测试 部件测试等 集成测试主要是针对软件高层设计进行测试 一般来说是以模块和子系统为单位进行测试 2 集成测试包含的层次 1 模块内的集成 主要是测试模块内各个接口间的交互
  • 醒醒吧,这才叫自动化测试最全教程,看完可就业!

    最近看到很多粉丝在后台私信我 叫我做一期自动化测试的教程 其实关于这个问题 我也早就在着手准备了 我录制了一整套完整的Python自动化测试的教程 都上传在网盘里 大家有兴趣的可以去看一下 一 自动化测试概念 Python自动化测试就是把以

随机推荐

  • Proxifier设置代理上网详细操作

    分享知识 传递快乐 Proxifier配置上网代理 Proxifier 是一款功能非常强大的socks5客户端 xff0c 可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链 支持Xp xff0c Vista
  • NVIDIA Jetson系列刷机篇(2)之快速恢复

    在填坑NVIDIA Jetson系列开发版时难免有对系统环境造成严重污染的情况 xff0c 这时就要重新刷机了 拿起Jetson4下载刷机镜像解压等等 xff0c 安装依赖漫长的操作耗费一天就过去了 下面接上篇在刷完NVIDIA的主机器 u
  • 暴力推导 Beta 函数与 Gamma 函数关系式

    B x y 61 x y x 43 y 其中 x 61 43 0 e t t x 1 d t B x y 61 1 0 t x 1 1 t y 1 d t
  • 用PyQt5写了个音乐播放器

    首先先展示一下界面 xff08 不美观但好用 xff09 除了不能看歌词功能该有的都有 xff0c 作为本地播放器还挺好用的 xff0c 界面是用PyQt5做的 下面是源代码 xff1a span class token keyword i
  • STM32F4无人机动力旋翼拉力测试

    更多交流欢迎关注作者抖音号 xff1a 81849645041 目的 了解无人机电调 电机转速 旋翼拉力与油门给定信号之间的关系 xff0c 可以通过相关设备进行拉力测试 实验原理 飞机旋翼绕旋翼旋转轴旋转时 xff0c 每个叶片的工作类同
  • STM32F4无人机6轴运动处理组件MPU6050

    目的 学习MPU6050的原理 MPU6050初始化方法 原理 MPU6050是9轴运动处理传感器 它集成了3轴MEMS陀螺仪 xff0c 3轴MEMS加速度计 xff0c 以及一个可扩展的数字运动处理器DMP xff08 Digital
  • 基于STM32F030驱动BMP180气压传感器

    目的 了解气压传感器 BMP180 的驱动原理 xff0c 通过配置 STM32F030 的GPIO及 IIC通信时序 xff0c 采集气压传感器 BMP180的值 原理 在测量海拔高度时 xff0c 传统的做法是通过测量某一高度的大气压力
  • 10G大文件上传最全方案:秒传、断点续传、分片上传,包教会!

    上一篇 xff1a 麻了 xff01 Fastjson 再曝反序列化漏洞 前言 文件上传是一个老生常谈的话题了 xff0c 在文件相对比较小的情况下 xff0c 可以直接把文件转化为字节流上传到服务器 xff0c 但在文件比较大的情况下 x
  • vscode运行C/C++程序

    一 vsocde对C C 43 43 的支持 Visual Studio Code对C C 43 43 语言的支持由Microsoft C C 43 43 扩展程序提供 它使得C C 43 43 在Windows Linux和macOS等跨
  • KEIL下载键变灰色,ST-link无法下载程序

    昨天在调试板子时 xff0c ST LINK下载还是好好的 xff0c 今天开始调试程序 xff0c 突然发现 xff0c KEIL的下载键变成了灰色 xff0c 无法下载 xff0c 如下 xff1a 后面仔细核对了KEIL的设置 xff
  • C++编程中常遇到的问题

    1 路径中不能存在空格 2 for等循环结构中 xff0c 如果判断条件的变量是size t或者unsigned时 xff0c 最好不要采用 i 来递减变量 xff0c 因为这两种类型没有负数 3 引用的引用不可用 xff1a int am
  • keil 采用 makefile 实现编译

    1 说明 由于keil 软件需要收费 xff0c 故有许多公司或者个人希望能够使用makefile 实现编译功能 如此一来 xff0c 就可以脱离了keil 公司的限制 xff0c 自由开发 2 开发环境 xff08 1 xff09 win
  • ROS常用消息

    1 sensor msgs sensor msgs是存储传感器常用消息数据message的包 xff0c 提供各种消息数据message的转换方法并定义了常用传感器使用的消息类型message xff0c 如相机 激光扫描测距仪等 xff1
  • .net7 通过 JsonTranscoding 实现 gRPC 与 Web API 一鱼两吃

    目标 在一个网站内 xff0c 用一套proto即提供gPRC 调用 xff0c 又提供 Web API 调用 实现方法 根据微软官方James Newton King xff08 Newtonsoft json 作者 xff09 的文章
  • 滑模控制程序及Simulink仿真

    最近在看论文 xff0c 不太懂滑模控制是个什么东西 xff0c 便开始学习 使用了这篇文章的代码进行实现 https blog csdn net sinat 38887014 article details 103115218 不过这篇文
  • 飞行器设计大作业

    防空导弹主级燃料相对质量因数计算 问题描述 问题解答 详细实验报告及代码见链接 xff1a 飞行器设计大作业 MATLAB运行结果如下图所示
  • c++编程时为什么老是出现cout未定义

    include lt iostream gt using namespace std 加上这句 cout输出流类声明和定义都在iostream之中 对于非标准C 43 43 而言是iostream h 其名字位于std空间 xff0c 对于
  • webApp优化心得

    webapp性能优化 本文中提到的app前端采用的技术栈是Vue全家桶 43 原生js http请求优化 xff1a 场景1 xff1a 当用户操作过快时 xff0c 页面之间跳转时间缩短 xff0c 在网络状态不可控的情况下 xff0c
  • Win10 ctrl快捷键的全称

    Win10平台中 xff0c 以下快捷键在文本编辑器中通常有类似的作用 xff1a ctrl 的全称是 control xff0c 控制 ctrl 43 全称功能AAll全选CCopy复制选中的文本FFind在文本中查找指定的字符串NNew
  • 集成测试(自顶向下,自底向上,三明治)

    文章目录 集成测试 Integration test 集成测试方法和策略非渐增式集成渐增式集成 自顶向下集成自底向上集成三明治集成 集成测试 Integration test 也叫组装测试或联合测试 xff0c 是在单元测试的基础上 xff