利用JaCoCo统计接口测试中代码覆盖率

?        做接口测试,很多时候都会听到,你接口测试的覆盖率是多少?很多人会回答80%,你怎么统计的,他说覆盖了80%的需求。这个回答没有错误,但是片面,我们不能只考虑需求的覆盖率,还有业务的覆盖率,场景的覆盖率,接口的覆盖率,代码的覆盖率等,本文介绍接口测试的代码覆盖率。那么我们来看看如何是实现的。

1、环境的搭建

1.1搭建 ant 环境

https://ant.apache.org/bindownload.cgi

我下载的是1.10.7版本,这个是因为 每个版本对应的java的版本 不一样,这个在ant的官网有介绍,下载的zip包 ,然后解压,然后去配置环境变量,我用的是mac配置的,打开:vi .bash_profile

export ANT_HOME=/Users/lileilei/Downloads/apache-ant-1.10.7

export PATH=$PATH:.:${ANT_HOME}/bin

配置完毕后source .bash_profile  立即生效

到这里,我们已经设置好了我们的ant的环境。

1.2 下载JaCoCo。

下载地址:https://www.jacoco.org/jacoco/

下载完毕后,解压即可。

以上搭建了所需的环境。

2.ant的build文件配置

通过build.xml拉去覆盖率,具体配置文件如下:

    

<?xml version="1.0" encoding="utf-8"?>
<project name="plate_id_sample_service" xmlns:jacoco="antlib:org.jacoco.ant">
    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
        <classpath path="/Users/lileilei/Downloads/jacoco-0.8.5/lib/jacocoant.jar"/>
    </taskdef>
    <target name="report">
        <jacoco:report>
            <executiondata>
                <file file="jacoco.exe"/>
            </executiondata>

            <structure name="pan">
                <!-- 可以按软件功能模块设置多个group,方便在report中查看 -->
                <group name="pan">
                    <classfiles>
                        <!--.class文件路径,可以放在客户端-->
                        <fileset dir="/Users/lileilei/Desktop/plan/target/classes"/>
                    </classfiles>
                    <sourcefiles encoding="utf-8">
                        <!--源代码路径,可以放在客户端-->
                        <fileset dir="/Users/lileilei/Desktop/plan/src/main/java" />
                    </sourcefiles>
                </group>
            </structure>

            <!-- report文件保存地址 -->
            <html destdir="report"   encoding="utf-8"/>

        </jacoco:report>
    </target>
</project>

这是完整的配置文件,我在配置的地方加好注释,大家可以根据自己的需求进行设置。

然后去启动要测试的待测服务,这里我是用的jar 启动的服务,启动方式。

java -javaagent:/Users/lileilei/Downloads/jacoco-0.8.5/lib/jacocoagent.jar=dumponexit=true,destfile=jacoco.exe -jar demo-2.0.6.RELEASE.jar

这里需要javaagent,这里是jacoco的agent,需要替换成自己的路径就可以。

启动完成后,就可以开始进行测试了,

我使用的swgger2,进行了简单的接口测试,后获取覆盖率。

在build.xml目录,使用ant获取jacoco.exe然后用 ant report产生测试报告

打开测试报告,

这样,我们就获取到了接口测试的全量代码的覆盖率。我们可以打开获取每个类,每个函数的覆盖率。

其实在真正的覆盖率,我们还需要考虑 增量代码覆盖率。这里简单的对全量代码的覆盖率做介绍。抛砖引玉,大家可以继续探索。

这里给大家提供了一种接口测试的覆盖率的统计方式。当然了还有其他方式,大家可以根据自己的需求进行去探索。

需要明确,提供合理方案。

方案合理,解决合理需求。

控制合理,合理控制时间。

思路清晰,善于解决问题。

思路方案,取决于实践中。

大量锻炼,才能思维敏捷。

闭门造车,僵化思路难成。

点滴积累,成就美好明天。

    关注雷子说测试

    

原文地址:https://www.cnblogs.com/leiziv5/p/11875844.html

时间: 2024-10-09 20:13:47

利用JaCoCo统计接口测试中代码覆盖率的相关文章

通过JaCoCo统计接口测试代码覆盖率

