当前位置: 首页 > news >正文

质量指标——什么是增量覆盖率?它有啥用途?

目录

引言

什么是增量覆盖率

增量覆盖率有啥用途

1、对不同角色同学的用途

2、对不同规模的业务需求的用途

增量覆盖率的适用人员

增量覆盖率不太适用的情况


引言

        有些质量团队,有时会拿「增量覆盖率」做出测试的准出卡点。 但在实际的使用过程中,由于业务特点不同、对应迭代的需求也不同, 这个指标或带来了不少好处,抑或增加了不少额外工作量。 这里针对增量覆盖率适用场景、不适用场景来做讨论,欢迎补充交流。 

什么是增量覆盖率

增量覆盖率,顾名思义就是代码增量中的覆盖程度,增量指 代码新增、代码修改等信息。 

增量覆盖率有啥用途

说起用途,可分以下角度来谈:

1、对不同角色同学的用途

对于具体角色而言,作用不一:

  • 对一线黑盒测试的QA同学: 通常对于偏黑盒测试的QA同学来说,可以查漏补缺, 如 补充测试用例、反向评估场景覆盖是否全面、对不太熟悉业务本身同学辅助了解场景覆盖等。

        黑盒测试同学而言, 本身测试场景评估与 代码「脱钩『, 就这种作用而言, 属于测试后期, 通过看「增量覆盖率」来评估是否需要补充case。

        偏黑盒测试同学; 如 客户端测试人员,在执行业务测试时属于黑盒测试,对于开发实现的代码分支处理逻辑并不了解,只能根据产品需求和开发的技术文档进行测试用例的编写,但是测试用例难免有遗漏或者开发为实现功能影响其他模块需要进行回测的case,如果RD忘记同步,QA很大程度会遗漏此部分的覆盖,导致测试不完整。

        新增case有以下几种情况:

RD修改公共函数,影响其他模块,忘记同步QA
测试方案遗漏异常边界case
冗余代码。RD测试代码忘记删除

  • 对一线研发同学: 查漏补缺,看冒烟覆盖了什么分支代码等、对不太熟悉业务本身同学辅助了解场景覆盖等
  • 对非一线同学(管理人员): (个人认为) 属于纯管理手段之一,只能对最低要求的测试准出进行评估。 

         ps: 这种情况下,可能需要调研该指标是否真的对一线同学的工作起到了作用,否则可能沦为自嗨指标

  • 对一线白盒测试的QA同学:由于QA本身就是白盒测试(如codediff、模块测试等等),增量覆盖率起到的作用可能比较有限,甚至可能浪费了一点时间来统计增量覆盖率而已。

         具体依赖QA自身的具体测试手段, 白盒、还是黑盒。 对偏黑盒、纯黑盒测试的QA来说,可能用途比较大。 偏白盒测试,甚至某些改动而言, 反而是「累赘」。 

  • 对应一线产品同学: 由于产品同学验收偏黑盒的功能验证, 也可以作为评估场景覆盖是否全面的手段。

        总之, 本质上来说, 作用大小、甚至有无作用, 是根据具体同学而言的, 进一步说是根据具体的QA/研发的个人能力而言的。 同样一个需求改动, 偏黑盒测试的QA, 与精通白盒测试(codediff)的QA, 对 增量覆盖率的诉求肯定是不一样的。 

        根据自己在实际项目中的经验来看,如果一线的QA还需要依赖「增量覆盖率」才能评估自己覆盖是否全面,测试是否充分, 这本身就可能比较危险。 因为增量覆盖率只代表了分支代码覆盖情况,与业务场景的覆盖充分度 并不直接相关。 如果对业务、技术实现本身不熟悉,不能够全面把控,那么即便「增量覆盖率」是100%,也很有可能遗漏了某些业务场景。

2、对不同规模的业务需求的用途

        对于具体业务而言 ,作用不一。具体来说,就是对不同量级、改动特点的需求而言, 作用也会非常不一。比如:

  • 偏小的底层逻辑改动, 比如, 代码cr,改动一个方法。 方法被引用多处, 但实际上只需要覆盖一个入口即可。

        当从增量覆盖率角度来评估时, 可能多个入口均需要覆盖。 这其实是增加了「测试工作量」,但对实际质量并没有显著提升。

  • 非逻辑层面改动。有的甚至纯格式化、 添加一行log日志,打印字符串(不可能存在空指针), codediff下代码就能上线的。 

        当从覆盖率角度来评估时, 你不得不执行业务操作,来做覆盖。 甚至, 有时 log涉及业务场景复杂时, 可能要花不少时间。

  • 当整体改动量比较大、整体测试偏黑盒时, 增量覆盖率不失为一个辅助评估场景覆盖的手段。
  • 当工程中冗余代码、已废弃代码过多时,改动底层方法, 可能连带很多废弃代码需要覆盖,才能达到一定覆盖率。 这是 增量覆盖率可能就不大能准备评估代码覆盖度了。 

