测试人进阶技能:单元测试报告应用指南
为什么需要单元测试
从产品角度而言,常规的功能测试、系统测试都是站在产品局部或全局功能进行测试,能够很好地与用户的需要相结合,但是缺乏了对产品研发细节(特别是代码细节的理解)。
从测试人员角度而言,功能测试和系统测试以及其他性能测试等等对测试人员的全局特性理解能力要求较高,只要测试人员能够掌握一两种自动化测试框架基本能够开展功能、性能自动化测试,但是借助于测试框架进行研发降低了测试人员对代码的掌握、理解要求。
从开发人员角度而言,用户需求往往并不是具体的、全面的,因此基于用户需求转换成开发文档或着针对某个功能编写开发代码往往也存在着局限性(也即我们常说的bug)。
因此,编写单元测试可以帮助测试人员更好地理解代码细节、提高代码开发能力,也能帮助开发人员提前辨识代码中可能存在的bug,提高代码的容错能力。
如何制定单元测试报告
良好的单元测试报告能够帮助测试人员更好地分析、挖掘潜藏的问题。那么,如何制定单元测试报告呢,从哪些维度出发呢?在这里我们主要从测试人员角度出发来思考这个问题。
首先,我们需要报告中能够呈现我们的测试用例数量和测试结果(pass或者fail),以及错误细节。
其次,从单元测试本身特点出发,我们需要报告中能够呈现出针对单元代码分支、单元方法等的覆盖率,更好地帮助我们梳理和测试用例设计的优良。
在此,我们使用surefire-report统计测试用例数量和测试结果,使用jacoco统计单元测覆盖率(注:本文默认测试用例的执行方式是mvn test)。
如何配置
surefire-report配置
配置方法:配置maven-surefire-plugin插件,maven-surefire-plugin是maven默认的test执行器,配置方法如下图所示:
上图中testFailureIgnore表示忽略单元测试中的错误继续构建,/*Test.java:表示任何子目录下所有命名以Test结尾的Java类,/Test*.java:表示不执行任何子目录下所有命名以Test开头的Java类。
执行方法:使用mvn test surefire-report:report即可,会生成在/target/site/surefire-report.html测试报告文档。
如下图所示:
Tests显示总用例数;
Errors指的是程序没有考虑到的情况,例如异常未能捕捉;
Failure指的是预期的结果与实际运行单元的结果不同所导致,常出现在断言处;
Skipped表示跳过的测试用例数;
Success Rate表示用例成功率(=成功用例数/总用例数);
Time显示总耗时;
Package List显示详细的package下用例执行结果。
配置方法:配置jacoco-maven-plugin插件,配置方法如下图所示,phase表示插件运行的生命周期阶段。

执行方法:mvn test执行即可。会在/target/site/jacoco/目录下生成总的覆盖率报告index.html和不同package的单元测试覆盖率报告…/xxx/index.html。此外还有csv和xml格式的单元测试覆盖率报告。
如上图所示为某个package的单元测试覆盖率报告:
红色进度条表未覆盖;
绿色进度条表示已覆盖;
Cov 为总体覆盖率;
Missed Instructions表示代码覆盖率;
Missed Branches表示逻辑分支覆盖率;
Missed Cxty表示判断执行数;
Missed Lines表示代码行数;
Methods表示方法个数。
如何利用单元测试报告
至此,我们讲了单元测试的重要性以及如何设置和查看单元测试报告。现在我们来聊聊如何利用单元测试报告。
本文中我们讲述了两种单元测试报告,一种是从测试人员角度出发方便测试人员统计单元测试用例数和分析用例执行结果的surefire-report报告,另一种是可以帮助测试人员和开发人员深入分析单元测试用例覆盖代码率的jacoco报告。
对于surefire-report报告而言,我们主要是用于统计用例数和通过用例执行结果判断用例设计是否合理、测试环境是否存在问题,可以类似于某种更接近于代码层的“功能测试”报告。
对于jacoco单元测试覆盖率报告,我们可以借助单元测试覆盖率判可以断测试用例设计是否缺漏,从而补全遗漏的测试用例。如下图所示为某个Package下某个类中某个方法的单元测试覆盖率报告。
如上图所示,绿色钻石表示全部覆盖,黄色钻石表示部分覆盖,红色钻石表示没有覆盖。
通过上图测试报告我们可以看出缺少覆盖红色部分的单元测试用例,因此可以重新设计、补全对应红色分支部分的测试用例。
相关文章:
测试人进阶技能:单元测试报告应用指南
为什么需要单元测试 从产品角度而言,常规的功能测试、系统测试都是站在产品局部或全局功能进行测试,能够很好地与用户的需要相结合,但是缺乏了对产品研发细节(特别是代码细节的理解)。 从测试人员角度而言࿰…...
非2的幂次的ASTC纹理格式尺寸对带宽的影响
1)非2的幂次的ASTC纹理格式尺寸对带宽的影响 2)C#端如何处理xLua在执行DoString时候死循环 3)如何制定美术规范或者各个模块的指标 4)如何处理Lua的io.open出现中文路径 这是第348篇UWA技术知识分享的推送,精选了UWA…...
Java设计模式之策略模式
1. 策略模式介绍 1、根据它来避免 if-else 或 switch 分支判断,避免使用多重条件转移语句; 2、支持“开闭原则”,可以在原有基础上选择行为方法,同时允许增加行为方法。 2. 策略模式结构类 ① 接口或抽象类:自定义接口…...
IPv4分组
4.3.1 IPv4分组 IP协议定义数据传送的基本单元——IP分组及其确切的数据格式 1. IPv4分组的格式 IPv4分组由首部和数据部分(TCP、UDP段)组成,其中首部分为固定部分(20字节)和可选字段(长度可变࿰…...
Jmeter常用功能-参数化介绍
JMeter也有像LR中的参数化,本篇就来介绍下JMeter的参数化如何去实现。 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。 这个时…...
“深入探索JVM内部机制:解密Java虚拟机的工作原理“
标题:深入探索JVM内部机制:解密Java虚拟机的工作原理 摘要:本文将深入探索Java虚拟机(JVM)的内部机制,解密其工作原理。我们将介绍JVM的基本组成部分、类加载过程、内存管理和垃圾回收、即时编译器等关键概…...
C++超基础语法
💓博主个人主页:不是笨小孩👀 ⏩专栏分类:数据结构与算法👀 C👀 刷题专栏👀 C语言👀 🚚代码仓库:笨小孩的代码库👀 ⏩社区:不是笨小孩👀 🌹欢迎大…...
位运算相关题目:下一个数、整数转换、配对交换
题目1:下一个数 给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小)。 示例: 输入:num 2(或者0b10) 输出:[4,…...
【数据结构】链表常见题目
文章目录 链表合并两个有序链表反转链表复制带随机指针的链表环形链表环形链表II相交链表移除链表元素链表中倒数第k个节点链表分割链表的回文结构链表的中间节点旋转链表链表排序链表求和 (逆序求)链表求和II (正序求)重排链表奇偶链表反转链表II <==> 链表内指定区间反…...
多家企业加入即将在2024年发射的量子卫星SpeQtral-1任务
近日,总部位于新加坡的量子通信技术公司SpeQtral宣布将与纳米航空电子公司NanoAvionics和卫星光子学公司Mbryonics合作执行即将到来的SpeQtral-1量子密钥分发(Quantum Key Distribution, QKD)卫星任务。NanoAvionics被选为卫星平台提供商&…...
shell脚本基础
目录 前言 一、概述 (一)、shell脚本基础概念 (二)、shell的类型 二、Shell变量 (一)、组成 1.变量名 2.变量值 (二)、类型 1.系统内置变量(环境变量) 2.自定…...
创建maven的Springboot项目出现错误:Cannot access alimaven
创建maven的Springboot项目出现错误:Cannot access alimaven 1)问题2) 分析问题3)解决问题 1)问题 创建maven的Springboot项目出现错误: Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/p…...
神经网络基础-神经网络补充概念-32-神经网络与大脑
概念 神经网络(Neural Networks)是受到生物神经系统启发而设计的机器学习模型,用于处理和学习复杂的数据模式。尽管神经网络的设计和工作原理与大脑有一些相似之处,但它们并不完全相同,以下是神经网络和大脑之间的一些…...
linux自动填充密码及提示信息
背景:需要自动创建nvc的登录密码 sudo apt-get install expect expect 是由Don Libes基于Tcl(Tool Command Language )语言开发的,主要应用于自动化交互式操作的场景,借助Expect处理交互的命令,可以将交互…...
IC设计中主要的EDA工具有哪些? (内附EDA虚拟机安装资源)
EDA工具的使用涵盖了芯片的功能设计、综合、验证、物理设计等环节,更是被称作“芯片设计的工作母机”。下面就来为大家具体介绍一下常见的EDA工具。(需要EDA虚拟机安装资源文末可领取~) 什么是EDA? EDA是电子设计自动化…...
Zabbix配置通用的TCP/IP:port监控项
我们经常的用接口,比如说FTP、HTTP、DNS、数据库接口,都可以用IP:PORT方式探测其是否存活,那么我们去繁就简,就简单监控一下IP:PORT吧! 1、新建主机: 填入主机名称、群组、Agent可以不填&…...
【RocketMQ】SpringBoot集成RocketMQ
SpringBoot集成RocketMQ 首先依旧是引入依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.2</version> </dependency>然后就可以编写发送不同类…...
思腾云计算
思腾合力受邀参加第七届世界智能大会,届时在会上展出思腾合力 AI 服务器。诚挚邀请与会者来思腾展位(S10-B04)参观与交流,领取七彩虹电竞机械键盘与鼠标、正版NVIDIA信仰尺、公牛魔方智能USB插座、超大桌面鼠标垫等精美礼品。 由天…...
前端面试:【HTML】语义化标签、表单、媒体元素
HTML(超文本标记语言)是构建网页内容的基础,它通过一系列标签来描述页面的结构和内容。在这篇文章中,我们将探讨HTML的基础知识,包括语义化标签、表单和媒体元素。 语义化标签:赋予内容更多意义 语义化标签…...
2024浙大MBA/MEM/MPA四个月冲刺备考策略
近期收到很多考生的咨询:距离联考就仅剩四个多月的时间,这个管理类联考的难度如何?主要考些什么内容?现在才开始备考还有希望上岸浙大吗?是不是要等到明年在开始备考比较合适?那么今天在这里小立老师就跟大…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
