本技术涉及互联网,更具体地说,涉及一种代码测试覆盖情况统计方法及装置。
背景技术:
1、随着网络信息化的发展,各种应用层出不穷,为人们生活带了很多的便利。为了确保应用的质量和稳定性,通常需要对应用的程序包进行测试,以便尽可能地发现其潜在的问题和缺陷,为了对测试进行评估,对应用的程序包进行测试后,通常需要基于测试得到的测试数据统计程序包的代码测试覆盖情况。然而,随着应用的不断升级,会对应用的程序包进行改造,以对应用的程序包的版本进行更新,新版本的程序包中的代码与新版本的前一版本的程序包中的代码相比会存在改动,所以每次更新版本都需要对新版本的程序包进行测试,所以每次更新版本都需要重新基于测试数据统计新版本的程序包中所有代码的代码测试覆盖情况,由于程序包中代码的数量非常庞大,导致每次更新版本时,统计新版本的程序包的代码测试覆盖情况耗时长,效率低。
技术实现思路
1、有鉴于此,本技术提供了一种代码测试覆盖情况统计方法及装置,用于解决现有代码测试覆盖情况统计方式,每次更新版本都需要重新基于测试数据统计新版本的程序包中所有代码的代码测试覆盖情况,由于程序包中代码的数量非常庞大,导致每次更新版本时,统计新版本的程序包的代码测试覆盖情况耗时长,效率低的问题。
2、为了实现上述目的,现提出的方案如下:
3、一种代码测试覆盖情况统计方法,包括:
4、获取目标应用的目标版本的程序包,及所述目标版本的程序包的测试数据;
5、确定所述目标版本的程序包中的代码与所述目标版本的前一版本的程序包中的代码之间存在差异的第一代码及相同的第二代码;
6、基于所述测试数据统计所述第一代码的代码测试覆盖情况;
7、获取所述前一版本的程序包的代码测试覆盖情况,并从所述前一版本的程序包的代码测试覆盖情况中确定所述第二代码的代码测试覆盖情况;
8、将所述第一代码的代码测试覆盖情况与所述第二代码的代码测试覆盖情况进行组合,得到所述目标版本的程序包的代码测试覆盖情况。
9、优选地,确定所述目标版本的程序包中的代码与所述目标版本的前一版本的程序包中的代码之间存在差异的第一代码及相同的第二代码之前,还包括:
10、判断所述目标版本的程序包与所述前一版本的程序包之间是否满足设定条件;
11、若是,则执行确定所述目标版本的程序包中的代码与所述目标版本的前一版本的程序包中的代码之间存在差异的第一代码及相同的第二代码的步骤。
12、优选地,判断所述目标版本的程序包与所述前一版本的程序包之间是否满足设定条件,包括:
13、对比所述目标版本的程序包与所述前一版本的程序包中的代码差异情况,若确定所述代码差异情况满足如下任意一条要求,则确定满足所述设定条件:所述第一代码的数量不超过预设的差异代码数量阈值;
14、所述第一代码的数量与所述目标版本的程序包中的代码的数量的比值不超过预设的第一比值阈值;
15、所述第二代码的数量达到预设的相同代码数量阈值;
16、所述第二代码的数量与所述目标版本的程序包中的代码的数量的比值达到预设的第二比值阈值。
17、优选地,判断所述目标版本的程序包与所述前一版本的程序包之间是否满足设定条件,包括:
18、判断所述目标版本的程序包是否为对所述前一版本的程序包进行代码bug修改后所得到的程序包,若是,确定满足所述设定条件。
19、优选地,所述目标版本的程序包为:至少对工作人员在预设的代码管理平台上提交的所述目标版本的程序包中的代码进行编译、打包得到的程序包,所述代码管理平台提供有主分支和从分支,所述从分支用于供所述工作人员上传修改bug类型的代码,所述主分支用于所述供工作人员上传非所述修改bug类型的代码,所述修改bug类型的代码为,对所述前一版本的程序包中的代码进行bug修改后得到的代码;
20、判断所述目标版本的程序包是否为对所述前一版本的程序包进行代码bug修改后所得到的程序包的过程,包括:
21、若所述目标版本的程序包中的代码来自于所述从分支,则确定所述目标版本的程序包为对所述前一版本的程序包进行代码bug修改后所得到的程序包。
22、优选地,所述工作人员在所述主分支及所述从分支上提交代码时,所述代码管理平台为所述工作人员所提交的代码生成对应的标识;
23、判断所述目标版本的程序包中的代码是否来自于所述从分支的过程,包括:
24、获取所述代码管理平台为所述目标版本的程序包中的代码生成的目标标识;
25、获取所述代码管理平台为所述工作人员提交至所述主分支上的各代码生成的标识;
26、若所述代码管理平台为所述工作人员提交至所述主分支上的各代码生成的标识中不包含所述目标标识,则确定所述目标版本的程序包中的代码来自所述从分支。
27、优选地,所述目标版本的程序包具体为:对所述工作人员在所述代码管理平台上提交的所述目标版本的程序包中的代码、所述目标标识、所述主分支上的各代码对应的标识及预设的探针程序进行编译、打包得到的程序包;
28、获取所述目标标识及所述主分支上的各代码对应的标识的过程,包括:
29、启动所述目标版本的程序包中的所述探针程序,以便利用所述探针程序收集所述目标版本的程序包中的所述目标标识及所述主分支上的各代码对应的标识。
30、优选地,各代码测试覆盖情况均为代码测试覆盖率;
31、将所述第一代码的代码测试覆盖率与所述第二代码的代码测试覆盖率进行组合,得到所述目标版本的程序包对应的代码测试覆盖率的过程,包括:
32、计算所述第一代码的代码测试覆盖率与所述第二代码的代码测试覆盖率的和,得到所述目标版本的程序包对应的代码测试覆盖率。
33、优选地,还包括:
34、获取预先为所述前一版本的程序包生成的染色测试报告,所述染色测试报告中包括基于所述前一版本的程序包的代码测试覆盖情况对所述前一版本的程序包中的代码的每一行进行染色的结果;
35、建立所述第二代码在所述前一版本的程序包中的代码中所在的第一位置与在所述目标版本的程序包中的代码中所在的第二位置的对应关系;
36、按照所述对应关系,基于所述前一版本的程序包中的代码的所述第一位置对应的染色结果对其对应的所述目标版本的程序包中的代码的所述第二位置进行染色,得到第一染色结果;
37、基于所述第一代码的代码测试覆盖情况对所述第一代码在所述目标版本的程序包中的代码中所在的第三位置进行染色,得到第二染色结果;
38、基于所述第一染色结果及所述第二染色结果生成所述目标版本的程序包对应的染色测试报告。
39、一种代码测试覆盖情况统计装置,包括:
40、程序包及测试数据获取单元,用于获取目标应用的目标版本的程序包,及所述目标版本的程序包的测试数据;
41、代码确定单元,用于确定所述目标版本的程序包中的代码与所述目标版本的前一版本的程序包中的代码之间存在差异的第一代码及相同的第二代码;
42、第一代码测试覆盖情况获取单元,用于基于所述测试数据统计所述第一代码的代码测试覆盖情况;
43、第二代码测试覆盖情况获取单元,用于获取所述前一版本的程序包的代码测试覆盖情况,并从所述前一版本的程序包的代码测试覆盖情况中确定所述第二代码的代码测试覆盖情况;
44、第三代码测试覆盖情况获取单元,用于将所述第一代码的代码测试覆盖情况与所述第二代码的代码测试覆盖情况进行组合,得到所述目标版本的程序包的代码测试覆盖情况。
45、从上述的技术方案可以看出,本技术实施例提供的代码测试覆盖情况统计方法,由于只基于目标版本的程序包的测试数据统计目标版本的程序包中的代码与前一版本的程序包中的代码之间存在差异的第一代码的代码测试覆盖情况,而对于目标版本的程序包中的代码与前一版本的程序包中的代码之间相同的第二代码,从前一版本的程序包的代码测试覆盖情况中确定第二代码的代码测试覆盖情况,最后将第一代码的代码测试覆盖情况与第二代码的代码测试覆盖情况进行组合,得到目标版本的程序包的代码测试覆盖情况,无需基于测试数据统计目标版本的程序包中的所有代码的代码测试覆盖情况,节省了统计目标版本程序包的代码测试覆盖情况的时间,提高了统计目标版本程序包的代码测试覆盖情况的效率。