一、目的

对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. iOS中搜索框EVNCustomSearchBar使用小结

    最近在项目开发中用到了搜索框,之前都是用的系统的searchbar,现有项目中用的是EVNCustomSearchBar,我试了一下还挺方便,下面说一下具体的用法. 第一步:引入添加相关的委托代理EV ...

  2. KubeSphere 社区双周报 | OpenFunction 支持 Dapr 状态管理 | 2023.03.31-04.13

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  3. C#多线程编程:AutoResetEvent

    作用 简单的完成多线程同步,两个线程共享相同的AutoResetEvent对象.线程可以通过调用AutoResetEvent对象的WaitOne()方法进入等待状态当第二个线程调用Set()方法时,它 ...

  4. LaMI-DETR:基于GPT丰富优化的开放词汇目标检测 | ECCV'24

    现有的方法通过利用视觉-语言模型(VLMs)(如CLIP)强大的开放词汇识别能力来增强开放词汇目标检测,然而出现了两个主要挑战:(1)概念表示不足,CLIP文本空间中的类别名称缺乏文本和视觉知识.(2 ...

  5. OKR 目标和关键成果

    OKR(Objectives and Key Results)是目标与关键成果管理法,是一套明确和跟踪目标及其完成情况的管理工具和方法.1.OKR首先是沟通工具:团队中的每个人都要写OKR,所有这些O ...

  6. 轻量级网络-VoVNet 论文解读

    摘要 1,介绍 2,高效网络设计的影响因素 2.1,内存访问代价 2.2,GPU计算效率 3,建议的方法 3.1,重新思考密集连接 3.2,One-Shot Aggregation 3.3,构建 Vo ...

  7. 买了个mini主机当服务器

    虽然有苹果的电脑,但是在装一些软件的时候,从想着能不能有一个小型的服务器,免得各种设置什么帮我强各种别的导致Mac出现各种的异常,整体上的话去看了一些小的主机,看过苹果的MV迷你Mac,但是发现是太贵 ...

  8. 整理程序员面试中HR最常问的问题

    前言 不要慌,不要怕,要调适好自己的情绪,在介绍自己的基本情况时面无表情,说的头头是道,必要的时候包装下自己,不属于你的功能也能说是你的(难不成会去查?查也查不到).不过在面试前,建议可以找自己的朋友 ...

  9. games101_Homework2

    完成函数static bool insideTriangle(): 测试点是否在三角形内. 一段优雅的easy代码,没什么好说的.(但是需要修改这里传入的xy的类型为float,默认为int是想让我通 ...

  10. 干货分享:通用加解密函数(crypto),Air780E篇

    一.加解密概述 加解密算法是保证数据安全的基础技术,无论是在数据传输.存储,还是用户身份验证中,都起着至关重要的作用.随着互联网的发展和信息安全威胁的增加,了解并掌握常用的加解密算法已经成为开发者和安 ...