CN115904968A - 接口测试方法、装置、计算机设备和存储介质 - Google Patents
接口测试方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115904968A CN115904968A CN202211437375.5A CN202211437375A CN115904968A CN 115904968 A CN115904968 A CN 115904968A CN 202211437375 A CN202211437375 A CN 202211437375A CN 115904968 A CN115904968 A CN 115904968A
- Authority
- CN
- China
- Prior art keywords
- target
- parameter
- function method
- determining
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种接口测试方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:获取目标测试接口,基于反射机制确定与目标测试接口相对应的全路径类;确定全路径类所属的多个函数方法、以及与全路径类相对应的实例对象;遍历每一函数方法,确定与目标测试接口相匹配的目标函数方法,并确定目标函数方法中每一参数的真实参数类型所对应的真实参数值;使用反射机制控制实例对象调用目标函数方法,得到目标函数方法的真实参数值所对应的执行结果;基于执行结果对目标函数方法中的每一参数进行优化,以执行目标测试接口的测试。采用本方法能够提高开发效率。
Description
技术领域
本申请涉及测试技术领域,特别是涉及一种接口测试方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着互联网技术的发展,越来越多的计算机程序被开发出来,而在程序的开发过程中经常需要对已经开发好的接口进行功能测试,只有测试成功才可以保证接口功能顺利实现。
传统技术中,主要是通过Junit(Java语言的单元测试框架)技术为待测试接口编写测试用例,每增加一个接口测试方法,就需要编写一个针对该方法的响应测试用例,这样会使开发的工作量增大,降低了开发的效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高开发效率的接口测试方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种接口测试方法,所述方法包括:
获取目标测试接口,基于反射机制确定与所述目标测试接口相对应的全路径类;
确定所述全路径类所属的多个函数方法、以及与所述全路径类相对应的实例对象;
遍历每一所述函数方法,确定与所述目标测试接口相匹配的目标函数方法,并确定所述目标函数方法中每一参数的真实参数类型所对应的真实参数值;
使用所述反射机制控制所述实例对象调用所述目标函数方法,得到所述目标函数方法的真实参数值所对应的执行结果;
基于所述执行结果对所述目标函数方法中的每一所述参数进行优化,以执行目标测试接口的测试。
在其中一个实施例中,所述确定所述全路径类所属的多个函数方法、以及与所述全路径类相对应的实例对象,包括:
获取所述全路径类经过编译后产生的Class对象,并将所述Class对象与变量进行结合,得到Class对象变量;
调用所述Class对象变量中的接口,得到所述全路径类所属的多个函数方法;
确定与所述全路径类对应的java类的目标类型;
从spring框架(开放源代码的应用程序框架)中获取与所述目标类型对应的实例对象。
在其中一个实施例中,所述遍历每一所述函数方法,确定与所述目标测试接口相匹配的目标函数方法,包括:
获取所述目标测试接口中的参数个数、参数顺序、以及参数类型;
将所述函数方法中与所述目标测试接口中的参数个数、参数顺序、以及参数类型均相同的函数方法确定为目标函数方法。
在其中一个实施例中,所述将所述函数方法中与所述目标测试接口中的参数个数、参数顺序、以及参数类型均相同的函数方法确定为目标函数方法,包括:
获取所述目标测试接口中的参数个数、参数顺序、以及参数类型对应的json串;
将所述json串转换为Map(Mean average precision,均值平均精度)形式,得到Map对象;
基于所述Map对象中参数个数、参数顺序、以及参数类型,确定所述函数方法中与所述目标测试接口相匹配的目标函数方法。
在其中一个实施例中,所述确定所述目标函数方法中每一参数的真实参数类型所对应的真实参数值,包括:
获取所述目标函数方法中每一参数的参数值和参数类型;
使用jackson工具将每一所述参数的参数值转换为字符串,得到多个参数值转换结果;
将每一所述参数的参数类型转换为字符串,得到多个类型转换结果;
基于所述jackson工具,对每一所述参数值转换结果和类型转换结果进行二次转换,得到处于同一维度下的真实参数类型和对应的真实参数值。
在其中一个实施例中,所述使用所述反射机制控制所述实例对象调用所述目标函数方法,得到所述目标函数方法的真实参数值所对应的执行结果,包括:
将所述目标函数方法中每一参数的真实参数值传入所述实例对象中,并使用所述反射机制控制所述实例对象调用所述目标函数方法,得到调用结果;
基于所述调用结果,确定所述目标函数方法的真实参数值所对应的执行结果。
在其中一个实施例中,所述方法还包括:
根据异步执行方式,构建用于测试所述目标测试接口的多线程任务;
基于所述多线程任务,对所述目标测试接口进行并发测试,得到多个执行结果。
第二方面,本申请提供了一种接口测试装置,所述装置包括:
全路径类确定模块,用于获取目标测试接口,基于反射机制确定与所述目标测试接口相对应的全路径类;
实例对象确定模块,用于确定所述全路径类所属的多个函数方法、以及与所述全路径类相对应的实例对象;
函数方法遍历模块,用于遍历每一所述函数方法,确定与所述目标测试接口相匹配的目标函数方法,并确定所述目标函数方法中每一参数的真实参数类型所对应的真实参数值;
执行结果确定模块,用于使用所述反射机制控制所述实例对象调用所述目标函数方法,得到所述目标函数方法的真实参数值所对应的执行结果;
接口测试模块,用于基于所述执行结果对所述目标函数方法中的每一所述参数进行优化,以执行目标测试接口的测试。
第三方面,本申请提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
第五方面,本申请提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的方法的步骤。
上述接口测试方法、装置、计算机设备、存储介质和计算机程序产品,通过基于反射机制获取与目标测试接口相对应的全路径类,可以获取到全路径类的详细信息,从而实现对全路径类所属的函数方法和实例对象的准确获取。通过获取目标函数方法中每一参数值的真实参数类型和真实参数值所对应的执行结果,可以便于测试人员对执行结果进行核查,从而确定目标函数方法中每一参数的调整方向。通过对目标函数方法中每一参数的优化,可以使测试人员不修改测试代码,只修改参数值来完成不同目标测试接口的功能测试,从而减少了工作量,提高了开发的效率。
附图说明
图1为一个实施例中接口测试方法的应用环境图;
图2为一个实施例中接口测试方法的流程示意图;
图3为另一个实施例中接口测试的流程示意图;
图4为另一个实施例中接口测试方法的流程示意图;
图5为一个实施例中接口测试装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的接口测试方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。首先,服务器104获取需要进行测试的目标测试接口,再基于Java的反射机制得到与获取的目标测试接口对应的全路径类。然后,服务器104对确定的全路径类所属的所有函数方法、以及全路径类对应的实例对象进行确认。服务器104再遍历全路径类所属的每一函数方法,以确定与目标测试接口相匹配的目标函数方法。在确定了目标函数方法之后,服务器104针对目标函数方法中每一个参数,先将每一参数的真实参数类型和真实参数值确定,再使用反射机制控制全路径类的实例对象来调用目标函数方法,从而可以得到目标函数方法的真实值对应的执行结果。最后,服务器根据执行结果逐步对目标函数中的每一参数进行优化调整,以执行目标测试接口的测试任务。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种接口测试方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
步骤202,获取目标测试接口,基于反射机制确定与目标测试接口相对应的全路径类。
其中,接口是指方法与方法、模块与模块之间的交互,程序内部抛出的接口。例如,在网站上发帖就必须要进行用户登录,如果不登录就不能发帖,发帖和登录这两个模块之间就需要进行交互,这时就会抛出一个接口,以进行内部系统调用。接口也可以表示系统对外的接口。又例如,购物网站和第三方支付之间进行交互时,购物网站支付时可选择第三方支付方法,但第三方不会提供自己的数据库给购物网站,只会提供一个接口,供购物网站进行调用。目标测试接口则可以理解为需要进行测试的程序内部抛出的接口或者系统对外的接口。
反射机制是指java的反射机制,是在运行状态中,对于任意一个类都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意方法和属性的机制。
全路径类既可以表示类全路径名称,如com.hncy58.Test,也可以表示SpringjavaBean(Java语言写成的可重用组件)的名称,主要通过传递的serviceName(类全路径)是否包含“.”来判断,如果包含则认为是类全路径,否则认为是Spring java Bean的名称。
可选地,服务器通过获取到需要进行测试的目标测试接口后,基于反射机制,通过调用JDK(Java Development Kit,软件开发工具包)提供的API(Application ProgrammingInterface,应用程序编程接口),可以直接获得与目标测试接口相对应的类全路径名称或者Spring java Bean的名称。
步骤204,确定全路径类所属的多个函数方法、以及与全路径类相对应的实例对象。
其中,函数方法指的是java中可以实现某一特定功能的代码片段,是模块化的组织代码,可以被重复利用多次使用。例如,判断一个正整数是否是素数就是一个典型的会被多次利用的代码片段,就定义为函数方法。得到的全路径类所属的多个函数方法以数组的形式进行存储。实例对象指的是已经实例化的对象变量。
可选地,服务器在确定了全路径类后,再根据反射机制,可以确定该全路径类所属的可以完成多个特定功能的代码片段、以及全路径类实例化后得到的实例对象。
步骤206,遍历每一函数方法,确定与目标测试接口相匹配的目标函数方法,并确定目标函数方法中每一参数的真实参数类型所对应的真实参数值。
其中,遍历是指沿着某条搜索路线,依次对树或图中每个节点均做一次访问。例如,全路径类A所属的函数方法有n个,则服务器会依次对n个函数方法进行访问。
目标函数方法指的是可以用于对目标测试接口进行测试的函数方法。
真实参数类型是在函数方法中现有的参数类型与实际的参数类型存在维度不一致的情况时,将现有的参数类型进行转化,从而得到的参数类型。真实参数值是在函数方法中现有的参数值与实际的参数值存在维度不一致的情况时,将现有的参数值进行转化,从而得到的参数值。
可选地,服务器在确定了全路径类所属的所有函数方法后,分别对每一个函数方法进行访问,从而确定与目标测试接口相对应的目标函数方法。在确定了目标函数方法后,服务器通过对目标函数方法每一参数的参数类型和参数值进行转化,从而得到目标函数方法中每一参数的真实参数类型和所对应的真实参数值。
步骤208,使用反射机制控制实例对象调用目标函数方法,得到目标函数方法的真实参数值所对应的执行结果。
其中,执行结果是将目标函数方法的真实参数值输入全路径类实例化后的实例对象得到的json串形式的结果,可以帮助测试人员对目标函数方法中的参数值进行修正优化。
可选地,服务器通过使用java的反射机制以控制全路径类实例化后的实例对象来调用与目标测试接口相匹配的目标函数方法,并将目标函数方法的真实参数值输入至实例对象中,从而得到目标函数方法的真实参数值所对应的json串形式的执行结果。
步骤210,基于执行结果对目标函数方法中的每一参数进行优化,以执行目标测试接口的测试。
可选地,服务器根据得到的执行结果所显示的接口测试完成程度,可以确定目标函数方法中参数值的修改方向,以对每一参数进行优化,从而完成目标测试接口的接口功能测试。
上述接口测试方法中,通过基于反射机制获取与目标测试接口相对应的全路径类,可以获取到全路径类的详细信息,从而实现对全路径类所属的函数方法和实例对象的准确获取。通过获取目标函数方法中每一参数值的真实参数类型和真实参数值所对应的执行结果,可以便于测试人员对执行结果进行核查,从而确定目标函数方法中每一参数的调整方向。通过对目标函数方法中每一参数的优化,可以使测试人员不修改测试代码,只修改参数值来完成不同目标测试接口的功能测试,从而减少了工作量,提高了开发的效率。
在一个实施例中,确定全路径类所属的多个函数方法、以及与全路径类相对应的实例对象,包括:
获取全路径类经过编译后产生的Class对象,并将Class对象与变量进行结合,得到Class对象变量。
调用Class对象变量中的接口,得到全路径类所属的多个函数方法。
确定与全路径类对应的java类的目标类型。
从spring框架中获取与目标类型对应的实例对象。
其中,Class对象表示的是创建的类的类型信息,保存在同名.class的字节码文件中。例如,创建一个Shapes类,编译Shapes类后就会创建其包含Shapes类相关类型信息的Class对象,并保存在Shapes.class字节码文件中。Class对象变量是使用一个变量名称对Class对象进行表述。例如,将Class对象记作serviceClazz(变量名),则serviceClazz就是一个Class对象变量。
目标类型是指在java类中与全路径类相对应的类。Spring框架是一个开放源代码的J2EE(Java 2Platform Enterprise Edition,分布式应用程序开发规范)应用程序框架,是针对bean(计算机自动生成的类)的生命周期进行管理的轻量级容器。
可选地,服务器在对全路径类进行编译之后,获取编译产生的Class对象,并使用变量名称对Class变量进行表述,从而得到Class对象变量,服务器再通过直接调用JDK本身提供的获取所有函数方法的接口,从而确定全路径类所属的每一个函数方法。服务器从java类中确定与全路径类对应的目标类型后,再从spring框架中获取或者创造与全路径类对应的目标类型所对应的实例对象。
本实施例中,通过从spring框架中获取到的实例对象会存在于对象池中,不需要在再次使用的时候重新创造实例对象,能够减少创造实例对象的工作量,提高工作效率。
在一个实施例中,遍历每一函数方法,确定与目标测试接口相匹配的目标函数方法,包括:
获取目标测试接口中的参数个数、参数顺序、以及参数类型。
将函数方法中与目标测试接口中的参数个数、参数顺序、以及参数类型均相同的函数方法确定为目标函数方法。
其中,参数顺序指函数方法中某个参数在所有参数中的位置,参数的类型是指参数可以是字符串或者整型等java语言支持的变量类型。如pubilc Stringtest(StringcertId,Integer age)定义,则参数certId是第一个参数,参数类型为字符串,参数age是第二个参数,参数类型为整型。
可选地,服务器在确定了目标测试接口之后,首先确定目标测试接口的参数的数量、每个参数各自的位置、以及每一参数的参数类型,再遍历全路径类所属的函数方法组成的数组以进行参数个数、参数顺序、以及参数类型匹配,最后将全路径类所属的函数方法中与目标测试接口的参数个数、参数顺序、以及参数类型都相同的函数方法确定为目标函数方法。
可选地,服务器在对全路径类所属的函数方法构成的数组进行遍历时的逻辑为:首先从数组中按照顺序取出一个未比较的函数方法,比较该函数方法的名称是否与目标测试接口的函数方法相同,如果相同,则比较该函数方法的参数个数与目标测试接口的函数方法的参数个数是否相同,如果相等,则取出该函数方法的所有参数列表和参数类型与目标测试接口的函数方法的参数列表和参数类型进行比较。比较时还必须满足相同位置的参数类型一致的条件,直至所有参数比较完毕。如果所有参数都匹配相等,则目标函数方法查找成功,如果存在任一个地方不相同,则重新从数组中按照顺序取出一个未比较的函数方法再次进行比较,以找出所查找的目标函数方法。
本实施例中,通过对函数方法与目标测试接口的函数方法进行参数个数、参数顺序、以及参数类型匹配,从而可以精确地查找到所查找的目标函数方法。
在一个实施例中,将函数方法中与目标测试接口中的参数个数、参数顺序、以及参数类型均相同的函数方法确定为目标函数方法,包括:
获取目标测试接口中的参数个数、参数顺序、以及参数类型对应的json串。
将json串转换为Map形式,得到Map对象。
基于Map对象中参数个数、参数顺序、以及参数类型,确定函数方法中与目标测试接口相匹配的目标函数方法。
其中,json串转换为Map形式的Map对象是采用jackson工具进行转换的。Map对象是键值对的集合,Map中的一个键只能出现一次,它在Map的集合中是独一无二的,Map对象在每次迭代后会返回一个形式为[key,value]的数组,Map对象的key则为目标函数方法的参数名,value为参数对应的值,类型为Object类型。
可选地,服务器确定了目标测试接口后,再获取目标测试接口的函数方法的参数个数、参数顺序、以及参数类型对应的json串,并通过使用jackson工具将获取到的json串转换为Map形式,从而得到Map对象。服务器再基于得到的Map对象所表述的关于目标测试接口的函数方法的参数个数、参数顺序、以及参数类型,从而在全路径类所属的函数方法中确定相匹配的目标函数方法。
本实施例中,通过将json串转换为Map对象,可以使得到的每一参数值和参数类型排列有序,从而简化后续的处理过程。
在一个实施例中,如图3所示,确定目标函数方法中每一参数的真实参数类型所对应的真实参数值,包括:
步骤302,获取目标函数方法中每一参数的参数值和参数类型。
步骤304,使用jackson工具将每一参数的参数值转换为字符串,得到多个参数值转换结果。
其中,jsckson工具是当前用的比较广泛的,用来序列化和反序列化json的java的开源框架。
可选地,服务器通过遍历目标函数方法的参数列表,从Map中取出每个参数的参数值。再通过调用jsckson工具将参数值的转为字符串,从而得到目标函数方法的参数列表中每一参数的参数值转换结果。
步骤306,将每一参数的参数类型转换为字符串,得到多个类型转换结果。
可选地,服务器通过遍历目标函数方法的参数列表,从Map中取出每个参数的参数类型。再通过调用jsckson工具将参数类型转为字符串,从而得到目标函数方法的参数列表中每一参数的参数类型转换结果。
步骤308,基于jackson工具,对每一参数值转换结果和类型转换结果进行二次转换,得到处于同一维度下的真实参数类型和对应的真实参数值。
可选地,服务器通过调用jsckson工具,将第一次转换得到的目标函数方法的参数列表中每一参数的参数值转换结果和参数类型转换结果进行二次转换,使每一参数的参数值和参数类型处于同一维度,从而得到目标函数方法中每一参数的真实参数类型和真实参数值,即完成了参数值和参数类型->字符串->真实参数值和真实参数类型的转化。
本实施例中,通过将每一参数的参数值和参数类型转换为同一维度下的参数值和参数类型,从而有利于实现对目标函数方法的执行结果的计算。
在一个实施例中,使用反射机制控制实例对象调用目标函数方法,得到目标函数方法的真实参数值所对应的执行结果,包括:
将目标函数方法中每一参数的真实参数值传入实例对象中,并使用反射机制控制实例对象调用目标函数方法,得到调用结果。
基于调用结果,确定目标函数方法的真实参数值所对应的执行结果。
其中,调用结果指的是将目标函数方法的参数列表中转换得到的真实参数值输入从spring框架中得到的实例对象中,并使用java的反射机制来控制实例对象调用目标函数方法,可以理解为是一个调用目标函数方法的过程。
可选地,服务器在得到了目标函数方法的参数列表中每一参数的真实值后,将得到的真实值输入至实例对象中以预备进行执行结果的计算,服务器再通过使用java的反射机制来控制输入了真实参数值的实例对象对目标函数方法进行调用,从而可以对目标函数方法的真实参数值所对应的执行结果进行计算。
本实施例中,通过获取目标函数方法中每一参数值的真实参数类型和真实参数值所对应的执行结果,可以便于测试人员对执行结果进行核查,从而确定目标函数方法中每一参数的调整方向。
在一个实施例中,接口测试方法还包括:
根据异步执行方式,构建用于测试目标测试接口的多线程任务。
基于多线程任务,对目标测试接口进行并发测试,得到多个执行结果。
其中,异步执行方式指的是指语句在异步执行模式下,各语句执行结束的顺序与语句执行开始的顺序并不一定相同。例如,查询操作,客户机上的应用程序在向服务器发出了查询操作的指令后,将立刻执行查询语句指令的下一条语句,而不需要等到服务器将查询结果返回客户机端。
多线程任务指的是模拟多个目标测试接口的测试环境,并基于模拟的环境所构建的测试任务,每一测试任务可以并行的被执行。并发测试指的是使计算机同时运行几个目标测试接口的测试任务或同时运行同一程序多个进程或线程。
可选地,服务器基于异步执行的概念,为目标测试接口模拟多种测试场景,并构建相应的任务。服务器再通过同时执行为目标测试接口创建的多线程任务,从而可以得到每一线程任务所对应的执行结果。
本实例中,通过采用异步执行的方式和构建多线程任务,可以模拟目标测试接口的不同测试环境,无需额外的性能测试工具便可方便的对目标方法完成基本的性能测试,同时也提高了目标测试接口的测试效率。
本申请还提供一种应用场景,该应用场景应用上述的接口测试方法。具体地,该接口方法在该应用场景的应用如下:首先,通过解析请求参数字符串确定需要进行测试的目标测试接口,基于java的反射机制通过调用JDK提供的API,直接获得与目标测试接口相对应的serviceName。然后,通过对serviceName进行编译,得到serviceName的Class对象,并将Class对象记作serviceClazz。通过调用serviceClazz中的getMethods(目标测试接口的函数方法名),得到serviceName所属的所有函数方法,并从spring的ApplicationContext(应用前后关系)中获取类型与serviceName对应的java类类型的bean实例对象。同时,还要确定目标测试接口的函数方法中的参数个数、参数顺序、以及参数类型对应的json串,并将这些json串转换为以Map形式存在的Map对象,再根据得到的Map对象中参数个数、参数顺序、以及参数类型,遍历serviceName所属的每一函数方法,查找与Map对象中参数个数、参数顺序、以及参数类型都相匹配的目标函数方法。最后,通过使用反射机制,调用目标函数方法,并将目标函数方法的执行结果以json串的形式返回给测试人员,使测试人员可以通过修改测试请求参数值来完成不同场景从业务功能测试。接口测试的主要处理流程示意图如图4所示。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的接口测试方法的接口测试装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个接口测试装置实施例中的具体限定可以参见上文中对于接口测试方法的限定,在此不再赘述。
在一个实施例中,如图5所示,提供了一种接口测试装置,包括:
全路径类确定模块502,用于获取目标测试接口,基于反射机制确定与目标测试接口相对应的全路径类。
实例对象确定模块504,用于确定全路径类所属的多个函数方法、以及与全路径类相对应的实例对象。
函数方法遍历模块506,用于遍历每一函数方法,确定与目标测试接口相匹配的目标函数方法,并确定目标函数方法中每一参数的真实参数类型所对应的真实参数值。
执行结果确定模块508,用于使用反射机制控制实例对象调用目标函数方法,得到目标函数方法的真实参数值所对应的执行结果。
接口测试模块510,用于基于执行结果对目标函数方法中的每一参数进行优化,以执行目标测试接口的测试。
在其中一个实施例中,实例对象确定模块包括:
Class对象变量获取单元,用于获取全路径类经过编译后产生的Class对象,并将Class对象与变量进行结合,得到Class对象变量。
接口调用单元,用于调用Class对象变量中的接口,得到全路径类所属的多个函数方法。
目标类型确定单元,用于确定与全路径类对应的java类的目标类型。
实例对象获取单元,用于从spring框架中获取与目标类型对应的实例对象。
在其中一个实施例中,函数方法遍历模块包括:
第一参数属性获取单元,用于获取目标测试接口中的参数个数、参数顺序、以及参数类型。
目标函数方法确定单元,用于将函数方法中与目标测试接口中的参数个数、参数顺序、以及参数类型均相同的函数方法确定为目标函数方法。
在其中一个实施例中,目标函数方法确定单元还包括:
Json串获取子单元,用于获取目标测试接口中的参数个数、参数顺序、以及参数类型对应的json串。
数据转换子单元,用于将json串转换为Map形式,得到Map对象。
目标函数方法确定子单元,用于基于Map对象中参数个数、参数顺序、以及参数类型,确定函数方法中与目标测试接口相匹配的目标函数方法。
在其中一个实施例中,函数方法遍历模块还包括:
第二参数属性获取单元,用于获取目标函数方法中每一参数的参数值和参数类型。
参数值转换单元,用于使用jackson工具将每一参数的参数值转换为字符串,得到多个参数值转换结果。
参数类型转换单元,用于将每一参数的参数类型转换为字符串,得到多个类型转换结果。
真实参数属性获取单元,用于基于jackson工具,对每一参数值转换结果和类型转换结果进行二次转换,得到处于同一维度下的真实参数类型和对应的真实参数值。
在其中一个实施例中,执行结果确定模块包括:
目标函数方法调用单元,用于将目标函数方法中每一参数的真实参数值传入实例对象中,并使用反射机制控制实例对象调用目标函数方法,得到调用结果。
执行结果确定单元,用于基于调用结果,确定目标函数方法的真实参数值所对应的执行结果。
在其中一个实施例中,接口测试装置包括:
任务创建单元,用于根据异步执行方式,构建用于测试目标测试接口的多线程任务。
并发测试单元,用于基于多线程任务,对目标测试接口进行并发测试,得到多个执行结果。
上述接口测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储目标测试接口、反射机制、全路径类、全路径类所属的多个函数方法、全路径类相对应的实例对象、目标函数方法中每一参数的真实参数类型所对应的真实参数值、以及目标函数方法的真实参数值所对应的执行结果数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种接口测试方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取目标测试接口,基于反射机制确定与目标测试接口相对应的全路径类。确定全路径类所属的多个函数方法、以及与全路径类相对应的实例对象。遍历每一函数方法,确定与目标测试接口相匹配的目标函数方法,并确定目标函数方法中每一参数的真实参数类型所对应的真实参数值。使用反射机制控制实例对象调用目标函数方法,得到目标函数方法的真实参数值所对应的执行结果。基于执行结果对目标函数方法中的每一参数进行优化,以执行目标测试接口的测试。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取全路径类经过编译后产生的Class对象,并将Class对象与变量进行结合,得到Class对象变量。调用Class对象变量中的接口,得到全路径类所属的多个函数方法。确定与全路径类对应的java类的目标类型。从spring框架中获取与目标类型对应的实例对象。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取目标测试接口中的参数个数、参数顺序、以及参数类型。将函数方法中与目标测试接口中的参数个数、参数顺序、以及参数类型均相同的函数方法确定为目标函数方法。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取目标测试接口中的参数个数、参数顺序、以及参数类型对应的json串。将json串转换为Map形式,得到Map对象。基于Map对象中参数个数、参数顺序、以及参数类型,确定函数方法中与目标测试接口相匹配的目标函数方法。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取目标函数方法中每一参数的参数值和参数类型。使用jackson工具将每一参数的参数值转换为字符串,得到多个参数值转换结果。将每一参数的参数类型转换为字符串,得到多个类型转换结果。基于jackson工具,对每一参数值转换结果和类型转换结果进行二次转换,得到处于同一维度下的真实参数类型和对应的真实参数值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将目标函数方法中每一参数的真实参数值传入实例对象中,并使用反射机制控制实例对象调用目标函数方法,得到调用结果。基于调用结果,确定目标函数方法的真实参数值所对应的执行结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据异步执行方式,构建用于测试目标测试接口的多线程任务。基于多线程任务,对目标测试接口进行并发测试,得到多个执行结果。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取目标测试接口,基于反射机制确定与目标测试接口相对应的全路径类。确定全路径类所属的多个函数方法、以及与全路径类相对应的实例对象。遍历每一函数方法,确定与目标测试接口相匹配的目标函数方法,并确定目标函数方法中每一参数的真实参数类型所对应的真实参数值。使用反射机制控制实例对象调用目标函数方法,得到目标函数方法的真实参数值所对应的执行结果。基于执行结果对目标函数方法中的每一参数进行优化,以执行目标测试接口的测试。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取全路径类经过编译后产生的Class对象,并将Class对象与变量进行结合,得到Class对象变量。调用Class对象变量中的接口,得到全路径类所属的多个函数方法。确定与全路径类对应的java类的目标类型。从spring框架中获取与目标类型对应的实例对象。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取目标测试接口中的参数个数、参数顺序、以及参数类型。将函数方法中与目标测试接口中的参数个数、参数顺序、以及参数类型均相同的函数方法确定为目标函数方法。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取目标测试接口中的参数个数、参数顺序、以及参数类型对应的json串。将json串转换为Map形式,得到Map对象。基于Map对象中参数个数、参数顺序、以及参数类型,确定函数方法中与目标测试接口相匹配的目标函数方法。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取目标函数方法中每一参数的参数值和参数类型。使用jackson工具将每一参数的参数值转换为字符串,得到多个参数值转换结果。将每一参数的参数类型转换为字符串,得到多个类型转换结果。基于jackson工具,对每一参数值转换结果和类型转换结果进行二次转换,得到处于同一维度下的真实参数类型和对应的真实参数值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将目标函数方法中每一参数的真实参数值传入实例对象中,并使用反射机制控制实例对象调用目标函数方法,得到调用结果。基于调用结果,确定目标函数方法的真实参数值所对应的执行结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据异步执行方式,构建用于测试目标测试接口的多线程任务。基于多线程任务,对目标测试接口进行并发测试,得到多个执行结果。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取目标测试接口,基于反射机制确定与目标测试接口相对应的全路径类。确定全路径类所属的多个函数方法、以及与全路径类相对应的实例对象。遍历每一函数方法,确定与目标测试接口相匹配的目标函数方法,并确定目标函数方法中每一参数的真实参数类型所对应的真实参数值。使用反射机制控制实例对象调用目标函数方法,得到目标函数方法的真实参数值所对应的执行结果。基于执行结果对目标函数方法中的每一参数进行优化,以执行目标测试接口的测试。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取全路径类经过编译后产生的Class对象,并将Class对象与变量进行结合,得到Class对象变量。调用Class对象变量中的接口,得到全路径类所属的多个函数方法。确定与全路径类对应的java类的目标类型。从spring框架中获取与目标类型对应的实例对象。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取目标测试接口中的参数个数、参数顺序、以及参数类型。将函数方法中与目标测试接口中的参数个数、参数顺序、以及参数类型均相同的函数方法确定为目标函数方法。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取目标测试接口中的参数个数、参数顺序、以及参数类型对应的json串。将json串转换为Map形式,得到Map对象。基于Map对象中参数个数、参数顺序、以及参数类型,确定函数方法中与目标测试接口相匹配的目标函数方法。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取目标函数方法中每一参数的参数值和参数类型。使用jackson工具将每一参数的参数值转换为字符串,得到多个参数值转换结果。将每一参数的参数类型转换为字符串,得到多个类型转换结果。基于jackson工具,对每一参数值转换结果和类型转换结果进行二次转换,得到处于同一维度下的真实参数类型和对应的真实参数值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将目标函数方法中每一参数的真实参数值传入实例对象中,并使用反射机制控制实例对象调用目标函数方法,得到调用结果。基于调用结果,确定目标函数方法的真实参数值所对应的执行结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据异步执行方式,构建用于测试目标测试接口的多线程任务。基于多线程任务,对目标测试接口进行并发测试,得到多个执行结果。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase ChangeMemory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic Random AccessMemory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种接口测试方法,其特征在于,所述方法包括:
获取目标测试接口,基于反射机制确定与所述目标测试接口相对应的全路径类;
确定所述全路径类所属的多个函数方法、以及与所述全路径类相对应的实例对象;
遍历每一所述函数方法,确定与所述目标测试接口相匹配的目标函数方法,并确定所述目标函数方法中每一参数的真实参数类型所对应的真实参数值;
使用所述反射机制控制所述实例对象调用所述目标函数方法,得到所述目标函数方法的真实参数值所对应的执行结果;
基于所述执行结果对所述目标函数方法中的每一所述参数进行优化,以执行目标测试接口的测试。
2.根据权利要求1所述的方法,其特征在于,所述确定所述全路径类所属的多个函数方法、以及与所述全路径类相对应的实例对象,包括:
获取所述全路径类经过编译后产生的Class对象,并将所述Class对象与变量进行结合,得到Class对象变量;
调用所述Class对象变量中的接口,得到所述全路径类所属的多个函数方法;
确定与所述全路径类对应的java类的目标类型;
从spring框架中获取与所述目标类型对应的实例对象。
3.根据权利要求1所述的方法,其特征在于,所述遍历每一所述函数方法,确定与所述目标测试接口相匹配的目标函数方法,包括:
获取所述目标测试接口中的参数个数、参数顺序、以及参数类型;
将所述函数方法中与所述目标测试接口中的参数个数、参数顺序、以及参数类型均相同的函数方法确定为目标函数方法。
4.根据权利要求3所述的方法,其特征在于,所述将所述函数方法中与所述目标测试接口中的参数个数、参数顺序、以及参数类型均相同的函数方法确定为目标函数方法,包括:
获取所述目标测试接口中的参数个数、参数顺序、以及参数类型对应的json串;
将所述json串转换为Map形式,得到Map对象;
基于所述Map对象中参数个数、参数顺序、以及参数类型,确定所述函数方法中与所述目标测试接口相匹配的目标函数方法。
5.根据权利要求1所述的方法,其特征在于,所述确定所述目标函数方法中每一参数的真实参数类型所对应的真实参数值,包括:
获取所述目标函数方法中每一参数的参数值和参数类型;
使用jackson工具将每一所述参数的参数值转换为字符串,得到多个参数值转换结果;
将每一所述参数的参数类型转换为字符串,得到多个类型转换结果;
基于所述jackson工具,对每一所述参数值转换结果和类型转换结果进行二次转换,得到处于同一维度下的真实参数类型和对应的真实参数值。
6.根据权利要求1所述的方法,其特征在于,所述使用所述反射机制控制所述实例对象调用所述目标函数方法,得到所述目标函数方法的真实参数值所对应的执行结果,包括:
将所述目标函数方法中每一参数的真实参数值传入所述实例对象中,并使用所述反射机制控制所述实例对象调用所述目标函数方法,得到调用结果;
基于所述调用结果,确定所述目标函数方法的真实参数值所对应的执行结果。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据异步执行方式,构建用于测试所述目标测试接口的多线程任务;
基于所述多线程任务,对所述目标测试接口进行并发测试,得到多个执行结果。
8.一种接口测试装置,其特征在于,所述装置包括:
全路径类确定模块,用于获取目标测试接口,基于反射机制确定与所述目标测试接口相对应的全路径类;
实例对象确定模块,用于确定所述全路径类所属的多个函数方法、以及与所述全路径类相对应的实例对象;
函数方法遍历模块,用于遍历每一所述函数方法,确定与所述目标测试接口相匹配的目标函数方法,并确定所述目标函数方法中每一参数的真实参数类型所对应的真实参数值;
执行结果确定模块,用于使用所述反射机制控制所述实例对象调用所述目标函数方法,得到所述目标函数方法的真实参数值所对应的执行结果;
接口测试模块,用于基于所述执行结果对所述目标函数方法中的每一所述参数进行优化,以执行目标测试接口的测试。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211437375.5A CN115904968A (zh) | 2022-11-17 | 2022-11-17 | 接口测试方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211437375.5A CN115904968A (zh) | 2022-11-17 | 2022-11-17 | 接口测试方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904968A true CN115904968A (zh) | 2023-04-04 |
Family
ID=86487349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211437375.5A Pending CN115904968A (zh) | 2022-11-17 | 2022-11-17 | 接口测试方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115904968A (zh) |
-
2022
- 2022-11-17 CN CN202211437375.5A patent/CN115904968A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11983098B1 (en) | Systems and methods for modeling and generating test requirements for software applications | |
JP6859449B2 (ja) | テストケースを利用してテストを遂行する方法および装置 | |
US20210374134A1 (en) | Automatic transformation of data by patterns | |
US11762717B2 (en) | Automatically generating testing code for a software application | |
Harman et al. | Pareto optimal search based refactoring at the design level | |
CN111722839B (zh) | 一种代码生成方法、装置、电子设备及存储介质 | |
JP5989097B2 (ja) | 高度並行処理タスクの登録及び実行 | |
US11681511B2 (en) | Systems and methods for building and deploying machine learning applications | |
JP2019534523A (ja) | データ統合ワークフローエディタ中に構築されたテストケース生成器 | |
CN111949543B (zh) | 基于分布式平台的测试方法、装置、电子设备及存储介质 | |
US20050166115A1 (en) | Method for performing software stress test | |
US11262986B2 (en) | Automatic software generation for computer systems | |
US11055275B2 (en) | Database revalidation using parallel distance-based groups | |
US20210406254A1 (en) | Provenance analysis systems and methods | |
CN115904968A (zh) | 接口测试方法、装置、计算机设备和存储介质 | |
US11573773B2 (en) | Methods and systems for correlating source code commitments and model result records during model development | |
US10846198B2 (en) | Automatic navigation from log statement to code | |
Radwan et al. | Model-Based Approach for Supporting Quick Caching at iOS Platform | |
CN115543323B (zh) | 一种页面开发方法及装置 | |
US12106073B2 (en) | Reducing code path permutations | |
US11681934B2 (en) | System and method for differential testing of evolving rules | |
US20220261337A1 (en) | Validating inter-partition communication in microservice decomposition | |
US20240232234A9 (en) | User interface for providing an entity relationship diagram | |
CN117055967A (zh) | 数据处理方法、数据系统、电子设备及存储介质 | |
CN118093391A (zh) | 一种数据访问层单元测试方法、装置、介质和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |