一种接口测试方法、装置、计算机设备及存储介质与流程

文档序号:31562398发布日期:2022-09-20 17:22阅读:37来源:国知局
一种接口测试方法、装置、计算机设备及存储介质与流程

1.本公开涉及计算机技术领域,具体而言,涉及一种接口测试方法、装置、计算机设备及存储介质。


背景技术:

2.模糊测试是一种软件测试技术,可以通过将随机生成的数据输入到一个程序中,并通过监视程序的异常情况,来发现可能的程序错误,因其相对于人工手动构造异常数据进行测试相比,成本更低且性价比较高,而被广泛应用于软件测试领域。
3.现有的模糊测试方法中,虽然可以自动生成大量的异常数据进行测试,但由于异常数据是随机生成的,从而使得生成的异常数据没有针对性,导致了测试的效率低下。


技术实现要素:

4.本公开实施例至少提供一种接口测试方法、装置、计算机设备及存储介质。
5.第一方面,本公开实施例提供了一种接口测试方法,包括:
6.基于待测试接口的接口标识,从数据库中获取所述待测试接口对应的初始测试用例;
7.确定所述初始测试用例中待变异的目标数据节点的变异概率和变异方法;
8.基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例;
9.基于所述变异后的测试用例,对所述待测试接口进行测试。
10.一种可能的实施方式中,所述基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例,包括:
11.基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到第一次变异后的测试用例;
12.基于所述初始测试用例中目标数据节点的变异概率和变异方法对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例,n为大于或等于1的正整数。
13.一种可能的实施方式中,所述基于所述初始测试用例中目标数据节点的变异概率和变异方法对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例,包括:
14.确定第n次变异后的测试用例中,变异节点所对应的目标数据节点的节点类型;
15.将所述变异节点所对应的目标数据节点的变异概率和变异方法,确定为所述变异节点对应的变异概率和变异方法;
16.基于所述变异节点对应的变异概率和变异方法,对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例。
17.一种可能的实施方式中,所述确定所述初始测试用例中目标数据节点的变异概率和变异方法,包括:
18.确定所述初始测试用例中目标数据节点的节点类型,所述节点类型包括叶子节点
和非叶子节点;
19.确定与所述目标数据节点的节点类型匹配的变异概率和变异方法。
20.一种可能的实施方式中,所述变异方法包括以下至少一种:
21.对所述目标数据节点的数据结构进行变异;对所述目标数据节点的数据类型进行变异;对所述目标数据节点的节点参数值进行变异;对测试用例中所包含的数据节点个数进行变异。
22.第二方面,本公开实施例还提供一种接口测试装置,包括:
23.获取模块,用于基于待测试接口的接口标识,从数据库中获取所述待测试接口对应的初始测试用例;
24.确定模块,用于确定所述初始测试用例中待变异的目标数据节点的变异概率和变异方法;
25.变异模块,用于基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例;
26.测试模块,用于基于所述变异后的测试用例,对所述待测试接口进行测试。
27.一种可能的实施方式中,所述变异模块,在所述基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例时,用于:
28.基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到第一次变异后的测试用例;
29.基于所述初始测试用例中目标数据节点的变异概率和变异方法对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例,n为大于或等于1的正整数。
30.一种可能的实施方式中,所述变异模块,在所述基于所述初始测试用例中目标数据节点的变异概率和变异方法对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例时,用于:
31.确定第n次变异后的测试用例中,变异节点所对应的目标数据节点的节点类型;
32.将所述变异节点所对应的目标数据节点的变异概率和变异方法,确定为所述变异节点对应的变异概率和变异方法;
33.基于所述变异节点对应的变异概率和变异方法,对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例。
34.一种可能的实施方式中,所述确定模块,在所述确定所述初始测试用例中目标数据节点的变异概率和变异方法时,用于:
35.确定所述初始测试用例中目标数据节点的节点类型,所述节点类型包括叶子节点和非叶子节点;
36.确定与所述目标数据节点的节点类型匹配的变异概率和变异方法。
37.一种可能的实施方式中,所述变异方法包括以下至少一种:
38.对所述目标数据节点的数据结构进行变异;对所述目标数据节点的数据类型进行变异;对所述目标数据节点的节点参数值进行变异;对测试用例中所包含的数据节点个数进行变异。
39.第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所
述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
40.第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
41.本公开实施例提供的接口测试方法、装置、计算机设备及存储介质,先基于待测试接口的接口标识,从数据库中获取所述待测试接口对应的初始测试用例,并确定所述初始测试用例中待变异的目标数据节点的变异概率和变异方法;基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例,这样,通过针对性的设置目标数据节点的变异概率和变异方法,可以实现对于数据节点的针对性变异;基于这种方法得到的变异后的测试用例,在对所述待测试接口进行测试,这样,可以通过控制数据节点的变异概率和变异方法,了解到不同数据节点对于待测试接口的鲁棒性的影响,进而提升了对于待测试接口的测试效率和测试效果。
42.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
43.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
44.图1示出了本公开实施例所提供的一种接口测试方法的流程图;
45.图2示出了本公开实施例所提供的一种接口测试方法中,对第n次变异后的测试用例进行变异的方法的流程图;
46.图3示出了本公开实施例所提供的一种接口测试装置的示意图;
47.图4示出了本公开实施例所提供的一种计算机设备的结构示意图。
具体实施方式
48.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
49.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
50.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
51.经研究发现,现有的模糊测试方法中,虽然可以自动生成大量的异常数据进行测试,但由于异常数据是随机生成的,从而使得生成的异常数据没有针对性,导致了测试的效率低下。
52.基于上述研究,本公开提供了一种接口测试方法、装置、计算机设备及存储介质,先基于待测试接口的接口标识,从数据库中获取所述待测试接口对应的初始测试用例,并确定所述初始测试用例中待变异的目标数据节点的变异概率和变异方法;基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例,这样,通过针对性的设置目标数据节点的变异概率和变异方法,可以实现对于节点的针对性变异;基于这种方法得到的变异后的测试用例,在对所述待测试接口进行测试,这样,可以通过控制节点的变异概率和变异方法,了解到不同节点对于待测试接口的鲁棒性的影响,进而提升了对于待测试接口的测试效率和测试效果。
53.为便于对本实施例进行理解,首先对本公开实施例所公开的一种接口测试方法进行详细介绍,本公开实施例所提供的接口测试方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(user equipment,ue)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(personal digital assistant,pda)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该接口测试方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
54.为便于对本实施例进行理解,首先对本公开实施例所公开的一种接口测试方法的应用场景进行介绍。在一种可能的应用场景中,在进行接口测试时,可以通过改变发送请求来生成接口测试数据,用以检测服务器的应用程序接口(application programming interface,api,以下简称接口)的鲁棒性。比如,可以在客户端运行接口测试脚本,所述接口测试脚本可以对客户端发送的请求进行修改,并将修改后的请求发送给服务器,以测试服务器的接口在不同请求下的鲁棒性。所述接口测试脚本在对客户端发送的请求进行修改时的具体执行步骤可以参见图1以及后续具体操作,在此不再展开说明。
55.具体的,所述服务器的接口的开发代码中包含了对多个运算参数的声明,所述运算参数的声明用于表示在对所述接口发起请求时,请求的指令中所需要包含的参数,比如,运算参数的声明中声明了在对接口1发起请求(即调用接口1)时,请求的指令中需要包含a1、b1、c1三个参数,则对调用接口1进行测试的接口测试脚本中需要包括a1、b1、c1三个参数的具体赋值,例如可以包含“a2:1”、“b2:2”、“c2:3”,其中,在接口测试脚本中,a2、b2、c2为数据节点,a1、b1、c1三个参数与a2、b2、c2三个数据节点一一对应。在调用接口1对接口测试脚本进行处理时,可以是按照接口1的开发代码中对a1、b1、c1三个参数的处理方法,对a2、b2、c2三个数据节点的具体赋值进行处理,得到对接口测试脚本的处理结果。
56.实际应用中,可以通过监测与接口对应的程序的运行情况来确定接口对接口测试脚本的处理结果。示例性的,与所述更改发送请求相对应的程序异常可以是服务器报错,也
即在客户端对应的展示“服务器错误,错误代码500”,表示此时服务器内部发生错误。
57.在另一种可能的应用场景中,在进行接口测试时,可以通过设置代理服务器拦截客户端发送的请求,并改变所述请求中的请求数据,然后将改变后的请求数据发送至服务器,以测试服务器的接口。
58.具体实施中,可以通过中间人攻击(man-in-the-middle attack,mitm),实现上述操作,其原理为中间人也即代理服务器在客户端发起请求时截取请求,并向服务器发送修改后的请求。所述中间人攻击在针对发送请求进行修改时,可以参见图1以及后续具体操作,在此不再展开说明。
59.在另外一种可能的应用场景中,还可以对服务器返回至客户端的数据进行拦截,然后将拦截的数据进行变异,并将变异后的数据发送至客户端以对客户端的稳定性进行测试。具体的,对拦截的数据的变异的方法也可以参照图1所示的方法。
60.下面将以对服务器接口进行测试为例,对本公开所提供的接口测试方法进行介绍。
61.参见图1所示,为本公开实施例提供的接口测试方法的流程图,所述方法包括步骤s101~s104,其中:
62.s101:基于待测试接口的接口标识,从数据库中获取所述待测试接口对应的初始测试用例。
63.s102:确定所述初始测试用例中待变异的目标数据节点的变异概率和变异方法。
64.s103:基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例。
65.s104:基于所述变异后的测试用例,对所述待测试接口进行测试。
66.下面将对本公开实施例中各个步骤及对应的实施方法进行详细说明。
67.针对s101,所述初始测试用例除了可以从数据库获取,还可以是测试人员手动进行编写的,比如待测试接口的运算参数声明中包含有4个运算参数,测试人员可以根据这4个运算参数针对性的编写所述初始测试用例,所述待测试接口可以用于在被调用之后对初始测试用例进行处理,所述待测试接口在被调用之后,可以对所述初始测试用例携带的数据节点进行处理,并按照返回数据格式向对应的调用方发送处理后得到的返回数据。
68.这里,需要说明的是,待测试接口的运算参数声明中可以包括必选运算参数声明和非必选运算参数声明,初始测试用例中包括每个必选运算参数分别对应的数据节点,或者还可以包括非必选运算参数对应的数据节点。
69.具体实施中,在获取待测试接口的初始测试用例之后,可以根据s102确定所述初始测试用例中待变异的目标数据节点的变异概率和变异方法,具体方法如下所示。
70.其中,所述目标数据节点与所述待测试接口中有测试需求的运算参数存在一一对应的关系,具体的目标数据节点的选择可以由测试人员根据测试需求选择,仍以待测试接口中包含a、b、c三个必选的运算参数,指令代码中包含“a:1”、“b:2”、“c:3”三个数据节点为例,待测试接口中所包含的运算参数与接口请求的指令代码中所包含的数据节点存在一一对应关系,在测试接口的基础功能时,可以选择选择全部的运算参数对应的数据节点作为所述目标数据节点;在进行特殊功能,比如新增功能测试时,可以选择新增运算参数对应的数据节点作为目标数据节点进行重点测试。
71.实际应用中,待测试接口中可以包括多个运算参数,在调用待测试接口对测试用例进行处理时,实际上是将测试用例中的数据节点的取值赋值给对应的运算参数,然后待测试接口可以基于赋值后的运算参数去进行处理,以实现对于待测试接口的测试。
72.在一种可能的应用场景中,所述目标数据节点可以根据待测试接口的运算参数进行设置,示例性的,若待测试接口无新增运算参数,待测试接口中包含运算参数1、运算参数2、运算参数3,则将初始测试用例中与待测试接口中包含的运算参数1、运算参数2、运算参数3分别对应的数据节点全部作为目标数据节点;若目标数据节点新增了运算参数,如原待测试接口中包含运算参数1、运算参数2、运算参数3,在进行接口功能升级之后的新待测试接口中包含运算参数1、运算参数2、运算参数3、运算参数4,可以设置新增的运算参数4在初始测试用例中所对应的数据节点为目标数据节点,然后对新增的运算参数4的鲁棒性进行测试。
73.所述变异概率为测试用例进行变异时,当前目标数据节点发生变异的概率。比如,数据节点1的变异概率为10%,表示在测试用例进行一次变异时,数据节点1有10%的可能性发生变异。
74.其中,所述变异方法包括对所述目标数据节点的数据结构进行变异;和/或,对所述目标数据节点的数据类型进行变异;和/或,对所述目标数据节点的节点参数值进行变异;和/或,对测试用例中所包含的数据节点个数进行变异。
75.所述对所述目标数据节点的数据结构进行变异,例如,当前数据交换格式对应的数据结构为json(javascript object notation,js对象简谱)结构,可以通过设置非json结构产生数据结构变异;
76.所述对所述目标数据节点的数据类型进行变异,例如,可以通过将当前的整数类型数据int、字符串类型数据string转为其他类型数据来产生数据类型变异;
77.所述对所述目标数据节点的节点参数值进行变异,例如,可以通过设置该数据节点对应的参数值为null值、none值、空字符串、超长字符串、异常字符串、空列表、空字典、无返回值、0或1等特殊值、255或0.0等边界值来产生参数值变异;
78.所述对测试用例中所包含的数据节点个数进行变异,例如、可以通过删除当前数据节点、重复当前数据节点、增加其他数据节点,实现数据节点个数的增加或减少,从而产生数据节点个数变异。
79.具体实施中,可以通过以下两种方法确定所述初始测试用例中目标数据节点的变异概率和变异方法:
80.方法a、获取预先为所述初始测试用例中每一个目标数据节点设置的变异概率和变异方法。
81.由于不同的测试需求导致的测试的侧重点不同,可以为不同的目标数据节点设置不同的变异概率和变异方法,对重点测试的目标数据节点可以设置更高的变异概率和更多的变异方法,对非重点测试的目标数据节点则设置较低的变异概率和较少的变异方法,或者直接设置非重点测试的目标数据节点的变异概率为0,也即不对非重点测试的数据节点进行变异,使得其在整个测试流程中保持原本的状态。
82.又或者,由于不同的目标数据节点对于待测试接口的影响程度不同,例如某些目标数据节点的变异概率可能很高,但是对于待测试接口的影响不大,即并不影响待测试接
口对于数据的正常处理;某些目标数据节点的变异概率可能很低,但是对于待测试接口的影响可能很大,因此,可以基于待测试接口出现异常时,各个数据节点的历史变异情况,设置不同目标数据节点的变异概率和变异方法。
83.方法b、先确定所述初始测试用例中目标数据节点的节点类型,再确定与所述目标数据节点的节点类型匹配的变异概率和变异方法。
84.这里,所述节点类型包括叶子节点和非叶子节点。其中,所述叶子节点为数据结构中的终端节点,也即其后续没有其他节点的节点;所述非叶子节点为所有节点中除了叶子节点外的其他节点。
85.具体实施中,可以在识别出所述节点类型后,分别对叶子节点设置第一变异概率和第一变异方法,对非叶子节点设置第二变异概率和第二变异方法。示例性的,所述目标数据节点为数据节点1、数据节点2、数据节点3、数据节点4,识别出其中的数据节点1和数据节点2为叶子节点,数据节点3和数据节点4为非叶子节点,则可以针对叶子节点设置第一变异概率为40%,并对应的从上述变异方法中选取若干变异方法,构成所述第一变异方法;针对非叶子节点设置第二变异概率为20%,并对应的从上述变异方法中选取若干变异方法,构成所述第二变异方法。其中,所述第一变异方法可以与所述第二变异方法相同。
86.需要说明的是,由于变异本身具体随机性,因而较难完全控制,为了提高变异过程的稳定性,减少变异过程中异常情况的出现,可以在设置变异概率时,将叶子节点的变异概率设置的较高一些,而非叶子节点的变异概率设置的较低一些,从而避免出现由于后续关联有叶子节点的非叶子节点和对应的叶子节点重复变异、非叶子节点变异过多导致的数据节点数量过多或过少等异常情况。
87.具体实施中,在确定所述初始测试用例中目标数据节点的变异概率和变异方法之后,可以根据s103对所述初始测试用例进行变异,得到变异后的测试用例,具体方法如下所示。
88.s103:基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例。
89.一种可能的实施方式中,在基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异时,对于第一次变异,可以基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到第一次变异后的测试用例。
90.具体实施中,进行接口测试时的流程为:变异-测试-再变异-再测试
……
91.这里,首先按照所述目标数据节点的变异概率和变异方法对所述初始测试用例中的目标数据节点进行变异,从而得到第一次变异后的测试用例。
92.对于第一次变异后的其他次变异,可以基于所述初始测试用例中目标数据节点的变异概率和变异方法对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例,n为大于或等于1的正整数。
93.这里,由于在整个测试过程中往往进行不止一次变异,为了提高变异的变异后的测试用例与所述初始测试用例的差异性,第n+1次的变异可以在第n次变异后的测试用例的基础上进行变异。这里,可以为n设置一个最大值,比如499,这样在经过500次变异和相应的测试后,即可完成对所述待测试接口的全部测试;或者,可以设置相应的变异停止条件,比
如测试结果中出现了10次异常情况,则可以停止当前的变异,将出现的异常情况整理成相应的测试报告发送给测试人员。
94.一种可能的实施方式中,在基于所述初始测试用例中目标数据节点的变异概率和变异方法对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例时,参见图2所示,可以通过以下步骤:
95.s201:确定第n次变异后的测试用例中,变异节点所对应的目标数据节点的节点类型。
96.这里,由于所述变异方法中存在节点个数变异,从而导致可能出现数据节点增多的情况。
97.示例性的,所述目标数据节点为目标数据节点1、目标数据节点2、目标数据节点3、目标数据节点4,第n次变异后的测试用例中的变异节点为变异节点1、变异节点2、变异节点3、变异节点4、变异节点5、变异节点6,通过变异过程查询可以确定所述变异节点1、变异节点2、变异节点3、变异节点4分别对应目标数据节点1、目标数据节点2、目标数据节点3、目标数据节点4,则所述变异节点5和变异节点6为通过变异新生成的节点,新生成的数据节点显然不是所述接口测试开始前,设置的进行测试的目标数据节点,由于新生成的变异节点并没有对应的目标数据节点,因此在对待测试接口进行测试时,待测试接口也就无法对新生成的变异节点进行处理,因此该新生成的变异节点再进行变异也是无效的变异,因此先确定生成的变异节点中对应有目标数据节点的变异节点,可以避免对新生成的变异节点进行无效变异所导致的时间和计算资源浪费,通过数据节点变异时的针对性,提高接口测试的效率。
98.s202:将所述变异节点所对应的目标数据节点的变异概率和变异方法,确定为所述变异节点对应的变异概率和变异方法。
99.这里需要说明的是,由于所述变异中存在节点个数变异,从而导致可能出现数据节点增多的情况。在这种情况下,可能使得原目标数据节点的类型从叶子节点变为非叶子节点,而由于变异不是完全可控的,无法提前确定变异得到的变异节点的是叶子节点还是非叶子节点,所以需要针对每一个变异节点,确定该变异节点对应的目标数据节点的节点类型。
100.示例性的,仍以所述目标数据节点为目标数据节点1、目标数据节点2、目标数据节点3、目标数据节点4,第n次变异后的测试用例中的变异节点为变异节点1、变异节点2、变异节点3、变异节点4、变异节点5、变异节点6为例,经过变异过程查询,可以确定变异节点1、变异节点2、变异节点3、变异节点4对应的目标数据节点依次为目标数据节点1、目标数据节点2、目标数据节点3、目标数据节点4,所述目标数据节点的节点类型依次为叶子节点、叶子节点、非叶子节点、非叶子节点。
101.具体的,在进行变异过程查询时,可以由后往前按照变异的过程,确定当前变异节点对应的目标数据节点,比如查询变异节点1的变异过程,由后往前追溯到该节点未经变异前的状态,查找到其在所述初始测试用例中对应数据节点1,再根据当时的状态确定其是否为目标数据节点,根据查询可知所述初始测试用例中的节点1为目标数据节点,且该数据节点为叶子节点,则该变异节点1所对应的目标数据节点即为叶子节点。
102.这里,在确定该变异节点的所对应的目标数据节点的节点类型时,一种可能的实
施方式中,可以是在对初始测试用例进行变异前,确定初始测试用例中的目标数据节点的节点类型,另外一种可能的实施方式中,可以是在对初始测试用例进行变异之后,遍历初始测试用例中的目标数据节点,确定每个目标数据节点在变异后的测试用例中对应的变异节点,然后基于初始测试用例中目标数据节点的节点类型,确定各变异节点对应的目标数据节点的节点类型。
103.一种可能的实施方式中,可以基于预先设置的节点类型与变异概率和变异方法之间的对应关系,查找与变异节点所对应的变异概率和变异方法。其中,所述变异概率和变异方法是与当前变异节点对应的目标数据节点的节点类型对应的。
104.示例性的,针对叶子节点设置的第一变异概率为40%,所述第一变异概率对应第一变异方法,针对非叶子节点设置的第二变异概率为20%,所述第二变异概率对应第二变异方法,目标数据节点1为叶子节点,与所述目标数据节点1存在对应关系的为变异节点1,则所述变异节点1的变异概率可以是针对目标数据节点1设置的第一变异概率40%,所述变异方法为所述第一变异概率对应第一变异方法。
105.这里,需要说明的是,在确定变异节点对应的变异概率和变异方法时,与该变异节点本身是叶子节点还是非叶子节点无关,而是与该变异节点对应的目标数据节点是叶子节点还是非叶子节点有关。
106.s203:基于所述变异节点对应的变异概率和变异方法,对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例。
107.其中,所述变异方法可以有多个,在基于变异概率和变异方法进行变异时,可以从多个变异方法中选择任意一个变异方法对所述测试用例进行变异。具体实施中,在得到变异后的测试用例之后,可以基于所述变异后的测试用例,对所述待测试接口进行测试。
108.具体的,可以基于所述变异后的测试用例,向所述待测试接口发送对应的接口请求,并通过监测接口的运行情况来实现对测试结果的记录。
109.一种可能的实施方式中,在基于所述变异后的测试用例,对所述待测试接口进行测试后,可以基于测试结果和所述变异后的测试用例,生成与所述待测试接口对应的测试报告。
110.具体实施中,还可以将基于当前所述变异后的测试用例得到的测试结果进行统计,得到在执行全部变异和测试后针对该待测试接口的测试报告。
111.示例性的,使用当前所述变异后的测试用例进行测试,监测到该接口对应的程序发生崩溃,则可以将当前测试的所述变异后的测试用例和程序发生崩溃这一测试结果进行封装,生成一条异常记录,进一步的还可以继续执行测试进程,并统计后续出现的异常情况及对应的异常记录,最终在客户端展示包含所有异常记录的测试报告,使得用户可以对待测试接口的测试结果有更清楚的认识。
112.本公开实施例提供的接口测试方法,先基于待测试接口的接口标识,从数据库中获取所述待测试接口对应的初始测试用例,并确定所述初始测试用例中待变异的目标数据节点的变异概率和变异方法;基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例,这样,通过针对性的设置目标数据节点的变异概率和变异方法,可以实现对于数据节点的针对性变异;基于这种方法得到的变异后的测试用例,在对所述待测试接口进行测试,这样,可以通过控制数据节点的变异
概率和变异方法,了解到不同数据节点对于待测试接口的鲁棒性的影响,进而提升了对于待测试接口的测试效率和测试效果。
113.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
114.基于同一发明构思,本公开实施例中还提供了与接口测试方法对应的接口测试装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述接口测试方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
115.参照图3所示,为本公开实施例提供的一种接口测试装置的示意图,所述装置包括:获取模块301、确定模块302、变异模块303、测试模块304;其中,
116.获取模块301,用于基于待测试接口的接口标识,从数据库中获取所述待测试接口对应的初始测试用例;
117.确定模块302,用于确定所述初始测试用例中待变异的目标数据节点的变异概率和变异方法;
118.变异模块303,用于基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例;
119.测试模块304,用于基于所述变异后的测试用例,对所述待测试接口进行测试。
120.一种可能的实施方式中,所述变异模块303,在所述基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例时,用于:
121.基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到第一次变异后的测试用例;
122.基于所述初始测试用例中目标数据节点的变异概率和变异方法对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例,n为大于或等于1的正整数。
123.一种可能的实施方式中,所述变异模块303,在所述基于所述初始测试用例中目标数据节点的变异概率和变异方法对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例时,用于:
124.确定第n次变异后的测试用例中,变异节点所对应的目标数据节点的节点类型;
125.将所述变异节点所对应的目标数据节点的变异概率和变异方法,确定为所述变异节点对应的变异概率和变异方法;
126.基于所述变异节点对应的变异概率和变异方法,对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例。
127.一种可能的实施方式中,所述确定模块302,在所述确定所述初始测试用例中目标数据节点的变异概率和变异方法时,用于:
128.确定所述初始测试用例中目标数据节点的节点类型,所述节点类型包括叶子节点和非叶子节点;
129.确定与所述目标数据节点的节点类型匹配的变异概率和变异方法。
130.一种可能的实施方式中,所述变异方法包括以下至少一种:
131.对所述目标数据节点的数据结构进行变异;对所述目标数据节点的数据类型进行
变异;对所述目标数据节点的节点参数值进行变异;对测试用例中所包含的数据节点个数进行变异。
132.本公开实施例提供的接口测试装置,先基于待测试接口的接口标识,从数据库中获取所述待测试接口对应的初始测试用例,并确定所述初始测试用例中待变异的目标数据节点的变异概率和变异方法;基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例,这样,通过针对性的设置目标数据节点的变异概率和变异方法,可以实现对于数据节点的针对性变异;基于这种方法得到的变异后的测试用例,在对所述待测试接口进行测试,这样,可以通过控制数据节点的变异概率和变异方法,了解到不同数据节点对于待测试接口的鲁棒性的影响,进而提升了对于待测试接口的测试效率和测试效果。
133.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
134.基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图4所示,为本公开实施例提供的计算机设备400的结构示意图,包括处理器401、存储器402、和总线403。其中,存储器402用于存储执行指令,包括内存4021和外部存储器4022;这里的内存4021也称内存储器,用于暂时存放处理器401中的运算数据,以及与硬盘等外部存储器4022交换的数据,处理器401通过内存4021与外部存储器4022进行数据交换,当计算机设备400运行时,处理器401与存储器402之间通过总线403通信,使得处理器401在执行以下指令:
135.基于待测试接口的接口标识,从数据库中获取所述待测试接口对应的初始测试用例;
136.确定所述初始测试用例中待变异的目标数据节点的变异概率和变异方法;
137.基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例;
138.基于所述变异后的测试用例,对所述待测试接口进行测试。
139.一种可能的实施方式中,所述处理器401的指令中,所述基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到变异后的测试用例,包括:
140.基于所述初始测试用例中目标数据节点的变异概率和变异方法对所述初始测试用例进行变异,得到第一次变异后的测试用例;
141.基于所述初始测试用例中目标数据节点的变异概率和变异方法对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例,n为大于或等于1的正整数。
142.一种可能的实施方式中,所述处理器401的指令中,所述基于所述初始测试用例中目标数据节点的变异概率和变异方法对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例,包括:
143.确定第n次变异后的测试用例中,变异节点所对应的目标数据节点的节点类型;
144.将所述变异节点所对应的目标数据节点的变异概率和变异方法,确定为所述变异节点对应的变异概率和变异方法;
145.基于所述变异节点对应的变异概率和变异方法,对第n次变异后的测试用例进行变异,得到第n+1次变异后的测试用例。
146.一种可能的实施方式中,所述处理器401的指令中,所述确定所述初始测试用例中目标数据节点的变异概率和变异方法,包括:
147.确定所述初始测试用例中目标数据节点的节点类型,所述节点类型包括叶子节点和非叶子节点;
148.确定与所述目标数据节点的节点类型匹配的变异概率和变异方法。
149.一种可能的实施方式中,所述处理器401的指令中,所述变异方法包括以下至少一种:
150.对所述目标数据节点的数据结构进行变异;对所述目标数据节点的数据类型进行变异;对所述目标数据节点的节点参数值进行变异;对测试用例中所包含的数据节点个数进行变异。
151.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的接口测试方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
152.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的接口测试方法的步骤,具体可参见上述方法实施例,在此不再赘述。
153.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
154.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
155.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
156.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
157.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所
述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
158.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1