一种增量代码覆盖率统计方法、及其相关设备技术

技术编号:35349531 阅读:22 留言:0更新日期:2022-10-26 12:16
本申请实施例属于代码覆盖率统计领域,涉及一种增量代码覆盖率统计方法,包括若当前exec文件的类标识与上一次exec文件的类标识不同,且当前exec文件的类名称与上一次exec文件的类名称相同时,将上一次exec文件的类标识修改为当前exec文件的类标识;合并当前exec文件和上一次exec文件后,根据当前exec文件的差异行对应的标志位和上一次exec文件的标志位的差异行对应的标志位的第一比对结果修改上一次exec文件的标志位,得到覆盖率数据;根据覆盖率数据计算增量代码覆盖率,得到覆盖率报告。本申请还提供一种增量代码覆盖率统计的相关设备。本申请实现不同类标识的类文件的合并,防止覆盖率数据丢失。防止覆盖率数据丢失。防止覆盖率数据丢失。

【技术实现步骤摘要】
一种增量代码覆盖率统计方法、及其相关设备


[0001]本申请涉及代码覆盖率统计
,尤其涉及一种增量代码覆盖率统计方法、及其相关设备。

技术介绍

[0002]代码覆盖率(Code Coverage)是反映测试用例对被测程序覆盖程度的重要指标,也是衡量测试完整性的一个参考值。无论是单元测试、API(Application ProgramInterface,应用程序接口)测试、还是功能性测试,最终都是调用了程序的代码。测试结束后,通过代码覆盖率数据,可以知道测试是否充分,测试的弱点在哪些方面,进而可以指导开发者或辅助测试者增加覆盖率的测试用例。
[0003]目前市面上应用比较广泛的代码覆盖率工具如JACOCO,存在覆盖率数据统计不准确的问题,如在项目多次部署时因代码类文件的类标识(classId)不一致而导致合并失败,从而导致代码覆盖率数据不能累加、覆盖率数据经常丢失等问题。

技术实现思路

