一种代码覆盖率的统计方法、装置、存储介质及设备制造方法及图纸

技术编号:34740429 阅读:22 留言:0更新日期:2022-08-31 18:32
本发明专利技术实施例公开了根据本发明专利技术实施例所提供的一种代码覆盖率的统计方法、装置、存储介质及设备,该方法包括将当次应用程序迭代的第一个测试包确定为第一目标测试包,将当次应用程序迭代的第二个测试包确定为第二目标测试包,以及将第一合并代码覆盖行信息确定为第一历史合并代码覆盖行信息;将第一历史合并代码覆盖行信息与第一变更代码行信息进行映射,得到第一临时代码覆盖行信息;将第一临时代码覆盖行信息与第二目标测试包的代码覆盖行信息进行合并,得到第二合并代码覆盖行信息;基于最终的第二合并代码覆盖行信息,得到全量代码覆盖率。由此该能够统计一次应用程序迭代中每个测试包的代码覆盖行信息,从而提高了代码覆盖率统计的准确性。覆盖率统计的准确性。覆盖率统计的准确性。

【技术实现步骤摘要】
一种代码覆盖率的统计方法、装置、存储介质及设备


[0001]本专利技术涉及计算机
,具体而言涉及一种代码覆盖率的统计方法、装置、存储介质及设备。

技术介绍

[0002]在应用程序测试过程中,通常会采用多种测试手段,比如:单元测试、功能测试、自动化测试等。目前,通过统计测试包的代码覆盖率来反应测试进度以及测试效果。
[0003]在具体应用中,对于一次正常的应用程序迭代而言,打出多个因代码变更而具有不同代码的测试包是非常常见的情况,而不同代码的测试包所得到的代码覆盖率并不能直接简单合并,这样就导致统计不同测试包的代码覆盖率具有非常大的难度。
[0004]在现有技术中,在对不同测试包的代码覆盖率进行统计的过程中,工作人员会遗漏一些测试包的代码覆盖行信息,这样会导致部分代码覆盖行信息没有被统计进来,从而降低了不同测试包的代码覆盖率的统计准确度。

技术实现思路

[0005]有鉴于此,本专利技术实施例提供了一种代码覆盖率的统计方法、装置、存储介质及设备,以解决部分代码覆盖行信息没有被统计进来,从而降低了不同测试包的代码覆盖率的统计准确度的问题。
[0006]第一方面,本专利技术实施例提供了一种代码覆盖率的统计方法,所述方法包括:
[0007]S101:获取当次应用程序迭代的第一个测试包与所述预置基准包的第一合并代码覆盖行信息;
[0008]S102:将当次应用程序迭代的第一个测试包确定为第一目标测试包,将当次应用程序迭代的第二个测试包确定为第二目标测试包,以及将所述第一合并代码覆盖行信息确定为第一历史合并代码覆盖行信息;
[0009]S103:确定所述第二目标测试包相较于所述第一目标测试包的第一变更代码行信息及所述第二目标测试包的代码覆盖行信息;
[0010]S104:将所述第一历史合并代码覆盖行信息与所述第一变更代码行信息进行映射,得到第一临时代码覆盖行信息;
[0011]S105:将所述第一临时代码覆盖行信息与所述第二目标测试包的代码覆盖行信息进行合并,得到第二合并代码覆盖行信息;
[0012]S106:将当次应用程序迭代的第k1个测试包确定为新的第一目标测试包,将当次应用程序迭代的第k1+1个测试包确定为新的第二目标测试包,将所述第二合并代码覆盖行信息作为新的第一历史合并代码覆盖行信息,重复S103

S105的步骤,其中,k1依次取2至N1

