阿里p8推荐,测试覆盖率工具—Jacoco

news2024/12/17 15:43:11

测试覆盖率工具

测试过程中根据需求文档和设计文档编写测试用例、执行测试;为了更加全面的覆盖,我们可能还需要理解被测程序的逻辑,需要考虑到每个函数的输入与输出,逻辑分支代码的执行情况,这个时候我们的测试执行情况就以代码覆盖率来衡量。

覆盖率是衡量测试效果的一个辅助指标。

01、意义

分析未覆盖部分的代码,从而反推在前期测试设计是否充分,没有覆盖到的代码是否是测试设计的盲点,为什么没有考虑到?

需求/设计不够清晰、测试设计的理解有误、工程方法应用后的造成的策略性放弃等等,之后进行补充测试用例设计。

检测出程序中的废代码,可以逆向反推在代码设计中思维混乱点,提醒设计/开发人员理清代码逻辑关系,提升代码质量。

代码覆盖率高不能说明代码质量高,但是反过来看,代码覆盖率低,代码质量不会高到哪里去,可以作为测试自我审视的重要工具之一。

02、工具比较

市场上主流工具Emma、Cobertura、Jacoco、Clover(商用)。

Jacoco简介

Jacoco 是一个开源的覆盖率工具,针对的语言为java。它可以嵌入到Ant 、Maven中,也提供了EclEmma Eclipse插件。Jacoco主要通过代码注入(即Java Agent)方式来实现覆盖率的功能。

很多第三方的工具提供了对 Jacoco 的集成,如:Sonar、Jenkins、IDEA,下载地址:www.eclemma.org/jacoco/

01、覆盖率相关概念

Jacoco支持多种覆盖率的统计,包括:

行覆盖率(Lines):度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。

类覆盖率(classes)):度量计算class类文件是否被执行。

分支覆盖率(Branches,C1coverage):度量if和switch语句的分支覆盖情况,计算一个方法里面的总分支数,确定执行和不执行的 分支数量。

方法覆盖率(non-abstract methods):度量被测程序的方法执行情况,是否执行取决于方法中是否有至少一个指令被执行。

指令覆盖(Instructions,C0coverage):计数单元是单个java二进制代码指令,指令覆盖率提供了代码是否被执行的信息,度量完全 独立源码格式。

圈复杂度(CyclomaticComplexity):在(线性)组合中,计算在一个方法里面所有可能路径的最小数目,缺失的复杂度同样表示测 试案例没有完全覆盖到这个模块。

02、插桩及不同插桩模式

什么是插桩

程序插桩,最早是由J.C. Huang 教授提出的,它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”,本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用)。

通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。

On-The-Fly和Offine比较

On-The-Fly模式是JVM通过 -javaagent参数指定jar文件启动代理程序,代理程序在ClassLoader装载一个class前判断是否修改class文件,并将探针插入class文件,探针不改变原有方法的行为,只是记录是否已经执行。

Offine模式就是在测试之前先对文件进行插桩,生成插过桩的class或jar包,测试插过桩的class和jar包,生成覆盖率信息到文件,最后统一处理,生成报告。

Offline模式适用于以下场景:

  • 运行环境不支持java agent
  • 部署环境不允许设置JVM参数
  • 字节码需要被转换成其他虚拟机字节码,如Android Dalvik VM
  • 动态修改字节码过程中和其他agent冲突
  • 无法自定义用户加载类

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

8小时传疯!大厂面试真题全被大佬整理在这个小程序上了!【软件测试,建议收藏】

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础 

  全套资料获取方式:点击下方小卡片自行领取即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1140268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鉴源论坛 · 观擎丨基于模型的方法在民机机载软件中的应用

作者 | 蔡喁 上海控安可信软件创新研究院副院长 版块 | 鉴源论坛 观擎 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 基于模型的开发和验证MBDV 模型泛指用于支持软件开发过程或软件验证过程的系统的一组软件方面的抽象表示,在机载软件…

【深度学习】【NLP】如何得到一个分词器,如何训练自定义分词器:从基础到实践

文章目录 什么是分词?分词算法使用Python训练分词器步骤1:选择分词算法步骤2:准备训练语料步骤3:配置分词器参数步骤4:训练分词器步骤5:测试和使用分词器 代码示例:使用SentencePiece训练分词器…

技术分享| anyRTC低延时直播优化

直播系统就是把活动现场的音频或视频信号经数字压缩后,传送到直播多媒体服务器(CDN)上,在互联网上供广大网友或授权特定人群收听或收看。而随着技术的日益更新,人民对于直播的互动性,实时性要求更高了,传统的直播少则几…

C语言编写图形化界面-创建按钮-为其指定样式

文章目录 前置章节指定窗口样式给按钮加边框扁平化按钮复选框样式按钮自动复选框 单选按钮三态按钮自动三态按钮 默认按钮样式(对话框Enter键) 设置按钮位置和大小封装函数 前置章节 开始之前,需要学习以下章节: 创建窗口 窗口过…

10G传输分析仪SDH表TFN D450S参数详情

D450S 10G SDH系列 SDH/SONET传输测试模块 D450S系列SDH/SPNET传输测试模块是TFN模块化测试产品中的一款。D450S系列可配置在FT100测试平台上,实现广泛的PDH/DSn和SDH/SONET的测试功能,为城域网提供综合的测试方案,是高性价比的网络测试产品…

