测试人进阶技能:单元测试报告应用指南

为什么需要单元测试

从产品角度而言,常规的功能测试、系统测试都是站在产品局部或全局功能进行测试,能够很好地与用户的需要相结合,但是缺乏了对产品研发细节(特别是代码细节的理解)。

从测试人员角度而言,功能测试和系统测试以及其他性能测试等等对测试人员的全局特性理解能力要求较高,只要测试人员能够掌握一两种自动化测试框架基本能够开展功能、性能自动化测试,但是借助于测试框架进行研发降低了测试人员对代码的掌握、理解要求。

从开发人员角度而言,用户需求往往并不是具体的、全面的,因此基于用户需求转换成开发文档或着针对某个功能编写开发代码往往也存在着局限性(也即我们常说的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下某个类中某个方法的单元测试覆盖率报告。在这里插入图片描述

如上图所示,绿色钻石表示全部覆盖,黄色钻石表示部分覆盖,红色钻石表示没有覆盖。

通过上图测试报告我们可以看出缺少覆盖红色部分的单元测试用例,因此可以重新设计、补全对应红色分支部分的测试用例。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/778004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL索引18连问,谁能顶住

前言 过完这个节,就要进入金银季,准备了 18 道 MySQL 索引题,一定用得上。 作者:感谢每一个支持: github 1. 索引是什么 索引是一种数据结构,用来帮助提升查询和检索数据速度。可以理解为一本书的目录&…

关闭Qt在windows上同时生成debug和release目录

qt在windows下编译,例如选择debug模式,但是会在编译目录下生成两个目录,分别是debug和release,生成的exe放在debug目录下。 进行一个简单的测试,读aaa.txt文件,把他放在跟exe同级目录下,测试代码…

1.linux系统根目录的其他目录的含义(18个目录)

①/bin:存放系统的基本可执行命令(二进制文件),如ls、cp、mkdir等。 ②/boot:存放引导加载程序和内核相关文件。 ③/dev:存放设备文件,用于与硬件设备进行通信。 ④/etc:存放系统…

6、jenkins项目构建类型-项目类型介绍

文章目录 一、自由风格项目1、拉取代码2、演示改动代码后的持续集成二、Maven项目构建三、Pipeline流水线项目构建(☆☆☆)1、Pipeline简介(1)概念(2)使用Pipeline有以下好处(3)如何创建Jenkins Pipeline呢?2、安装Pipeline插件3、Pipeline语法快速入门(1)Declarati…

Hadoop面试重点

文章目录 1. Hadoop 常用端口号2.Hadoop特点3.Hadoop1.x、2.x、3.x区别 1. Hadoop 常用端口号 hadoop2.xhadoop3.x访问HDFS 端口500709870访问 MR 执行情况端口80888088历史服务器1988819888客户端访问集群端口90008020 2.Hadoop特点 高可靠:Hadoop底层维护多个数…

Spring boot 发送文本邮件 和 html模板邮件

Spring boot 发送文本邮件 和 html模板邮件 提示:这里使用 spring-boot-starter-mail 发送文本邮件 和 html模板邮件 文章目录 Spring boot 发送文本邮件 和 html模板邮件一、开启QQ邮箱里的POP3/SMTP服务①:开启步骤 二、简单配置①:引入依赖…

8.均值滤波

1 简介 均值滤波是一种低通滤波,它可以有效过滤图片中的椒盐噪声,但是副作用也同样明显,会使图片的边缘过于模糊。   均值滤波的卷积核系数均为1。   这里最终重复一下算法实现以及验证的步骤:     1.MATLAB读取图片并转化…

macOS Sonoma如何查看隐藏文件

在使用Git进行项目版本控制时,我们可能会遇到一些隐藏文件,比如.gitkeep文件。它通常出现在Git项目的子目录中,主要作用是确保空目录也可以被跟踪。 终端命令 在尝试查看.gitkeep文件时,使用Terminal命令来显示隐藏文件 default…

【Pt】马灯贴图绘制过程 03-制作油渍、积尘效果

目录 效果 一、制作油渍效果 1.1 基本油渍 1.2 流淌的油渍痕迹 二、制作浮尘效果 三、制作积尘效果 效果 一、制作油渍效果 1.1 基本油渍 将上篇制作的“锈迹_深色”和“锈迹_浅色”两个文件夹再次合并为一个文件夹 这里就命名为“锈迹” 添加一个填充图层 设置Base …

七月论文审稿GPT第4版:通过paper-review数据集微调Mixtral-8x7b

模型训练 Mixtral-8x7b地址:魔搭社区 GitHub: hiyouga/LLaMA-Factory: Unify Efficient Fine-tuning of 100 LLMs (github.com) 环境配置 git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate lla…

支持 java22,Solon v2.7.3 发布(非 java-ee 架构)

Java Solon 是什么框架? 是一个可平替 Spring 生态的 Java 应用开发框架。从零开始构建(非 java-ee 架构),有自己的标准规范与开放生态。(历时七年,具备全球第二级别的生态规模) 追求&#xf…

小程序利用WebService跟asp.net交互过程发现的问题并处理

最近在研究一个项目,用到asp.net跟小程序交互,简单的说就是小程序端利用wx.request发起请求。获取asp.net 响应回来的数据。但经常会报错。点击下图的测试按钮 出现如下错误: 百思不得其解,试了若干方法,都不行。 因为…

多线程基础:线程通信内容补充

多线程基础:线程通信内容补充 文章目录 多线程基础:线程通信内容补充前言一、wait(), notify(), notifyAll()二、join()三、Lock 和 Condition四、并发集合和原子变量1、并发集合2、原子变量 总结 前言 前文内容中讲了线程通信的内容,但是不…

企业网站建设的方法的相关问题的解决办法的问题

现在市场上比较大的公司都建立了自己的企业网站,比如华为、小米等,在他们的企业网站中,可以充分展示自己产品的优势,介绍公司的优质服务。 这都是让顾客改变购买想法的重要因素。 现在互联网发达了,很多人在购买产品的…

Typescript再学习-接口interface扩展(5)

接口可以通过extends继承,看代码如下 interface commonPerson {name: string;age: number;sex: string;address: string; }interface Police extends commonPerson {idCard: string;job: string; } let LiHanxing: Police {name: "李汉星",age: 22,sex:…

智慧工地安全生产与风险预警大平台的构建,需要哪些技术?

随着科技的不断发展,智慧工地已成为现代建筑行业的重要发展趋势。智慧工地方案是一种基于先进信息技术的工程管理模式,旨在提高施工效率、降低施工成本、保障施工安全、提升施工质量。一般来说,智慧工地方案的构建,需要通过集成物…

计算机网络:物理层 - 信道极限容量

计算机网络:物理层 - 信道极限容量 实际信道中的数字信号奈式准则香农公式练习 实际信道中的数字信号 信号在传输过程中会受到各种因素的影响,如图所示: 这是一个数字信号,当它通过实际的信道后,波形会产生失真&#…

java中正则表达式第一次特殊使用

记录第一次使用~ 正则表达式的使用 正则表达式(Regular Expression)是一种用于模式匹配的强大工具,它由普通字符(例如字母、数字、符号)和特殊字符(元字符)组成。以下是使用正则表达式的一些…

Flutter 内置按钮介绍及使用

Flutter 提供了多种内置按钮,可以满足不同场景的需求。本文将介绍 Flutter 中常见的按钮类型,以及它们的属性和使用方法。 按钮类型 Flutter 中常见的按钮类型包括: ElevatedButton: 凸起按钮,默认带有阴影和灰色背景。TextBut…

如何使用C语言进行异常处理?C语言中的可变参数函数

一、如何使用C语言进行异常处理? 在C语言中,并没有像C或Java等语言那样内置的异常处理机制。C语言主要依赖于返回值、错误码以及条件编译指令来进行错误处理。然而,你仍然可以通过一些方法模拟异常处理的行为。 一种常见的模拟异常处理的方…