coverage 测试代码覆盖率

article/2025/10/23 12:08:13

测试覆盖率,简单的说,就是评价测试活动覆盖产品代码的指标。测试的目的,是确认产品代码按照预期一样工作,也可以看作是产品代码工作方式的说明文档。进一步考虑,测试覆盖率可以看作是产品代码质量的间接指标--之所以说是间接指标,因为测试覆盖率评价的是测试代码的质量,并不是产品代码的质量。代码覆盖率是一种白盒测试,因为测试覆盖率是评价产品代码类内部的指标,而不是评价系统接口或规约。测试覆盖率尤其用于评价测试代码是否已经覆盖了产品代码所有的路径

1、EclEmma coverage安装

有两种方法:1、eclipse中点击工具栏的 help--install new software 显示如下截图

在这里插入图片描述
点击Add,弹出如下

在这里插入图片描述


在name中填写安装软件的名字(自己命名),location中填写如下网址:
http://update.eclemma.org/
接下来,只要一路next就OK了,安装成功后eclipse工具栏会添加一个新图标

在这里插入图片描述


如果出现上面截图表示成功
2、第二种方法更简单
eclipse中点击工具栏的 help-- Eclipse marketplace 如下图

在这里插入图片描述


按照红线标注的操作,安装完后eclipse工具栏出现第一种安装说明最后截图中的图标,表示安装成功。

2、coverage使用

首选选择你要测试的Test测试类,右击,右键菜单里面多了一个Coverage as的选项,选择JUNIT,这时测试程序会在JUNIT中执行一遍,如果代码有多种情况,可以多次执行,吧多次统计的测试代码覆盖路进行整合,生成覆盖率统计结果。(java application 程序也可以直接用 coverage as 执行)

实例

百度中看到一个很好的例子,这里借用一下:

public class HelloWorld {
public static void main(String[] args) {new HelloWorld();int rand = (int) (Math.random() * 100);if (rand % 2 == 0) {System.out.println("Hello, world! 0");} elseSystem.out.println("Hello, world! 1");int result = rand % 2 == 0 ? rand + rand : rand * rand;System.out.println(result);
}

}

按照上面说的coverage使用,执行一下, 可以看到如下截图

在这里插入图片描述

绿色:代码被执行过
黄色:代码部分被执行过
红色:代码没有被执行过

在下面的Coverage视窗中,可以看到代码测试覆盖率。看代码,是取得随机数,if判断可能出现不满足,可能满足的情况, 需要多次执行该代码,得到多次的代码覆盖率,然后吧多次得到的覆盖率合并,得到这个类总的代码测试覆盖率。
(其中有一句:new HelloWorld(); 该行代码是为了调用,该类默认的构造器。我认为:每个类都有默认的构造器,只是没有显示的代码而已,如果这里不写,代码覆盖率会降低,第一行public class HelloWorld 绿色也会变成红色 )
总的统计如下:

在这里插入图片描述


箭头所指为合并多次执行后的覆盖率百分比

3、总结

1)、coverage 可以测试java application程序,也可以测试JUnit 测试类
2)、如果要测试整个项目中代码的测试覆盖率,可能比较麻烦,至少需要吧所有代码的测试类执行一遍,并且把所有代码执行的路径都考虑到才准确(不知道有没有对整个项目测试的好方法,最起码我还不知道 -.-)
3)、别忘记测试异常情况,空指针,或者其他异常后,执行异常代码,也会增加代码测试覆盖率的
4)、如果得到代码测试覆盖率比较高,显而易见能看出代码安全性会比较能保证(最起码测试无误)


http://chatgpt.dhexx.cn/article/ihwESx4T.shtml

相关文章

GIS原理篇 Coverage

