CN112667515A - 一种实现针对逻辑语句代码覆盖率的测试方法 - Google Patents

一种实现针对逻辑语句代码覆盖率的测试方法 Download PDF

Info

Publication number
CN112667515A
CN112667515A CN202110011892.5A CN202110011892A CN112667515A CN 112667515 A CN112667515 A CN 112667515A CN 202110011892 A CN202110011892 A CN 202110011892A CN 112667515 A CN112667515 A CN 112667515A
Authority
CN
China
Prior art keywords
code
coverage rate
module
data
code coverage
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
Application number
CN202110011892.5A
Other languages
English (en)
Inventor
沈磊
王伟莉
汪鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Arcvideo Technology Co ltd
Original Assignee
Hangzhou Arcvideo Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Arcvideo Technology Co ltd filed Critical Hangzhou Arcvideo Technology Co ltd
Priority to CN202110011892.5A priority Critical patent/CN112667515A/zh
Publication of CN112667515A publication Critical patent/CN112667515A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种实现针对逻辑语句代码覆盖率的测试方法。它具体包括如下步骤:(1)用例及其代码管理模块执行测试用例,生成代码覆盖率到增量代码覆盖率部署模块;(2)增量代码覆盖率部署模块结合diff文件,梳理出代码修改点与用例关联,上报用例与代码覆盖率数据集到数据存储模块;(3)数据存储模块提供代码覆盖率与用例的数据集后,代码逻辑语句统计整理模块结合单次测试用例版本,输出遗漏点;(4)测试报告输出整理模块标记出遗漏点对应用例的重要程度,考虑是否需要补充用例,输出测试报告。本发明的有益效果是:实现增量代码覆盖率的统计;完成标记后实现多个用例的汇总统计;实现精准定位测试。

Description