[0004]本申请实施例的目的在于提出一种增量代码覆盖率统计方法、及其相关设备,用于解决现有技术中由于代码类文件的类标识不一致导致合并失败,进而导致覆盖率数据丢失的问题。
[0005]为了解决上述技术问题,本申请实施例提供一种增量代码覆盖率统计方法,采用了如下所述的技术方案:
[0006]获取当前被测代码和上一次被测代码比对后的差异信息;
[0007]加载所述当前被测代码对应的当前exec文件以及所述上一次被测代码对应的上一次exec文件;
[0008]若所述当前exec文件的类标识与所述上一次exec文件的类标识不同,且所述当前exec文件的类名称与所述上一次exec文件的类名称相同时,将所述上一次exec文件的类标识修改为所述当前exec文件的类标识;
[0009]根据所述差异信息确定所述当前exec文件的差异行对应的标志位和所述上一次exec文件的差异行对应的标志位后,合并所述当前exec文件和所述上一次exec文件,并根据所述当前exec文件的差异行对应的标志位和所述上一次exec文件的标志位的差异行对应的标志位的第一比对结果修改所述上一次exec文件的标志位,得到覆盖率数据;
[0010]根据所述覆盖率数据计算增量代码覆盖率,得到覆盖率报告。
[0011]进一步的,所述获取当前被测代码和上一次被测代码比对后的差异信息的步骤包括:
[0012]通过gitdiff命令将所述当前被测代码和所述上一次被测代码进行逐行比对,得到所述当前被测代码和所述上一次被测代码之间的差异信息。
[0013]进一步的,所述当前被测代码的所述当前exec文件数量为多个;在所述若所述当
前exec文件的类标识与所述上一次exec文件的类标识不同的步骤之前,还包括:
[0014]通过遍历的方式,将每个所述当前exec文件的类标识与所述上一次exec文件的类标识逐一对比。
[0015]进一步的,在所述根据所述覆盖率数据计算增量代码覆盖率的步骤之前,还包括:
[0016]若所述当前exec文件的类标识与所述上一次exec文件的类标识相同时,合并所述当前exec文件与所述上一次exec文件,得到覆盖率数据。
[0017]进一步的,所述并根据所述当前exec文件的差异行对应的标志位和所述上一次exec文件的标志位的差异行对应的标志位的第一比对结果修改所述上一次exec文件的标志位的步骤包括:
[0018]根据所述差异信息,确定所述当前exec文件的差异行以及所述上一次exec文件的差异行的更新类型;
[0019]若所述更新类型为新增类型或修改类型,当所述第一比对结果为所述当前exec文件的差异行对应的标志位与所述上一次exec文件的差异行对应的标志位不同时,根据所述当前exec文件的差异行对应的标志位修改所述上一次exec文件的差异行对应的标志位;
[0020]若所述更新类型为删除类型,当所述第一比对结果为所述当前exec文件的差异行对应的标志位与所述上一次exec文件的差异行对应的标志位不同时,根据所述当前exec文件的差异行对应的标志位和所述上一次exec文件的差异行对应的标志位是否包含已覆盖标志的判断结果,修改所述上一次exec文件的差异行对应的标志位。
[0021]进一步的,所述根据所述当前exec文件的差异行对应的标志位和所述上一次exec文件的差异行对应的标志位是否包含已覆盖标识的判断结果,修改所述上一次exec文件的差异行对应的标志位的步骤包括:
[0022]若所述当前exec文件的差异行对应的标志位或所述上一次exec文件的差异行对应的标志位包含已覆盖标志时,将所述上一次exec文件的差异行对应的标志位修改为已覆盖标志;
[0023]若所述当前exec文件的差异行对应的标志位和所述上一次exec文件的差异行对应的标志位未包含已覆盖标志时,将所述上一次exec文件的差异行对应的标志位修改为未覆盖标志。
[0024]进一步的,在所述加载所述当前被测代码对应的当前exec文件以及所述上一次被测代码对应的上一次exec文件的步骤之前,还包括:
[0025]接收由每个容器发送的所述当前被测代码对应的当前exec文件;
[0026]根据各所述当前exec文件的第二比对结果确定目标保存目录;
[0027]所述根据所述覆盖率数据计算增量代码覆盖率的步骤包括:
[0028]统计所述目标保存目录中预设数量的所述当前exec文件对应的覆盖率数据,得到汇总数据;
[0029]根据所述汇总数据计算增量代码覆盖率。
[0030]为了解决上述技术问题,本申请实施例还提供一种增量代码覆盖率统计装置,采用了如下所述的技术方案:
[0031]差异获取模块,用于获取当前被测代码和上一次被测代码比对后的差异信息;
[0032]文件加载模块,用于加载所述当前被测代码对应的当前exec文件以及所述上一次
被测代码对应的上一次exec文件;
[0033]类标识修改模块,若所述当前exec文件的类标识与所述上一次exec文件的类标识不同,且所述当前exec文件的类名称与所述上一次exec文件的类名称相同时,将所述上一次exec文件的类标识修改为所述当前exec文件的类标识;
[0034]第一数据生成模块,用于根据所述差异信息确定所述当前exec文件的差异行对应的标志位和所述上一次exec文件的差异行对应的标志位后,合并所述当前exec文件和所述上一次exec文件,并根据所述当前exec文件的差异行对应的标志位和所述上一次exec文件的标志位的差异行对应的标志位的第一比对结果修改所述上一次exec文件的标志位,得到覆盖率数据;以及
[0035]报告生成模块,用于根据所述覆盖率数据计算增量代码覆盖率,得到覆盖率报告。
[0036]为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
[0037]包括本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种增量代码覆盖率统计方法,其特征在于,包括下述步骤:获取当前被测代码和上一次被测代码比对后的差异信息;加载所述当前被测代码对应的当前exec文件以及所述上一次被测代码对应的上一次exec文件;若所述当前exec文件的类标识与所述上一次exec文件的类标识不同,且所述当前exec文件的类名称与所述上一次exec文件的类名称相同时,将所述上一次exec文件的类标识修改为所述当前exec文件的类标识;根据所述差异信息确定所述当前exec文件的差异行对应的标志位和所述上一次exec文件的差异行对应的标志位后,合并所述当前exec文件和所述上一次exec文件,并根据所述当前exec文件的差异行对应的标志位和所述上一次exec文件的标志位的差异行对应的标志位的第一比对结果修改所述上一次exec文件的标志位,得到覆盖率数据;根据所述覆盖率数据计算增量代码覆盖率,得到覆盖率报告。2.根据权利要求1所述的增量代码覆盖率统计方法,其特征在于,所述获取当前被测代码和上一次被测代码比对后的差异信息的步骤包括:通过gitdiff命令将所述当前被测代码和所述上一次被测代码进行逐行比对,得到所述当前被测代码和所述上一次被测代码之间的差异信息。3.根据权利要求1所述的增量代码覆盖率统计方法,其特征在于,所述当前被测代码的所述当前exec文件数量为多个;在所述若所述当前exec文件的类标识与所述上一次exec文件的类标识不同的步骤之前,还包括:通过遍历的方式,将每个所述当前exec文件的类标识与所述上一次exec文件的类标识逐一对比。4.根据权利要求3所述的增量代码覆盖率统计方法,其特征在于,在所述根据所述覆盖率数据计算增量代码覆盖率的步骤之前,还包括:若所述当前exec文件的类标识与所述上一次exec文件的类标识相同时,合并所述当前exec文件与所述上一次exec文件,得到覆盖率数据。5.根据权利要求1所述的增量代码覆盖率统计方法,其特征在于,所述并根据所述当前exec文件的差异行对应的标志位和所述上一次exec文件的标志位的差异行对应的标志位的第一比对结果修改所述上一次exec文件的标志位的步骤包括:根据所述差异信息,确定所述当前exec文件的差异行以及所述上一次exec文件的差异行的更新类型;若所述更新类型为新增类型或修改类型,当所述第一比对结果为所述当前exec文件的差异行对应的标志位与所述上一次exec文件的差异行对应的标志位不同时,根据所述当前exec文件的差异行对应的标志位修改所述上一次exec文件的差异行对应的标志位;若所述更新类型为删除类型,当所述第一比对结果为所述当前exec文件的差异行对应的标志位与所述上一次exec文件的差异行对应的标志位不同时,根据所述当前exec文件的差异行对应的标志位和所述上一次exec文件的差异行...

【专利技术属性】
技术研发人员:梁传兢曹兰李艳晓吴贝杨虹宇刘红兵
申请(专利权)人:润联软件系统深圳有限公司
类型:发明
国别省市:

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

1