测试定位方法、装置、计算机设备和计算机存储介质与流程

未命名 09-13 阅读:56 评论:0


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.图1为一个实施例中测试定位方法的应用环境图;
27.图2为一个实施例中测试定位方法的流程示意图;
28.图3为一个实施例中识别第一函数步骤的流程示意图;
29.图4为一个实施例中获取函数信息步骤的流程示意图;
30.图5为一个实施例中确定目标函数步骤的流程示意图;
31.图6为一个实施例中测试定位装置的结构框图;
32.图7为一个实施例中计算机设备的内部结构图。
具体实施方式
33.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
34.本技术实施例提供的测试定位方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。在本实施例中,可以在进行软件测试前,首先采用本技术的方法进行测试定位,即通过终端102获取目标应用的待测试版本代码文件和历史版本代码文件;识别待测试版本代码文件中的第一函数,获取第一函数的第一函数标识和第一编码信息;识别历史版本代码文件中的第二函数,获取第二函数的第二函数标识和第二编码信息;根据第一函数标识、第一编码信息、第二函数标识和第二编码信息,从第一函数中确定待测试的目标函数,以定位目标应用的待测试版本代码文件中待测试的目标函数,进而对目标函数进行测试即可。不仅能够精准地确定测试覆盖面,而且能够减少冗余测试,提高测试效率。
35.其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
36.在一个实施例中,如图2所示,提供了一种测试定位方法,以该方法应用于图1中的终端为例进行说明,具体可以包括以下步骤:
37.步骤202,获取目标应用的待测试版本代码文件和历史版本代码文件。
38.其中,目标应用是为完成某项或多项特定工作的计算机应用程序。历史版本代码文件可以是已经过测试并投入使用的旧版本的源码文件。待测试版本代码文件则是在历史版本代码文件的基础上经过更新且需要进行测试的源码文件。
39.通常,当目标应用的版本发生变更后,需要对变更后的版本进行测试,以确保变更后的版本的可用性。但是,由于传统的测试方法无法精准地确定如空格、换行、注释等无效变更导致的变更影响面。因此,在本实施例中,在进行测试前,终端首先获取目标应用的待测试版本代码文件和历史版本代码文件,并通过后续步骤精确定位需要测试的部分,以实现精确地测试定位。
40.步骤204,识别待测试版本代码文件中的第一函数,获取第一函数的第一函数标识和第一编码信息。
41.其中,第一函数可以是待测试版本代码文件中执行某一计算或实现某一功能的最小执行单元,例如,可以是一个固定的程序段或子程序。第一函数标识可以是用于唯一确定
第一函数的标志,在本实施例中,第一函数标识也可以是第一函数的路径信息。第一编码信息则可以是基于特定规则对第一函数进行编码后得到的编码结果。
42.在本实施例中,终端通过对待测试版本代码文件进行函数识别,从而得到待测试版本代码文件中的所有函数,即第一函数,进而获取每个函数对应的函数标识和编码信息,即得到每个第一函数的第一函数标识和第一编码信息。
43.在一种场景下,还可以建立对应版本(待测试版本)与第一函数标识和第一编码信息之间的关联关系,从而得到对应的关系库。
44.步骤206,识别历史版本代码文件中的第二函数,获取第二函数的第二函数标识和第二编码信息。
45.同理,第二函数可以是历史版本代码文件中执行某一计算或实现某一功能的最小执行单元,例如,可以是一个固定的程序段或子程序。第二函数标识可以是用于唯一确定第二函数的标志,在本实施例中,第二函数标识也可以是第二函数的路径信息。第二编码信息则可以是基于特定规则对第二函数进行编码后得到的编码结果。
46.在本实施例中,终端通过对历史版本代码文件进行函数识别,从而得到历史版本代码文件中的所有函数,即第二函数,进而获取每个函数对应的函数标识和编码信息,即得到第二函数的第二函数标识和第二编码信息。
47.需要说明的是,本实施例为了区分从不同版本的代码文件中识别的函数,将从待测试版本代码文件中识别的函数定义为第一函数,将从历史版本代码文件识别的函数定义为第二函数。
48.在一种场景下,还可以建立对应版本(历史版本)与第二函数标识和第二编码信息之间的关联关系,从而得到对应的关系库。
49.步骤208,根据第一函数标识、第一编码信息、第二函数标识和第二编码信息,从第一函数中确定待测试的目标函数。
50.其中,目标函数是基于与历史版本的比对,确定更新后的版本中存在异常需要进行测试的函数。
51.在本实施例中,终端可以根据第一函数标识、第一编码信息、第二函数标识和第二编码信息,从第一函数中确定待测试的目标函数。具体地,终端可以比对新旧版本中相同函数标识所分别对应的编码信息,若相同函数标识所分别对应的编码信息不匹配,则表示该函数标识所对应的第一函数(即新版本的函数)可能存在异常,因此,可以确定该第一函数为待测试的目标函数。
52.上述测试定位方法,终端通过获取目标应用的待测试版本代码文件和历史版本代码文件,并识别待测试版本代码文件中的第一函数,获取第一函数的第一函数标识和第一编码信息,以及识别历史版本代码文件中的第二函数,获取第二函数的第二函数标识和第二编码信息,从而根据第一函数标识、第一编码信息、第二函数标识和第二编码信息,从第一函数中确定待测试的目标函数,以实现精确地测试定位,不仅能够减少冗余测试,还可以提高测试效率。
53.在一个实施例中,如图3所示,在步骤204中,识别待测试版本代码文件中的第一函数,具体还可以包括:
54.步骤302,对待测试版本代码文件进行代码转换处理,得到转换后的待测试版本字
节码文件。
55.其中,字节码(byte-code)文件是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。由于待测试版本代码文件是一种源码文件,终端无法直接处理。因此,在本实施例中,终端可以基于一定的转换规则或借助编译工具对待测试版本代码文件进行代码转换处理,从而得到转换后的待测试版本字节码文件。即将待测试版本的目标应用的源码文件转换为字节码文件。
56.步骤304,解析待测试版本字节码文件,得到解析后的第一可执行代码。
57.其中,第一可执行代码可以是计算机直接使用的程序语言语句,即机器码。在本实施例中,终端可以基于反编译工具对待测试版本字节码文件进行解析,从而得到解析后的第一可执行代码。
58.步骤306,识别第一可执行代码中的第一可执行子代码,将第一可执行子代码作为第一函数。
59.其中,第一可执行子代码可以是执行某一计算或实现某一功能的最小执行单元,也即指令单元。在本实施例中,终端可以识别第一可执行代码中的所有第一可执行子代码,并将识别的第一可执行子代码作为第一函数。
60.在本实施例中,终端通过对待测试版本代码文件进行代码转换处理,得到转换后的待测试版本字节码文件,并解析待测试版本字节码文件,得到解析后的第一可执行代码,进而识别第一可执行代码中的第一可执行子代码,并将第一可执行子代码作为第一函数,从而实现从待测试版本代码文件中识别第一函数。
61.在一个实施例中,如图4所示,在步骤204中,获取第一函数的第一函数标识和第一编码信息,具体还可以包括:
62.步骤402,获取第一可执行子代码的第一描述信息和第一路径信息。
63.其中,第一描述信息可以包括第一可执行子代码的访问标识和具体的代码信息。第一路径信息则可以是该第一可执行子代码的文件路径,如该第一可执行子代码的函数名、所属的类名、包名以及模块等,通过文件路径可以唯一地确定第一可执行子代码。在本实施例中,终端通过获取第一可执行子代码的第一描述信息和第一路径信息,并基于后续步骤确定对应的第一函数标识和第一编码信息。
64.步骤404,将第一路径信息作为第一函数的第一函数标识。
65.由于通过文件路径可以唯一地确定第一可执行子代码,而每个第一可执行子代码可以作为对应的第一函数。因此,在本实施例中,终端还可以将第一路径信息作为第一函数的第一函数标识。
66.步骤406,对第一描述信息进行编码处理,得到第一函数的第一编码信息。
67.其中,编码处理可以采用具体的编码工具实理,例如,可以采用md5信息摘要算法(md5 message-digest algorithm)、base64(一种基于64个可打印字符来表示二进制数据的方法)等。具体地,终端通过对每个第一可执行子代码的第一描述信息分别进行编码处理,从而得到每个第一函数对应的第一编码信息。
68.上述实施例中,终端通过获取第一可执行子代码的第一描述信息和第一路径信息,并将第一路径信息作为第一函数的第一函数标识,进而对第一描述信息进行编码处理,得到第一函数的第一编码信息,从而实现获取第一函数的第一函数标识和第一编码信息。
69.在一个实施例中,在步骤206中,识别历史版本代码文件中的第二函数,具体可以包括:对历史版本代码文件进行代码转换处理,得到转换后的历史版本字节码文件;解析历史版本字节码文件,得到解析后的第二可执行代码;识别第二可执行代码中的第二可执行子代码,将第二可执行子代码作为第二函数。可以理解的是,本实施例的具体处理过程与图3所示的实施例相类似,唯一不同之处在于图3所示的实施例识别的是待测试版本代码文件中的函数,本实施例识别的历史版本代码文件中的函数,其具体的处理过程基本相同,本实施例不再对此进行赘述。
70.在一个实施例中,在步骤206中,获取第二函数的第二函数标识和第二编码信息,具体可以包括:获取第二可执行子代码的第二描述信息和第二路径信息;将第二路径信息作为第二函数的第二函数标识;对第二描述信息进行编码处理,得到第二函数的第二编码信息。
71.可以理解的是,本实施例的具体处理过程与图4所示的实施例相类似,唯一不同之处在于图4所示的实施例获取的是第一函数的第一函数标识和第一编码信息,本实施例获取的是第二函数的第二函数标识和第二编码信息,其具体的获取过程相同,本实施例不再对此进行赘述。
72.在一个实施例中,如图5所示,在步骤208中,根据第一函数标识、第一编码信息、第二函数标识和第二编码信息,从第一函数中确定待测试的目标函数,具体可以包括:
73.步骤502,针对第一函数标识,查找是否存在相同的第二函数标识。
74.具体地,终端针对待测试版本关系库中的每一个第一函数标识,在历史版本关系库中轮询查找是否存在相同的第二函数标识。当终端查找到相同的第二函数标识,则执行步骤504,当终端没有查找到相同的第二函数标识,则执行步骤508。
75.步骤504,确定第二函数标识对应的第二编码信息以及第一函数标识对应的第一编码信息。
76.当终端查找到与当前第一函数标识相同的第二函数标识时,则获取该第二函数标识对应的第二编码信息,以及获取该第一函数标识对应的第一编码信息。
77.步骤506,判断第一编码信息是否与第二编码信息匹配。
78.具体地,终端通过比对第一编码信息与第二编码信息的一致性,以判断其是否匹配。当终端经比对确定第一编码信息与第二编码信息不一致时,则表示其不匹配,因此执行步骤508,当终端经比对确定第一编码信息与第二编码信息一致时,则表示匹配,因此执行步骤510。
79.步骤508,将第一函数标识对应的第一函数确定为待测试的目标函数。
80.由于第二编码信息是对历史版本代码文件中第二函数的描述信息进行编码得到的,且历史版本代码文件已经过测试。而当终端确定第一编码信息与第二编码信息不一致时,则表示该第一编码信息可能存在异常,又由于第一编码信息是对第一函数的描述信息进行编码得到的,因此,可以将其对应的第一函数确定为待测试的目标函数。
81.步骤510,确定下一个待处理的第一函数标识,并返回执行步骤502。
82.由于第二编码信息是对历史版本代码文件中第二函数的描述信息进行编码得到的,且历史版本代码文件已经过测试。则当终端确定第一编码信息与第二编码信息一致时,表示该第一编码信息对应的第一函数不存在异常,因此,可以轮询下一个待处理的第一函
数标识,并返回执行步骤502。
83.上述实施例中,终端通过比对待测试版本关系库与历史版本关系库中同一函数标识的编码信息是否一致,并将不一致的函数确定为待测试的目标函数,从而能够精准地进行测试,提高测试效率。
84.在一种场景下,将第一函数标识对应的第一函数确定为待测试的目标函数之后,由于第一函数标识表征的是对应第一函数的路径,因此,基于其对应的第一函数标识,可以快速定位待测试的目标函数的所在位置,从而可以进一步提高测试效率。
85.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
86.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的测试定位方法的测试定位装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个测试定位装置实施例中的具体限定可以参见上文中对于测试定位方法的限定,在此不再赘述。
87.在一个实施例中,如图6所示,提供了一种测试定位装置,包括:代码获取模块602、第一识别模块604、第二识别模块606和测试定位模块608,其中:
88.代码获取模块602,用于获取目标应用的待测试版本代码文件和历史版本代码文件;
89.第一识别模块604,用于识别所述待测试版本代码文件中的第一函数,获取所述第一函数的第一函数标识和第一编码信息;
90.第二识别模块606,用于识别所述历史版本代码文件中的第二函数,获取所述第二函数的第二函数标识和第二编码信息;
91.测试定位模块608,用于根据所述第一函数标识、所述第一编码信息、所述第二函数标识和所述第二编码信息,从所述第一函数中确定待测试的目标函数。
92.在一个实施例中,测试定位模块还用于:针对所述第一函数标识,确定与所述第一函数标识相同的第二函数标识;当所述第一函数标识对应的第一编码信息,与相同的第二函数标识对应的第二编码信息不匹配时,将所述第一函数标识对应的第一函数确定为待测试的目标函数。
93.在一个实施例中,测试定位模块还用于:针对所述第一函数标识,当不存在与所述第一函数标识相同的第二函数标识时,将所述第一函数标识对应的第一函数确定为待测试的目标函数。
94.在一个实施例中,第一识别模块用于:对所述待测试版本代码文件进行代码转换处理,得到转换后的待测试版本字节码文件;解析所述待测试版本字节码文件,得到解析后的第一可执行代码;识别所述第一可执行代码中的第一可执行子代码,将所述第一可执行子代码作为所述第一函数。
95.在一个实施例中,第一识别模块还用于:获取所述第一可执行子代码的第一描述信息和第一路径信息;将所述第一路径信息作为所述第一函数的第一函数标识;对所述第一描述信息进行编码处理,得到所述第一函数的第一编码信息。
96.在一个实施例中,第二识别模块用于:对所述历史版本代码文件进行代码转换处理,得到转换后的历史版本字节码文件;解析所述历史版本字节码文件,得到解析后的第二可执行代码;识别所述第二可执行代码中的第二可执行子代码,将所述第二可执行子代码作为所述第二函数。
97.在一个实施例中,第二识别模块还用于:获取所述第二可执行子代码的第二描述信息和第二路径信息;将所述第二路径信息作为所述第二函数的第二函数标识;对所述第二描述信息进行编码处理,得到所述第二函数的第二编码信息。
98.上述测试定位装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
99.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、移动蜂窝网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种测试定位方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
100.本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
101.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
102.获取目标应用的待测试版本代码文件和历史版本代码文件;
103.识别所述待测试版本代码文件中的第一函数,获取所述第一函数的第一函数标识和第一编码信息;
104.识别所述历史版本代码文件中的第二函数,获取所述第二函数的第二函数标识和第二编码信息;
105.根据所述第一函数标识、所述第一编码信息、所述第二函数标识和所述第二编码信息,从所述第一函数中确定待测试的目标函数。
106.在一个实施例中,处理器执行计算机程序时还实现以下步骤:针对所述第一函数
标识,确定与所述第一函数标识相同的第二函数标识;当所述第一函数标识对应的第一编码信息,与相同的第二函数标识对应的第二编码信息不匹配时,将所述第一函数标识对应的第一函数确定为待测试的目标函数。
107.在一个实施例中,处理器执行计算机程序时还实现以下步骤:针对所述第一函数标识,当不存在与所述第一函数标识相同的第二函数标识时,将所述第一函数标识对应的第一函数确定为待测试的目标函数。
108.在一个实施例中,处理器执行计算机程序时还实现以下步骤:对所述待测试版本代码文件进行代码转换处理,得到转换后的待测试版本字节码文件;解析所述待测试版本字节码文件,得到解析后的第一可执行代码;识别所述第一可执行代码中的第一可执行子代码,将所述第一可执行子代码作为所述第一函数。
109.在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取所述第一可执行子代码的第一描述信息和第一路径信息;将所述第一路径信息作为所述第一函数的第一函数标识;对所述第一描述信息进行编码处理,得到所述第一函数的第一编码信息。
110.在一个实施例中,处理器执行计算机程序时还实现以下步骤:对所述历史版本代码文件进行代码转换处理,得到转换后的历史版本字节码文件;解析所述历史版本字节码文件,得到解析后的第二可执行代码;识别所述第二可执行代码中的第二可执行子代码,将所述第二可执行子代码作为所述第二函数。
111.在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取所述第二可执行子代码的第二描述信息和第二路径信息;将所述第二路径信息作为所述第二函数的第二函数标识;对所述第二描述信息进行编码处理,得到所述第二函数的第二编码信息。
112.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
113.获取目标应用的待测试版本代码文件和历史版本代码文件;
114.识别所述待测试版本代码文件中的第一函数,获取所述第一函数的第一函数标识和第一编码信息;
115.识别所述历史版本代码文件中的第二函数,获取所述第二函数的第二函数标识和第二编码信息;
116.根据所述第一函数标识、所述第一编码信息、所述第二函数标识和所述第二编码信息,从所述第一函数中确定待测试的目标函数。
117.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:针对所述第一函数标识,确定与所述第一函数标识相同的第二函数标识;当所述第一函数标识对应的第一编码信息,与相同的第二函数标识对应的第二编码信息不匹配时,将所述第一函数标识对应的第一函数确定为待测试的目标函数。
118.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:针对所述第一函数标识,当不存在与所述第一函数标识相同的第二函数标识时,将所述第一函数标识对应的第一函数确定为待测试的目标函数。
119.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对所述待测试版本代码文件进行代码转换处理,得到转换后的待测试版本字节码文件;解析所述待测试版本字节码文件,得到解析后的第一可执行代码;识别所述第一可执行代码中的第一可执行
子代码,将所述第一可执行子代码作为所述第一函数。
120.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取所述第一可执行子代码的第一描述信息和第一路径信息;将所述第一路径信息作为所述第一函数的第一函数标识;对所述第一描述信息进行编码处理,得到所述第一函数的第一编码信息。
121.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对所述历史版本代码文件进行代码转换处理,得到转换后的历史版本字节码文件;解析所述历史版本字节码文件,得到解析后的第二可执行代码;识别所述第二可执行代码中的第二可执行子代码,将所述第二可执行子代码作为所述第二函数。
122.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取所述第二可执行子代码的第二描述信息和第二路径信息;将所述第二路径信息作为所述第二函数的第二函数标识;对所述第二描述信息进行编码处理,得到所述第二函数的第二编码信息。
123.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
124.获取目标应用的待测试版本代码文件和历史版本代码文件;
125.识别所述待测试版本代码文件中的第一函数,获取所述第一函数的第一函数标识和第一编码信息;
126.识别所述历史版本代码文件中的第二函数,获取所述第二函数的第二函数标识和第二编码信息;
127.根据所述第一函数标识、所述第一编码信息、所述第二函数标识和所述第二编码信息,从所述第一函数中确定待测试的目标函数。
128.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:针对所述第一函数标识,确定与所述第一函数标识相同的第二函数标识;当所述第一函数标识对应的第一编码信息,与相同的第二函数标识对应的第二编码信息不匹配时,将所述第一函数标识对应的第一函数确定为待测试的目标函数。
129.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:针对所述第一函数标识,当不存在与所述第一函数标识相同的第二函数标识时,将所述第一函数标识对应的第一函数确定为待测试的目标函数。
130.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对所述待测试版本代码文件进行代码转换处理,得到转换后的待测试版本字节码文件;解析所述待测试版本字节码文件,得到解析后的第一可执行代码;识别所述第一可执行代码中的第一可执行子代码,将所述第一可执行子代码作为所述第一函数。
131.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取所述第一可执行子代码的第一描述信息和第一路径信息;将所述第一路径信息作为所述第一函数的第一函数标识;对所述第一描述信息进行编码处理,得到所述第一函数的第一编码信息。
132.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对所述历史版本代码文件进行代码转换处理,得到转换后的历史版本字节码文件;解析所述历史版本字节码文件,得到解析后的第二可执行代码;识别所述第二可执行代码中的第二可执行子代码,将所述第二可执行子代码作为所述第二函数。
133.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取所述第二可
执行子代码的第二描述信息和第二路径信息;将所述第二路径信息作为所述第二函数的第二函数标识;对所述第二描述信息进行编码处理,得到所述第二函数的第二编码信息。
134.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
135.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
136.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
137.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。