500内部服务器错误很常见,但解决方法也很常见

500内部服务器错误是一个非常通用的HTTP状态代码,这意味着网站的服务器出现了问题,但服务器无法更具体地说明具体问题是什么。 HTTP 500内部服务器错误的原因 大多数情况下,当页面或网站的编程出现问题时,就会出现此错误,但问题肯定在你这边。这些问题可能是由浏览器中的…

Linux系统之file命令的基本使用

Linux系统之file命令的基本使用 一、file命令介绍1.1 Linux简介1.2 file命令简介 二、file命令的使用帮助2.1 file命令的help帮助信息2.2 file命令的语法解释2.3 file命令的man手册 三、文件类型介绍四、file命令的基本使用4.1 查询file版本4.2 显示文件类型4.3 输出时不显示文…

selenium+python web自动化测试框架项目实战实例教程

自动化测试对程序的回归测试更方便。 由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行... 可以运行更加繁琐的测试 自动化测试的一个明显好处就是可以在很短的时间内运行更多的测试。学习自动化测试最终目的是应用到实际项目中&…

基于springboot实现校友社交平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现校友社交平台管理系统演示 摘要 校友社交系统提供给用户一个校友社交信息管理的网站,最新的校友社交信息让用户及时了解校友社交动向,完成校友社交的同时,还能通过论坛中心进行互动更方便。本系统采用了B/S体系的结构,使用了java技…

C++模板类用作参数传递

前言 在模板类<>传递参数的一种实现。记不住&#xff0c;以此记录。 // dome.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #define _CRT_SECURE_NO_WARNINGS #include <iostream> //#include "tools.h" #include <fu…

一种基于屏幕分辨率的RTSP主子码流切换的多路视频监控的播放方案

技术背景&#xff1a; 用户场景下&#xff0c;存在多个监控场所的100路监控摄像头&#xff0c;例如&#xff1a;大华、海康、宇视、杭州宇泛的枪机、球机、半球、NVR、DVR等不同类型的监控设备&#xff0c;通过视频监控平台进行设备的管理&#xff0c;通过RTSP拉流的方案管理监…

python自动化测试平台开发:自动化测试平台简介

一.测试平台简介 为什么需要测试平台 已有的开源测试平台不能满足需要&#xff0c;不要轻易造轮子 需要公司级别的定制 需要整合公司内部的多套平台 例子&#xff1a;DevOps平台、精准化测试平台、质量监控平台等等 常见的测试平台开发模式 大一统模式&#xff08;适合简单的…

鉴源实验室 | AUTOSAR E2E:车载通信的安全保障

作者 | 沈平 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 随着汽车行业逐步走向电气化、智能化&#xff0c;车载系统的软件和硬件复杂度不断上升。如何确保这些复杂系统中的数据通讯安全和…

Arduino驱动热敏电阻传感器模块

目录 一、简介二、参数性能三、使用方法四、实验现象 一、简介 点击图片购买 热敏电阻传感器模块采用NTC热敏电阻传感器&#xff0c;灵敏度好&#xff0c;PH2.0接口即插即用&#xff0c;防反接&#xff0c;适用于各类开发板。 二、参数性能 电压5V接口3PIN防反接PH2.0杜邦线尺…

BigDecimal应用——计算费用场景中用到Integer,Double,BigDecimal三种类型出现的意外情况 结合BigDecimal源码分析

引出 在一个计算费用的场景中&#xff0c;用到了Integer&#xff0c;Double&#xff0c;BigDecimal三种类型&#xff0c;在转换为bigdecimal的时候遇到的问题&#xff0c;结合源码进行了分析。 1.在new bigdecimal的时候&#xff0c;最好传入的是字符串&#xff1b;2.double类…

Java集合框架:List、Set、Map类型及泛型详解

文章目录 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。&#x1f30e;跑过十五…

干货!BIM高性能3D Web轻量化引擎——HOOPS Communicator!

HOOPS Communicator是一款简单而强大的工业级高性能3D Web可视化开发包&#xff0c;专注于Web端工程图形渲染。采用了先进的流式加载方式&#xff0c;并支持服务端和客户端渲染&#xff0c;是可以在云端进行部署和无缝集成的新技术平台。灵活且易于部署&#xff0c;可在以工程为…

你绝对不知道的接口加密解决方案:Python的各种加密实现

在现代软件开发中&#xff0c;接口测试已经成为了不可或缺的一部分。随着互联网的普及&#xff0c;越来越多的应用程序都采用了接口作为数据传输的方式。接口测试的目的是确保接口的正确性、稳定性和安全性&#xff0c;从而保障系统的正常运行。 在接口测试中&#xff0c;加密…

InterfaceWave 架构图

场景 正在开发一个Web应用&#xff0c;接口中很多重复逻辑&#xff08;重复逻辑已经被抽象&#xff09;&#xff0c;我使用一个Adapter适配器&#xff0c;就可以自己生成接口&#xff0c;不用再一个一个C S D 写重复逻辑&#xff0c;我只需要在配置文件中配置&#xff0c;接口…

软件测试外包干了4年,感觉废了...

​先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…