1之间的正整数,N1为当次应用程序迭代的测试包的总数量;
[0013]S107:基于最终的第二合并代码覆盖行信息,得到N1个测试包的全量代码覆盖率。
[0014]在一种可能的实现方式中,所述获取当次应用程序迭代的第一个测试包与预置基
准包的第一合并代码覆盖行信息包括:
[0015]确定第一个测试包相较于预置基准包的第二变更代码行信息、预置基准包的代码覆盖行信息及第一个测试包的代码覆盖行信息;
[0016]将所述预置基准包的代码覆盖行信息与所述第二变更代码行信息进行映射,得到第二临时代码覆盖行信息;
[0017]将所述第二临时代码覆盖行信息与第一个测试包的代码覆盖行信息进行合并,得到第一合并代码覆盖行信息。
[0018]在一种可能的实现方式中,所述确定第一个测试包相较于预置基准包的第二变更代码行信息包括:
[0019]将所述第一个测试包的源代码与所述预置基准包的源代码进行比对;
[0020]如果所述预置基准包不含有所述第一个测试包的第L1行的源代码,则将L1确定为新增行数,其中,所述L1为所述第一个测试包内的任一行;
[0021]如果所述第一个测试包不含有所述预置基准包的第L2行的源代码,则将L2确定为删除行数,其中,所述L2为所述预置基准包内的任一行;
[0022]如果所述预置基准包的第L2行在所述第一个测试包的第L3行的源代码,则将L2确定为初始行数,以及将L3确定为变更行数,其中,所述L3与L2不相等;
[0023]基于所述新增行数、删除行数、初始行数及对应的变更行数,得到第二变更代码行信息。
[0024]在一种可能的实现方式中,所述预置基准包的代码覆盖行信息包括预置基准包的每行源代码所在的行数及对应的覆盖信息,所述将所述预置基准包的代码覆盖行信息与所述第二变更代码行信息进行映射,得到第二临时代码覆盖行信息包括:
[0025]如果所述第二变更代码行信息包括所述删除行数,则将所述预置基准包的代码覆盖行信息内的所述删除行数所对应的源代码的覆盖信息删除;
[0026]如果所述第二变更代码行信息包括所述初始行数及对应的变更行数,则将所述预置基准包的代码覆盖行信息的所述初始行数更改为对应的变更行数,以得到第二临时代码覆盖行信息。
[0027]在一种可能的实现方式中,所述确定所述第二目标测试包相较于所述第一目标测试包的第一变更代码行信息包括:
[0028]将所述第二目标测试包的源代码与所述第一目标测试包的源代码进行比对;
[0029]如果所述第一目标测试包不含有所述第二目标测试包的第L4行的源代码,则将L4确定为新增行数,其中,所述L4为所述第二目标测试包内的任一行;
[0030]如果所述第二目标测试包不含有所述第一目标测试包的第L5行的源代码,则将L5确定为删除行数,其中,所述L5为所述第一目标测试包内的任一行;
[0031]如果所述第一目标测试包的第L5行的源代码在所述第二目标测试包的第L6行的源代码在,则将L5确定为初始行数,以及将L6确定为变更行数,其中,所述L6与L5不相等;
[0032]基于所述新增行数、删除行数、初始行数及对应的变更行数,得到第一变更代码行信息。
[0033]在一种可能的实现方式中,所述将所述第一历史合并代码覆盖行信息与所述第一变更代码行信息进行映射,得到第一临时代码覆盖行信息包括:
[0034]如果所述第一变更代码行信息包括删除行数,则将所述第一历史合并代码覆盖行信息的所述删除行数所对应的源代码的覆盖信息删除;
[0035]如果所述第一变更代码行信息包括初始行数及对应的变更行数,则将所述第一历史合并代码覆盖行信息的所述初始行数更改为对应的变更行数,以得到第一临时代码覆盖行信息。
[0036]在一种可能的实现方式中,所述基于最终的第二合并代码覆盖行信息,得到N1个测试包的全量代码覆盖率包括:
[0037]基于所述最终的第二合并代码覆盖行信息,得到被覆盖过的源代码的总行数及所有源代码的总行数;
[0038]基于所述被覆盖过的源代码的总行数及所有源代码的总行数,按照下列公式计算得到N1个测试包的全量代码覆盖率;
[0039]其中,P1为N1个测试包的全量代码覆盖率,S1为被覆盖过的源代码的总行数,T1为所有源代码的总行数。
[0040]第二方面,本专利技术实施例提供了一种代码覆盖率的统计方法,所述方法包括:
[0041]S201:获取当次应用程序迭本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码覆盖率的统计方法,其特征在于,所述方法包括:S101:获取当次应用程序迭代的第一个测试包与所述预置基准包的第一合并代码覆盖行信息;S102:将当次应用程序迭代的第一个测试包确定为第一目标测试包,将当次应用程序迭代的第二个测试包确定为第二目标测试包,以及将所述第一合并代码覆盖行信息确定为第一历史合并代码覆盖行信息;S103:确定所述第二目标测试包相较于所述第一目标测试包的第一变更代码行信息及所述第二目标测试包的代码覆盖行信息;S104:将所述第一历史合并代码覆盖行信息与所述第一变更代码行信息进行映射,得到第一临时代码覆盖行信息;S105:将所述第一临时代码覆盖行信息与所述第二目标测试包的代码覆盖行信息进行合并,得到第二合并代码覆盖行信息;S106:将当次应用程序迭代的第k1个测试包确定为新的第一目标测试包,将当次应用程序迭代的第k1+1个测试包确定为新的第二目标测试包,将所述第二合并代码覆盖行信息作为新的第一历史合并代码覆盖行信息,重复S103