技术特征:
1.一种测试定位方法,其特征在于,所述方法包括:获取目标应用的待测试版本代码文件和历史版本代码文件;识别所述待测试版本代码文件中的第一函数,获取所述第一函数的第一函数标识和第一编码信息;识别所述历史版本代码文件中的第二函数,获取所述第二函数的第二函数标识和第二编码信息;根据所述第一函数标识、所述第一编码信息、所述第二函数标识和所述第二编码信息,从所述第一函数中确定待测试的目标函数。2.根据权利要求1所述的方法,其特征在于,所述根据所述第一函数标识、所述第一编码信息、所述第二函数标识和所述第二编码信息,从所述第一函数中确定待测试的目标函数,包括:针对所述第一函数标识,确定与所述第一函数标识相同的第二函数标识;当所述第一函数标识对应的第一编码信息,与相同的第二函数标识对应的第二编码信息不匹配时,将所述第一函数标识对应的第一函数确定为待测试的目标函数。3.根据权利要求1所述的方法,其特征在于,所述根据所述第一函数标识、所述第一编码信息、所述第二函数标识和所述第二编码信息,从所述第一函数中确定待测试的目标函数,包括:针对所述第一函数标识,当不存在与所述第一函数标识相同的第二函数标识时,将所述第一函数标识对应的第一函数确定为待测试的目标函数。4.根据权利要求1至3任一项所述的方法,其特征在于,所述识别所述待测试版本代码文件中的第一函数,包括:对所述待测试版本代码文件进行代码转换处理,得到转换后的待测试版本字节码文件;解析所述待测试版本字节码文件,得到解析后的第一可执行代码;识别所述第一可执行代码中的第一可执行子代码,将所述第一可执行子代码作为所述第一函数。5.根据权利要求4所述的方法,其特征在于,所述获取所述第一函数的第一函数标识和第一编码信息,包括:获取所述第一可执行子代码的第一描述信息和第一路径信息;将所述第一路径信息作为所述第一函数的第一函数标识;对所述第一描述信息进行编码处理,得到所述第一函数的第一编码信息。6.根据权利要求1至3任一项所述的方法,其特征在于,所述识别所述历史版本代码文件中的第二函数,包括:对所述历史版本代码文件进行代码转换处理,得到转换后的历史版本字节码文件;解析所述历史版本字节码文件,得到解析后的第二可执行代码;识别所述第二可执行代码中的第二可执行子代码,将所述第二可执行子代码作为所述第二函数。7.根据权利要求6所述的方法,其特征在于,所述获取所述第二函数的第二函数标识和第二编码信息,包括:
获取所述第二可执行子代码的第二描述信息和第二路径信息;将所述第二路径信息作为所述第二函数的第二函数标识;对所述第二描述信息进行编码处理,得到所述第二函数的第二编码信息。8.一种测试定位装置,其特征在于,所述装置包括:代码获取模块,用于获取目标应用的待测试版本代码文件和历史版本代码文件;第一识别模块,用于识别所述待测试版本代码文件中的第一函数,获取所述第一函数的第一函数标识和第一编码信息;第二识别模块,用于识别所述历史版本代码文件中的第二函数,获取所述第二函数的第二函数标识和第二编码信息;测试定位模块,用于根据所述第一函数标识、所述第一编码信息、所述第二函数标识和所述第二编码信息,从所述第一函数中确定待测试的目标函数。9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。

技术总结
本申请涉及一种测试定位方法、装置、计算机设备、存储介质和计算机程序产品。其方法通过获取目标应用的待测试版本代码文件和历史版本代码文件,并识别待测试版本代码文件中的第一函数,获取第一函数的第一函数标识和第一编码信息,以及识别历史版本代码文件中的第二函数,获取第二函数的第二函数标识和第二编码信息,从而根据第一函数标识、第一编码信息、第二函数标识和第二编码信息,从第一函数中确定待测试的目标函数,以实现精确地测试定位,不仅能够减少冗余测试,还可以提高测试效率。还可以提高测试效率。还可以提高测试效率。


技术研发人员:马忍 郭琛 邱锋 张有良 孙瑜
受保护的技术使用者:兴业数字金融服务(上海)股份有限公司
技术研发日:2023.04.28
技术公布日:2023/9/11
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