质量指标——什么是增量覆盖率?它有啥用途?
目录
引言
什么是增量覆盖率
增量覆盖率有啥用途
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中的…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
