一、目的

对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代码覆盖率报告分析的更多相关文章

  1. 使用JaCoCo Maven插件创建代码覆盖率报告

    这篇博客文章描述了我们如何使用JaCoCo Maven插件为单元和集成测试创建代码覆盖率报告. 我们的构建要求如下: 运行测试时,我们的构建必须为单元测试和集成测试创建代码覆盖率报告. 代码覆盖率报告 ...

  2. 新开发项目Jacoco代码覆盖率

    一般只有新的项目才会去用JaCoCo工具看一下代码覆盖率, 一来看看测试有没有漏的测试用例 二来看看开发有没有留下冗余的代码 新开发项目Jacoco代码覆盖率后端接口打成jar包,进行启动 #exec ...

  3. HttpRunnerManager平台异步生成及展示代码覆盖率报告

    ant+jacoco+jenkins+HttpRunnerManager代码覆盖率统计平台搭建 实现思路通过jenkins构建,并使用HttpRunnerManager异步实现报告更新与展示. 现在整 ...

  4. AWR报告分析

    AWR报告分析 awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体 ...

  5. AWR报告分析案例及命令(收集)

    AWR报告分析案例(收集) 循序渐进解读Oracle AWR性能分析报告 AWR报告分析之一:高 DB CPU 消耗的性能根源 生成AWR报告命令: 1)连接数据库:sqlplus / as sysd ...

  6. nmon服务器性能结果报告分析

    一.nmon命令 ./nmon_x86_64_centos7 -f -s 10 -c 60 -m ./log/  命令的含义是: -f :按标准格式输出文件名称:<hostname>_YY ...

  7. WEB安全漏洞扫描与处理(下)——安全报告分析和漏洞处理

    1 AppScan生成的安全报告分析 利用AppScan生成安全报告,可以提前对要生成的安全报告的内容进行选择,如下图,最全的安全报告内容,包括摘要,安全性问题,咨询和修订建议,应用程序数据等. 生成 ...

  8. JaCoCo 代码覆盖率工具(基于Maven+TestNG)

    JaCoco是一个代码覆盖率库. 官方网站:http://www.jacoco.org/ 安装: 以 Maven(http://www.testclass.net/maven/) 安装为例: < ...

  9. Jacoco 代码覆盖率,监控WEB项目

    转载:https://blog.csdn.net/u010469432/article/details/73283824 jacococ代码覆盖率,以客户端形式直接监控远程代码 使用理解 jacoco ...

  10. Oracle的AWR报告分析

    * 定义:awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告 ...

随机推荐

  1. 墨天轮国产数据库沙龙 | 胡彦军:华为GaussDB迁移工具解密

    在共同推进国产化生态发展的进程下,墨天轮正式推出"墨天轮国产数据库沙龙"系列直播活动,将定期邀请各国产数据库产品专家.掌门人,共同探讨如何达成技术"自主可控"的 ...

  2. 0403-Tensor内部存储结构

    0403-Tensor内部存储结构 目录 一.Tensor内部存储结构 pytorch完整教程目录:https://www.cnblogs.com/nickchen121/p/14662511.htm ...

  3. Nuxt.js 应用中的 build:before 事件钩子详解

    title: Nuxt.js 应用中的 build:before 事件钩子详解 date: 2024/10/20 updated: 2024/10/20 author: cmdragon excerp ...

  4. Newstar_week1-2_wp

    week1 wp crypto 一眼秒了 n费马分解再rsa flag: import libnum import gmpy2 from Crypto.Util.number import * p = ...

  5. synchronized的四种锁状态

    Java 多线程的锁都是基于对象的,Java 中的每一个对象都可以作为一个锁. 类锁,其实就是 Class 对象的锁. Class 对象是一种特殊的 Java 对象,代表了程序中的类和接口.Java ...

  6. RAC环境中某数据文件(非system表空间)创建在本地,不停机迁移到ASM磁盘中

    Datafiles are mistakenly built into the local file system for processing in the RAC environment The ...

  7. Python面向对象小备忘

    最近学到面向对象了,感觉到Python这方面的语法也有点神奇,这里专门归纳一下Python面向对象中我觉得比较重要的笔记. 本文目前有的内容:实例属性和类属性的访问,使用@property修饰器 实例 ...

  8. Golang 开源库分享:anko - 给 Go 加点“脚本魔法”

    GitHub 仓库链接:https://github.com/mattn/anko 1. anko 是干嘛用的? anko 是一个可以让 Go 项目支持脚本语言的小工具.换句话说,就是我们可以给 Go ...

  9. TOML 1.0格式语法

    github: https://github.com/BurntSushi/toml TOML 旨在成为一个语义显著而易于阅读的最低限度的配置文件格式.TOML 被设计地能够无歧义地转化为哈希表.TO ...

  10. Linux之搭建sftp

    0.查看openssh的版本 ssh -V #使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级.   1.创建sftp组 groupadd sftp   ...