当前位置:网站首页>jacoco代码覆盖率
jacoco代码覆盖率
2022-07-07 13:17:00 【傲娇的喵酱】
原文地址:
jacoco 增量方案使用说明书_dray_的博客-CSDN博客_jacoco 增量
一、Jacoco简介:
JaCoCo是一个开源的Java代码覆盖率工具。
JaCoCo 只是统计了全量代码的覆盖率,在代码迭代过程中,比如修改了bug,又重新发布了一版代码。JaCoCo 的统计就被清空了,需要从头执行触发代码覆盖。
这种场景,我们只需要测试增量代码就可以了,这个时候需要对jacoco进行二次开发。
jacoco 统计代码覆盖率,一般与自动化相结合,比如jacoco与接口自动化相结合。当时我们也可以手工执行case,来统计代码覆盖率。
可以嵌入到Ant、Maven中;可以作为Eclipse插件,可以使用其JavaAgent技术监控Java程序等等。
很多第三方的工具提供了对JaCoCo的集成,如sonar、Jenkins等。
二、代码覆盖率介绍:
覆盖率是用来衡量测试代码对功能代码的测试情况。通过统计测试代码中对功能代码中行、分支、类等模拟场景数量,来量化说明测试的充分度。
代码覆盖率=代码的覆盖程度,一种度量方式。
覆盖率简单说:跑了一个测试用例,项目代码中的那些模块、文件、类、方法 执行了。
其中行覆盖率是最细颗粒度,其他覆盖率都可从行覆盖率情况统计算出来。
2.1 行覆盖
当至少一个指令被指定源码行执行时,该源码行被认为已执行。
通俗的说就是,测试行为,触发了这某一行代码,则这一行代码就被覆盖了。
2.2 分支覆盖
if 和switch 语句算作分支覆盖率,这个指标计算一个方法中的分支总数,并决定已执行和未执行的分支的数量。
全部未覆盖:所有分支均未执行,红色标志
部分覆盖:部分分支被执行,黄色标志
全覆盖:所有分支均已执行,绿色标志。
2.3 方法覆盖
当方法中至少有一个指令被执行,该方法被认为已执行,包括构造函数和静态初始化方法。
2.4 代码覆盖率意义
分析未覆盖部分的代码,反推测试设计是否充分,没有覆盖到的代码是否存在测试设计盲点。
2.5 覆盖率的误区
若代码如下:
if (i>100)
j = 10/i // 没有除0错误
else
j = 10/(i+2) // i==-2,除0错误覆盖2个分支,只需要设计i==101 和 i==1,但是对于找到i==-2这个bug点时没有作用的。
所以:
1、不要简单的追求高的代码覆盖率
2、高覆盖率测试用例不等于测试用例有效
3、没覆盖的分支相当于该分支上的任何错误肯定都找不到
三、jacoco原理
jacoco使用插桩的方式来记录覆盖率数据,是通过一个probe探针来注入。
插桩模式有2种:
3.1 on-the-fly模式
7、Jacoco增量覆盖
7.1 增量覆盖
增量覆盖:两次提交之间有哪些代码或者分支没有被覆盖。
目的:检测同一个测试用例在修改前后代码上的行覆盖情况
假设两次提交代码变更如下:
if(x>100)
- print(1)
+ print(2)
else
- print(3)
+ print(4)
每行代码有3种状态:+、-、不变
修改前后,跑同一个测试用例,每行有4种状态:修改前覆盖/修改前未覆盖,修改后覆盖/修改后未覆盖。
所以增量覆盖总共有3x4=12种情况,比较重要的有:新增代码没有覆盖,新增代码覆盖了,不变的代码修改前覆盖,修改后未覆盖等等。
7.2 增量应用
jacoco 二开: https://gitee.com/Dray/jacoco.git
增量代码获取: https://gitee.com/Dray/dode-diff.git
使用方法:
1、jacoco客户端,收集信息
边栏推荐
猜你喜欢

【深度学习】语义分割实验:Unet网络/MSRC2数据集
![[data mining] visual pattern mining: hog feature + cosine similarity /k-means clustering](/img/a4/7320f5d266308f6003cc27964e49f3.png)
[data mining] visual pattern mining: hog feature + cosine similarity /k-means clustering

Change win10 Screensaver

Ctfshow, information collection: web10

What is data leakage

Ctfshow, information collection: web2

【数据挖掘】视觉模式挖掘:Hog特征+余弦相似度/k-means聚类

如何在opensea批量发布NFT(Rinkeby测试网)

Niuke real problem programming - day16

Unity's ASE realizes cartoon flame
随机推荐
Spatiotemporal deformable convolution for compressed video quality enhancement (STDF)
【OBS】RTMPSockBuf_ Fill, remote host closed connection.
Unity之ASE实现卡通火焰
【數據挖掘】視覺模式挖掘:Hog特征+餘弦相似度/k-means聚類
Stream learning notes
[target detection] yolov5 Runtong voc2007 data set
Read PG in data warehouse in one article_ stat
大表delete删数据导致数据库异常解决
众昂矿业:萤石继续引领新能源市场增长
CTFshow,信息搜集:web4
CTFshow,信息搜集:web13
Zhiting doesn't use home assistant to connect Xiaomi smart home to homekit
What is the process of ⼀ objects from loading into JVM to being cleared by GC?
Find your own value
MySQL installation configuration 2021 in Windows Environment
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
什麼是數據泄露
防火墙基础之服务器区的防护策略
Do you know the relationship between the most important indicators of two strong wind control and the quality of the customer base
leetcode:648. Word replacement [dictionary tree board + find the shortest matching prefix among several prefixes]