一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种覆盖率确定方法、装置、电子设备及存储介质与流程

2022-06-29 23:53:42 来源:中国专利 TAG:


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.比较所述测试代码和所述参考代码,得到所述测试代码和所述参考代码不同的部分代码,将所述部分代码作为所述第一代码。
54.第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
55.存储器,用于存放计算机程序;
56.处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
57.第四方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
58.第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的覆盖率确定方法。
59.本技术实施例有益效果:
60.本技术实施例提供了一种覆盖率确定方法、装置、电子设备及存储介质,本技术通过,首先,获取第一应用对应的第一代码;然后,在调用关系库中确定所述第一代码对应的目标调用关系,所述调用关系库中包括所述第一代码与所述第一应用内第二代码之间的调用关系,以及,所述第一应用与第二应用之间的调用关系;然后,基于所述目标调用关系确定所述第一代码对应的测试范围,最后,在按照所述测试范围进行测试后,获取测试时产生的数据文件,所述数据文件用于记录测试的覆盖执行情况,并基于所述覆盖执行情况确定所述测试范围对应的测试覆盖率。
61.即,通过本技术,可以在调用关系库中确定与第一代码对应的目标调用关系,并基于该目标调用关系确定测试范围,以实现自动确定测试范围,进而,根据按照该测试范围进行测试的覆盖执行情况,生成与该测试范围对应的测试覆盖率,以实现自动确定测试覆盖率,从而节约人力成本,提高确定测试覆盖率的效率。
62.当然,实施本技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
63.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
64.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而
言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
65.图1为本技术实施例提供的一种覆盖率确定方法的流程图;
66.图2为本技术另一实施例提供的一种覆盖率确定方法的流程图;
67.图3为本技术实施例提供的一种覆盖率确定装置的结构示意图;
68.图4为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
69.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
70.下面将结合具体实施方式,对本技术实施例提供的一种覆盖率确定方法进行详细的说明,如图1所示,具体步骤如下:
71.s101,获取第一应用对应的第一代码。
72.本技术提供的一种覆盖率确定方法可以应用于测试范围评估平台,该平台可以用于在应用程序功能迭代时确定测试范围。应用程序的功能迭代实质是对应用程序中的某段代码进行修改,该实施例中,第一应用为进行功能迭代的应用程序,第一代码为第一应用中因为功能迭代发生修改的代码。
73.作为该实施例的一种实施方式,可以通过以下步骤获取第一代码:
74.获取所述第一应用对应的测试代码和参考代码;比较所述测试代码和所述参考代码,得到所述测试代码和所述参考代码不同的部分代码,将所述部分代码作为所述第一代码。
75.在该实施方式中,对第一应用进行修改前的代码为参考代码,对第一应用进行修改后的代码为测试代码,获取第一应用对应的测试代码和参考代码后,可以利用文本比较工具(如diff工具)对测试代码和参考代码进行比较,从而确定出发生修改的代码,即第一代码。
76.通过该方案可以实现自动确定发生修改的代码,无需人为查找,减少人力消耗,提高处理效率。
77.s102,在调用关系库中确定所述第一代码对应的目标调用关系,所述调用关系库中包括所述第一代码与所述第一应用内第二代码之间的调用关系,以及,所述第一应用与第二应用之间的调用关系。
78.在本技术实施例中,第二应用为第一应用运行的环境平台中除了第一应用以外的应用程序。第一应用中包括多段代码,第二代码为第一应用中除了第一代码以外的其他代码。
79.实际应用中,对于第一应用中某项服务或功能,可能通过几段代码配合实现,即,这几段代码之间存在调用关系。对于同一环境平台中运行的应用程序之间也可能存在相互调用的情况,即,应用之间存在调用关系。
80.由于,第一代码的改变可能会影响与其有调用关系的代码的实现,因此,在该实施例中,可以在调用关系库中确定第一代码对应的目标调用关系,其中,调用关系库中包括第
一代码与第一应用内第二代码之间的调用关系,以及,第一应用与第二应用之间的调用关系。
81.进一步的,第一应用每次迭代后,可以建立对应的调用关系库并生成对应的提交信息(如commitid),因此,在查找目标调用关系之前,可以根据调用关系库的提交信息确定当前的调用关系库是否与第一应用当前的版本对应,若对应,则执行s102,若不对应,则触发创建调用关系库的操作,以生成与当前第一应用对应的调用关系库。
82.s103,基于所述目标调用关系确定所述第一代码对应的测试范围。
83.在本技术实施例中,确定目标调用关系后,即可根据目标调用关系确定第一代码有调用关系的代码,即,第一代码对应的测试范围。
84.作为一种实施方式,可以通过以下步骤确定第一代码对应的测试范围:确定所述目标调用关系对应的目标接口;将所述目标接口对应的代码确定为所述测试范围。
85.在该实施方式中,每个应用中包括多个接口,每个接口中包括多段代码,通过调用接口调用其中的代码。由于测试一般是以接口为测试粒度,因此,该实施方式中,可以确定目标调用关系中对应的目标接口,并将目标接口对应的所有代码确定为测试范围。
86.s104,在按照所述测试范围进行测试后,获取测试时产生的数据文件,所述数据文件用于记录测试的覆盖执行情况。
87.s105,基于所述覆盖执行情况确定所述测试范围对应的测试覆盖率。
88.以下将对s104和s105进行统一说明:
89.应用中,确定测试范围后,工作人员可以根据该测试范围设计用例,然后执行用例进行测试,对应用程序进行测试时,会产生用于记录测试的覆盖执行情况的数据文件(如exec文件)。
90.该实施例中,在按照该测试范围进行测试后,可以通过获取对应的数据文件得到对应的覆盖执行情况,并根据覆盖执行情况生成与测试范围对应的测试覆盖率,其中,测试覆盖率可以是文字形式、报告形式或图像形式等。从而方便用户查看测试覆盖率。
91.本技术实施例中,可以在调用关系库中确定与第一代码对应的目标调用关系,并基于该目标调用关系确定测试范围,以实现自动确定测试范围,进而,根据按照该测试范围进行测试的覆盖执行情况,生成与该测试范围对应的测试覆盖率,以实现自动确定测试覆盖率,从而节约人力成本,提高确定测试覆盖率的效率。
92.在本技术又一实施例中,如图2所示,所述s102,可以包括以下步骤:
93.s201,在所述应用内调用关系库中确定所述第一代码对应的第一调用关系。
94.s202,将所述第一调用关系中与所述第一代码对应的第二代码,确定为第三代码。
95.s203,在所述应用间调用关系库中,确定与所述第一代码对应的第二调用关系,以及,与所述第三代码对应的第三调用关系。
96.s204,将所述第一调用关系、所述第二调用关系和所述第三调用关系,确定为所述目标调用关系。
97.在本技术实施例中,调用关系库包括:应用内调用关系库和应用间调用关系库,其中,应用内调用关系库中包括第一代码与第一应用内第二代码之间的调用关系,应用间调用关系库中包括第一应用与第二应用之间的调用关系。
98.该实施例中,先在应用内调用关系库中确定与第一代码有第一调用关系的第三代
码,然后,在应用间调用关系库中,确定第一代码对应的第二调用关系,以及,与第三代码对应的第三调用关系,最后,将第一调用关系、第二调用关系和第三调用关系,确定为目标调用关系。
99.进一步的,可以通过以下方式建立应用内调用关系库:获取对所述第一应用进行编译后产生的二进制文件,解析所述二进制文件得到所述第一应用中每段代码对应的调用关系,利用所述调用关系建立所述调用关系库。其中,测试范围评估平台可以在环境平台中获取二进制文件的存储地址,进而在二进制存储库中根据该存储地址获取该二进制文件。
100.进一步的,可以通过以下方式建立应用间调用关系库:可以通过全链路监控平台监控环境平台中应用与应用之间的调用关系,并利用该调用关系创建应用间调用关系库。
101.例如,可以为环境平台部署的每个应用程序配置操控字节码(javaagent),即,在jvm参数增加skywalking-agent的javaagent配置。然后,通过全链路监控平台收集所有部署skywalking-agent环境的流量调用链。测试范围评估平台通过调用全链路监控平台的接口,即可获取到应用间调用链信息,从而建立应用间调用关系库。
102.通过该方案,可以在应用内调用关系库和应用间调用关系库中,确定出与第一代码有关的所有调用关系,进而得到准确的测试范围。
103.在本技术又一实施例中,所述方法还可以包括以下步骤:
104.基于所述测试范围生成测试范围信息;和/或,将所述测试范围输入至预设的图谱工具中,以使所述图谱工具输出与所述测试范围对应的关系图谱。
105.在本技术实施例中,可以基于测试范围生成测试范围信息,其中,测试范围信息可以是文字形式、报告形式或图像形式等。或者,将测试范围输入至预设的图谱工具中,以使图谱工具输出与测试范围对应的关系图谱。从而方便用户查看测试范围。
106.在本技术又一实施例中,所述方法还可以包括以下步骤:
107.确定所述测试范围对应的目标对象;将所述测试范围信息和/或所述关系图谱发送至所述目标对象。
108.在本技术实施例中,一个应用程序往往由多个工作人员负责,每个工作人员负责不同的部分,因此,确定测试范围后,可以进一步确定该测试范围对应的目标对象,其中,目标对象可以是对应工作人员的设备或账户,并将测试范围信息和/或关系图谱发送至目标对象,以便对应的工作人员可以及时了解,进行下一步操作。
109.基于相同的技术构思,本技术实施例还提供了一种覆盖率确定装置,如图3所示,该装置包括:
110.第一获取模块301,用于获取第一应用对应的第一代码;
111.第一确定模块302,用于在调用关系库中确定所述第一代码对应的目标调用关系,所述调用关系库中包括所述第一代码与所述第一应用内第二代码之间的调用关系,以及,所述第一应用与第二应用之间的调用关系;
112.第二确定模块303,用于基于所述目标调用关系确定所述第一代码对应的测试范围;
113.第二获取模块304,用于在按照所述测试范围进行测试后,获取测试时产生的数据文件,所述数据文件用于记录测试的覆盖执行情况;
114.第三确定模块305,用于基于所述覆盖执行情况确定所述测试范围对应的测试覆
盖率。
115.在一个可能的实施方式中,所述装置还包括生成模块,所述生成模块,用于:
116.基于所述测试范围生成测试范围信息;
117.和/或,
118.将所述测试范围输入至预设的图谱工具中,以使所述图谱工具输出与所述测试范围对应的关系图谱。
119.在一个可能的实施方式中,所述装置还包括发送模块,所述发送模块,用于:
120.确定所述测试范围对应的目标对象;
121.将所述测试范围信息和/或所述关系图谱发送至所述目标对象。
122.在一个可能的实施方式中,所述调用关系库包括:应用内调用关系库和应用间调用关系库,所述应用内调用关系库中包括所述第一代码与所述第一应用内第二代码之间的调用关系,所述应用间调用关系库中包括所述第一应用与第二应用之间的调用关系,
123.所述第一确定模块,具体用于:
124.在所述应用内调用关系库中确定所述第一代码对应的第一调用关系;
125.将所述第一调用关系中与所述第一代码对应的第二代码,确定为第三代码;
126.在所述应用间调用关系库中,确定与所述第一代码对应的第二调用关系,以及,与所述第三代码对应的第三调用关系;
127.将所述第一调用关系、所述第二调用关系和所述第三调用关系,确定为所述目标调用关系。
128.在一个可能的实施方式中,所述第二确定模块,具体用于:
129.确定所述目标调用关系对应的目标接口;
130.将所述目标接口对应的代码确定为所述测试范围。
131.在一个可能的实施方式中,所述第一获取模块,具体用于:
132.获取所述第一应用对应的测试代码和参考代码;
133.比较所述测试代码和所述参考代码,得到所述测试代码和所述参考代码不同的部分代码,将所述部分代码作为所述第一代码。
134.本技术实施例中,可以在调用关系库中确定与第一代码对应的目标调用关系,并基于该目标调用关系确定测试范围,以实现自动确定测试范围,进而,根据按照该测试范围进行测试的覆盖执行情况,生成与该测试范围对应的测试覆盖率,以实现自动确定测试覆盖率,从而节约人力成本,提高确定测试覆盖率的效率。
135.基于相同的技术构思,本技术实施例还提供了一种电子设备,如图4所示,包括处理器111、通信接口112、存储器113和通信总线114,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信,
136.存储器113,用于存放计算机程序;
137.处理器111,用于执行存储器113上所存放的程序时,实现如下步骤:
138.获取第一应用对应的第一代码;
139.在调用关系库中确定所述第一代码对应的目标调用关系,所述调用关系库中包括所述第一代码与所述第一应用内第二代码之间的调用关系,以及,所述第一应用与第二应用之间的调用关系;
140.基于所述目标调用关系确定所述第一代码对应的测试范围;
141.在按照所述测试范围进行测试后,获取测试时产生的数据文件,所述数据文件用于记录测试的覆盖执行情况;
142.基于所述覆盖执行情况确定所述测试范围对应的测试覆盖率。
143.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
144.通信接口用于上述电子设备与其他设备之间的通信。
145.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
146.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
147.在本技术提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一覆盖率确定方法的步骤。
148.在本技术提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一覆盖率确定方法。
149.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
150.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设
备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
151.以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献