CN113360394A - 代码测试覆盖率统计方法及装置 - Google Patents
代码测试覆盖率统计方法及装置 Download PDFInfo
- Publication number
- CN113360394A CN113360394A CN202110712769.6A CN202110712769A CN113360394A CN 113360394 A CN113360394 A CN 113360394A CN 202110712769 A CN202110712769 A CN 202110712769A CN 113360394 A CN113360394 A CN 113360394A
- Authority
- CN
- China
- Prior art keywords
- coverage
- code
- coverage rate
- test
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及测试研发技术领域,更具体的说,涉及一种代码测试覆盖率统计方法及装置。本发明提供了一种代码测试覆盖率统计方法,包括以下步骤:构建应用,收集测试覆盖数据与参数信息;通过On‑the‑fly模式插桩,部署应用自动注入agent;测试执行;通过覆盖率工具Jacoco,实现获取代码与解析覆盖率;显示全量和/或增量报告。本发明提供的一种代码测试覆盖率统计方法及装置,通过在线模式插桩,可以无需修改源代码,在系统不停机的情况下,准实时收集代码覆盖率信息,不仅支持应用的全量代码覆盖率测试,而且实现了基于代码仓库的增量代码覆盖率测试,提升分析效率,支持多维度统计、易于集成接入,功能强大。
Description
技术领域
本发明涉及测试研发技术领域,更具体的说,涉及一种代码测试覆盖率统计方法及装置。
背景技术
代码测试覆盖率,是一种通过计算测试过程中被执行的源代码占全部源代码的比例,进而间接度量软件质量的方法。
中国发明专利CN201910226405.X公开了一种获取代码测试覆盖率的装置及方法,装置包括:标记模块,执行于测试线程启动处,适于获取测试线程上下文内容中包含的方法名称,并对方法名称进行标记处理;判断模块,执行于测试线程中各方法结束处,适于获取测试线程的上下文内容,判断上下文内容中当前执行的方法名称是否已进行标记处理;获取模块,适于若判断模块判断出上下文内容中当前执行的方法名称已进行标记处理,则确定测试完成,获取测试线程的上下文内容中记载的测试覆盖数据;确定模块,适于根据测试覆盖数据确定测试线程的代码测试覆盖率。在测试线程执行过程中,通过对代码入口方法名称的标记,判断测试线程执行是否完成,进而自动获取代码测试覆盖率。上述发明难以在系统不停机情况下,准实时查看覆盖率数据报告。
现有技术中,覆盖率测试方式存在如下问题:
1)覆盖率离线收集,无法在系统不停机情况下,准实时查看覆盖率数据报告;
2)在整个测试中,只能体现单一环境的覆盖率数据,不能实现单应用、多环境或者多应用、多环境覆盖率报告合并;
3)在系统重启或者发布时,会造成部分测试覆盖率数据丢失,无法精确保证覆盖率数据报告的准确性;
4)只有全量和增量报告,每次迭代依靠全量、增量报告无法精准定位迭代上线的测试点;
5)各种环境配置比较繁琐,造成测试的效率反而低下。
发明内容
本发明的目的是提供一种代码测试覆盖率统计方法及装置,解决现有技术的代码覆盖率测试方式难以实时查看、测试环境单一的问题。
为了实现上述目的,本发明提供了一种代码测试覆盖率统计方法,包括以下步骤:
构建应用,收集测试覆盖数据与参数信息;
通过On-the-fly模式插桩,部署应用自动注入agent;
测试执行;
通过覆盖率工具Jacoco,实现获取代码与解析覆盖率;
显示全量和/或增量报告。
在一实施例中,所述获取代码并解析覆盖率,进一步包括:
获取版本全量代码;
过滤文件;
解析生成全量报告。
在一实施例中,所述获取代码并解析覆盖率,进一步包括:
提取diff代码;
过滤文件并切割方法粒度;
解析生成增量报告。
在一实施例中,所述通过On-the-fly模式插桩,进一步包括,介入class文件的加载,在加载class时,动态改变字节码结构,插入jacoco的探针;
所述获取代码并解析覆盖率,进一步包括启动服务器,在端口{$port}上,开启一个TCP服务,所述TCP服务持续接收jacoco的执行覆盖率信息并进行保存,进行覆盖率数据的dump操作。
在一实施例中,所述构建应用,进一步包括:构造HOC流水线;
所述收集测试覆盖数据与参数信息,进一步包括:配置覆盖率系统节点,填写步骤名称、步骤类型、应用名称、实例地址、环境、Git地址、通过阈值。
在一实施例中,所述收集测试覆盖数据与参数信息,进一步包括,记录单个应用的多环境信息,合并多环境覆盖率数据;
所述部署应用自动注入agent,进一步包括,遍历资源文件,获取编译class文件;
所述获取代码并解析覆盖率,进一步包括,初始化文件路径,获取git版本修改代码,获取版本提交结果,获取diff差异文件信息,遍历环境信息获取实时dump文件,删除classes以外的文件,从服务器获取全量编译文件、全量源代码,将project文件夹中文件合并;
所述显示全量和/或增量报告,进一步包括,增量文件处理,导出报表,记录页面数据,统计差异覆盖信息。
在一实施例中,所述收集测试覆盖数据与参数信息,进一步包括,调用实时获取exec数据文件接口。
在一实施例中,所述获取代码并解析覆盖率,进一步包括,增量报告处理,处理git分支差异,记录新增行信息,解析增量覆盖率文件,获取行覆盖数据,所述行信息包括行号和内容;
所述显示全量和/或增量报告,进一步包括,生成差异覆盖页面,统计差异覆盖率,生成差异报告统计页面,将页面嵌入到增量覆盖率页面。
为了实现上述目的,本发明提供了一种代码测试覆盖率统计装置,包括:
存储器,用于存储可由处理器执行的指令;
处理器,用于执行所述指令以实现如上述任一项所述的方法。
为了实现上述目的,本发明提供了一种计算机可读介质,其上存储有计算机指令,其中当计算机指令被处理器执行时,执行如上述任一项所述的方法。
本发明提供的一种代码测试覆盖率统计方法及装置,通过在线模式插桩,可以无需修改源代码,在系统不停机的情况下,准实时收集代码覆盖率信息,不仅支持应用的全量代码覆盖率,而且实现了基于代码仓库的增量代码覆盖率,提升分析效率,支持多维度统计、易于集成接入,功能强大。
附图说明
本发明上述的以及其他的特征、性质和优势将通过下面结合附图和实施例的描述而变的更加明显,在附图中相同的附图标记始终表示相同的特征,其中:
图1揭示了根据本发明一实施例的代码测试覆盖率统计方法流程图;
图2揭示了根据本发明一实施例的全量代码获取解析方法流程图;
图3揭示了根据本发明一实施例的增量代码获取解析方法流程图;
图4揭示了根据本发明一实施例的代码测试覆盖率统计装置的原理框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释发明,并不用于限定发明。
本发明提出一种代码测试覆盖率统计方法和装置,支持在线不停机生成覆盖率数据报告,支持单应用,多环境、增量行级别代码报告统计。
图1揭示了根据本发明一实施例的代码测试覆盖率统计方法流程图,如图1所示,本发明提出的代码测试覆盖率统计方法,包括以下步骤:
构建应用,收集测试覆盖数据与参数信息;
通过On-the-fly模式插桩,部署应用自动注入agent;
测试执行;
通过覆盖率工具Jacoco,获取代码与解析覆盖率;
显示全量和/或增量报告。
Jacoco是一个开源的覆盖率工具,针对java语言。Jacoco本身不支持输出增量测试覆盖率报告,如图2和图3所示,本发明提供的代码测试覆盖率统计方法,实现全量报告和增量报告的生成和输出。
其中,agent是指启动应用时主要用来插桩的jar包。
图2揭示了根据本发明一实施例的全量代码获取解析方法流程图,如图2所示,所述获取代码并解析覆盖率,进一步包括:
获取版本全量代码;
过滤文件;
解析生成全量报告。
图3揭示了根据本发明一实施例的增量代码获取解析方法流程图,如图3所示,所述获取代码并解析覆盖率,进一步包括:
提取diff代码;
过滤文件并切割方法粒度;
解析生成增量报告。
diff代码,是指本次增量的差异的代码信息。
更进一步的,所述通过On-the-fly模式插桩,进一步包括,介入class文件的加载,在加载class时,动态改变字节码结构,插入jacoco的探针;
所述获取代码并解析覆盖率,进一步包括启动服务器,在端口{$port}上,开启一个TCP服务,所述TCP服务持续接收jacoco的执行覆盖率信息并进行保存,进行覆盖率数据的dump备份操作。
TCP(Transmission Control Protocol),TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC793说明(specified)。在计算机网络OSI模型中,它完成第四层传输层所指定的功能。电脑与网络连接的许多应用都是通过TCP端口所实现的。
dump命令用于备份文件系统。
dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。
本发明提出的代码测试覆盖率统计方法,通过上述步骤,实现On-the-fly模式插桩,可以无需修改源代码,在系统不停机的情况下,准实时收集代码覆盖率信息。
本发明提供的代码测试覆盖率统计方法,支持流水线不同环境(开发环境、集成测试环境、Mock环境、准生产环境)运行触发,进行覆盖率数据生成。
更进一步的,所述构建应用,进一步包括:构造HOC流水线;
所述收集测试覆盖数据与参数信息,进一步包括:配置覆盖率系统节点,填写步骤名称、步骤类型、应用名称、实例地址、环境、Git地址、通过阈值。
HOC流水线是对接CI(Continuous Integration,持续集成)和CD(ContinuousDeployment,持续部署)流水线,让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠。
Git为采用的软件配置管理工具为代码版本管理工具。
本发明提出的代码测试覆盖率统计方法,通过上述步骤,执行流水线节点或者单独触发覆盖率生成,并支持测程配置实现,全局配置,定制化配置。
更进一步的,所述收集测试覆盖数据与参数信息,进一步包括,记录单个应用的多环境信息,合并多环境覆盖率数据;
所述部署应用自动注入agent,进一步包括,遍历资源文件,获取编译class文件;
所述获取代码并解析覆盖率,进一步包括,初始化文件路径,获取Git版本修改代码,获取版本提交结果,获取diff差异文件信息,遍历环境信息获取实时dump文件,删除classes以外的文件,从服务器获取全量编译文件、全量源代码,将project文件夹中文件合并;
所述显示全量和/或增量报告,进一步包括,增量文件处理,导出报表,记录页面数据,统计差异覆盖信息。
其中,classes为JAVA编译后的class文件。
project文件夹,其用于放置Project项目文件。
本发明提出的代码测试覆盖率统计方法,通过上述步骤,支持单一环境与多环境覆盖率合并统计,支持多应用与多机器的覆盖率数据生成,支持行覆盖、圈覆盖、分支覆盖、方法覆盖等量化指标,获取多环境、多应用覆盖率数据、分析报告自动过滤、支持全局,定制化配置,实现单应用、多环境或者多应用、多环境覆盖率报告合并,保证覆盖率统计的准确性、实时性和稳定性。
更进一步的,所述收集测试覆盖数据与参数信息,进一步包括,调用实时获取exec数据文件接口。系统重启或发布之前提供API(Application Programming Interface,应用程序接口)。
本发明提出的代码测试覆盖率统计方法,通过上述步骤,在系统重启或者发布时,先调用实时获取exec数据文件接口,保证数据不丢失,精确保证覆盖率数据报告的准确性。
exec数据文件,是覆盖率数据搜集出来的执行数据文件,以及对最新代码的编译出来的字节码class文件和src中的源代码进行报告生成的数据文件。
更进一步的,所述获取代码并解析覆盖率,进一步包括:
增量报告处理;
处理git分支差异;
记录新增行信息,所述行信息包括行号和内容;
解析增量覆盖率文件,获取行覆盖数据;
所述显示全量和/或增量报告,进一步包括:
生成差异覆盖页面;
统计差异覆盖率;
生成差异报告统计页面;
将页面嵌入到增量覆盖率index.html页面。
index.html页面,是指重新的一个增量覆盖率报告页面,进行展示增量行覆盖率数据的HTML格式的页面。
本发明提出的代码测试覆盖率统计方法,通过上述步骤,可以精准定位迭代上线的测试点,极大提高测试效率。
本发明提出的代码测试覆盖率统计方法,支持多维度统计,结果详细,开发、测试等相关人员可以在线直观的查看代码覆盖率的情况,数据全部落地,可以直观查看覆盖率趋势变化,帮助公司内部支付、账户、通道等支付相关业务系统的覆盖率量化指标提升,确保支付系统高效、稳定、快速迭代、高质量地完成数字化交付。
尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。
图4揭示了根据本发明一实施例的代码测试覆盖率统计装置的原理框图,代码测试覆盖率统计装置可包括内部通信总线401、处理器(processor)402、只读存储器(ROM)403、随机存取存储器(RAM)404、通信端口405、以及硬盘407。内部通信总线401可以实现代码测试覆盖率统计装置组件间的数据通信。处理器402可以进行判断和发出提示。在一些实施例中,处理器402可以由一个或多个处理器组成。
通信端口405可以实现代码测试覆盖率统计装置与外部的输入/输出设备之间进行数据传输与通信。在一些实施例中,代码测试覆盖率统计装置可以通过通信端口405从网络发送和接收信息及数据。在一些实施例中,代码测试覆盖率统计装置可以通过输入/输出端406以有线的形式与外部的输入/输出设备之间进行数据传输与通信。
代码测试覆盖率统计装置还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘407,只读存储器(ROM)403和随机存取存储器(RAM)404,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的程序指令。处理器402执行这些指令以实现方法的主要部分。处理器402处理的结果通过通信端口405传给外部的输出设备,在输出设备的用户界面上显示。
举例来说,上述的代码测试覆盖率统计方法的实施过程文件可以为计算机程序,保存在硬盘407中,并可记载到处理器402中执行,以实施本申请的方法。
代码测试覆盖率统计方法的实施过程文件为计算机程序时,也可以存储在计算机可读存储介质中作为制品。例如,计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(CD)、数字多功能盘(DVD))、智能卡和闪存设备(例如,电可擦除可编程只读存储器(EPROM)、卡、棒、键驱动)。此外,本文描述的各种存储介质能代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可以包括但不限于能存储、包含和/或承载代码和/或指令和/或数据的无线信道和各种其它介质(和/或存储介质)。
本发明提出的代码测试覆盖率统计装置,前端主要包含六大功能模块,包括后台接口服务模块、项目管理模块、测程管理模块、应用管理模块、历史报告查询模块和首页展示模块。
六大功能模块说明如下:
后台接口服务模块,提供被调用API,和其它平台(例如HOC流水线平台)对接,基于Devops集成,生成覆盖率数据报告,以及系统级代码产能功能。
Devops,是指过程、方法与系统的统称,让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠。
项目管理模块,进行新建项目,选择应用名称,该应用的起始提交commitID,终止commitID,运行环境,分支名称进而创建项目。触发生成报告、查看报告,修改项目基本信息。
GitLab代码推送到远程仓库的一个Commit记录。第一次提交的Commit记录为起始提交commitID,终止Commit记录为终止commitID。
一般记录为如下格式:20109be6a7dd8bd4eb7f4896fd0ece2ba799655a。
测程管理模块,进行新建测程,选择应用名称,分支名称、环境类型、循环周期类型(分钟级别,小时级别)、创建人、开始、结束时间。生效以后,即可轮询准实时获取覆盖率报告数据,点击详情,可以查看覆盖率趋势图表。
应用管理模块,管理应用基本信息、应用环境信息和代码过滤信息:
应用基本信息,包括应用ID,应用名称、代码Git地址、操作和修改;
应用环境信息,包括应用名称、应用IP地址(Internet Protocol Address,互联网协议地址,又译为网际协议地址)和环境类型;
代码过滤信息,包括新建过滤分支和生效范围。
历史报告查询模块,包含应用名称、分支名称、环境类型、状态、执行者、全量行覆盖率、增量行覆盖率,未分析、已分析、分析(前/后)覆盖率,支持导出Excel覆盖率报告。
首页展示模块,包括多维度统计,接入应用数量、覆盖率统计次数、覆盖率成功率和应用覆盖率运行次数统计功能。
本发明提出的代码测试覆盖率统计装置,运行代码测试覆盖率统计的具体流程如下:
HOC流水线构造,配置覆盖率系统节点,填写步骤名称、步骤类型、应用名称、实例地址、环境、Git地址、通过阈值;
提交发布运行流水线,触发覆盖率系统生成全量、增量报告;
根据该应用的所有环境类型,自动合并单应用、多环境的覆盖率数据收集;
显示覆盖率报告展示页面。
点击未分析报告,进去分析报告详情(覆盖率系统会根据配置规则,自动过滤一些工具类生成的代码、VO、BO、DO、DTO的代码剔除);
VO、BO、DO、DTO,是指Java中常见的对象类型。
VO(Value Object)为表现对象,前端界面展示,主要对应界面显示的数据对象。
BO(Business Object)为业务对象、封装对象、复杂对象,里面可能包含多个类,主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
DTO(Data Transfer Object)为数据传输对象;
DO(Domain Object)为领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
点击代码路径链接,自动跳转代码行级别的覆盖率统计信息;
根据未覆盖代码,需要确定是否用例缺失或者废弃代码进而做调整,重新执行完毕以后,可以通过项目管理模块或者测程管理模块准实时生成报告或者查看报告;
通过项目管理模块,生成报告,通过新建项目功能;
点击生成报告,也可以对补充的测试点进行覆盖率数据的检验;
通过测程管理模块,查看报告,测试验证完毕以后,也可以无需手动触发覆盖率报告。进入测程管理模块,查看即可;
在项目管理或者项目变更上线,也能实现单应用多环境覆盖率合并覆盖率数据报告生成。
本发明提供的一种代码测试覆盖率统计方法及装置,具体具有以下有益效果:
1)在系统不停机情况下,准实时查看覆盖率数据报告;
2)在整个测试中,实现单应用、多环境或者多应用、多环境覆盖率报告合并;
3)在系统重启或者发布时,精确保证覆盖率数据报告的准确性;
4)实现全量和增量报告,每次迭代依靠全量、增量报告精准定位迭代上线的测试点。
如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
本领域技术人员将可理解,信息、信号和数据可使用各种不同技术和技艺中的任何技术和技艺来表示。例如,以上描述通篇引述的数据、指令、命令、信息、信号、位(比特)、码元、和码片可由电压、电流、电磁波、磁场或磁粒子、光场或光学粒子、或其任何组合来表示。
本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。
结合本文所公开的实施例描述的各种解说性逻辑模块、和电路可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协作的一个或多个微处理器、或任何其他此类配置。
结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在ASIC中。ASIC可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。
在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。
上述实施例是提供给熟悉本领域内的人员来实现或使用本发明的,熟悉本领域的人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。
Claims (10)
1.一种代码测试覆盖率统计方法,其特征在于,包括以下步骤:
构建应用,收集测试覆盖数据与参数信息;
通过On-the-fly模式插桩,部署应用自动注入agent;
测试执行;
通过覆盖率工具Jacoco,获取代码与解析覆盖率;
显示全量和/或增量报告。
2.根据权利要求1所述的代码测试覆盖率统计方法,其特征在于,所述获取代码并解析覆盖率,进一步包括:
获取版本全量代码;
过滤文件;
解析生成全量报告。
3.根据权利要求1所述的代码测试覆盖率统计方法,其特征在于,所述获取代码并解析覆盖率,进一步包括:
提取diff代码;
过滤文件并切割方法粒度;
解析生成增量报告。
4.根据权利要求1所述的代码测试覆盖率统计方法,其特征在于:
所述通过On-the-fly模式插桩,进一步包括,介入class文件的加载,在加载class时,动态改变字节码结构,插入jacoco的探针;
所述获取代码并解析覆盖率,进一步包括启动服务器,在端口{$port}上,开启一个TCP服务,所述TCP服务持续接收jacoco的执行覆盖率信息并进行保存,进行覆盖率数据的备份操作。
5.根据权利要求1所述的代码测试覆盖率统计方法,其特征在于:
所述构建应用,进一步包括:构造HOC流水线;
所述收集测试覆盖数据与参数信息,进一步包括:配置覆盖率系统节点,填写步骤名称、步骤类型、应用名称、实例地址、环境、Git地址、通过阈值。
6.根据权利要求1所述的代码测试覆盖率统计方法,其特征在于:
所述收集测试覆盖数据与参数信息,进一步包括,记录单个应用的多环境信息,合并多环境覆盖率数据;
所述部署应用自动注入agent,进一步包括,遍历资源文件,获取编译class文件;
所述获取代码并解析覆盖率,进一步包括,初始化文件路径,获取git版本修改代码,获取版本提交结果,获取diff差异文件信息,遍历环境信息获取实时dump文件,删除classes以外的文件,从服务器获取全量编译文件、全量源代码,将project文件夹中文件合并;
所述显示全量和/或增量报告,进一步包括,增量文件处理,导出报表,记录页面数据,统计差异覆盖信息。
7.根据权利要求1所述的代码测试覆盖率统计方法,其特征在于:
所述收集测试覆盖数据与参数信息,进一步包括,调用实时获取exec数据文件接口。
8.根据权利要求1所述的代码测试覆盖率统计方法,其特征在于:
所述获取代码并解析覆盖率,进一步包括,增量报告处理,处理git分支差异,记录新增行信息,解析增量覆盖率文件,获取行覆盖数据,所述行信息包括行号和内容;
所述显示全量和/或增量报告,进一步包括,生成差异覆盖页面,统计差异覆盖率,生成差异报告统计页面,将页面嵌入到增量覆盖率页面。
9.一种代码测试覆盖率统计装置,包括:
存储器,用于存储可由处理器执行的指令;
处理器,用于执行所述指令以实现如权利要求1-8任一项所述的方法。
10.一种计算机可读介质,其上存储有计算机指令,其中当计算机指令被处理器执行时,执行如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110712769.6A CN113360394A (zh) | 2021-06-25 | 2021-06-25 | 代码测试覆盖率统计方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110712769.6A CN113360394A (zh) | 2021-06-25 | 2021-06-25 | 代码测试覆盖率统计方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113360394A true CN113360394A (zh) | 2021-09-07 |
Family
ID=77536415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110712769.6A Pending CN113360394A (zh) | 2021-06-25 | 2021-06-25 | 代码测试覆盖率统计方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360394A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791986A (zh) * | 2021-11-18 | 2021-12-14 | 云账户技术(天津)有限公司 | 一种代码覆盖率的统计方法及装置 |
CN113918466A (zh) * | 2021-10-28 | 2022-01-11 | 平安银行股份有限公司 | 系统测试方法、装置、设备及存储介质 |
CN114189512A (zh) * | 2021-12-14 | 2022-03-15 | 南京欧珀软件科技有限公司 | 基线代码的下载方法、装置、终端设备和存储介质 |
CN115858354A (zh) * | 2022-11-29 | 2023-03-28 | 广发银行股份有限公司 | 一种测试覆盖率计算方法、系统、终端及存储介质 |
CN117112398A (zh) * | 2023-07-11 | 2023-11-24 | 贝壳找房(北京)科技有限公司 | 增量代码覆盖率检测方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160299835A1 (en) * | 2015-04-08 | 2016-10-13 | Opshub, Inc. | Method and system for providing delta code coverage information |
CN112559337A (zh) * | 2020-12-10 | 2021-03-26 | 平安普惠企业管理有限公司 | 代码覆盖率测试方法、装置、电子设备及存储介质 |
CN112631926A (zh) * | 2020-12-29 | 2021-04-09 | 平安银行股份有限公司 | 代码测试覆盖率显示方法、装置、计算机设备及存储介质 |
CN112948249A (zh) * | 2021-03-03 | 2021-06-11 | 浙江百应科技有限公司 | 一种基于JaCoCo基础上实现增量代码覆盖率统计的方法和装置 |
-
2021
- 2021-06-25 CN CN202110712769.6A patent/CN113360394A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160299835A1 (en) * | 2015-04-08 | 2016-10-13 | Opshub, Inc. | Method and system for providing delta code coverage information |
CN112559337A (zh) * | 2020-12-10 | 2021-03-26 | 平安普惠企业管理有限公司 | 代码覆盖率测试方法、装置、电子设备及存储介质 |
CN112631926A (zh) * | 2020-12-29 | 2021-04-09 | 平安银行股份有限公司 | 代码测试覆盖率显示方法、装置、计算机设备及存储介质 |
CN112948249A (zh) * | 2021-03-03 | 2021-06-11 | 浙江百应科技有限公司 | 一种基于JaCoCo基础上实现增量代码覆盖率统计的方法和装置 |
Non-Patent Citations (1)
Title |
---|
代春美等: "多环境多需求并行下的代码测试覆盖率统计工具实现", 《多环境多需求并行下的代码测试覆盖率统计工具实现》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113918466A (zh) * | 2021-10-28 | 2022-01-11 | 平安银行股份有限公司 | 系统测试方法、装置、设备及存储介质 |
CN113918466B (zh) * | 2021-10-28 | 2024-10-18 | 平安银行股份有限公司 | 系统测试方法、装置、设备及存储介质 |
CN113791986A (zh) * | 2021-11-18 | 2021-12-14 | 云账户技术(天津)有限公司 | 一种代码覆盖率的统计方法及装置 |
CN114189512A (zh) * | 2021-12-14 | 2022-03-15 | 南京欧珀软件科技有限公司 | 基线代码的下载方法、装置、终端设备和存储介质 |
CN115858354A (zh) * | 2022-11-29 | 2023-03-28 | 广发银行股份有限公司 | 一种测试覆盖率计算方法、系统、终端及存储介质 |
CN115858354B (zh) * | 2022-11-29 | 2023-08-18 | 广发银行股份有限公司 | 一种测试覆盖率计算方法、系统、终端及存储介质 |
CN117112398A (zh) * | 2023-07-11 | 2023-11-24 | 贝壳找房(北京)科技有限公司 | 增量代码覆盖率检测方法、装置、电子设备及存储介质 |
CN117112398B (zh) * | 2023-07-11 | 2024-04-16 | 贝壳找房(北京)科技有限公司 | 增量代码覆盖率检测方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113360394A (zh) | 代码测试覆盖率统计方法及装置 | |
CN109344056B (zh) | 一种测试方法以及测试装置 | |
CN111290956B (zh) | 基于脑图的测试方法、装置、电子设备及存储介质 | |
Chen et al. | Extracting and studying the Logging-Code-Issue-Introducing changes in Java-based large-scale open source software systems | |
CN110188036A (zh) | 一种软件测试方法及装置 | |
CN110515795A (zh) | 一种大数据组件的监控方法、装置、电子设备 | |
CN117194242A (zh) | 交易系统的日志回放方法及其装置、电子设备、存储介质 | |
CN111966587A (zh) | 数据采集方法、装置和设备 | |
CN112540808A (zh) | 一种程序行为层级调用关系的记录方法及相关设备 | |
CN111930611B (zh) | 一种测试数据的统计方法和装置 | |
CN111858600B (zh) | 数据宽表构建方法、装置、设备及存储介质 | |
CN112416417A (zh) | 一种代码量统计方法、装置、电子设备及存储介质 | |
CN115248782B (zh) | 一种自动化测试方法、装置及计算机设备 | |
CN109597706B (zh) | 一种核对差异数据的检测方法、装置及系统 | |
CN113220594B (zh) | 自动化测试方法、装置、设备及存储介质 | |
Alizadeh et al. | History-based construction of alignments for conformance checking: Formalization and implementation | |
CN115455059A (zh) | 一种基于底层数据解析用户行为的方法、装置及相关介质 | |
CN114218073A (zh) | 一种接口测试方法、装置、服务器及介质 | |
CN114706738A (zh) | 客户端自动埋点的方法及装置 | |
CN113282505A (zh) | 软件测试进度分析方法、装置、设备及存储介质 | |
Liu et al. | Extraction of attribute dependency graph from database applications | |
Kumar et al. | An empirical study of bad smell in code on maintenance effort | |
CN109783791A (zh) | 一种审前审计报表生成方法及装置 | |
CN116340187B (zh) | 规则引擎迁移测试方法、装置、电子设备及存储介质 | |
US9471788B2 (en) | Evaluation of software applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210907 |
|
RJ01 | Rejection of invention patent application after publication |