一种实现针对逻辑语句代码覆盖率的测试方法
技术领域
本发明涉及微服务相关技术领域,尤其是指一种实现针对逻辑语句代码覆盖率的测试方法。
背景技术
微服务架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务。微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程的架构。我们在测试时会遇到用例覆盖不全代码逻辑导致代码的一些分支遗漏从而触发出一些严重问题的发生。
发明内容
本发明是为了克服现有技术中存在上述的不足,提供了一种精准定位测试的实现针对逻辑语句代码覆盖率的测试方法。
为了实现上述目的,本发明采用以下技术方案:
一种实现针对逻辑语句代码覆盖率的测试方法,具体包括如下步骤:
(1)用例及其代码管理模块执行测试用例,生成代码覆盖率到增量代码覆盖率部署模块,并将用例及代码发送给数据存储模块进行存储;
(2)增量代码覆盖率部署模块结合diff文件,梳理出代码修改点与用例关联后到代码逻辑语句统计整理模块,同时上报用例与代码覆盖率数据集到数据存储模块;
(3)数据存储模块为代码逻辑语句统计整理模块提供代码覆盖率与用例的数据集后,代码逻辑语句统计整理模块结合单次测试用例版本,输出遗漏点给测试报告输出整理模块;
(4)测试报告输出整理模块标记出遗漏点对应用例的重要程度,考虑是否需要补充用例,输出测试报告。
本方法结合用例对于代码覆盖率和代码修改的diff文件,实现增量代码覆盖率的统计;对于每条用例执行到的代码行实现时间线和颜色的标记,完成标记后实现多个用例的汇总统计;以此达到对于代码实现精准定位测试的目的。
作为优选,在步骤(1)中,用例及其代理管理模块包括用例管理模块和代码管理模块;用例管理模块基于微服务实现,所有的代码调用都基于接口实现,因此接口用例成为保障后台运用的一个最基础的方式,用例管理模块管理维护这些接口用例,实现对于用例执行顺序、优先级、用例场景组合;代码管理模块主要对于各个版本代码实现统一的管理,为代码版本比对提供数据支撑。
作为优选,在步骤(2)中,在增量代码覆盖率部署模块中,利用已有的java字节码动态插桩技术,达到对用例执行后动态统计出用例对代码覆盖率;结合代码管理模块,过滤出指定版本的代码对比文件;结合代码对比文件,统计出增量修改下受影响的代码,结合代码覆盖率查看是否存在需要执行的用例。
作为优选,在步骤(3)中,在代码逻辑语句统计整理模块中,基于java的Attach工作机制,监听出所有的java类和方法的调用,绘制出调用链路;存储每条用例的调用链路,对于多条链路涉及覆盖到交织代码块实现代码的一一标识,根据时间标识出代码链路的颜色;结合静态代码文件所有代码行,比较出未覆盖的代码块,对于未覆盖的代码块人为确认出缺失用例的补充。
作为优选,在步骤(4)中,测试报告输出整理模块基于代码覆盖率数据出具一份可以支持阅读的代码覆盖率报告,主要包含一下方面:
(a)数据汇总统计:在单个接口收集到了代码覆盖率数据的基础上增加汇总统计的数据集,主要数据来源是单条数据;汇总统计基于方法或者类实现统计,对于每个接口涉及的每个方法数据实现一个汇总的统计;
(b)排查未覆盖的函数:基于上面每个接口代码覆盖率再次汇总在静态代码文件后,比较出没有覆盖到的代码块以及缺失的代码逻辑,对于未覆盖的代码追踪出对应的接口。
作为优选,所述数据存储模块对于所有执行过的代码逻辑语句都进行数据持久化存储,对于不同版本代码逻辑语句实现基线数据补充,数据存储模块提供代码逻辑语句存储、查询的功能,具体如下:
(i)存储:这里采用一个基线数据递增不递减的策略,每次执行后如果代码逻辑语句和基线已有的数据一致,不存储代码逻辑语句;如果不一致则存储一条新纪录的代码逻辑语句,添加时间戳标识,当查询时发现同一个接口可能存在多条代码逻辑语句,可以对比多条语句不同时间段修改导致的结果;
(ii)查询:当具有代码修改记录文件,需要提供对应接口或者服务时,数据存储模块支持模糊查询,根据数据存储时关键字去默认给出最新的代码逻辑链路,同时支持查询指定时间段代码逻辑链路。
本发明的有益效果是:结合用例对于代码覆盖率和代码修改的diff文件,实现增量代码覆盖率的统计;对于每条用例执行到的代码行实现时间线和颜色的标记,完成标记后实现多个用例的汇总统计;以此达到对于代码实现精准定位测试的目的。
附图说明
图1是本发明的方法流程图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
如图1所述的实施例中,一种实现针对逻辑语句代码覆盖率的测试方法,。具体包括如下步骤:
(1)用例及其代码管理模块执行测试用例,生成代码覆盖率到增量代码覆盖率部署模块,并将用例及代码发送给数据存储模块进行存储;用例及其代理管理模块包括用例管理模块和代码管理模块;用例管理模块基于微服务实现,所有的代码调用都基于接口实现,因此接口用例成为保障后台运用的一个最基础的方式,用例管理模块管理维护这些接口用例,实现对于用例执行顺序、优先级、用例场景组合等;代码管理模块主要对于各个版本代码实现统一的管理,为代码版本比对提供数据支撑。
(2)增量代码覆盖率部署模块结合diff文件,梳理出代码修改点与用例关联后到代码逻辑语句统计整理模块,同时上报用例与代码覆盖率数据集到数据存储模块;在增量代码覆盖率部署模块中,利用已有的java字节码动态插桩技术,达到对用例执行后动态统计出用例对代码覆盖率;结合代码管理模块,过滤出指定版本的代码对比文件;结合代码对比文件,统计出增量修改下受影响的代码,结合代码覆盖率查看是否存在需要执行的用例。
(3)数据存储模块为代码逻辑语句统计整理模块提供代码覆盖率与用例的数据集后,代码逻辑语句统计整理模块结合单次测试用例版本,输出遗漏点给测试报告输出整理模块;在代码逻辑语句统计整理模块中,基于java的Attach工作机制,监听出所有的java类和方法的调用,绘制出调用链路;存储每条用例的调用链路,对于多条链路涉及覆盖到交织代码块实现代码的一一标识,根据时间标识出代码链路的颜色;结合静态代码文件所有代码行,比较出未覆盖的代码块,对于未覆盖的代码块人为确认出缺失用例的补充。
(4)测试报告输出整理模块标记出遗漏点对应用例的重要程度,考虑是否需要补充用例,输出测试报告;测试报告输出整理模块基于代码覆盖率数据出具一份可以支持阅读的代码覆盖率报告,主要包含一下方面:
(a)数据汇总统计:在单个接口收集到了代码覆盖率数据的基础上增加汇总统计的数据集,主要数据来源是单条数据;汇总统计基于方法或者类实现统计,对于每个接口涉及的每个方法数据实现一个汇总的统计;
(b)排查未覆盖的函数:基于上面每个接口代码覆盖率再次汇总在静态代码文件后,比较出没有覆盖到的代码块以及缺失的代码逻辑,对于未覆盖的代码追踪出对应的接口。
其中:数据存储模块对于所有执行过的代码逻辑语句都进行数据持久化存储,对于不同版本代码逻辑语句实现基线数据补充,数据存储模块提供代码逻辑语句存储、查询的功能,具体如下:
(i)存储:这里采用一个基线数据递增不递减的策略,每次执行后如果代码逻辑语句和基线已有的数据一致,不存储代码逻辑语句;如果不一致则存储一条新纪录的代码逻辑语句,添加时间戳标识,当查询时发现同一个接口可能存在多条代码逻辑语句,可以对比多条语句不同时间段修改导致的结果;
(ii)查询:当具有代码修改记录文件,需要提供对应接口或者服务时,数据存储模块支持模糊查询,根据数据存储时关键字的(方法名)去默认给出最新的代码逻辑链路,同时支持查询指定时间段代码逻辑链路。
本方法结合用例对于代码覆盖率和代码修改的diff文件,实现增量代码覆盖率的统计;对于每条用例执行到的代码行实现时间线和颜色的标记,完成标记后实现多个用例的汇总统计;以此达到对于代码实现精准定位测试的目的。本发明对于微服务测试过程中判断用例覆盖代码有效性提供了数据的论证;通过本发明可以达到用例的查漏补缺和代码方法及类的逻辑梳理,最终实现用例的精准化测试;达到少量的用例应对测试完成代码逻辑分支的全量遍历;当测试完成后提供出可参考、可验证、可度量的代码覆盖率数据报告。

Claims (6)

1.一种实现针对逻辑语句代码覆盖率的测试方法,其特征是,具体包括如下步骤:
(1)用例及其代码管理模块执行测试用例,生成代码覆盖率到增量代码覆盖率部署模块,并将用例及代码发送给数据存储模块进行存储;
(2)增量代码覆盖率部署模块结合diff文件,梳理出代码修改点与用例关联后到代码逻辑语句统计整理模块,同时上报用例与代码覆盖率数据集到数据存储模块;
(3)数据存储模块为代码逻辑语句统计整理模块提供代码覆盖率与用例的数据集后,代码逻辑语句统计整理模块结合单次测试用例版本,输出遗漏点给测试报告输出整理模块;
(4)测试报告输出整理模块标记出遗漏点对应用例的重要程度,考虑是否需要补充用例,输出测试报告。
2.根据权利要求1所述的一种实现针对逻辑语句代码覆盖率的测试方法,其特征是,在步骤(1)中,用例及其代理管理模块包括用例管理模块和代码管理模块;用例管理模块基于微服务实现,所有的代码调用都基于接口实现,因此接口用例成为保障后台运用的一个最基础的方式,用例管理模块管理维护这些接口用例,实现对于用例执行顺序、优先级、用例场景组合;代码管理模块主要对于各个版本代码实现统一的管理,为代码版本比对提供数据支撑。
3.根据权利要求1所述的一种实现针对逻辑语句代码覆盖率的测试方法,其特征是,在步骤(2)中,在增量代码覆盖率部署模块中,利用已有的java字节码动态插桩技术,达到对用例执行后动态统计出用例对代码覆盖率;结合代码管理模块,过滤出指定版本的代码对比文件;结合代码对比文件,统计出增量修改下受影响的代码,结合代码覆盖率查看是否存在需要执行的用例。
4.根据权利要求3所述的一种实现针对逻辑语句代码覆盖率的测试方法,其特征是,在步骤(3)中,在代码逻辑语句统计整理模块中,基于java的Attach工作机制,监听出所有的java类和方法的调用,绘制出调用链路;存储每条用例的调用链路,对于多条链路涉及覆盖到交织代码块实现代码的一一标识,根据时间标识出代码链路的颜色;结合静态代码文件所有代码行,比较出未覆盖的代码块,对于未覆盖的代码块人为确认出缺失用例的补充。
5.根据权利要求4所述的一种实现针对逻辑语句代码覆盖率的测试方法,其特征是,在步骤(4)中,测试报告输出整理模块基于代码覆盖率数据出具一份可以支持阅读的代码覆盖率报告,主要包含一下方面:
(a)数据汇总统计:在单个接口收集到了代码覆盖率数据的基础上增加汇总统计的数据集,主要数据来源是单条数据;汇总统计基于方法或者类实现统计,对于每个接口涉及的每个方法数据实现一个汇总的统计;
(b)排查未覆盖的函数:基于上面每个接口代码覆盖率再次汇总在静态代码文件后,比较出没有覆盖到的代码块以及缺失的代码逻辑,对于未覆盖的代码追踪出对应的接口。
6.根据权利要求1或2或3或4或5所述的一种实现针对逻辑语句代码覆盖率的测试方法,其特征是,所述数据存储模块对于所有执行过的代码逻辑语句都进行数据持久化存储,对于不同版本代码逻辑语句实现基线数据补充,数据存储模块提供代码逻辑语句存储、查询的功能,具体如下:
(i)存储:这里采用一个基线数据递增不递减的策略,每次执行后如果代码逻辑语句和基线已有的数据一致,不存储代码逻辑语句;如果不一致则存储一条新纪录的代码逻辑语句,添加时间戳标识,当查询时发现同一个接口可能存在多条代码逻辑语句,可以对比多条语句不同时间段修改导致的结果;
(ii)查询:当具有代码修改记录文件,需要提供对应接口或者服务时,数据存储模块支持模糊查询,根据数据存储时关键字去默认给出最新的代码逻辑链路,同时支持查询指定时间段代码逻辑链路。
CN202110011892.5A 2021-01-06 2021-01-06 一种实现针对逻辑语句代码覆盖率的测试方法 Pending CN112667515A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110011892.5A CN112667515A (zh) 2021-01-06 2021-01-06 一种实现针对逻辑语句代码覆盖率的测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110011892.5A CN112667515A (zh) 2021-01-06 2021-01-06 一种实现针对逻辑语句代码覆盖率的测试方法

Publications (1)

Publication Number Publication Date
CN112667515A true CN112667515A (zh) 2021-04-16

Family

ID=75413156

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110011892.5A Pending CN112667515A (zh) 2021-01-06 2021-01-06 一种实现针对逻辑语句代码覆盖率的测试方法

Country Status (1)

Country Link
CN (1) CN112667515A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722436A (zh) * 2012-05-29 2012-10-10 百度在线网络技术(北京)有限公司 一种增量覆盖信息的统计方法和装置
CN105573915A (zh) * 2015-12-16 2016-05-11 北京奇虎科技有限公司 一种基于代码覆盖率的测试方法和装置
CN109426604A (zh) * 2017-08-22 2019-03-05 阿里巴巴集团控股有限公司 代码开发的监控方法及设备
CN110209568A (zh) * 2018-04-24 2019-09-06 腾讯科技(深圳)有限公司 覆盖率测试方法、装置及存储设备
CN111897737A (zh) * 2020-08-21 2020-11-06 中国工商银行股份有限公司 微服务系统程序测试的遗漏检测方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722436A (zh) * 2012-05-29 2012-10-10 百度在线网络技术(北京)有限公司 一种增量覆盖信息的统计方法和装置
CN105573915A (zh) * 2015-12-16 2016-05-11 北京奇虎科技有限公司 一种基于代码覆盖率的测试方法和装置
CN109426604A (zh) * 2017-08-22 2019-03-05 阿里巴巴集团控股有限公司 代码开发的监控方法及设备
CN110209568A (zh) * 2018-04-24 2019-09-06 腾讯科技(深圳)有限公司 覆盖率测试方法、装置及存储设备
CN111897737A (zh) * 2020-08-21 2020-11-06 中国工商银行股份有限公司 微服务系统程序测试的遗漏检测方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
咕咕荣: "Jacoco增量代码覆盖率", 《HTTPS://BLOG.CSDN.NET/RR18758236029/ARTICLE/DETAILS/109318224》 *
心若野马: "团队开发之Git管理及使用", 《HTTPS://BAIJIAHAO.BAIDU.COM/S?ID=1673608114059740337&WFR=SPIDER&FOR=PC》 *
苏南大叔: "如何查看某个文件的 git 代码变更历史?", 《HTTPS://NEWSN.NET/SAY/GIT-LOG.HTML》 *

