提高代码测试精度的方法及装置、存储介质及电子设备与流程

文档序号:33321931发布日期:2023-03-03 21:06阅读:49来源:国知局
提高代码测试精度的方法及装置、存储介质及电子设备与流程

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.执行单元,用于执行预设的测试用例,以对所述变更代码进行测试,并采集所述变更代码的测试覆盖数据;
31.第一确定单元,用于基于所述测试覆盖数据,确定所述变更代码中尚未测试的逻辑分支;
32.第二确定单元,用于当确定所述关系数据中存在与所述尚未测试的逻辑分支对应的映射关系时,基于与所述尚未测试的逻辑分支对应的映射关系确定目标用例,并执行所述目标用例,以测试所述尚未测试的逻辑分支。
33.上述的装置,可选的,所述第一获取单元,包括:
34.第一获取子单元,用于获取所述测试任务中的待测试代码;
35.第一确定子单元,用于基于所述测试任务的测试描述,确定所述测试任务的测试项目;
36.第二获取子单元,用于获取所述测试项目的源代码,并基于所述源代码确定所述待测试代码中的变更代码。
37.上述的装置,可选的,所述执行单元,包括:
38.调用子单元,用于执行预设的覆盖率工具,以调用所述覆盖率工具中预先定制的方法采集所述变更代码中的代码行的探针数据;
39.生成子单元,用于基于所述变更代码中的代码行的探针数据,生成测试覆盖数据。
40.上述的装置,可选的,所述第一确定单元,包括:
41.第二确定子单元,用于基于所述探针数据中的状态信息,确定所述变更代码中的代码行的执行状态;
42.第三确定子单元,用于将执行状态表征为未执行的代码行确定为目标代码行;
43.第四确定子单元,用于确定所述目标代码行所属的逻辑分支,并将该逻辑分支确定为尚未测试的逻辑分支。
44.上述的装置,可选的,还包括:
45.第五确定子单元,用于确定所述尚未测试的逻辑分支的分支识别信息;
46.第六确定子单元,用于确定所述关系数据中是否存在与所述分支识别信息相匹配的分支信息;
47.第七确定子单元,用于当确定所述关系数据中存在与所述分支识别信息相匹配的分支信息时,将该分支信息所对应的映射关系确定为所述尚未测试的逻辑分支的映射关系。
48.一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行如上所述的提高代码测试精度的方法。
49.一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行如上所述的提高代码测试精度的方法。
50.与现有技术相比,本发明具有以下优点:
51.本发明提供一种提高代码测试精度的方法及装置、存储介质及电子设备,包括:获取测试任务,并确定测试任务中的变更代码;获取变更代码的关系数据,关系数据包含所述变更代码的逻辑分支和测试逻辑分支时所应用的用例之间的映射关系;执行预设的用例集中的各个测试用例,以对变更代码进行测试,并采集变更代码的测试覆盖数据;基于测试覆盖数据,确定变更代码中尚未测试的逻辑分支;当确定关系数据中存在与尚未测试的逻辑分支对应的映射关系时,基于与尚未测试的逻辑分支对应的映射关系确定目标用例,并执行目标用例,以测试尚未测试的逻辑分支。通过确定出测试的变更代码中尚未被测试的逻辑分支,并使用关系数据确定与该逻辑分支对应的用例,执行该用例,以对该逻辑分支进行测试,从而提高变更代码的测试覆盖率,进而提高对变更代码的测试精度。
附图说明
52.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
53.图1为本发明实施例提供的一种提高代码测试精度的方法的流程图;
54.图2为本发明实施例提供的确定测试任务中的变更代码的方法流程图;
55.图3为本发明实施例提供的基于测试覆盖数据,确定变更代码中尚未测试的逻辑分支的方法流程图;
56.图4为本发明实施例提供的确定关系数据中存在与尚未测试的逻辑分支对应的映射关系的方法流程图;
57.图5为本发明实施例提供的一种提高代码测试精度的装置的结构示意图;
58.图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
59.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
60.在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
61.术语解释:
62.jacoco开源框架,是针对java代码的执行时覆盖率统计工具。
63.在开发流程的测试环节中,测试人员面对海量测试用例,只能定性选取执行,无法确保用例精准匹配和覆盖变更部分的代码逻辑,导致覆盖率不理想,用例的误测、漏测风险较高,效率较低。尤其在敏捷迭代开发模式下,测试效率、测试质量与压缩的开发周期的冲突会更加突出,存在代码测试效率低、耗费资源高、精准度低等问题。
64.现有的诸如skywalking等开源工具,只能监控到代码类级别或方法级别,精准度仍有不足。比如当同一个方法中包含多个逻辑分支时,某一个分支的调用链路无法实现事实监控,继而无法将用例精准映射到逻辑分支级别的粒度,现有的链路监控工具存在监控到函数逻辑分支链路的粒度的问题。
65.为解决上述的问题,本发明通过将存量的测试用例和代码调用链路建立对应关系,结合针对代码变更的监控,向测试人员推荐出与尚未测试的逻辑分支相匹配的测试用例,或是执行与尚未测试的逻辑分支相匹配的测试用例,进而提供测试效率和测试精准度。
66.本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。本发明提供的方法可以应用于测试系统,执行主体可以为测试系统的服务器。
67.参照图1,为本发明实施例提供的一种提高代码测试精度的方法的流程图,具体说明如下所述:
68.s101、获取测试任务,并确定测试任务中的变更代码。
69.测试任务为工作人员提交的任务,该任务中包含工作人员开发完成、需要进行测试的代码。
70.通过对测试任务进行差异化分析,进而确定测试任务中的变更代码。
71.参照图2,为本发明实施例提供的确定测试任务中的变更代码的方法流程图,具体说明如下所述:
72.s201、获取测试任务中的待测试代码。
73.解析测试任务,从而获取测试任务中的待测试代码,优选的,待测试代码为工作人员编写的需要测试的代码。
74.s202、基于测试任务的测试描述,确定测试任务的测试项目。
75.测试描述中包含了工作人员测试的需求信息,测试项目可以是某项需要测试的功能,假如测试任务中的待测试代码为某个应用程序的代码,则测试项目可以是该应用程序的某个功能,而待测试代码可以为对该应用程序的该功能所对应的代码进行修改后的代码。
76.s203、获取测试项目的源代码,并基于源代码确定待测试代码中的变更代码。
77.测试项目的源代码可以为上一次测试该测试项目时所应用的代码;优选的,待测试代码可以是基于上一次测试该测试项目所应用的代码进行修改的代码。
78.对源代码和待测试代码进行差异化分析,具体可以将源代码和待测试代码进行对比,从而得到待测试代码中与源代码不同的代码,将待测试代码中与源代码不同的代码确定为变更代码,优选的,变更代码中包含新增的方法、新增的逻辑函数、修改的方法或是修改的逻辑函数等内容,示例性的,当调用接口的方法中的参数被修改了,则修改后的方法的代码均为变更代码。
79.进一步的,在将测试代码中与测试项目对应的代码与源代码进行对比时,可以使用git diff命令以及docygen等工具实现两者的对比,从而可以实现对测试任务中的待测试代码的差异化分析。
80.s102、获取变更代码的关系数据,关系数据包含变更代码的逻辑分支和测试逻辑分支时所应用的用例之间的映射关系。
81.变更代码存在关系数据,该关系数据可以是根据与变更代码对应的历史代码的测试信息得到的,关系数据中包含变更代码的逻辑分支和测试逻辑分支时所应用的用例之间的映射关系,进一步的,一个逻辑分支和该逻辑分支进行测试时应用的用例之间均存在映射关系,优选的,逻辑分支和该逻辑分支进行测试时应用的用例是一一对应的。映射关系可以使用逻辑分支的身份标识和该逻辑分支进行测试时应用的用例的身份标识的标识键值对表示。
82.进一步的,在采集变更代码的关系数据时,可以先确定变更代码的调用链路,然后使用纯净的服务器确定出变更代码中的每个逻辑分支进行测试时所需的用例;在确定出逻辑分支测试时所需的用例后,可以在调用链路的基础上将逻辑分支和对应的用例进行映射,并将包含了逻辑分支与用例的映射关系的数据进行保存,在所有的逻辑分支均确定出对应的用例后,即可采集到变更代码的关系数据。
83.可选的,在获取变更代码的关系数据时,还可以先确定与变更代码对应的历史代码,历史代码为已经经过测试的代码,工作人员可以在对该历史代码进行修改,从而得到变更代码;获得历史代码的历史测试数据,该历史测试数据中包含测试历史代码中的逻辑分支所应用的用例的信息、历史代码的调用链路;基于该历史测试数据确定历史代码中的逻辑分支和逻辑分支进行测试时所应用的用例的映射关系,根据映射关系,即可得到变更代码的关系数据,优选的,工作人员可能在历史代码中添加新的代码,因此,获取到的关系数据中可能没有完全包含变更代码中所有逻辑分支的映射关系。
84.s103、执行预设的测试用例,以对变更代码进行测试,并采集变更代码的测试覆盖数据。
85.需要说明的是,工作人员在编写测试任务时,会为测试任务中的变更代码设置测试所需的测试用例,执行的预设的测试用例均为工作人员预先配置的测试用例,测试用例的个数可以为多个,也可以是一个。
86.进一步的,测试用例可以保存在用例集中,用例集包含多个测试用例,在代码不断的变更,对变更的代码进行测试的情况下,对变更后的代码进行测试时需要新的测试用例进行测试,因此,用例集中的测试用例的数量也随着对代码的测试不断的增加。
87.用例集中包括以前对代码进行测试时的历史用例,也包括在代码进行变更后进行测试时应用的新增用例。
88.在获得了测试任务中的变更代码后,可执行预设的测试用例,以对变更代码进行测试,在对变更代码进行测试的过程中,可以调用预设的采集任务,采集变更代码的测试覆盖数据,需要说明的是,采集任务可以是定时任务,在执行预设的用例集中的各个测试用例的时间达到该任务的执行条件时,便执行该任务采集变更代码的测试覆盖数据。
89.采集变更代码的测试覆盖数据的过程可以为:执行预设的覆盖率工具,以调用覆盖率工具中预先定制的方法采集变更代码的代码行的探针数据;基于变更代码的代码行的探针数据,生成测试覆盖数据;优选的,本方案采集变更代码中的每个代码行的探针数据,并根据各个探针数据,生成测试覆盖数据。优选的,测试覆盖数据包括但不限于每一行执行的opcode字节码指令,通过字节码指令,可判断是否为逻辑分支判断语句;还包括在指定行插入的探针、条件语句包含的逻辑分支id。
90.进一步的,覆盖率工具可以为jacoco,应用jacoco可以采集测试变更代码的覆盖数据,需要说明的是,本发明所应用的jacoco的逻辑分支探针插入逻辑为定制的逻辑,该逻辑会在变更代码的每个代码行前均插入探针,增加了探针插入的场景从而对函数逻辑分支的精确定位,本发明的函数逻辑分支可以理解逻辑分支;进一步的,探针位置被执行时,将被置为true,则代表探针后的代码行将被执行。
91.可选的,本发明的变更代码可以为.class字节码文件,可以使用java asm字节码操控工具,通过针对.class字节码文件插入探针,实现监控类的调用信息。示例性的,可以在逻辑分支的判断语句处、分支结尾处添加探针,判断逻辑分支是否开始和结束。
92.进一步的,本发明应用的jacoco中还设置了用于判断探针是否插入逻辑的方法,示例性的,该方法的代码如下所示:
[0093][0094]
如上述的代码所述,本发明通过去掉探针插入的两个原有限制条件,实现了在每个代码行前插入探针的功能,进而增加探针的插入场景,支持函数逻辑分支的精确定位。
[0095]
进一步的,本发明所应用的jacoco的覆盖统计结果同步出口方法中定制了函数逻辑分支调用链路获取的逻辑,进一步的,函数逻辑分支调用链路可可以为变更代码中的各个逻辑分支的调用链路,进一步的,可以基于该调用链路的基础上将各个逻辑分支所对应
的用例进行映射。进一步的,jacoco中还定制了函数逻辑分支个数的累计方法,该方法中定制函数逻辑分支调用链路。
[0096]
需要说明的是,测试覆盖数据中包含变更代码中已测试的代码所占的比例、未测试的代码所占的比例等,还包括未测试的代码的具体位置信息、标识信息等。
[0097]
s104、基于测试覆盖数据,确定变更代码中尚未测试的逻辑分支。
[0098]
参照图3,为本发明实施例提供的基于测试覆盖数据,确定变更代码中尚未测试的逻辑分支的方法流程图,具体说明如下所述:
[0099]
s301、基于探针数据中的状态信息,确定变更代码中的代码行的执行状态。
[0100]
需要说明的是,此处的探针数据为变更代码中的每个代码行的探针数据,由此,可以确定变更代码中的每个代码行的执行状态,优选的,每个探针数据中均存在状态信息。
[0101]
需要说明的是,状态信息可以分为两种,当状态信息为true时,表示该探针数据所属的探针被执行,即该探针所属的代码行的执行状态为已执行,即对代码的测试已经覆盖到该探针以及该探针对应的代码行;当状态信息不为true时,表示该探针数据所属的探针未被执行,即该探针所属的代码行的执行状态为未执行,即对代码的测试未覆盖到该探针以及该探针对应的代码行。
[0102]
s302、将执行状态表征为未执行的代码行确定为目标代码行。
[0103]
s303、确定目标代码行所属的逻辑分支,并将该逻辑分支确定为尚未测试的逻辑分支。
[0104]
在确定目标代码行所属的逻辑分支时,可以根据该目标代码行的分支标识确定其所属的逻辑分支。
[0105]
示例性的,假设abstractinsnnode中包含有opcode信息;对应的instruction中含有探针、条件判断语句中的分支id。其中条件判断语句的分支个数与被插入的探针个数相等,为一一对应关系,通过测试覆盖数据中探针的状态,可判断出被覆盖到的分支id。
[0106]
s105、当确定关系数据中存在与尚未测试的逻辑分支对应的映射关系时,基于与尚未测试的逻辑分支对应的映射关系确定目标用例,并执行目标用例,以测试尚未测试的逻辑分支。
[0107]
参照图4,为本发明实施例提供的确定关系数据中存在与尚未测试的逻辑分支对应的映射关系的方法流程图,具体说明如下所述:
[0108]
s401、确定尚未测试的逻辑分支的分支识别信息。
[0109]
分支识别信息中包含该逻辑分支的分支标识,该分支标识可以理解为逻辑分支的唯一身份标识。
[0110]
s402、确定关系数据中是否存在与分支识别信息相匹配的分支信息。
[0111]
关系数据中包含多个映射关系,每个映射关系中包含逻辑分支的分支信息和用例的标识,优选的,分支信息中包含逻辑分支的分支标识。
[0112]
可以将分支识别信息与关系数据中的各个分支信息进行匹配,当关系数据中存在与分支识别信息相匹配的分支信息时,可以执行s403;当关系数据中不存在与分支识别信息相匹配的分支信息时,该分支识别信息所属的逻辑分支可能为新增的逻辑分支,因此,需要将该分支识别信息所属的逻辑分支向工作人员反馈,以便工作人员确定与该逻辑分支对应的用例,执行该用例,从而测试该逻辑分支。
[0113]
优选的,可以将分支识别信息中的分支标识与每个映射关系的标识键值对进行匹配,当存在与分支标识对应的标识键值对时,确定在关系数据中存在与该分支识别信息相匹配的分支信息。示例性的,可以将分支识别信息中的分支标识与每个标识键值对中的分支标识进行匹配,当存在与分支识别信息中的分支标识和标识键值对的分支标识一致的情况时,确定该分支识别信息在关系数据中存在相匹配的分支信息。
[0114]
s403、当确定关系数据中存在与分支识别信息相匹配的分支信息时,将该分支信息所对应的映射关系确定为尚未测试的逻辑分支的映射关系。
[0115]
优选的,在确定得到关系数据中存在与该分支信息相匹配的分支信息后,可以将该分支信息所对应的映射关系确定为尚未测试的逻辑分支的映射关系,进一步的,可以根据该映射关系中的标识键值对中的用例标识确定用例,将与标识键值对中的用例标识对应的用例确定目标用例,在执行目标用例后,可对该尚未测试的逻辑分支测试。
[0116]
本发明实施例提供的方法中,获取测试任务,对测试任务进行差异化分析,获得测试任务中的变更代码;采集变更代码的关系数据,关系数据包含所述变更代码的逻辑分支和测试逻辑分支时所应用的用例之间的映射关系;执行预设的测试用例,以对变更代码进行测试,并采集变更代码的测试覆盖数据;基于测试覆盖数据,确定变更代码中尚未测试的逻辑分支;当确定所述关系数据中存在与所述尚未测试的逻辑分支对应的映射关系时,基于与所述尚未测试的逻辑分支对应的映射关系确定目标用例,并执行所述目标用例,以测试所述尚未测试的逻辑分支。应用本发明可以定位出测试的变更代码中尚未被测试的逻辑分支,并确定与该逻辑分支对应的用例,执行该用例,从而提高变更代码的测试覆盖率,进而提高变更代码的测试精度。
[0117]
本方案涉及到一个开源框架,即jacoco开源框架,是针对java代码的覆盖率统计工具。jacoco可实现类、方法、代码行、函数逻辑分支、指令级别的覆盖率统计。根据jacoco的这一特性,自带逻辑分支监控功能,只需增加分支信息读取和落库的功能,即可实时获取到函数逻辑分支级别的动态调用链路,可以定位出代码中未执行的逻辑分支,并确定该逻辑分支的测试用例,然后执行该测试用例,从而提高该代码测试的覆盖率,提高对代码测试的效率和精度。
[0118]
与图1所示的方法相对应的,本发明提供一种提高代码测试精度的装置,该装置配置于测试代码的系统中,该装置用于支持图1所示的方法的具体实现。
[0119]
参照图5,为本发明实施例提供的一种提高代码测试精度的装置的结构示意图,具体说明如下所述:
[0120]
第一获取单元501,用于获取测试任务,并确定所述测试任务中的变更代码;
[0121]
第二获取单元502,用于获取所述变更代码的关系数据,所述关系数据包含所述变更代码的逻辑分支和测试逻辑分支时所应用的用例之间的映射关系;
[0122]
执行单元503,用于执行预设的测试用例,以对所述变更代码进行测试,并采集所述变更代码的测试覆盖数据;
[0123]
第一确定单元504,用于基于所述测试覆盖数据,确定所述变更代码中尚未测试的逻辑分支;
[0124]
第二确定单元505,用于当确定所述关系数据中存在与所述尚未测试的逻辑分支对应的映射关系时,基于与所述尚未测试的逻辑分支对应的映射关系确定目标用例,并执
行所述目标用例,以测试所述尚未测试的逻辑分支。
[0125]
本发明实施例提供的装置中,获取测试任务;对测试任务进行差异化分析,获得测试任务中的变更代码;采集变更代码的关系数据,关系数据包含所述变更代码的逻辑分支和测试逻辑分支时所应用的用例之间的映射关系;执行预设的各个测试用例,以对变更代码进行测试,并采集变更代码的测试覆盖数据;基于测试覆盖数据,确定变更代码中尚未测试的逻辑分支;当确定所述关系数据中存在与所述尚未测试的逻辑分支对应的映射关系时,基于与所述尚未测试的逻辑分支对应的映射关系确定目标用例,并执行所述目标用例,以测试所述尚未测试的逻辑分支。应用本发明可以定位出测试的变更代码中尚未被测试的逻辑分支,并确定与该逻辑分支对应的测试用例,从而提高变更代码的测试覆盖率,进而提高变更代码的测试精度。
[0126]
在本发明另一实施例提供的装置中,所述第一获取单元501,可以配置为:
[0127]
第一获取子单元,用于获取所述测试任务中的待测试代码;
[0128]
第一确定子单元,用于基于所述测试任务的测试描述,确定所述测试任务的测试项目;
[0129]
第二获取子单元,用于获取所述测试项目的源代码,并基于所述源代码确定所述待测试代码中的变更代码。
[0130]
在本发明另一实施例提供的装置中,所述执行单元503,可以配置为:
[0131]
调用子单元,用于执行预设的覆盖率工具,以调用所述覆盖率工具中预先定制的方法采集所述变更代码中的代码行的探针数据;
[0132]
生成子单元,用于基于所述变更代码中的代码行的探针数据,生成测试覆盖数据。
[0133]
在本发明另一实施例提供的装置中,所述第一确定单元504,可以配置为:
[0134]
第二确定子单元,用于基于所述探针数据中的状态信息,确定所述变更代码中的代码行的执行状态;
[0135]
第三确定子单元,用于将执行状态表征为未执行的代码行确定为目标代码行;
[0136]
第四确定子单元,用于确定所述目标代码行所属的逻辑分支,并将该逻辑分支确定为尚未测试的逻辑分支。
[0137]
在本发明另一实施例提供的装置中,还可以配置为:
[0138]
第五确定子单元,用于确定所述尚未测试的逻辑分支的分支识别信息;
[0139]
第六确定子单元,用于确定所述关系数据中是否存在与所述分支识别信息相匹配的分支信息;
[0140]
第七确定子单元,用于当确定所述关系数据中存在与所述分支识别信息相匹配的分支信息时,将该分支信息所对应的映射关系确定为所述尚未测试的逻辑分支的映射关系。
[0141]
本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述提高代码测试精度的方法。
[0142]
本发明实施例还提供了一种电子设备,其结构示意图如图6所示,具体包括存储器601,以及一个或者一个以上的指令602,其中一个或者一个以上指令602存储于存储器601中,且经配置以由一个或者一个以上处理器603执行所述一个或者一个以上指令602执行上述提高代码测试精度的方法。
[0143]
上述各个实施例的具体实施过程及其衍生方式,均在本发明的保护范围之内。
[0144]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0145]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0146]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1