ps: 需要从工程中将废弃代码移除后,增量覆盖率评估才会比较准确。

增量覆盖率的适用人员

  • 偏黑盒测试的QA同学
  • 对业务场景、实现本身不太熟悉的QA同学、研发同学(对整体业务、技术实现全貌了解不充分)
  • 产品同学进行验收时,辅助看覆盖情况

增量覆盖率不太适用的情况

  • 偏白盒测试(codediff/模块测试等)的QA同学,主要通过codediff等手段就能上线的情况;
  • 需求整体改动不大,操作业务场景本身比较耗时,通过codediff就能评估充分的情况;

        白盒测试的QA同学,个人理解帮助不大,而且codediff 、 白盒能力越强,可能越不需要这个指标数据。即 codediff(静态分析)越适用的地方,增量覆盖率可发挥空间就越小,甚至可能成为「累赘」。

相关文章:

质量指标——什么是增量覆盖率?它有啥用途?

目录 引言 什么是增量覆盖率 增量覆盖率有啥用途 1、对不同角色同学的用途 2、对不同规模的业务需求的用途 增量覆盖率的适用人员 增量覆盖率不太适用的情况 引言 有些质量团队,有时会拿「增量覆盖率」做出测试的准出卡点。 但在实际的使用过程中,…...

Hive---拉链表

拉链表 文章目录拉链表定义用途案例全量流程增量流程合并过程第一步第二步第三步案例二(含分区)创建外部表orders增量分区表历史记录表定义 拉链表是一种数据模型,主要是针对数据仓库设计中表存储数据的方式而定义的,顾名思义&am…...

日常文档标题级别规范

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…...

C++学习记录——십이 vector

文章目录1、vector介绍和使用2、vector模拟实现insert和erase和迭代器失效补齐其他函数深浅拷贝难点思考1、vector介绍和使用 vector可以管理任意类型的数组&#xff0c;是一个表示可变大小数组的序列容器。 通过vector文档来看它的使用。 #include <iostream> #inclu…...

Lombok常见用法总结

目录一、下载和安装二、常见注释&#xff08;一&#xff09;Data&#xff08;二&#xff09;Getter和Setter&#xff08;三&#xff09;NonNull和NotNull&#xff08;不常用&#xff09;&#xff08;四&#xff09;ToString&#xff08;不常用&#xff09;&#xff08;五&#…...

【Ajax】异步通信

一.概述 概念&#xff1a;AJAX(Asynchronous JavaScript And XML)&#xff1a;异步的 JavaScript 和 XML 作用&#xff1a; 与服务器进行数据交换&#xff1a;通过AJAX可以给服务器发送请求&#xff0c;并获取服务器响应的数据 使用了AJAX和服务器进行通信&#xff0c;就可以使…...

近红外吸收荧光染料IR-808,IR-808 NH2,IR-808 amine,发射808nm 性质分享

中文名称&#xff1a;IR-808 氨基英文名称&#xff1a;IR-808 NH2&#xff0c;IR-808 amine&#xff0c;IR-808-NH2规格标准&#xff1a;10mg&#xff0c;25mg&#xff0c;50mgCAS&#xff1a;N/A产品描述&#xff1a;IR-808&#xff0c;发射808nm&#xff0c;酯溶性染料修饰氨…...

一图来看你需要拥有那些知识储备

技术实践 数据 关系型数据 MySQLSQLServerOraclePostgrSQLDB2 大数据存储 RedisMemcacheMongoDBHBaseHive 大数据处理 Hadoop 数据报表看板 DataGearGrafanaKibanaMetaBase 消息对列 Rabbit MQRock MQActive MQKafka 大数据搜索 SolrElasticSearchLucenHive 服务提…...

复位和时钟控制(RCC)

目录 复位 系统复位 电源复位 备份区复位 时钟控制 什么是时钟&#xff1f; 时钟来源 二级时钟源: 如何使用CubeMX配置时钟 复位 系统复位 当发生以下任一事件时&#xff0c;产生一个系统复位&#xff1a;1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWD…...

OpenWrt 专栏介绍00

