质量指标——什么是增量覆盖率?它有啥用途?
目录
引言
什么是增量覆盖率
增量覆盖率有啥用途
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可以管理任意类型的数组,是一个表示可变大小数组的序列容器。 通过vector文档来看它的使用。 #include <iostream> #inclu…...

Lombok常见用法总结
目录一、下载和安装二、常见注释(一)Data(二)Getter和Setter(三)NonNull和NotNull(不常用)(四)ToString(不常用)(五&#…...

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

近红外吸收荧光染料IR-808,IR-808 NH2,IR-808 amine,发射808nm 性质分享
中文名称:IR-808 氨基英文名称:IR-808 NH2,IR-808 amine,IR-808-NH2规格标准:10mg,25mg,50mgCAS:N/A产品描述:IR-808,发射808nm,酯溶性染料修饰氨…...

一图来看你需要拥有那些知识储备
技术实践 数据 关系型数据 MySQLSQLServerOraclePostgrSQLDB2 大数据存储 RedisMemcacheMongoDBHBaseHive 大数据处理 Hadoop 数据报表看板 DataGearGrafanaKibanaMetaBase 消息对列 Rabbit MQRock MQActive MQKafka 大数据搜索 SolrElasticSearchLucenHive 服务提…...

复位和时钟控制(RCC)
目录 复位 系统复位 电源复位 备份区复位 时钟控制 什么是时钟? 时钟来源 二级时钟源: 如何使用CubeMX配置时钟 复位 系统复位 当发生以下任一事件时,产生一个系统复位:1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWD…...
OpenWrt 专栏介绍00
文章目录OpenWrt 专栏介绍00专栏章节介绍关于联系方式OpenWrt 专栏介绍00 专栏章节介绍 本专栏主要从开发者角度,一步步深入理解OpenWrt开发流程,本专栏包含以下章节,内如如下: 01.OperWrt 环境搭建02.OperWrt 包管理系统03.Op…...
udk开发-稀里糊涂
一、EDK2简介 1.EDK2工作流 二、EDK2 Packages 1.Packages介绍 EDK2 Packages是一个容器,其中包含一组模块及模块的相关定义。每个Package是一个EDK2单元。 整个Project的源代码可以被分割成不同的Pkg。这样的设计不仅可以降低耦合性,还有利于分…...

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

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模块化开发
笔者按:使用Unity版本为2021.3LTS,与其他版本或有异同。请仅做参考 一、简述。 本文是笔者在学习使用Unity引擎的过程中,产学研的一个笔记。由笔者根据官方文档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环境并提取流量特征
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、下载CIC Flowmeter二、安装java、maven、gradle和IDEA1.java 1.82.maven3.gradle4.IDEA三、CICFlowMeter-master使用四、流量特征1.含义2.获取前言 配了一整…...

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

大数据技术之HBase(二)HBase原理简介
一、HBase定义1.1 HBase定义HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库非结构化数据存储的数据库,基于列的模式存储。利用Hadoop HDFS作为其文件存储系统,写入性能很强,读取性能较差。利用Hadoop MapReduce来处理HBase中的…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...