Jacoco接口测试、自动化测试、手工测试覆盖率执行步骤

参考文章:
https://blog.csdn.net/m0_37518413/article/details/125576984
应用步骤

启动项目服务时加入jacoco的jar包,按照命令启动:确保项目服务已经启动,并且可以接收请求。
执行自动化测试:运行自动化测试脚本或测试套件,测试项目的各个功能和接口。
Jacoco 探针记录:Jacoco 会在后台记录代码的执行情况,包括哪些代码被执行过,哪些没有被执行。
生成报告:测试完成后,Jacoco 将根据记录的数据生成测试覆盖率报告。
分析报告:通过生成的报告,可以了解到代码的覆盖率情况,包括哪些代码被测试覆盖到,哪些没有。
确保在执行自动化测试时,涵盖了项目中的各个功能和接口,并且尽可能地覆盖所有可能的情况,以确保代码的全面测试覆盖率。

在jacoco官网下载jacocoagent.jar和jacococli.jar包

https://www.jacoco.org/jacoco/index.html

在这里插入图片描述

jacoco的两个jar包放在要进行接口覆盖率的应用模块的src同级目录下
在这里插入图片描述

启动服务:在项目目录下执行如下命令即可启动项目加入探针,这里用airtest的controller模块验证

java -javaagent:D:\\airtestworkspace\\airtest-server\\sonic-server-controller\\jacocoagent.jar=includes=*,output=tcpserver,port=9100,address=127.0.0.1 -jar D:\\airtestworkspace\\airtest-server\\sonic-server-controller\\target\\sonic-server-controller.jar

服务启动后开始进行接口测试以及自动化或者手工测试,这里调用的接口方法和类都会被记录下来
测试完成后生成覆盖率报告:执行如下两个命令即可生成html报告,这里指令意思是通过jacococli.jar导出覆盖率记录的exec文件

java -jar jacococli.jar dump --address 127.0.0.1 --port 9100 --destfile ./jacoco.exec --reset

此命令是通过jacococli.jar生成覆盖率报告

Java -jar jacococli.jar report ./jacoco.exec --classfiles target/classes --sourcefiles src/main/java --encoding utf-8 --html jacoReport

生成的接口覆盖率报告在代码模块目录src同级jacoReport文件夹中的index中
[图片]

[图片]

双击index可查看详细的覆盖率情况
[图片]

覆盖率名词解释:
JaCoCo包含了多种尺度的覆盖率计数器,包含指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity)、行覆盖(Lines)、方法覆盖(non-abstract methods)、类覆盖(classes)

指令级覆盖率(Instructions coverage)是指测试集中执行的指令数与代码中总指令数的比例。它是衡量代码被测试覆盖程度的一种度量标准。
在使用 Jacoco 进行测试覆盖率分析时,指令级覆盖率(Instructions coverage)是其中的一个重要指标。它表示了代码中的每一条指令是否被至少一个测试用例执行到。如果一条指令被测试用例执行到了,那么它就是被覆盖的。
例如,假设有如下代码片段:

public int add(int a, int b) {
    int result = a + b;
    return result;
}
这段代码中包含了几条指令:一条是将 a 和 b 相加的指令,一条是将结果赋给 result 的指令,以及一条是返回 result 的指令。如果测试用例覆盖了这三条指令,那么指令级覆盖率就是100%。
分支覆盖率(Branches coverage)是指在测试集中执行的分支数量与代码中总分支数量的比例。它是测试用例覆盖代码中不同分支路径的程度的指标。
在使用 Jacoco 进行测试覆盖率分析时,分支覆盖率是其中的一个重要指标。它用于衡量代码中的条件语句(例如 if、else、switch 等)的测试覆盖程度。

public String getGrade(int score) {
    if (score >= 90) {
        return "A";
    } else if (score >= 80) {
        return "B";
    } else if (score >= 70) {
        return "C";
    } else {
        return "D";
    }
}
这段代码中包含了 4 个分支路径,分别是:
score >= 90
score >= 80 && score < 90
score >= 70 && score < 80
score < 70
如果测试用例覆盖了这四个分支路径中的所有情况,那么分支覆盖率就是100%。
圈复杂度(Cyclomatic Complexity)是一种用来衡量代码复杂度的度量指标,它用于评估代码中的控制流的复杂程度。圈复杂度通常用于衡量一个函数、方法或程序的复杂性
通常,圈复杂度越高,代码越复杂,维护和理解代码的难度也就越大。
行覆盖(Lines)是 Jacoco 报告中的一个指标,用于衡量代码中的行覆盖率,即被测试覆盖到的代码行数占总代码行数的比例。
行覆盖率是衡量测试覆盖程度的一种指标,它表示被测试覆盖到的代码行数与总代码行数之间的比率。行覆盖率的计算方式是通过对被测试代码的每一行进行标记,记录哪些行被测试覆盖到了,然后计算被覆盖行数与总行数的比值。
方法覆盖(Non-abstract methods)是 Jacoco 报告中的一个指标,用于衡量代码中非抽象方法的覆盖情况。
方法覆盖率指的是被测试覆盖到的非抽象方法的数量占总非抽象方法数量的比例。在 Java 中,非抽象方法是指在类或接口中定义的具体实现的方法,而不包括抽象方法(即没有具体实现的方法)。
Jacoco 在生成测试覆盖率报告时会统计非抽象方法的覆盖情况,包括被测试覆盖到的方法数量和总方法数量。通过计算被覆盖方法数与总方法数的比值,就可以得到方法覆盖率。
类覆盖(Classes)是 Jacoco 报告中的一个指标,用于衡量代码中类的覆盖情况。
类覆盖率指的是被测试覆盖到的类的数量占总类数量的比例。在 Java 中,一个类通常对应一个 .java 源代码文件,它包含了对应类的定义和实现。
Jacoco 在生成测试覆盖率报告时会统计被测试覆盖到的类的数量和总类数量。通过计算被覆盖类数与总类数的比值,就可以得到类覆盖率。
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值