文章目录OpenWrt 专栏介绍00专栏章节介绍关于联系方式OpenWrt 专栏介绍00 专栏章节介绍 本专栏主要从开发者角度&#xff0c;一步步深入理解OpenWrt开发流程&#xff0c;本专栏包含以下章节&#xff0c;内如如下&#xff1a; 01.OperWrt 环境搭建02.OperWrt 包管理系统03.Op…...

udk开发-稀里糊涂

一、EDK2简介 1.EDK2工作流 ​ 二、EDK2 Packages 1.Packages介绍 ​ EDK2 Packages是一个容器&#xff0c;其中包含一组模块及模块的相关定义。每个Package是一个EDK2单元。 整个Project的源代码可以被分割成不同的Pkg。这样的设计不仅可以降低耦合性&#xff0c;还有利于分…...

Java之内部类

目录 一.内部类 1.什么是内部类 2.内部类存在的原因 3. 内部类的分类 4.内部类的作用 二.成员内部类 1.基本概念 2.成员内部类的注意点 1.成员内部类可以用private方法进行修饰 2.成员内部类可以直接访问外部类的私有属性 3.外部类可以通过对象访问内部类的私有属性 …...

【MyBatis】篇二.MyBatis查询与特殊SQL

文章目录1、MyBatis获取参数值case1-单个字面量类型的参数case2-多个字面量类型的参数case3-map集合类型的参数case4-实体类类型的参数case5-使用Param注解命名参数总结2、MyBatis的各种查询功能case1-查询结果是一个实体类对象case2-查询结果是一个List集合case3-查询单个数据…...

CE认证机构和CE证书的分类

目前&#xff0c;CE认证已普遍被应用在很多行业的商品中&#xff0c;也是企业商品进入欧洲市场的必备安全合格认证。在船舶海工行业中&#xff0c;也同样普遍应用&#xff0c;很多时候&#xff0c;对于规范中没有明确认证要求的设备或材料&#xff0c;而船舶将来还会去欧洲水域…...

Lesson 8.2 CART 分类树的建模流程与 sklearn 评估器参数详解

文章目录一、CART 决策树的分类流程1. CART 树的基本生长过程1.1 规则评估指标选取与设置1.2 决策树备选规则创建方法1.3 挑选最佳分类规则划分数据集1.4 决策树的生长过程2. CART 树的剪枝二、CART 分类树的 Scikit-Learn 快速实现方法与评估器参数详解1. CART 分类树的 sklea…...

【Unity】程序集Assembly模块化开发

笔者按&#xff1a;使用Unity版本为2021.3LTS&#xff0c;与其他版本或有异同。请仅做参考 一、简述。 本文是笔者在学习使用Unity引擎的过程中&#xff0c;产学研的一个笔记。由笔者根据官方文档Unity User Manual 2021.3 (LTS)/脚本/Unity 架构/脚本编译/程序集定义相关部分结…...

马尔可夫决策过程

1. 马尔可夫决策过程 马尔可夫决策过程不过是引入"决策"的马氏过程. Pij(a)P{Xn1j∣X0,a0,X1,a1,...,Xni,an1}P{Xnn1j∣Xni,ana}\begin{split} P_{ij}(a) & P\{X_{n1} j|X_0, a_0, X_1, a_1, ..., X_n i, a_n 1\} \\ &P\{X_n{n1} j|X_n i, a_n a\} \e…...

win11下载配置CIC Flowmeter环境并提取流量特征

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、下载CIC Flowmeter二、安装java、maven、gradle和IDEA1.java 1.82.maven3.gradle4.IDEA三、CICFlowMeter-master使用四、流量特征1.含义2.获取前言 配了一整…...

JDK如何判断自己是什么公司的

0x00 前言 因为一些事情&#xff0c;遇到了这样一个问题&#xff0c;JDK如何判断自己是什么公司编译的。因为不同的公司编译出来&#xff0c;涉及到是否商用收费的问题。 平时自己使用的时候&#xff0c;是不会考虑到JDK的编译公司是哪一个&#xff0c;都是直接拿起来用&#…...

大数据技术之HBase(二)HBase原理简介

一、HBase定义1.1 HBase定义HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库非结构化数据存储的数据库&#xff0c;基于列的模式存储。利用Hadoop HDFS作为其文件存储系统&#xff0c;写入性能很强&#xff0c;读取性能较差。利用Hadoop MapReduce来处理HBase中的…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”

案例&#xff1a; 某医药分销企业&#xff0c;主要经营各类药品的批发与零售。由于药品的特殊性&#xff0c;效期管理至关重要&#xff0c;但该企业一直面临效期问题的困扰。在未使用WMS系统之前&#xff0c;其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...