Similar Documents

Publication Publication Date Title
CN112612675B (zh) 微服务架构下的分布式大数据日志链路跟踪方法及系统
CN110309051B (zh) 管理测试用例的方法、系统、设备及存储介质
US7007269B2 (en) Method of providing open access to application profiling data
CN109361562B (zh) 一种基于关联网络设备接入的自动化测试方法
US20070006154A1 (en) Controlling collection of debugging data
CN109460307B (zh) 基于日志埋点的微服务调用跟踪方法及其系统
ITTO940668A1 (it) Sistema per sorvegliare ed analizzare il comportamento di un sistema di commutazione controllato da un programma memorizzato
CN110083581B (zh) 一种日志追溯的方法、装置、存储介质及计算机设备
CN105512036A (zh) 根据预置规则自动生成测试用例的测试模板及测试方法
CN109254907A (zh) 一种基于Java的接口测试报告生成方法及系统
CN103176892A (zh) 一种页面监控方法及系统
CN110263129A (zh) 基于Mybatis框架进行慢查询操作统计的方法
CN116467189B (zh) 接口调用完成性能压测及全链路数据监控的方法和系统
CN114168421A (zh) 基于微服务调用链的客户化代码兼容性分析系统及方法
CN116264555A (zh) 网络产品应用的分布式调用的链路跟踪方法及装置
CN112667515A (zh) 一种实现针对逻辑语句代码覆盖率的测试方法
CN101609338A (zh) 一种对嵌入式设备实时动态测试及故障定位的方法及装置
CN103902590A (zh) 终端自动化测试方法及其装置
CN112115041A (zh) 应用程序的动态埋点方法、装置、存储介质及计算机设备
CN116150011A (zh) 代码覆盖率数据处理方法、设备、介质和计算机程序产品
CN115391233A (zh) 一种基于覆盖率分析和链路追踪的精准测试方法
CN113032254A (zh) 测试覆盖情况的评估方法和装置
CN112416995A (zh) 一种数据统计方法、装置、计算机设备及存储介质
CN105809577A (zh) 一种基于规则和组件的电厂信息化数据的分类处理方法
EP1736881A1 (en) Controlling collection of debugging data

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: 20210416

RJ01 Rejection of invention patent application after publication