一、什么是 Coverage Coverage 是一种用于存储矢量数据的地理相关数据模型,它包含地理要素的空间(位置)数据和属性(描述性)数据。Coverage 使用一组要素类来表示地理要素。每个要素类存储一组点、线(弧&am…

Python:代码覆盖率工具coverage

简介:覆盖率测量通常用于衡量测试的有效性。它可以显示您的代码的哪些部分正在被测试执行,哪些不是。coverage是一个测量 Python 程序代码覆盖率的工具。它监视您的程序,注意代码的哪些部分已被执行,然后分析源代码以识别可能已执…

configure--prefix

本文主要说明--prefix参数的作用,其主要用在编译安装源代码应用中的./configure环节。 ./configure --help 查看详细的说明帮助 1、源码安装一般包括几个步骤:配置(configure),编译(make)&…

路由策略 匹配工具 IP-Prefix

⦁ p-prefix-name:指定地址前缀列表的名称。字符串形式,长度范围是1~169,不支持空格,区分大小写。 ⦁ index index-number:指定本匹配项在地址前缀列表中的序号。整数形式,取值范围是1&am…

CondaValueError: The target prefix is the base prefix. Aborting.

报错截图 错误原因 conda命令错误 正确做法 conda create -n py38 python3.8

zuul 里面的 prefix 和 strip-prefix 怎么使用

首先两个是配置路由前缀的, 下面是我网上找的一段话: prefix :前缀,当请求匹配前缀时会进行代理strip-prefix :代理前缀默认会从请求路径中移除,通过该设置关闭移除功能, 当 stripPrefixtrue …

Trie树(Prefix Tree)介绍

本文用尽量简洁的语言介绍一种树形数据结构 —— Trie树。 一、什么是Trie树 Trie树,又叫字典树、前缀树(Prefix Tree)、单词查找树 或 键树,是一种多叉树结构。如下图: 上图是一棵Trie树,表示了关键字集…

configure --prefix=/的作用和用法

非root用户安装python和gcc的时候,总是需要设定这个,只知道是个路径,具体是什么路径,代表什么不清楚。 不明白就百度: configure --prefix/是干啥用的?这个路径代表了什么? Configure是一个可…

前缀和(Prefix Sum)

前缀和指一个数组的某下标之前的所有数组元素的和(包含其自身)。前缀和分为一维前缀和,以及二维前缀和。前缀和是一种重要的预处理,能够降低算法的时间复杂度,可以在 O ( 1 ) O(1) O(1)的时间复杂度内求出区间和。 一…

CMAKE_INSTALL_PREFIX

一、定义 CMAKE_INSTALL_PREFIX为cmake的内置变量,用于指定cmake执行install命令时,安装的路径前缀。Linux下的默认路径是/usr/local ,Windows下默认路径是 C:/Program Files/${PROJECT_NAME} 二、用…

IP-Prefix List

地址前缀列表 一、IP-Prefix List二、语法及匹配规则1、语法2、匹配规则 三、配置案例1、拓扑2、分析ACL实现IP-Prefix List实现 四、IE考试题思考题 在进行配置案例前先了解一下基础知识 一、IP-Prefix List IP-Prefix List:能够同时匹配网络号和前缀长度 性能及可…

【脚本】更新依赖库pkgconfig文件中的prefix设置

在本地编译和安装了某个库后,如果其lib目录下存在pkgconfig子目录,则子目录下会存在若干.pc文件,文件中会有prefix的配置(该配置标识当前库的安装路径),当要把该库拷贝到其他机器上时,如果库的路…

Elasticsearch学习--查询(prefix、wildcard、regexp、fuzzy)

一、前缀搜索 prefix 不计算相关度评分性能较差前缀搜索匹配的是分词后的词项前缀搜索没有缓存前缀搜索尽可能把前缀长度设置的更长 GET product/_search {"query": {"fuzzy": {"name": {"value": "product1"}}} } index…

bgp 使用route-map设置Local perference(本地优先属性)配置与详解

实验目的: 1、掌握基于route-map的本地优先配置方法。 2、使用route-map配置可以定置基于目标网络的本地优先。 实验拓扑: 接口IP配置及bgp基础配置详见 CSDNhttps://mp.csdn.net/mp_blog/creation/editor?spm1001.2014.3001.5352 查看R3与R4的路由…

使用route-map 配置BGP本地优先级

一、实验目的: 1、掌握基于route-map的本地优先配置方法。 2、使用route-map配置可以定置基于目标网络的本地优先级。 二、拓扑图: 三、配置BGP基本的配置: 1、配置各路由器的IP地址和BGP协议。配置完之后,查看一下R3和R4的路由表…

Cisco route-map 源地址路由配置

拓朴图: 案例: 公司内部使用的是一条拨号光纤和一条固定专线光纤,默认是指向拨号光纤出口那个网关出去,现在2网段有两台服务器(WEB、Mail)映射到公网,让外部来访问。 办公区因工作需要&#xf…

bgp route-map应用 配置 学习笔记

先全运行bgp R2 router bgp 2 no auto-summary no synchronzation bgp router-id 2.2.2.2 neighbor 12.1.1.1 remtotes as 10 neighbor 24.1.1.4 remote-as 10r1: router bgp 10 no auto-summary no synchronization bgp router-id 1.1.1.1 neighbor 12.1.1.2…

重分布和Route-MAP

一般在做重分布的时候用route-map较多,当然也可以用分发列表或者前缀列表等等,重分布的时候为了干掉不需要的路由,节约路由器CPU和转发效率可以使用route-map,当然route-map也可以用在其他的场景。 本次实验将ospf与rip重分布来使…

使用Route-Map过滤BGP的路由

实验目的 1、掌握使用Route-Map过滤BGP的路由。 实验拓扑 接口ip配置与bgp基础配置详见: CSDNhttps://mp.csdn.net/mp_blog/creation/editor/125210020查看R3的路由表: R3#show ip route Gateway of last resort is not set1.0.0.0/24 is subnetted…

基于Route-map的路由过滤配置详解

实验目的: 1、掌握基于Route-map的路由过滤配置方法。 2、掌握route-map的命令语法。 实验拓扑: 步骤1:接口ip配置路由协议基础配置重分发详见CSDNhttps://mp.csdn.net/mp_blog/creation/editor/125018583查看R1、R3路由表 R1#show ip route Gateway …