代码覆盖率数据处理方法、设备、介质和计算机程序产品技术

技术编号:37669039 阅读:11 留言:0更新日期:2023-05-26 04:29
本发明专利技术涉及代码覆盖率数据处理方法,用于电子设备,包括:获取目标服务的历史中的多个覆盖率数据;将多个覆盖率数据合并,其中对于两个不同的代码版本之间更改的类的覆盖率数据,对其中的探针数据进行方法粒度的切分,对两个代码版本之间未更改的方法的探针数据进行合并,对两个代码版本之间更改的方法的探针数据,保留较新代码版本的探针数据,其余的覆盖率数据使用代码覆盖率工具合并。本发明专利技术还涉及代码覆盖率数据处理设备、介质和计算机程序产品。产品。产品。

【技术实现步骤摘要】
代码覆盖率数据处理方法、设备、介质和计算机程序产品


[0001]本专利技术涉及计算机
,特别涉及代码覆盖率数据处理方法、设备、介质和计算机程序产品。

技术介绍

[0002]增量代码覆盖率作为一种的软件测试技术已被普遍应用。在功能测试过程中,统计新增代码的测试覆盖情况,可以作为测试质量的度量,并且可以通过分析代码分支和路径的覆盖情况进行测试场景的查漏补缺。然而,现有的代码覆盖率工具仅可对当前版本的功能测试进行增量代码覆盖率统计,因此应用范围只能限定于当前版本。而对于敏捷开发团队来说,面临着频繁发布的问题,统计整个测试周期的增量代码覆盖率才能最大化增量代码覆盖率的价值。要解决这个问题,意味着要合并整个测试过程中多个版本的代码覆盖率,然而现有的代码覆盖率工具不支持不同代码生成的覆盖率数据合并。
[0003]其次,每次服务部署会导致上一次覆盖率数据下载的时间点到本次部署的时间点之间一段时间内的覆盖率数据丢失。对于敏捷开发流程来说,这就意味着必须要在服务销毁前下载覆盖率数据,因此如何提供一种可持续性的覆盖率数据获取方案也是亟待解决的问题。

技术实现思路

