本发明属于测试,特别涉及一种接口测试方法、装置及可读存储介质。
背景技术:
1、现有iot(物联网)系统基本都是接口测试,现在都是手工测试,引入接口自动化可以提前介入测试且测试快速高效,也方便回归;可更好的利用资源,具有一致性和可重复性的特点,自动化测试脚本完全可复用;提升了接口的可信度等,现有的接口测试的代码架构中,通常至少包括:testcase层(测试用例层)、api层(接口层)等,采用testcase层的测试用例直接调用api层内的接口路径、接口方法和请求函数等完成测试,接口数量繁多的项目中,为满足项目开发的测试变化,对代码修改工作复杂,难以管理。
技术实现思路
1、本发明要解决的技术问题是为了克服现有技术中的接口测试项目中,对代码修改工作复杂,难以管理的缺陷,提供一种接口测试方法、装置及可读存储介质。
2、本发明是通过下述技术方案来解决上述技术问题:
3、一种接口测试方法,所述接口测试方法基于一自动化框架实现,所述自动化框架包括testcase层(测试用例层)、service层(服务层)、api层(接口层)、common层(通用层);
4、所述接口测试方法包括以下步骤:
5、在所述testcase层通过预设的测试用例驱动接口服务,以调用所述service层;
6、在所述service层中调用所述api层的接口请求函数;
7、通过所述接口请求函数调用所述common层以设置所述接口的参数的加密方式、请求地址以及端口配置。
8、上述方案中,api层与service分离,使接口流程与用例的请求过程分开,接口流程可以为接口的路径、接口的认证方法、接口的调用方法等,即使重构也能方便后续维护,在api层编写项目对应的api请求方法,然后在service层通过调用api层对应的api请求方法来驱动对应的接口测试;在代码修改时,只需要修改api层,而不需要修改service层,方便管理和代码的修改,且在api上代码内容也比较好修改和管理。
9、较佳地,所述自动化框架还包括config层(配置层);
10、所述通过所述接口请求函数调用所述common层以设置所述接口的参数的加密方式、请求地址以及端口配置,具体包括:
11、通过所述接口请求函数调用所述common层的请求生成器;
12、通过所述common层的请求生成器调用所述config层以设置所述接口的参数的加密方式、所述请求地址以及所述端口配置;
13、其中,所述请求生成器用于接口请求设置和/或接口响应过滤设置。
14、上述方案中,common层用于封装公共方法类,包括接口请求设置以及接口响应过滤器的设置,以配置调用的配置文件,采用config层和common层的分层,使配置调用的配置文件与配置文件分层设置,方便管理和代码更新。
15、较佳地,所述自动化框架还包括resources层(资源层);
16、所述通过所述common层的请求生成器调用所述config层以设置所述接口的参数的加密方式、所述请求地址以及所述端口配置,具体包括:
17、在所述config层调用所述resources层;
18、通过所述resources层提供所需的配置环境,以使所述config层设置所述接口的参数的加密方式、所述请求地址以及所述端口配置;
19、其中,所述配置环境包括以下一种或几种:配置用例参数、设置环境的参数以及调用加密方法。
20、上述方案中,resources层用于用例参数、测试环境、加密方法等的配置环境的配置,以便于接口测试的自动化完成。
21、较佳地,所述在所述service层中调用所述api层的接口请求函数,还包括:
22、在所述service层中调用所述接口请求函数,以查询所述接口的输入参数;
23、在所述api层通过所述加密方式对所述输入参数进行加密处理。
24、上述方案中,在service层还完成对输入参数的加密处理,确保接口测试中数据的安全性。
25、较佳地,所述自动化框架还包括model层(函数层);
26、所述在所述service层中调用接口请求函数,以查询所述接口的输入参数,具体包括:
27、通过所述接口请求函数调用所述model层以查询所述接口的输入参数和/或基础参数。
28、上述方案中,model层用于获取不同接口请求的输入参数以及基础响应参数,参数的自动调用便于接口测试的自动化完成。
29、较佳地,所述输入参数包括以下一种或几种:密码、换电站的信息、电池仓信息、电池充电信息以及换电车辆信息;
30、和/或,所述测试用例至少包括测试所述输入参数的加密准确性。
31、上述方案中,通过对换电相关信息加密,提高换电系统中接口的参数的保密性。
32、较佳地,所述在所述testcase层通过预设的测试用例驱动接口服务,以调用所述service层,具体包括:
33、通过预设的测试用例给接口参数赋值后,以调用所述service层的对应第一方法。
34、上述方案中,通过预设的测试用例给接口参数赋值后,直接调用所述service层中的对应第一方法,比如调用querystationinfo方法来实现对换电站站点信息的查询的接口测试请求,亦可以调用其他的方法实现不同的接口测试需求。
35、较佳地,所述加密方式包括基于aes加密算法进行加密;
36、和/或,所述自动化框架基于restassured+junit5搭建。
37、一种接口测试装置,所述接口测试装置基于一自动化框架实现,所述自动化框架包括testcase层、service层、api层、common层,接口测试装置包括:
38、测试用例驱动模块,用于在所述testcase层通过预设的测试用例驱动接口服务,以调用所述service层;
39、接口请求调用模块,用于在所述service层中调用所述api层的接口请求函数;
40、配置模块,用于通过所述接口请求函数调用所述common层以设置所述接口的参数的加密方式、请求地址以及端口配置。
41、上述方案中,api层与service分离,使接口流程与用例的请求过程分开,接口流程可以为接口的路径、接口的认证方法、接口的调用方法等,即使重构也能方便后续维护,在api层编写项目对应的api请求方法,然后在service层通过调用api层对应的api请求方法来驱动对应的接口测试;在代码修改时,只需要修改api层,而不需要修改service层,方便管理和代码的修改,且在api上代码内容也比较好修改和管理。
42、较佳地,所述自动化框架还包括config层;
43、所述配置模块具体包括:
44、请求生成器调用单元,用于通过所述接口请求函数调用所述common层的请求生成器;
45、配置单元,用于通过所述common层的请求生成器调用所述config层以设置所述接口的参数的加密方式、所述请求地址以及所述端口配置;
46、其中,所述请求生成器用于接口请求设置和/或接口响应过滤设置。
47、上述方案中,common层用于封装公共方法类,包括接口请求设置以及接口响应过滤器的设置,以配置调用的配置文件,采用config层和common层的分层,使配置调用的配置文件与配置文件分层设置,方便管理和代码更新。
48、较佳地,所述自动化框架还包括resources层;
49、所述配置模块还包括:
50、resources层调用单元,用于在所述config层调用所述resources层;
51、所述配置单元用于通过所述resources层提供所需的配置环境,以使所述config层设置所述接口的参数的加密方式、所述请求地址以及所述端口配置;
52、其中,所述配置环境包括以下一种或几种:配置用例参数、设置环境的参数以及调用加密方法。
53、上述方案中,resources层用于用例参数、测试环境、加密方法等的配置环境的配置,以便于接口测试的自动化完成。
54、较佳地,所述自动化框架还包括model层;
55、所述接口请求调用模块具体用于:
56、通过所述接口请求函数调用所述model层以查询所述接口的输入参数和/或基础参数。
57、上述方案中,model层用于获取不同接口请求的输入参数以及基础响应参数,参数的自动调用便于接口测试的自动化完成。
58、较佳地,所述测试用例驱动模块具体用于:
59、通过预设的测试用例给接口参数赋值后,以调用所述service层的对应第一方法。
60、上述方案中,通过预设的测试用例给接口参数赋值后,直接调用所述service层中的对应第一方法,比如调用querystationinfo方法来实现对换电站站点信息的查询的接口测试请求,亦可以调用其他的方法实现不同的接口测试需求。
61、较佳地,所述接口请求调用模块还用于在所述service层中调用所述接口请求函数,以查询所述接口的输入参数,还用于在所述api层通过所述加密方式对所述输入参数进行加密处理;
62、和/或,所述接口的输入参数包括以下一种或几种:密码、换电站的信息、电池仓信息、电池充电信息以及换电车辆信息;
63、和/或,所述测试用例至少包括测试所述接口的输入参数的加密准确性;
64、和/或,所述加密方式包括基于aes加密算法进行加密;
65、和/或,所述自动化框架基于restassured+junit5搭建。
66、上述方案中,在service层还完成对输入参数的加密处理,确保接口测试中数据的安全性,通过对换电相关信息加密,提高换电系统中接口的参数的保密性。
67、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的接口测试方法。
68、本发明的积极进步效果在于:本技术引入接口自动化可以提前介入测试且测试快速高效,通过测试的分布执行,脚本模块化、数据驱动、日志分析、共享对象库、公共函数库、环境配置等分层设计,实现无人值守也方便回归,可以更好的利用资源,具有一致性和可重复性的特点,自动化测试脚本完全可复用,提升了接口的可信度。