质量指标——什么是增量覆盖率?它有啥用途?
目录
引言
什么是增量覆盖率
增量覆盖率有啥用途
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中的…...
垒骰子(爆搜/DP)
动态规划方格取数垒骰子方格取数 题目描述 设有 NNN \times NNN 的方格图 (N≤9)(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 000。如下图所示(见样例): A0 0 0 0 0 0 0 00 0 13 0 …...
Telink之标准SDK的介绍_1
前提:常见的项目架构:应用层----》驱动层----》硬件层 1、软件组织架构 顶层⽂件夹( 8 个): algorithm,application,boot,common,drivers,proj_lib,stack,v…...
JNI内两种方式从C/C++中传递一维、二维、三维数组数据至Java层详细梳理
目录 0 前言 1 准备工作介绍 2 一维数组 2.1 return形式 2.2 参数形式 3 二维数组 3.1 return形式 3.2 参数形式 4 三维数组 4.1 return形式 4.2 参数形式 5 测试代码 6 结果说明 0 前言 就如之前我写过的一篇文章【JNI内形参从C代码中获取返回值并返回到Java层使…...
快递计费系统--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)
实例5:快递计费系统 快递行业高速发展,我们邮寄物品变得方便快捷。某快递点提供华东地区、华南地区、华北地区的寄件服务,其中华东地区编号为01、华南地区编号为02、华北地区编号为03,该快递点寄件价目表具体如表1所示。 表1 寄…...
JS - 自定义一周的开始和结束,计算日期所在月的周数、所在月第几周、所在周的日期范围
自定义一周的开始和结束,计算日期所在月的周数、所在月第几周、所在周的日期范围一. 方法使用二. 实现案例一. 方法使用 根据月开始日期星期几、月结束日期星期几,计算始周、末周占月的天数(每周周期段:上周六 —— 本周五&#x…...
Linux :理解编译的四个阶段
目录一、了解编译二、认识编译的四个阶段(一)预处理(二)编译(三)汇编(四)链接1.静态链接2.动态链接三、分步编译(一)创建.c文件(二)预…...
197.Spark(四):Spark 案例实操,MVC方式代码编程
一、Spark 案例实操 1.数据准备 电商网站的用户行为数据,主要包含用户的 4 种行为:搜索,点击,下单,支付 样例类: 2. Top10 热门品类 先按照点击数排名,靠前的就排名高;如果点击数相同,再比较下单数;下单数再相同,就比较支付数。 我们有多种写法,越往后性能越…...
Vue 项目如何迁移小程序
最近我们看到有开发者在社群里提出新的疑惑「我手头已经有一个成熟的 HTML5 项目了,这种项目可以转为小程序在 FinClip 环境中运行吗?」。 经过工作人员的沟通了解,开发者其实是想将已有的 Vue 项目转为小程序,在集成了 FinClip …...
unit1-问候以及介绍
unit1-问候以及介绍 重点表达 1、问好 使用hello 和 hi 来打招呼。hello可以使用在正式和非正式的场合。hi是非正式的。但是hello 和 hi 都可以在一天的任何时段使用。 Hello. 你好。 Hi! 嗨! 介绍你的姓名 使用 I’m 和 My name is 告诉别人你的名字。 I’m Pau…...
杂记——19.git上传时出现the remote end hung up unexpectedly错误
git是大家常用的项目版本控制工具,熟练地使用git可以提高开发效率,但是有时在使用git推送代码时,会提示“the remote end hung up unexpectedly”的问题,那么git推送代码提示“the remote end hung up unexpectedly”怎么解决呢&a…...
免费做优化的网站建设/如何做品牌推广方案
前言 2020年是转折的一年,上半年疫情原因,很多学android开发的小伙伴失业了,虽找到了一份工作,但高不成低不就,下半年金九银十有想法更换一份工作,很多需要大厂面试经验和大厂面试真题的小伙伴,…...
青海网站制作哪家好/软文范例200字
1. app项目下 ionic setup sass “第一次clone一个项目要编译一次sass” 2. git checkout . “返回到修改之前” 3. git status “查看状态” 4. git diff "如果个别不清楚的文件有修改,可以查看修改内容" 5. git checkout -A “切换到分支A” 6. rm -rf …...
集团网站建设的要求/seo优化排名公司
时间安排 7:00~7:10 先看题,三道计数,一道DS ,这个DS一看就很像树上莫队 7:10~7:40 T2套路地枚举中位数,然后就能dp了,有60pts,于是赶紧写 7:50~8:00 发现T3需要写平衡树,而且莫队套平衡树…...
公司网站建设合同模板/网推
使用Flask以Web方式部署TensorFlow模型 flyfish 目的:可以通过浏览器访问服务,上传一个图片,然后服务器能够返回已经检测完成的图片或者json字符串 浏览器可以看到检测完成的图片 源码地址: https://github.com/shaoshengsong/…...
wordpress网站迁移问题/爱站网站长seo综合查询
什么是拦截器 1.SpringMVC框架中的拦截器用于 对处理器 进行预处理和后处理的技术。 2.可以定义拦截器链,按照顺序执行。 3.拦截器和过滤器功能类似,区别在 拦截器过滤器过滤器是Servlet规范的一部分,任何框架都可以使用过滤技术。而拦截器是…...
新注册公司怎么做网站/百度推广关键词优化
1 问题 想实现如下的功能,在全网都找不到一个例子解析。如果使用如下的p标签,就会出现这一行换行的情况,根本不能实现一行两部分:一部分左对齐,一部分右对齐的要求 <p align"right">诶嘿</p>2…...