[0004]本专利技术的目的在于提供代码覆盖率数据处理方法、设备、介质和计算机程序产品,解决如何持续地获取覆盖率数据、并跨代码版本进行覆盖率合并的技术问题。
[0005]本专利技术的第一实施方式公开了一种代码覆盖率数据处理方法,用于电子设备,包括:
[0006]获取目标服务的历史中的多个覆盖率数据;
[0007]将多个所述覆盖率数据合并,其中
[0008]对于两个不同的代码版本之间更改的类的所述覆盖率数据,对其中的探针数据进行方法粒度的切分,对两个所述代码版本之间未更改的方法的探针数据进行合并,对两个所述代码版本之间更改的方法的探针数据,保留较新代码版本的探针数据,
[0009]其余的所述覆盖率数据使用代码覆盖率工具合并。
[0010]可选地,所述获取目标服务的历史中的多个覆盖率数据,包括:
[0011]配置所述目标服务的服务销毁hook;
[0012]所述服务销毁hook在所述目标服务销毁前调用覆盖率收集服务api;
[0013]所述覆盖率收集服务api获取服务上的所述覆盖率数据,并将所述覆盖率数据写到数据库中。
[0014]可选地,还包括:
[0015]获取两个不同的所述代码版本的Java源码;
[0016]基于所述Java源码,确定所述更改的类和所述更改的方法;
[0017]编译所述Java源码,得到相应的class字节码。
[0018]可选地,所述对两个所述代码版本之间未更改的方法的探针数据进行合并,还包括:
[0019]对所述class字节码进行探针解析,并记录两个所述代码版本的所述更改的类中的方法的探针起始值;
[0020]基于所述探针起始值,计算两个所述代码版本的所述更改的类中所述未更改的方法的探针长度;
[0021]对所述探针长度相等的所述未更改的方法的探针数据进行合并。
[0022]可选地,所述对其中的探针数据进行方法粒度的切分,包括:
[0023]基于所述探针起始值,对两个所述代码版本的所述更改的类的探针数据进行方法粒度的切分。
[0024]可选地,所述对两个所述代码版本之间未更改的方法的探针数据进行合并,包括:
[0025]将两个所述代码版本的所述未更改的方法的探针数据中相对应探针位置上的布尔值进行或运算,以所述或运算的结果为所述相对应探针位置上的合并后的布尔值。
[0026]将多个所述覆盖率数据合并
[0027]可选地,所述将多个所述覆盖率数据合并,包括:
[0028]在有两个未被标记为已合并的所述覆盖率数据的情况下,将两个所述覆盖率数据合并,并将合并得到的覆盖率数据标记为已合并;
[0029]在有两个以上未被标记为已合并的所述覆盖率数据的情况下,
[0030]将其中两个未被标记为已合并的所述覆盖率数据合并,
[0031]将合并得到的覆盖率数据与一个剩余的未被标记为已合并的所述覆盖率数据合并,重复该步骤,直到没有剩余的未被标记为已合并的所述覆盖率数据,
[0032]将最新合并得到的覆盖率数据标记为已合并。
[0033]本专利技术的第二实施方式公开了一种电子设备,所述电子设备包括存储有计算机可执行指令的存储器和处理器,当所述指令被所述处理器执行时,使得所述电子设备实施根据本专利技术的第一实施方式的代码覆盖率数据处理方法。
[0034]本专利技术的第三实施方式公开了一种计算机存储介质,在所述计算机存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行根据本专利技术的第一实施方式的代码覆盖率数据处理方法。
[0035]本专利技术的第四实施方式公开了一种计算机程序产品,包括计算机可执行指令,所述指令被处理器执行以实施根据本专利技术的第一实施方式的代码覆盖率数据处理方法。
[0036]本专利技术实施方式与现有技术相比,主要区别及其效果在于:
[0037]在本专利技术中,在服务销毁hook在目标服务销毁前调用覆盖率收集服务api,获取服务上的覆盖率数据,即每当服务部署时会自动获取覆盖率数据,实现可持续地获取覆盖率数据,并进行跨版本的覆盖率数据合并,无须进行人工介入。当需要生成增量代码覆盖率报告时,可以通过Web页面填写服务名、分支名调用相应接口的方式,方便地获取增量代码报告,且该报告包含整个测试周期的代码覆盖情况。相较于基于Html报告进行合并的方案,不需要进行大量的计算,在更深的层次上解决了跨版本合并的问题,将更利于应用。为测试人员提供了包含整个测试周期的更加精准的代码行级的漏测定位。
附图说明
[0038]图1示出根据本申请的实施例的代码覆盖率数据处理方法的流程图。
[0039]图2示出根据本申请的实施例的代码覆盖率数据处理装置的框图。
[0040]图3示出根据本申请的实施例的获取覆盖率数据的流程图。
[0041]图4示出根据本申请的实施例的探针数组的示意图。
[0042]图5示出根据本申请的实施例的多文件合并的示意图。
[0043]图6示出实施根据本申请实施例的代码覆盖率数据处理的电子设备的硬件结构框图。
具体实施方式
[0044]为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
[0045]现有代码覆盖率的增量分析的实施方式大致为:1)获取当前版本与上一版本的代码差异化结果,2)获取当前版本的代码测试覆盖率文件,3)指定差异化的代码生成代码覆盖率报告;但其只能针对同一版本代码的功能测试而产生的代码覆盖率进行增量分析。并且因每次服务部署会导致上一次覆盖率数据下载的时间点到本次部署的时间点之间一段时间内的覆盖率数据丢失,即,已测试功能的覆盖率数据销毁,覆盖率数据的获取不可持续。
[0046]对于敏捷研发本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码覆盖率数据处理方法,用于电子设备,其特征在于,包括:获取目标服务的历史中的多个覆盖率数据;将多个所述覆盖率数据合并,其中对于两个不同的代码版本之间更改的类的覆盖率数据,对其中的探针数据进行方法粒度的切分,对两个所述代码版本之间未更改的方法的探针数据进行合并,对两个所述代码版本之间更改的方法的探针数据,保留较新代码版本的探针数据,其余的所述覆盖率数据使用代码覆盖率工具合并。2.根据权利要求1所述的方法,其特征在于,所述获取目标服务的历史中的多个覆盖率数据,包括:配置所述目标服务的服务销毁hook;所述服务销毁hook在所述目标服务销毁前调用覆盖率收集服务api;所述覆盖率收集服务api获取服务上的所述覆盖率数据,并将所述覆盖率数据写到数据库中。3.根据权利要求1所述的方法,其特征在于,还包括:获取两个不同的所述代码版本的Java源码;基于所述Java源码,确定所述更改的类和所述更改的方法;编译所述Java源码,得到相应的class字节码。4.根据权利要求3所述的方法,其特征在于,所述对两个所述代码版本之间未更改的方法的探针数据进行合并,还包括:对所述class字节码进行探针解析,并记录两个所述代码版本的所述更改的类中的方法的探针起始值;基于所述探针起始值,计算两个所述代码版本的所述更改的类中所述未更改的方法的探针长度;对所述探针长度相等的所述未更改的方法的探针数据进行合并。5.根据权利要求4所述的方法,其特征在于,所述对其中的探针数据进行方法粒度的切分,包括:基于所述探针起始值,对两个所述代码版本的所述更改的类的探针数据...

【专利技术属性】
技术研发人员:谭九阳徐桃林郑勇
申请(专利权)人:金拱门中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1