通过JaCoCo统计接口测试代码覆盖率 JaCoCo 需求:统计微服务接口测试的代码覆盖率 JaCoCo的ant与maven方法都是在编译期对单元测试的覆盖率统计 JaCoCo的可以开启一个agent服务收集运行过程中的代码执行覆盖率. 主要会用到jacoco 的两个功能:agent和cli 覆盖率收集 1. 收集方式 2. JaCoCo使用 Sprint Boot测试项目 1. 创建项目 2. 工程结构 3. CountController.java 4. 上传代码到github 覆盖率统计测

Python统计列表中的重复项出现的次数的方法

前言 在实际工作和学习中,经常会遇到很多重复的数据,但是我们又必须进行统计,所及这里简单介绍一下统计列表中重复项的出现次数的简单方法. 实例 本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴.具体方法如下: #方法1: mylist = [1,2,2,2,2,3,3,3,4,4,4,4] myset = set(mylist)  #myset是另外一个列表,里面的内容是mylist里面的无重复 项 for item in myset

modelsim中代码覆盖率使用详解

Modelsim代码覆盖率功能Code coverage,能报告出statement(语句).branch(分支).condition(条件).expression(表达).toggle(信号翻转).fsm(有限状态机)等多种覆盖率情况. 1.编译选项(compile option): 在Modelsim的Workspace里选中需要查看代码覆盖率的文件,然后点击右键选择compile—>compile properties,如下图所示. 之后选择“Coverage”选项,出现下图所示的窗口,根

利用postman进行接口测试并发送带cookie请求的方法

做web测试的基本上都用用到postman去做一些接口测试,比如测试接口的访问权限,对于某些接口用户A可以访问,用户B不能访问:比如有时需要读取文件的数据.在postman上要实现这样测试,我们就必要要用到cookie请求.用postman发送带cookie的请求,由于chrome安全的限制,postman是发不出带cookie的请求.如果想要发送带cookie的请求,需要开启postman Interceptor. 什么是POSTMAN? POSTMAN是一个Chrome插件工具,我们可以通过

python学习--统计序列中元素出现的频度(次数)

例如有一个列表 l=[1,1,-1,2,3,22,34,32,2,-3,34,22,-5] 统计列表中每个元素出现的多少次 方式一: 先把列表变成一个字典dict,字典的key对应列表中的每一个元素,value代表每个元素出现的次数 d=dict.fromkeys(l,0)#两个参数,第一个参数为对应的列表,第二个参数设置dict的默认value=0. 然后,遍历列表中每一个元素,dict中碰到该元素,value就加1. for x in l: d[l]+=1 print(d) 方式二: 利用集

算法题之统计字符串中出现最多的字母

算法题之统计字符串中出现最多的字母 代码: <script> var arr = []; function txt(str) { var j = 0; for(var i = 0; i < str.length; i++) { if(arr.indexOf(str[i]) == -1) { arr.push(str[i]); } } for(var j = 0; j < arr.length; j++) { var s = arr[j]; var dd = str.split(s)

python 统计list中各个元素出现的次数

python 统计list中各个元素出现的次数利用Python字典统计利用Python的collection包下Counter的类统计利用Python的pandas包下的value_counts的类统计利用字典dict来完成统计举例: a = [1, 2, 3, 1, 1, 2]dict = {}for key in a: dict[key] = dict.get(key, 0) + 1print dict12345输出结果: >>>{1: 3, 2: 2, 3: 1}1利用Python

C++11 —— 统计 tuple 中指定数据类型的数量

问题背景 ??在实现可变参数列表中的类型统计功能前,我们先看看下面代码中的需求场景: /** * @struct x_selector_t< size_t > * @brief 协助 make_task() 接口的特化选择功能的辅助类. */ template< size_t > struct x_selector_t { }; /** * @brief xtuple 参数列表中未包含指定数据类型的时候,创建 x_task_A_t 对象. */ template< typen

七、统计网站中不同省份用户的访问数

一.需求 针对log日志中给定的信息,统计网站中不同省份用户的访问数 二.编程代码 package org.apache.hadoop.studyhdfs.mapreduce; import java.io.IOException; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; im