一种接口测试方法、系统、存储介质及电子设备与流程

文档序号:30732212发布日期:2022-07-13 03:18阅读:71来源:国知局
一种接口测试方法、系统、存储介质及电子设备与流程

1.本技术涉及自动化测试技术领域,更具体地说,涉及一种接口测试方法、系统、存储介质及电子设备。


背景技术:

2.互联网企业在线上业务爆发式增长的背景下,为了满足快速迭代与演化的需求,将复杂的产品功能拆分到多个业务子系统中去实现,多个业务子系统间通过统一的通信协议协作完成整个业务流程。
3.现有技术中是通过yapi接口管理平台、postman接口管理平台等,以接口的文件集合的方式来线性地组织测试用例,通过逐个生成接口入参,进行调用,并且结合开发人员编写的结果校验脚本,来验证接口的正确性,以达到业务功能完成测试的目的。
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.图1为本技术实施例公开的一种接口测试方法的流程示意图;
40.图2为本技术实施例公开的一种对树形测试用例进行编排的示意图;
41.图3为本技术实施例公开的树形测试用例遍历的流程示意图;
42.图4为本技术实施例公开的另一种对树形测试用例进行编排的示意图;
43.图5为本技术实施例公开的一种接口测试系统的结构示意图;
44.图6为本技术实施例公开的一种电子设备的结构示意图。
具体实施方式
45.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
46.在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
47.由背景技术可知,在上述接口管理平台中,对于涉及多个接口调用的完整业务功能测试,则将多个接口调用组合为一个测试接口列表逐个顺序执行,对于较复杂的业务功能,不同的测试用例可能依赖了相同的前置接口结果作为入参,这种情况下,接口集合的组织方式则会产生很多的重复请求,从而降低测试接口调用的效率。
48.为了解决上述问题,本技术实施例公开了一种接口测试方法、系统、存储介质及电子设备,根据接口定义修改少量字段后转换得到的校验文件,能够充分复用该校验文件,来
对接口进行自动化测试时对接口结果的可用性校验,减少测试结果校验脚本的编写,并且支持用户通过填写校验表达式语言的规则,来根据每个接口的结果动态编排下一个应该执行的接口测试用例,从而减少重复执行的接口调用,提高测试接口的效率。具体实现方式通过下述实施例具体进行说明。
49.参考图1所示,为本技术实施例公开的一种接口测试方法的流程示意图,该接口测试方法主要包括如下步骤:
50.s101:将获取到的当前时刻的登陆接口配置信息转换为当前时刻的接口请求;接口请求为调用测试用例的接口请求。
51.在s101中,登陆接口配置信息包括用户登录、商品列表查询、商品详情查询、领取优惠券、添加购物车、购物车下单、直接购买、订单付款等接口配置信息。
52.接收用户输入当前时刻的登陆接口配置信息,并分别保存为接口定义、入出参定义、用例定义、接口服务器数据等接口与测试用例相关配置数据。
53.测试用例包括单测试用例或树形测试用例。其中,单测试用例为无树状结构的单个测试用例;树形测试用例为对不同分类结果的树状结构的测试用例。
54.s102:若测试用例为单测试用例,则基于接口请求得到预设格式的接口结果;接口结果用于表征接口请求对应的数据结构。
55.在s102中,通过解析测试用例、接口服务地址等配置数据,获得可执行的测试用例接口调用列表,并逐个执行该可执行的测试用例接口调用列表,获得预设格式的接口结果。
56.预设格式的接口结果用于表征接口请求对应的js对象简谱(javascript objectnotation,json)格式的数据结构。
57.接口结果包括超文本传输协议(hyper text transferprotocol,http)请求响应状态码,请求响应头信息,请求响应实体等http协议定义内容。申请针对实体格式为json的接口,一般实体json内容还包括业务状态码、业务数据结构、补充消息等。
58.其中,业务数据结构包括符合用户通过json-schema定义的各种业务数据字段;json schema定义了一套词汇和规则,这套词汇和规则用来定义json元数据,且元数据也是通过json数据形式表达的。json元数据定义了json数据需要满足的规范,规范包括成员、结构、类型、约束等。
59.s103:通过预先获取到的校验文件对接口结果进行接口可用性校验,得到校验结果;校验结果用于表征运行校验表达式后得到的当前节点的校验结果;当前节点为运行当前时刻的接口请求对应的接口中的测试用例的节点。
60.在s103中,校验文件即为json schema文件,该json schema文件为接口结果进行接口可用性校验的基准文件。
61.具体通过预先获取到的校验文件对接口结果进行接口可用性校验,得到校验结果的过程如a1-a3所示。
62.a1:获取校验表达式;校验表达式用于表征对接口结果进行可用性校验的格式。
63.其中,校验表达式包括但不限于大于、等于、小于、大于等于、小于等于、在集合中、满足正则匹配、满足json-schema匹配、与、或、非等逻辑关系构成的表达式。
64.a2:通过校验表达式,将登陆接口配置信息转换为校验文件。
65.a3:通过校验文件对接口结果进行接口可用性校验,得到校验结果。
66.其中,通过校验文件对接口结果进行接口可用性校验,即为验证接口请求返回的校验结果是否符合预设校验条件,以及校验表达式运行结果是否为真。
67.s104:判断校验结果是否符合预设校验条件,若是,则执行s105,若否,则执行s106。
68.判断校验结果是否符合预设校验条件的过程如b1-b4所示。
69.b1:获取接口结果中的各个字段值。
70.其中,读取json数据中的一个字段及其值,然后判断其是否存在于接口结果(json-schema)中,如不存在,跳过该字段对另一字段重复执行b1。
71.b2:若各个字段值存在于校验文件中,则获取各个字段值的类型并判断各个字段值的类型是否与预设字段值类型一致。
72.其中,若各个字段值存在于校验文件(json-schema文件)中,继续判断字段值的类型是否符合schema中的该字段值类型的定义,即各个字段值的类型与预设字段值类型是否一致。
73.若各个字段值不存在于校验文件,则返回执行b1。
74.其中,预设字段值类型可以是object类型,也可以是其他字段值类型,预设字段值类型的确定由技术人员根据实际情况进行设置,本技术不做具体限定。本技术预设字段值类型优选object类型。
75.若各个字段值的类型不是object类型,则继续判断该各个字段值对应schema中其他定义的条件(比如大小区间是否一致等),如有不符合其他定义的条件,则结束校验,并确定校验结果失败。
76.其中,其他定义的条件由技术人员根据实际情况进行设置,本技术不做具体限定。
77.b3:若各个字段值的类型与预设字段值类型一致,则确定校验结果符合预设校验条件。
78.上述所有条件(各个字段值存在于校验文件、各个字段值的类型是否与预设字段值类型一致、(各个字段值满足其他定义的条件等)都符合,继续判断接口结果中是否存在下一字段,如不存在,则结束校验,并确定校验成功,若存在下一字段,则返回执行b1对该下一字段进行处理。
79.b4:若各个字段值中的任意一个不存在于校验文件中或各个字段值的类型中的任意一个与预设字段值类型不一致,则确定校验结果不符合预设校验条件。
80.其中,若各个字段值中的任意一个不存在于校验文件中,或各个字段值的类型中的任意一个与预设字段值类型不一致,则确定校验结果不符合预设校验条件,结束校验,确定校验结果失败,即确定校验结果未通过接口测试。
81.s105:确定校验结果通过接口测试。
82.s106:确定校验结果未通过接口测试。
83.可选的,若当前节点为表征树形测试用例的节点,则对树形测试用例进行遍历操作;当前节点包括前继节点和多个后续节点;前继节点和多个后继节点之间通过校验表达式连接。
84.树形测试用例的编排结构可参考图2所示,图2示出了对树形测试用例的编排的示意图。
85.图2中,将当前接口的所有树形测试用例运行视为当前节点,当前节点包括一个前继节点和多个后继节点,前继节点和多个后继节点之间基于用户定义的校验表达式连接。
86.图2中,箭头即为校验表达式。
87.用例a、用例b、用例c、用例d、用例e、用例f和用例g为树形测试用例。
88.任一节点(前继节点或多个后继节点)可配置的多个表达式,其任一表达式运行结果为真,则执行对应后继节点。
89.将符合预设校验条件的当前节点的校验结果作为上下文前继数据信息,并将上下文前继数据信息继承到下一节点的数据上下文中。
90.任一节点可配置的多个校验表达式,其任一校验表达式运行结果为真,则执行运行结果为真的校验表达式对应的后继节点,故而一整个业务流程的测试,其运行过程即为一棵树的深度遍历(树形测试用例遍历),前继节点的运行结果,可作为后继节点的运行上下文。树形测试用例遍历流程可参考图3所示。
91.s301:执行当前节点的接口可用性测试用例。
92.s302:判断接口可用性用例是否通过,若是,则执行s303,若否,则执行s307。
93.具体判断接口可用性用例是否通过可参考a1-a3和b1-b4的过程,此处不再进行赘述。
94.s303:判断是否存在未执行的子测试用例,若是,则执行s304,若否,则执行s308。
95.s304:执行子测试用例,并判断子测试用例是否通过,若是,则执行s305,若否,则执行s309。
96.其中,判断自测试用例是否通过可参考a1-a3和b1-b4的过程,此处不再进行赘述。
97.s305:标记子测试用例通过,并判断标记通过的子测试用例是否存在对应子节点,若是,则执行s306,若否,则执行s310。
98.s306:切换当前节点为后继节点并返回s301这一步骤。
99.s307:将当前节点标记为失败节点。
100.s308:判断当前节点是否为根节点,若是则执行s311,若否,则执行s310。
101.s309:标记子测试用例失败。
102.s310:将当前节点切换为前继节点。
103.s311:结束树形测试用例遍历流程。
104.为了方便理解接口测试方法的过程这里结合图4举例进行说明:
105.例如,在电商业务中,用户完成一次购买行为的链路较长,涉及导览、优惠领取、添加购物车、结算试算、下单、支付等多个业务流程的协同。这些业务流程的实现往往实现于多个微服务的多个接口中,且接口间存在依赖关系,因此在测试过程中需要统一的接口自动化测试来基于业务流程编排接口测试。
106.在接口管理平台的基础上,将接口输入、输出参数的描述信息转为规范化的json-schema用于接口测试时的数据校验文件,减少了接口自动化测试阶段,开发与测试人员所需编写的接口数据校验脚本,能够提高工作效率,结合表达式语言与树形测试用例编排方式,灵活地构建更贴近于业务流程的测试过程,能够减少重复执行的接口调用,提高接口自动化测试系统的运行效率。
107.本技术实施例中,测试人员可以基于接口平台设置用户登录、商品列表查询、商品
详情查询、领取优惠券、添加购物车、购物车下单、直接购买、订单付款等接口配置信息,通过用例编排模块来组织测试用例。具体将树形测试用例进行编排可参考图4所示,图4示出了另一种对树形测试用例进行编排的示意图。
108.对测试用例做如上编排时,测试人员从接口配置信息中,获取用户登录的接口的入参、出参json-schema文件,而测试人员可以通过进一步定制“登录失败”测试用例的校验表达式:为ctx.resp.code!=200,“登录成功”测试用例的校验表达式为:resp.code=200。
109.测试人员启动测试流程后,将登录接口配置信息转换为请求,结合测试人员填入信息,用例转换模块将接口配置转换为校验文件(json-schema文件);用例运行模块执行请求,获得接口结果,并通过表达式解析执行模块运行“ctx.respmachesctx.schema”表达式,完成接口可用性判断;随后逐个执行上述测试人员定制的用例校验表达式“ctx.resp.code!=200”与“resp.code==200”,当上述任一表达式满足后,将当前节点数据结果作为上下文前继数据信息,继承到下一执行循环数据上下文中,再读取用例编排树中向下移节点,即可以是附图4中的“商品详情”节点,重新开启执行整个过程,直到节点没有后继节点需要测试。
110.本技术实施例中,根据接口定义修改少量字段后转换得到的校验文件,能够充分复用该校验文件,来对接口进行自动化测试时对接口结果的可用性校验,减少测试结果校验脚本的编写,并且支持用户通过填写校验表达式语言的规则,来根据每个接口的结果动态编排下一个应该执行的接口测试用例,从而减少重复执行的接口调用,提高测试接口的效率。
111.基于上述实施例图1公开的一种接口测试方法,本技术实施例还对应公开了一种接口测试系统,如图5所示,该接口测试系统包括转换单元501、获取单元502、校验单元503和第一确定单元504。
112.转换单元501,用于将获取到的当前时刻的登陆接口配置信息转换为当前时刻的接口请求;接口请求为调用测试用例的接口请求。
113.获取单元502,用于若测试用例为单测试用例,则基于接口请求得到预设格式的接口结果;接口结果用于表征接口请求对应的数据结构。
114.校验单元503,用于通过预先获取到的校验文件对接口结果进行接口可用性校验,得到校验结果;校验结果用于表征运行校验表达式后得到的当前节点的校验结果;当前节点为运行当前时刻的接口请求对应的接口中的测试用例的节点。
115.第一确定单元504,用于若校验结果符合预设校验条件,则确定校验结果通过接口测试。
116.进一步的,校验单元503包括第一获取模块、转换模块和校验模块。
117.第一获取模块,用于获取校验表达式;校验表达式用于表征对接口结果进行可用性校验的格式。
118.转换模块,用于通过校验表达式,将登陆接口配置信息转换为校验文件。
119.校验模块,用于通过校验文件对接口结果进行接口可用性校验,得到校验结果。
120.进一步的,第一确定单元504包括第二获取模块、判断模块和确定模块。
121.第二获取模块,用于获取接口结果中的各个字段值。
122.判断模块,用于若各个字段值存在于校验文件中,则获取各个字段值的类型并判
断各个字段值的类型是否与预设字段值类型一致。
123.确定模块,用于若各个字段值的类型与预设字段值类型一致,则确定校验结果符合预设校验条件,并确定校验结果通过接口测试。
124.进一步的,接口测试系统还包括第二确定单元。
125.第二确定单元,用于若各个字段值中的任意一个不存在于校验文件中或各个字段值的类型中的任意一个与预设字段值类型不一致,则确定校验结果不符合预设校验条件。
126.进一步的,接口测试系统还包括遍历单元。
127.遍历单元,用于若当前节点为表征树形测试用例的节点,则对所述树形测试用例进行遍历操作;当前节点包括前继节点和多个后续节点;前继节点和多个所述后继节点之间通过校验表达式连接。
128.进一步的,接口测试系统还包括继承单元。
129.继承单元,用于将符合预设校验条件的当前节点的校验结果作为上下文前继数据信息,并将上下文前继数据信息继承到下一节点的数据上下文中。
130.本技术实施例中,根据接口定义修改少量字段后转换得到的校验文件,能够充分复用该校验文件,来对接口进行自动化测试时对接口结果的可用性校验,减少测试结果校验脚本的编写,并且支持用户通过填写校验表达式语言的规则,来根据每个接口的结果动态编排下一个应该执行的接口测试用例,从而减少重复执行的接口调用,提高测试接口的效率。
131.本技术实施例还提供了一种存储介质,存储介质包括存储的指令,其中,在指令运行时控制存储介质所在的设备执行上述一种接口测试方法。
132.本技术实施例还提供了一种电子设备,其结构示意图如图6所示,具体包括存储器601,以及一个或者一个以上的指令602,其中一个或者一个以上指令602存储于存储器601中,且经配置以由一个或者一个以上处理器603执行所述一个或者一个以上指令602执行上述一种接口测试方法。
133.上述各个实施例的具体实施过程及其衍生方式,均在本技术的保护范围之内。
134.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
135.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
136.对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
137.以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1