jacoco代码覆盖率报告分析
一、目的
对Jacoco代码覆盖率统计维度、报告字段说明、报告详细分析描述。并为精准测试、健壮性测试提供指导。
二、Jacoco代码覆盖率统计维度
Jacoco是从代码指令(Instructions, Coverage),分支(Branches, Coverage),圈复杂度(Cyclomatic Complexity),行(Lines),方法(Methods),类(Classes)等维度进行分析的。
三、覆盖率报告字段说明

四、Jacoco覆盖率报告详细分析
4.1 目录结构
4.1.1一级目录-group

手动收集生成的报告,展示的时build.xml的 group name,若有多个group name则显示多个。
组的覆盖率取决于包的覆盖情况。
注:报告的一级目录展示以组为单位。
4.1.2 二级目录-包名

展示当前分组下面所有的包。
包的覆盖率取决于类的覆盖情况。
4.1.3 三级目录-类名

展示当前分组>包下面所有的类。
类的覆盖率取决于方法的覆盖情况。
4.1.4 四级目录-方法名

展示当前分组>包>类下面的所有方法。
方法的覆盖率取决于方法内代码覆盖的情况。
4.2 覆盖率报告详细分析

注:报告中涉及字段的名称详见3覆盖率报告字段详细说明。
4.2.1 Missed Instructons

分组:红色进度条表未覆盖,绿色进度条表示已覆盖,Cov 为总体覆盖率。
Total:51379 表示没有覆盖的指令,64756 表示总的指令
Cov 表示覆盖率。
Jacoco 计算的最小单位就是字节码指令。指令覆盖率表明了在所有的指令中,哪些被执行过以及哪些没有被执行。这项指数完全独立于源码格式并且在任何情况下有效,不需要类文件的调试信息。
4.2.2 Missed Branches

分组:红色进度条表未覆盖,绿色进度条表示已覆盖,Cov为总体覆盖率。
Total:4307表示没有覆盖的分支,4954表示总的分支,Cov表示总体覆盖率。
实例分析一


Missed Instructions覆盖率100%,但分支覆盖率为75%; 原因:所有代码行都覆盖并不代表所有分支都覆盖完整。
分析:urls!=null这个条件已覆盖,但urls=null这个条件还没有覆盖 ;所有的代码行都有覆盖到、但分支还没有覆盖完整、所以Instructions的覆盖率100%、Braches的覆盖率75%。
实例分析二

分析:if(StringUtils.hasText(strLike)) 只执行了结果为flase的条件,没有执行结为true的条件,导致大括号的内容没有被执行;所以Missed Instructions、Missed Braches覆盖率都非100%。
4.2.3 Missed Cxty

此方法里面有1个for(1个for占2个条件)循环、8个if,圈复杂度共计10个。有两个条件没有被覆盖所以Missed为2,Cxty为10(表示总数)。
while, for, if,switch每个都是一个判定节点。嵌套的都是加1。
4.2.4Missed.Lines、Methods、classes