S105的步骤,其中,k1依次取2至N1‑
1之间的正整数,N1为当次应用程序迭代的测试包的总数量;S107:基于最终的第二合并代码覆盖行信息,得到N1个测试包的全量代码覆盖率。2.根据权利要求1所述的方法,其特征在于,所述获取当次应用程序迭代的第一个测试包与预置基准包的第一合并代码覆盖行信息包括:确定第一个测试包相较于预置基准包的第二变更代码行信息、预置基准包的代码覆盖行信息及第一个测试包的代码覆盖行信息;将所述预置基准包的代码覆盖行信息与所述第二变更代码行信息进行映射,得到第二临时代码覆盖行信息;将所述第二临时代码覆盖行信息与第一个测试包的代码覆盖行信息进行合并,得到第一合并代码覆盖行信息。3.根据权利要求2所述的方法,其特征在于,所述确定第一个测试包相较于预置基准包的第二变更代码行信息包括:将所述第一个测试包的源代码与所述预置基准包的源代码进行比对;如果所述预置基准包不含有所述第一个测试包的第L1行的源代码,则将L1确定为新增行数,其中,所述L1为所述第一个测试包内的任一行;如果所述第一个测试包不含有所述预置基准包的第L2行的源代码,则将L2确定为删除行数,其中,所述L2为所述预置基准包内的任一行;如果所述预置基准包的第L2行在所述第一个测试包的第L3行的源代码,则将L2确定为初始行数,以及将L3确定为变更行数,其中,所述L3与L2不相等;基于所述新增行数、删除行数、初始行数及对应的变更行数,得到第二变更代码行信息。4.根据权利要求3所述的方法,其特征在于,所述预置基准包的代码覆盖行信息包括预置基准包的每行源代码所在的行数及对应的覆盖信息,所述将所述预置基准包的代码覆盖行信息与所述第二变更代码行信息进行映射,得到第二临时代码覆盖行信息包括:
如果所述第二变更代码行信息包括所述删除行数,则将所述预置基准包的代码覆盖行信息内的所述删除行数所对应的源代码的覆盖信息删除;如果所述第二变更代码行信息包括所述初始行数及对应的变更行数,则将所述预置基准包的代码覆盖行信息的所述初始行数更改为对应的变更行数,以得到第二临时代码覆盖行信息。5.一种代码覆盖率的统计方法,其特征在于,所述方法包括:S201:获取当次应用程序迭代的第一个测试包与上一次应用程序迭代的最后一个测试包的第三合并代码行覆盖行信息以及当次应用程序迭代的第一个测试包相较于上一次应用程序迭代的最后一个测试包的第一变更代码覆盖行信息;S202:将当次应用程序迭代的第一个测试包确定为第三目标测试包,将当次应用程序迭代的第二个测试包确定为第四目标测试包,将所述第一变更代码覆盖行信息确定为历史变更代码覆盖行信息,以及将所述第三合并代码行覆盖行信息确定为第二历史合并代码覆盖行信息;S203:确定所述第四目标测试包相较于所述第三目标测试包的第三变更代码行信息及第四目标测试包的代码覆盖行信息;S204:将所述第二历史合并代码覆盖行信息与所述第三变更代码行信息进行映射,得到第三临时代码覆盖行信息;S205:将所述第三临时代码覆盖行信息与所述第三目标测试包的覆盖行信息进行合并,得到第四合并代码覆盖行信息;S206:将所述第四合并代码覆盖行信息、第三变更代码行信息及历史变更代码覆盖行信息进行合并,得到第二变更代码覆盖行信息;S207:将当次应用程序迭代的第k2个测试包确定为新的第一目标测试包,将当次应用程序迭代的第k2+1个测试包确定为新的第二目标测试包,将所述第四合并代码覆盖行信息作为新的第二历史合并代码覆盖行信息,并将所述第二变更代码覆盖行信息作为新的历史变更代码行信息,重复S203

S206的步骤,其中...

【专利技术属性】
技术研发人员:沈超楠汪佳佳
申请(专利权)人:拉扎斯网络科技上海有限公司
类型:发明
国别省市:

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

1