本申请涉及网络技术领域,尤其涉及一种应用接口测试方法及系统。
背景技术:
远程过程调用(Remote Procedure Call,RPC)协议是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC框架通常采用客户端或服务器模式,请求程序就是一个客户端,而服务提供程序就是一个服务器。客户端与服务器之间是基于应用接口实现通信的,因此,为了确保客户端与服务器之间的正常通信,必须要对RPC框架中的各个应用接口进行测试。
按照相关的应用接口测试方法,需要技术人员编写专门的代码,然后服务器运行该代码来测试各个应用接口是否正常。由于需要技术人员编写专门的代码,不仅工作量巨大而且测试效率较低。
技术实现要素:
本申请实施例提供一种应用接口测试方法及装置,用以解决相关技术中存在的工作量巨大且测试效率较低的问题。
根据本申请实施例,提供一种应用接口测试方法,包括:
确定待测试应用接口及其包括的方法;
递归解析每个方法的每个原始入口参数,得到对应方法的对应原始入口参数的结构数据模板;以及,递归解析每个方法的原始出口参数,得到对应方法的原始出口参数的结构数据模板;
根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常;
确定所述待测试应用接口包括的每个方法是否都正常;
若所述待测试应用接口包括的每个方法都正常,则确定所述待测试应用接口正常。
具体的,确定待测试应用接口及其包括的方法,具体包括:
解析出所有的备选应用接口及其包括的方法并显示;
接收用户选择的备选应用接口,得到待测试应用接口;
获取所述待测试应用接口包括的方法。
具体的,递归解析每个方法的每个原始入口参数,得到对应方法的对应原始入口参数的结构数据模板,具体包括:
针对所述待测试应用接口包括的每个方法的每个原始入口参数执行:
获取当前方法的当前原始入口参数;
采用预先设置的至少两个参数类型识别器逐层解析所述当前原始入口参数,直到解析出所述当前原始入口参数包括的基础数据类型;
记录解析出的所述当前原始入口参数包括的基础数据类型及其之间的关联关系,得到所述当前原始入口参数的结构数据模板;
递归解析每个方法的原始出口参数,得到对应方法的原始出口参数的结构数据模板,具体包括:
针对所述待测试应用接口包括的每个方法的原始出口参数执行:
获取当前方法的原始出口参数;
采用所述至少两个参数类型识别器逐层解析所述原始出口参数,直到解析出所述原始出口参数包括的基础数据类型;
记录解析出的所述原始出口参数包括的基础数据类型及其之间的关联关系,得到所述原始出口参数的结构数据模板。
具体的,根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常,具体包括:
针对所述待测试应用接口包括的每个方法执行:
获取所述当前方法的每个原始入口参数的结构数据模板包括的基础数据类型的期望值,根据所述当前方法的每个原始入口参数的结构数据模板包括的基础数据类型及其期望值分别生成所述当前方法的每个调用入口参数;以及,
获取所述当前方法的原始出口参数的结构数据模板包括的基础数据类型的期望值,根据所述当前方法的原始出口参数的结构数据模板包括的基础数据类型及其期望值生成所述当前方法的调用出口参数;
根据所述当前方法的每个调用入口参数调用所述当前方法,得到所述当前方法的计算 出口参数;
确定所述当前方法的计算出口参数与所述当前方法的调用出口参数是否一致;
若所述当前方法的计算出口参数与所述当前方法的调用出口参数一致,则确定所述当前方法正常。
具体的,根据所述当前方法的每个原始入口参数的结构数据模板包括的基础数据类型及其期望值分别生成所述当前方法的每个调用入口参数,具体包括:
构建所述当前方法的调用工程;
基于所述当前方法的调用工程将所述当前方法的每个原始入口参数的结构数据模板中包括的基础数据类型的期望值带入所述当前方法的对应原始入口参数的结构数据模板中;
采用预先设置的至少两个参数类型生成器分别生成所述当前方法的每个调用入口参数;
根据所述当前方法的原始出口参数的结构数据模板包括的基础数据类型及其期望值生成所述当前方法的调用出口参数,具体包括:
基于所述当前方法的调用工程将所述当前方法的原始出口参数的结构数据模板中包括的基础数据类型的期望值带入所述当前方法的原始出口参数的结构数据模板中;
采用所述至少两个参数类型生成器生成所述当前方法的调用出口参数。
可选的,还包括:
若所述待测试应用接口包括的至少一个方法异常,则确定所述待测试接口异常。
根据本申请实施例,还提供一种应用接口测试装置,包括:
第一确定单元,用于确定待测试应用接口及其包括的方法;
解析单元,用于递归解析每个方法的每个原始入口参数,得到对应方法的对应原始入口参数的结构数据模板;以及,递归解析每个方法的原始出口参数,得到对应方法的原始出口参数的结构数据模板;
第二确定单元,用于根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常;
第三确定单元,用于确定所述待测试应用接口包括的每个方法是否都正常;若所述待测试应用接口包括的每个方法都正常,则确定所述待测试应用接口正常。
具体的,所述第一确定单元,用于确定待测试应用接口及其包括的方法,具体用于:
解析出所有的备选应用接口及其包括的方法并显示;
接收用户选择的备选应用接口,得到待测试应用接口;
获取所述待测试应用接口包括的方法。
具体的,所述解析单元,用于递归解析每个方法的每个原始入口参数,得到对应方法的对应原始入口参数的结构数据模板,具体用于:
针对所述待测试应用接口包括的每个方法的每个原始入口参数执行:
获取当前方法的当前原始入口参数;
采用预先设置的至少两个参数类型识别器逐层解析所述当前原始入口参数,直到解析出所述当前原始入口参数包括的基础数据类型;
记录解析出的所述当前原始入口参数包括的基础数据类型及其之间的关联关系,得到所述当前原始入口参数的结构数据模板;
所述解析单元,用于递归解析每个方法的原始出口参数,得到对应方法的原始出口参数的结构数据模板,具体用于:
针对所述待测试应用接口包括的每个方法的原始出口参数执行:
获取当前方法的原始出口参数;
采用所述至少两个参数类型识别器逐层解析所述原始出口参数,直到解析出所述原始出口参数包括的基础数据类型;
记录解析出的所述原始出口参数包括的基础数据类型及其之间的关联关系,得到所述原始出口参数的结构数据模板。
具体的,所述第二确定单元,用于根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常,具体用于:
针对所述待测试应用接口包括的每个方法执行:
获取所述当前方法的每个原始入口参数的结构数据模板包括的基础数据类型的期望值,根据所述当前方法的每个原始入口参数的结构数据模板包括的基础数据类型及其期望值分别生成所述当前方法的每个调用入口参数;以及,
获取所述当前方法的原始出口参数的结构数据模板包括的基础数据类型的期望值,根据所述当前方法的原始出口参数的结构数据模板包括的基础数据类型及其期望值生成所述当前方法的调用出口参数;
根据所述当前方法的每个调用入口参数调用所述当前方法,得到所述当前方法的计算出口参数;
确定所述当前方法的计算出口参数与所述当前方法的调用出口参数是否一致;
若所述当前方法的计算出口参数与所述当前方法的调用出口参数一致,则确定所述当前方法正常。
具体的,所述第二确定单元,用于根据所述当前方法的每个原始入口参数的结构数据模板包括的基础数据类型及其期望值分别生成所述当前方法的每个调用入口参数,具体用于:
构建所述当前方法的调用工程;
基于所述当前方法的调用工程将所述当前方法的每个原始入口参数的结构数据模板中包括的基础数据类型的期望值带入所述当前方法的对应原始入口参数的结构数据模板中;
采用预先设置的至少两个参数类型生成器分别生成所述当前方法的每个调用入口参数;
所述第二确定单元,用于根据所述当前方法的原始出口参数的结构数据模板包括的基础数据类型及其期望值生成所述当前方法的调用出口参数,具体用于:
基于所述当前方法的调用工程将所述当前方法的原始出口参数的结构数据模板中包括的基础数据类型的期望值带入所述当前方法的原始出口参数的结构数据模板中;
采用所述至少两个参数类型生成器生成所述当前方法的调用出口参数。
可选的,所述第三确定单元,还用于:
若所述待测试应用接口包括的至少一个方法异常,则确定所述待测试接口异常。
本申请实施例提供一种应用接口测试方法及装置,确定待测试应用接口及其包括的方法;递归解析每个方法的每个原始入口参数,得到对应方法的对应原始入口参数的结构数据模板;以及,递归解析每个方法的原始出口参数,得到对应方法的原始出口参数的结构数据模板;根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常;确定所述待测试应用接口包括的每个方法是否都正常;若所述待测试应用接口包括的每个方法都正常,则确定所述待测试应用接口正常。该方案中,在测试待测试应用接口是否正常时,会首先得到每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板,然后根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常,最终确定待测试应用接口是否正常,整个过程中无需编写专门的代码,从而大大减少了工作量,并且提高了测试效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例中一种应用接口测试方法的流程图;
图2为本申请实施例中S11的流程图;
图3为本申请实施例中S12的流程图;
图4为本申请实施例中S13的流程图;
图5为本申请实施例中另一种应用接口测试方法的流程图;
图6为本申请实施例中一种应用接口测试装置的结构示意图。
具体实施方式
为了使本申请所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为了解决相关技术中存在的工作量巨大且测试效率较低的问题,本申请实施例提供一种应用接口测试方法,该方法的流程如图1所示,包括如下步骤:
S11:确定待测试应用接口及其包括的方法。
RPC框架中可能有多个需要测试的应用接口,当前需要测试的应用接口为待测试应用接口;每个应用接口一般包括多个方法,只有当应用接口包括的每个方法都正常时,才能确定该应用接口是正常的,因此,还需要首先确定待测试应用接口包括的方法。
S12:递归解析每个方法的每个原始入口参数,得到对应方法的对应原始入口参数的结构数据模板;以及,递归解析每个方法的原始出口参数,得到对应方法的原始出口参数的结构数据模板。
待测试应用接口包括的方法会有多个原始入口参数和一个原始出口参数,原始出口参数和每个原始入口参数都是树形结构,因此,可以采用递归解析的方式深度解析每个方法的原始出口参数和每个原始入口参数,得到对应方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板。
S13:根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常。
S14:确定待测试应用接口包括的每个方法是否都正常,若待测试应用接口包括的每个 方法都正常,则执行S15;若待测试接口包括的至少一个方法异常,则执行S16。
S15:确定待测试应用接口正常。
S16:确定待测试应用接口异常。
该方案中,在测试待测试应用接口是否正常时,会首先得到每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板,然后根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常,最终确定待测试应用接口是否正常,整个过程中无需编写专门的代码,从而大大减少了工作量,并且提高了测试效率。
下面详细介绍上述应用接口测试方法中的每个步骤。
可选的,上述S11中的确定待测试应用接口及其包括的方法的实现过程,如图2所示,具体包括:
S111:解析出所有的备选应用接口及其包括的方法并显示。
在RPC框架中通常包括很多应用接口,每个应用接口包括很多方法,因此需要首先解析出RPC框架中所有的备选应用接口及每个备选应用接口包括的方法并显示,以供用户进行选择。
对于不同类型的备选应用接口,解析的方式可能有所不同,下面以备选应用接口为HSF接口为例进行说明:获取接口二方库的Maven依赖,将所有Maven依赖的类路径(ClassPath)注入到当前线程的类加载器(ClassLoader),得到备选应用接口及其包括的方法并显示。
S112:接收用户选择的备选应用接口,得到待测试应用接口。
用户可以从显示的所有备选应用接口中选择需要测试的备选应用接口作为待测试应用接口。
S113:获取待测试应用接口包括的方法。
在得到待测试应用接口后,可以从S111的解析结果中获取该待测试应用接口包括的方法,从而实现S11中的确定待测试应用接口及其包括的方法。
具体的,S12中的递归解析每个方法的每个原始入口参数,得到对应方法的对应原始入口参数的结构数据模板的实现过程,如图3所示,针对待测试应用接口包括的每个方法的每个原始入口参数执行:
S121:获取当前方法的当前原始入口参数。
由于每个应用接口通常会包括多个方法,而每个方法会有多个原始入口参数,因此需 要逐一递归解析待测试应用接口包括的每个方法的每个原始入口参数,当前正在解析的方法的原始入口参数为当前方法的当前原始入口参数。
S122:采用预先设置的至少两个参数类型识别器逐层解析当前原始入口参数,直到解析出当前原始入口参数包括的基础数据类型。
待测试应用接口的类型不同时,预先设置的参数类型识别器也不同,例如,当待测试应用接口为HSF接口时,预先设置的参数类型识别器可以为5个,分别为Java基础数据类型处理器、List类型处理器、Map类型处理器、Array类型处理器和DTO类型处理器。
由于当前原始入口参数是树形结构,因此可以采用预先设置的至少两个参数类型识别器逐层深度解析当前原始入口参数,直到解析出当前原始入口参数包括的基础数据类型为止,完成当前原始入口参数的解析。
S123:记录解析出的当前原始入口参数包括的基础数据类型及其之间的关联关系,得到当前原始入口参数的结构数据模板。
在S122中解析出了当前原始入口参数包括的基础数据类型,这些基础数据类型之间通常是有关联关系的,在本步骤中,可以在当前原始入口参数的结构数据模板中记录当前原始入口参数包括的基础数据类型以及这些基础数据类型之间的关联关系。
经过S121-S123实现解析一个原始入口参数,针对不同的原始入口参数可以重复执行S121-S123,直到得到待测试应用接口包括的每个方法的每个原始入口参数的结构数据模板。S121-S123中采用预先设置的至少两个参数类型识别器逐层解析当前原始入口参数,无需编写专门的代码,从而减少工作量且提升测试效率。
相应地,上述S12中的递归解析每个方法的原始出口参数,得到对应方法的原始出口参数的结构数据模板的实现过程,针对待测试应用接口包括的每个方法的原始出口参数执行:获取当前方法的原始出口参数;采用至少两个参数类型识别器逐层解析原始出口参数,直到解析出原始出口参数包括的基础数据类型;将解析出的原始出口参数包括的基础数据类型及其之间的关联关系作为原始出口参数的结构数据模板。
解析原始出口参数的方法与原始入口参数的方法是相同的,具体过程参见S121-S123,这里不再赘述。
可选的,上述S13中的根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常的实现过程,如图4所示,针对待测试应用接口包括的每个方法执行:
S131:获取当前方法的每个原始入口参数的结构数据模板包括的基础数据类型的期望值,根据当前方法的每个原始入口参数的结构数据模板包括的基础数据类型及其期望值分 别生成当前方法的每个调用入口参数。
可以由用户提供当前方法的每个原始入口参数的结构数据模板包括的基础数据类型的期望值,例如,基础数据类型可以为颜色、大小、款式、面料等等,对应的期望值分别为红色、L、韩版、棉等等,然后根据当前方法的每个原始入口参数的结构数据模板包括的基础数据类型及其期望值分别生成当前方法的每个调用入口参数。原始入口参数与调用入口参数是一一对应的关系,每个原始入口参数都会生成一个调用入口参数。
S132:获取当前方法的原始出口参数的结构数据模板包括的基础数据类型的期望值,根据当前方法的原始出口参数的结构数据模板包括的基础数据类型及其期望值生成当前方法的调用出口参数。
可以由用户提供当前方法的原始出口参数的结构数据模板包括的基础数据类型的期望值,例如,基础数据类型可以为颜色、大小、款式、面料等等,对应的期望值分别为红色、L、韩版、棉等等,然后根据当前方法的原始出口参数的结构数据模板包括的基础数据类型及其期望值分别生成当前方法的调用出口参数,原始出口参数与调用出口参数是一一对应的关系。
S133:根据当前方法的每个调用入口参数调用当前方法,得到当前方法的计算出口参数。
S134:确定当前方法的计算出口参数与当前方法的调用出口参数是否一致,若当前方法的计算出口参数与当前方法的调用出口参数一致,则执行S135;若当前方法的计算出餐与当前方法的调用出口参数不一致,则执行S136。
S135:确定当前方法正常。
S136:确定当前方法异常。
根据当前方法的调用入口参数调用当前方法后,得到当前方法的计算出口参数,然后将当前方法的调用出口参数与计算出口参数进行比较,若二者一致,则说明当前方法是正常的;反之,则说明当前方法是异常的。经过S131-S136实现确定当前方法是否正常,该过程中也无需编写专门的代码,从而减少工作量且提升测试效率。
其中,根据当前方法的每个原始入口参数的结构数据模板包括的基础数据类型及其期望值分别生成当前方法的每个调用入口参数,具体包括:构建当前方法的调用工程;基于当前方法的调用工程将当前方法的每个原始入口参数的结构数据模板中包括的基础数据类型的期望值带入当前方法的对应原始入口参数的结构数据模板中;采用预先设置的至少两个参数类型生成器分别生成当前方法的每个调用入口参数。
对于不同类型的备选应用接口,构建当前方法的调用工程的方式可能有所不同,下面 以备选应用接口为HSF接口为例进行说明:初始化用于应用接口调用的Maven工程,生成用于应用接口调用的XML文件,生成用于应用接口调用的Java代码模板,从而得到当前方法的调用工程。
待测试应用接口的类型不同时,预先设置的参数类型生成器也不同,例如,当待测试应用接口为HSF接口时,预先设置的参数类型生成器可以为5个,分别为Java基础数据类型生成器、List类型生成器、Map类型生成器、Array类型生成器和DTO类型生成器。
相应地,根据当前方法的原始出口参数的结构数据模板包括的基础数据类型及其期望值生成当前方法的调用出口参数,具体包括:基于当前方法的调用工程将当前方法的原始出口参数的结构数据模板中包括的基础数据类型的期望值带入当前方法的原始出口参数的结构数据模板中;采用至少两个参数类型生成器生成当前方法的调用出口参数。该过程与生成当前方法的调用入口参数的过程相同,这里不再赘述。
本申请实施例还提供另一种应用接口测试方法,该方法可以应用在测试RPC框架中的高性能服务框架(High Service Framework,HSF)接口中,该方法的流程如图5所示,具体包括以下步骤。
S51:获取接口二方库的Maven依赖,将所有Maven依赖的ClassPath注入到当前线程的ClassLoader,得到备选HSF接口及其包括的方法并显示。
RPC框架中通常包括很多HSF接口,每个HSF接口包括很多方法,因此需要首先解析出RPC框架中所有的备选HSF接口及其包括的方法并显示,以供用户进行选择。
S52:接收用户选择的备选HSF接口,得到待测试HSF接口。
用户可以从显示的所有备选HSF接口中选择需要测试的备选HSF接口作为待测试HSF接口。
S53:获取待测试HSF接口包括的方法。
在得到待测试HSF接口后,可以从S51的解析结果中获取该待测试HSF接口包括的方法。
S54:针对待测试HSF接口包括的每个方法的每个原始入口参数执行:获取当前方法的当前原始入口参数;采用预先设置的五个参数类型识别器逐层解析当前原始入口参数,直到解析出当前原始入口参数包括的基础数据类型;记录解析出的当前原始入口参数包括的基础数据类型及其之间的关联关系,得到当前原始入口参数的结构数据模板。
由于每个应用接口通常会包括多个方法,而每个方法会有多个原始入口参数,因此需要逐一递归解析待测试HSF接口包括的每个方法的每个原始入口参数,当前正在解析的方法的原始入口参数为当前方法的当前原始入口参数。
预先设置的五个参数类型识别器分别为Java基础数据类型处理器、List类型处理器、Map类型处理器、Array类型处理器和DTO类型处理器,可以将当前原始入口参数依次分配给这五个参数类型识别器,直到得到当前原始入口参数包括的所有基础数据类型。下面详细介绍每个参数类型识别器的处理过程。
1、Java基础数据类型处理器,识别Java基础数据类型,是递归解析的终点,主要包括String、Integer、Long、Double、Boolean、Date、BigInteger、BigDecimal以及枚举类型等。
2、List类型处理器,用于完成List类型的解析,首先判断出当前原始入口参数中List的具体类型,例如ArrayList、HashSet等等,然后判断该List内装载的数据类型,若装载的数据类型为List,则继续解析,若装载的数据类型不是List,则传递给其他参数类型识别器。
3、Map类型处理器,用于完成映射表值类型的解析(Map的键值为Java基础数据类型),首先判断出当前原始入口参数中Map的具体类型,例如HashMap、TreeMap等等,然后判断该Map内映射表值装载的数据类型,若装载的数据类型为Map,则继续解析,若装载的数据类型不是Map,则传递给其他参数类型识别器。
4、Array类型处理器,Array为Java数组,直接判断当前原始入口参数中Array内装载的数据类型,若装载的数据类型为Array,则继续解析,若装载的数据类型不是Array,则传递给其他参数类型识别器。
5、DTO类型处理器,用于处理DTO这个class的解析,首先解析当前原始入口参数DTO中的属性特征field,若field不包括set和get,则继续解析,若field不包括set和get,则传递给其他参数类型识别器。
由于当前原始入口参数是树形结构,因此可以采用预先设置的五个参数类型识别器逐层深度解析当前原始入口参数,直到解析出当前原始入口参数包括的基础数据类型为止,完成当前原始入口参数的解析。
S55:针对待测试HSF接口包括的每个方法的原始出口参数执行:获取当前方法的原始出口参数;采用五个参数类型识别器逐层解析原始出口参数,直到解析出原始出口参数包括的基础数据类型;将解析出的原始出口参数包括的基础数据类型及其之间的关联关系作为原始出口参数的结构数据模板。
可以同样采用上述五个参数类型识别器解析每个方法的原始出口参数,解析过程不再赘述。
S54和S55没有严格的先后顺序,可以根据实际需要进行设定。
S56:针对待测试HSF接口包括的每个方法执行:获取当前方法的每个原始入口参数的结构数据模板包括的基础数据类型的期望值;构建当前方法的调用工程;基于当前方法的调用工程将当前方法的每个原始入口参数的结构数据模板中包括的基础数据类型的期望值带入当前方法的对应原始入口参数的结构数据模板中;采用预先设置的五个参数类型生成器分别生成当前方法的每个调用入口参数。
可以由用户提供当前方法的每个原始入口参数的结构数据模板包括的基础数据类型的期望值,例如,基础数据类型可以为颜色、大小、款式、面料等等,对应的期望值分别为红色、L、韩版、棉等等,然后根据当前方法的每个原始入口参数的结构数据模板包括的基础数据类型及其期望值分别生成当前方法的每个调用入口参数。原始入口参数与调用入口参数是一一对应的关系,每个原始入口参数都会生成一个调用入口参数。
构建当前方法的调用工程的方式为:初始化用于应用接口调用的Maven工程,生成用于应用接口调用的XML文件,生成用于应用接口调用的Java代码模板,从而得到当前方法的调用工程。
预先设置的五个参数类型生成器分别为Java基础数据类型生成器、List类型生成器、Map类型生成器、Array类型生成器和DTO类型生成器,下面详细介绍每个参数类型识别器的处理过程。
1、List类型生成器:填写List类型第一个元素中所有解析出的Java基础数据类型的期望值,填写多个元素可以深度复制第一个元素后填写。
2、Array类型生成器:同List类型生成器的处理方式一致。
3、Map类型生成器:填写映射表第一对元素的key值和value中解析出的所有Java基础数据类型的期望值,填写多个元素可以深度复制映射表模板后填写。
4、DTO类型生成器:填写DTO中解析出的field的期望值,如果该field不是Java基础数据类型,则填写该field递归解析后的基础数据类型的期望值。
5、Java基础数据类型生成器:对于Integer/Long,String/Char,Boolean,Float/Double,枚举,BigInteger,BigDecimal,Date类型,用户直接填写相应的期望值。
值得说明的是,如果解析过程中出现了泛型节点,则需要用户明确指定该泛型节点的具体实现类型,然后进行二次解析,生成泛型节点实现类型的结构数据模板提供给用户编辑。
S57:获取当前方法的原始出口参数的结构数据模板包括的基础数据类型的期望值,基于当前方法的调用工程将当前方法的原始出口参数的结构数据模板中包括的基础数据类型的期望值带入当前方法的原始出口参数的结构数据模板中;采用五个参数类型生成器生成 当前方法的调用出口参数。
可以由用户提供当前方法的原始出口参数的结构数据模板包括的基础数据类型的期望值,例如,基础数据类型可以为颜色、大小、款式、面料等等,对应的期望值分别为红色、L、韩版、棉等等,然后根据当前方法的原始出口参数的结构数据模板包括的基础数据类型及其期望值分别生成当前方法的调用出口参数,原始出口参数与调用出口参数是一一对应的关系。
S58:根据当前方法的每个调用入口参数调用当前方法,得到当前方法的计算出口参数;确定当前方法的计算出口参数与当前方法的调用出口参数是否一致,若当前方法的计算出口参数与当前方法的调用出口参数一致,则确定当前方法正常;如当前方法的计算出餐与当前方法的调用出口参数不一致,则确定当前方法异常。
S59:确定待测试HSF接口包括的每个方法是否都正常,若待测试HSF接口包括的每个方法都正常,则执行S58;若待测试接口包括的至少一个方法异常,则执行S59。
在确定完待测试HSF接口的所有方法是否正常后,可以执行S59。
S60:确定待测试HSF接口正常。
S61:确定待测试HSF接口异常。
该方案中,在测试待测试HSF接口是否正常时,会首先得到每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板,然后根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常,最终确定待测试HSF接口是否正常,整个过程中无需编写专门的代码,从而大大减少了工作量,并且提高了测试效率。
基于同一发明构思,本申请实施例还提供一种应用接口测试装置,该装置与如图1所示的应用接口测试方法相对应,该装置的结构如6图所示,包括第一确定单元61、解析单元62、第二确定单元63和第三确定单元64,其中:
上述第一确定单元61,用于确定待测试应用接口及其包括的方法;
上述解析单元62,用于递归解析每个方法的每个原始入口参数,得到对应方法的对应原始入口参数的结构数据模板;以及,递归解析每个方法的原始出口参数,得到对应方法的原始出口参数的结构数据模板;
上述第二确定单元63,用于根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常;
上述第三确定单元64,用于确定待测试应用接口包括的每个方法是否都正常;若待测 试应用接口包括的每个方法都正常,则确定待测试应用接口正常。
该方案中,在测试待测试应用接口是否正常时,会首先得到每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板,然后根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常,最终确定待测试应用接口是否正常,整个过程中无需编写专门的代码,从而大大减少了工作量,并且提高了测试效率。
具体的,上述第一确定单元61,用于确定待测试应用接口及其包括的方法,具体用于:
解析出所有的备选应用接口及其包括的方法并显示;
接收用户选择的备选应用接口,得到待测试应用接口;
获取待测试应用接口包括的方法。
具体的,上述解析单元62,用于递归解析每个方法的每个原始入口参数,得到对应方法的对应原始入口参数的结构数据模板,具体用于:
针对待测试应用接口包括的每个方法的每个原始入口参数执行:
获取当前方法的当前原始入口参数;
采用预先设置的至少两个参数类型识别器逐层解析当前原始入口参数,直到解析出当前原始入口参数包括的基础数据类型;
记录解析出的当前原始入口参数包括的基础数据类型及其之间的关联关系,得到当前原始入口参数的结构数据模板;
上述解析单元62,用于递归解析每个方法的原始出口参数,得到对应方法的原始出口参数的结构数据模板,具体用于:
针对待测试应用接口包括的每个方法的原始出口参数执行:
获取当前方法的原始出口参数;
采用至少两个参数类型识别器逐层解析原始出口参数,直到解析出原始出口参数包括的基础数据类型;
记录解析出的原始出口参数包括的基础数据类型及其之间的关联关系,得到原始出口参数的结构数据模板。
具体的,上述第二确定单元63,用于根据每个方法的原始出口参数的结构数据模板和每个原始入口参数的结构数据模板确定对应方法是否正常,具体用于:
针对待测试应用接口包括的每个方法执行:
获取当前方法的每个原始入口参数的结构数据模板包括的基础数据类型的期望值,根据当前方法的每个原始入口参数的结构数据模板包括的基础数据类型及其期望值分别生成当前方法的每个调用入口参数;以及,
获取当前方法的原始出口参数的结构数据模板包括的基础数据类型的期望值,根据当前方法的原始出口参数的结构数据模板包括的基础数据类型及其期望值生成当前方法的调用出口参数;
根据当前方法的每个调用入口参数调用当前方法,得到当前方法的计算出口参数;
确定当前方法的计算出口参数与当前方法的调用出口参数是否一致;
若当前方法的计算出口参数与当前方法的调用出口参数一致,则确定当前方法正常。
具体的,上述第二确定单元63,用于根据当前方法的每个原始入口参数的结构数据模板包括的基础数据类型及其期望值分别生成当前方法的每个调用入口参数,具体用于:
构建当前方法的调用工程;
基于当前方法的调用工程将当前方法的每个原始入口参数的结构数据模板中包括的基础数据类型的期望值带入当前方法的对应原始入口参数的结构数据模板中;
采用预先设置的至少两个参数类型生成器分别生成当前方法的每个调用入口参数;
上述第二确定单元63,用于根据当前方法的原始出口参数的结构数据模板包括的基础数据类型及其期望值生成当前方法的调用出口参数,具体用于:
基于当前方法的调用工程将当前方法的原始出口参数的结构数据模板中包括的基础数据类型的期望值带入当前方法的原始出口参数的结构数据模板中;
采用至少两个参数类型生成器生成当前方法的调用出口参数。
可选的,上述第三确定单元64,还用于:
若待测试应用接口包括的至少一个方法异常,则确定待测试接口异常。
上述说明示出并描述了本申请的优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。