Classes表示类、Methods表示方法、Lines表示代码行。
Missed表示未覆盖数量,Classes表示共有X个类、Methods表示共有X个方法,Lines表示共有多少行代码(例如:else是不统计到Lines的)。
4.3 覆盖率标识
4.3.1 条件覆盖
红钻:表示未覆盖
黄钻:表示部分覆盖
绿钻:表示全部覆盖
注:条件覆盖都是用钻表示。
4.3.2 Lines覆盖
红色背景:无覆盖,该行的所有指令均无执行。
背景:部分覆盖,该行部分指令被执行。
绿色背景:全覆盖,该行所有指令被执行。
作者:奔跑的小小鱼
链接:https://www.jianshu.com/p/ef987f1b6f2f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
jacoco代码覆盖率报告分析的更多相关文章
- 使用JaCoCo Maven插件创建代码覆盖率报告
这篇博客文章描述了我们如何使用JaCoCo Maven插件为单元和集成测试创建代码覆盖率报告. 我们的构建要求如下: 运行测试时,我们的构建必须为单元测试和集成测试创建代码覆盖率报告. 代码覆盖率报告 ...
- 新开发项目Jacoco代码覆盖率
一般只有新的项目才会去用JaCoCo工具看一下代码覆盖率, 一来看看测试有没有漏的测试用例 二来看看开发有没有留下冗余的代码 新开发项目Jacoco代码覆盖率后端接口打成jar包,进行启动 #exec ...
- HttpRunnerManager平台异步生成及展示代码覆盖率报告
ant+jacoco+jenkins+HttpRunnerManager代码覆盖率统计平台搭建 实现思路通过jenkins构建,并使用HttpRunnerManager异步实现报告更新与展示. 现在整 ...
- AWR报告分析
AWR报告分析 awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体 ...
- AWR报告分析案例及命令(收集)
AWR报告分析案例(收集) 循序渐进解读Oracle AWR性能分析报告 AWR报告分析之一:高 DB CPU 消耗的性能根源 生成AWR报告命令: 1)连接数据库:sqlplus / as sysd ...
- nmon服务器性能结果报告分析
一.nmon命令 ./nmon_x86_64_centos7 -f -s 10 -c 60 -m ./log/ 命令的含义是: -f :按标准格式输出文件名称:<hostname>_YY ...
- WEB安全漏洞扫描与处理(下)——安全报告分析和漏洞处理
1 AppScan生成的安全报告分析 利用AppScan生成安全报告,可以提前对要生成的安全报告的内容进行选择,如下图,最全的安全报告内容,包括摘要,安全性问题,咨询和修订建议,应用程序数据等. 生成 ...
- JaCoCo 代码覆盖率工具(基于Maven+TestNG)
JaCoco是一个代码覆盖率库. 官方网站:http://www.jacoco.org/ 安装: 以 Maven(http://www.testclass.net/maven/) 安装为例: < ...
- Jacoco 代码覆盖率,监控WEB项目
转载:https://blog.csdn.net/u010469432/article/details/73283824 jacococ代码覆盖率,以客户端形式直接监控远程代码 使用理解 jacoco ...
- Oracle的AWR报告分析
* 定义:awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告 ...
随机推荐
- 2023年3月中国数据库排行榜:开源OTO揽获前三,传统达梦、GBase触机便发
东风何时至,已绿湖上山. 春风送来了2023年3月的 墨天轮中国数据库流行度排行,本月共有260个数据库参与排名,本月榜单前十可以用一句话概括为:榜单前八较上月岿然不动,GBase 奋勇向前重返第九. ...
- JDBC后端实现登录的逻辑
// 包名 package com.zhulx.JDBC; // 导入实例类 import com.zhulx.pojo.Account; import java.sql.Connection; im ...
- 浅析RocketMQ
SpringBoot引入RocketMQ 快速构建单机RocketMQ https://www.haveyb.com/article/3079 参考这篇文章,快速构建单机RocketMQ 项目引入ja ...
- 使用wxpython开发跨平台桌面应用,常用窗体布局BoxSizer,FlexGridSizer,GridBagSizer的介绍处理
我们在开发桌面应用的时候,不管是之前C#开发Winform的时候,还是现在使用wxpython来开发跨平台应用的时候,都需要了解布局的处理,wxpython的常用布局Sizer类,包括BoxSizer ...
- 斜率优化初探:以 [HNOI2008]玩具装箱 为例
题目传送门 记 \(f[i]\) 表示装好前 \(i\) 个的最小花费.容易写出转移: \[f[i] = \min_{j \lt i} \ [f[j]+(s[i] - s[j] - 1 - L) ^ ...
- UE4纯C++实现游戏快捷栏之物品读取
我们在上一步骤中创建了快捷栏的UI界面,在这一部分我们将从Json文件中读取物品的相关信息(种类以及属性),来填充到游戏数据中进行存储以便快捷栏使用,具体分以下几部分完成. 1.Types.h: 添加 ...
- Windows系统DOS命令详解
一. DOS 的历史 DOS(Disk Operating System),磁盘操作系统 1980 年,西雅图程序员蒂姆-帕特森,86-DOS 1981 年由微软公司购买并改进,更名为 MS-DOS ...
- .NET Core 委托底层原理浅谈
简介 .NET通过委托来提供回调函数机制,与C/C++不同的是,委托确保回调是类型安全,且允许多播委托.并支持调用静态/实例方法. 简单来说,C++的函数指针有如下功能限制,委托作为C#中的上位替代, ...
- 读书笔记-C#8.0本质论-04
18. 多线程 18.1 多线程基础 处理器受限延迟(Processor-bound latency):假定一个计算需要执行120亿次算术运算,而总共的处理能力是每秒60亿次,那么从请求结果到获得结果 ...
- python命令行工具之Click
Click 是一个简洁好用的Python模块,它能用尽量少的代码实现漂亮的命令行界面.它不仅开箱即用.还能支持高度自定义的配置. 示例: import click @click.command() @ ...