System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请实施例涉及测试领域,尤其涉及一种代码覆盖率统计方法、装置、设备及存储介质。
技术介绍
1、代码覆盖率是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。代码覆盖率的统计可以采用插桩方式实现,通过在被测代码的代码行之间插入起统计作用的工具代码,当该行代码被执行到时,上述起统计作用的工具代码也会同时被执行,从而实现覆盖率统计。
2、对于版本迭代升级的程序而言,针对由之前版本代码文件经过代码变更获得的当前版本代码文件,通常可以只统计变更部分的代码在测试执行时是否被覆盖到,无需对全部代码进行测试。
3、然而,代码变更通常会包含代码的增加和删除,而当前版本代码文件中无法体现出删除代码,进行插桩统计时也无法统计删除代码。也即是说,测试执行无法覆盖到删除代码及与其逻辑紧密相关的上下文代码,统计不完整,准确性较低。
技术实现思路
1、本申请实施例提供一种代码覆盖率统计方法、装置、设备及存储介质,用以提高代码覆盖率统计的准确性和完整性。
2、第一方面,本申请实施例提供了一种代码覆盖率统计方法,包括:
3、获取第一版本代码文件与第二版本代码文件的比较文件,所述第二版本代码文件由所述第一版本代码文件经过代码变更获得;
4、将所述比较文件与所述第二版本代码文件进行合并,获得目标文件;
5、对所述目标文件进行覆盖率测试,获得所述目标文件对应的第一代码覆盖率数据;
6、解析所述比较文件,获
7、基于所述第一代码覆盖率数据与所述代码变更数据,获得所述比较文件对应的第二代码覆盖率数据。
8、可选的,所述比较文件包括行级代码变更信息,在所述行级代码变更信息包括删除代码行的情况下,所述将所述比较文件与所述第二版本代码文件进行合并,获得目标文件包括:
9、在所述第二版本代码文件中,与所述删除代码行对应位置处设置占位代码,获得目标文件。
10、可选的,所述对所述目标文件进行覆盖率测试,获得所述目标文件对应的第一代码覆盖率数据包括:
11、利用预设覆盖率工具,对所述目标文件进行插桩,并按照预设测试方式进行测试,获得所述目标文件对应的第一代码覆盖率数据。
12、可选的,所述解析所述比较文件,获得代码变更数据包括:
13、解析所述比较文件,获得行级代码变更信息;所述行级代码变更信息包括增加代码行、删除代码行、空代码行、注释代码行以及无业务含义代码行中的至少一种;
14、在所述行级代码变更信息包括所述删除代码行、空代码行、注释代码行以及无业务含义代码行的情况下,删除所述空代码行、注释代码行以及无业务含义代码行,以获得代码变更数据。
15、可选的,所述第一代码覆盖率数据包括被覆盖代码行;
16、所述基于所述第一代码覆盖率数据与所述代码变更数据,获得所述比较文件对应的第二代码覆盖率数据包括:
17、将所述被覆盖代码行中,与所述增加代码行或删除代码行中行数相同的目标覆盖代码行,作为所述比较文件对应的第二代码覆盖率数据。
18、可选的,所述第一代码覆盖率数据、第二代码覆盖率数据及代码变更数据以二维数组形式表示。
19、可选的,所述方法还包括:
20、输出所述第二代码覆盖率数据。
21、第二方面,本申请实施例提供了一种代码覆盖率统计装置,包括:
22、获取模块,用于获取第一版本代码文件与第二版本代码文件的比较文件,所述第二版本代码文件由所述第一版本代码文件经过代码变更获得;
23、合并模块,用于将所述比较文件与所述第二版本代码文件进行合并,获得目标文件;
24、测试模块,用于对所述目标文件进行覆盖率测试,获得所述目标文件对应的第一代码覆盖率数据;
25、解析模块,用于解析所述比较文件,获得代码变更数据;
26、获得模块,用于基于所述第一代码覆盖率数据与所述代码变更数据,获得所述比较文件对应的第二代码覆盖率数据。
27、第三方面,本申请实施例提供了一种电子设备,包括存储组件及处理组件;所述存储组件存储一条或多条计算机指令,所述计算机指令供所述处理组件调用执行,所述处理组件执行所述一条或多条计算机指令以实现如第一方面所述的代码覆盖率统计方法。
28、第四方面,本申请实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时实现如第一方面所述的代码覆盖率统计方法。
29、本申请的方案中,可以获取第一版本代码文件和第二版本代码文件的比较文件,该第二版本代码文件可以由第一版本代码文件经过代码变更获得,并将比较文件与第二版本代码文件进行合并,获得目标文件,之后可以对目标文件进行覆盖率测试,获得目标文件对应的第一代码覆盖率数据,以及对比较文件进行解析,获得代码变更数据,基于第一代码覆盖率数据与代码变更数据,可以获得比较文件对应的第二代码覆盖率数据。由于目标文件是由两个版本的比较文件与当前的新版本代码文件合并获得的,目标文件中可以体现出版本代码变更过程中的删除代码,从而对目标文件进行覆盖率测试,获得对应的第一代码覆盖率数据时,可以覆盖到删除代码及与其逻辑紧密相关的上下文代码,提高代码覆盖率统计的完整性和准确性,再结合由比较文件解析获得的代码变更数据,即可以获得比较文件对应的第二代码覆盖率数据,从而能够在确保代码覆盖率统计的完整性和准确性的基础上,实现对变更部分的代码在测试执行时是否被覆盖到的统计,也即是实现变更部分代码的覆盖率的准确和完整统计。
30、本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
本文档来自技高网...【技术保护点】
1.一种代码覆盖率统计方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述比较文件包括行级代码变更信息,在所述行级代码变更信息包括删除代码行的情况下,所述将所述比较文件与所述第二版本代码文件进行合并,获得目标文件包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述目标文件进行覆盖率测试,获得所述目标文件对应的第一代码覆盖率数据包括:
4.根据权利要求2所述的方法,其特征在于,所述解析所述比较文件,获得代码变更数据包括:
5.根据权利要求4所述的方法,其特征在于,所述第一代码覆盖率数据包括被覆盖代码行;
6.根据权利要求5所述的方法,其特征在于,所述第一代码覆盖率数据、第二代码覆盖率数据及代码变更数据以二维数组形式表示。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
8.一种代码覆盖率统计装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括存储组件及处理组件;所述存储组件存储一条或多条计算机指令,所述计算机指令供所述处理组件调用执行,所述
10.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被计算机执行时实现如权利要求1~7任一项所述的代码覆盖率统计方法。
...【技术特征摘要】
1.一种代码覆盖率统计方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述比较文件包括行级代码变更信息,在所述行级代码变更信息包括删除代码行的情况下,所述将所述比较文件与所述第二版本代码文件进行合并,获得目标文件包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述目标文件进行覆盖率测试,获得所述目标文件对应的第一代码覆盖率数据包括:
4.根据权利要求2所述的方法,其特征在于,所述解析所述比较文件,获得代码变更数据包括:
5.根据权利要求4所述的方法,其特征在于,所述第一代码覆盖率数据包括被覆盖代码行;
6.根据权利要求5所述的...
【专利技术属性】
技术研发人员:关亚雷,
申请(专利权)人:上海瑞家信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。