CN110768860B - 一种测试方法、测试装置及电子设备 - Google Patents
一种测试方法、测试装置及电子设备 Download PDFInfo
- Publication number
- CN110768860B CN110768860B CN201910882179.0A CN201910882179A CN110768860B CN 110768860 B CN110768860 B CN 110768860B CN 201910882179 A CN201910882179 A CN 201910882179A CN 110768860 B CN110768860 B CN 110768860B
- Authority
- CN
- China
- Prior art keywords
- annotation
- request
- annotations
- login
- function
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Abstract
本申请公开了一种测试方法、装置、电子设备及计算机可读存储介质,其中,该方法包括:扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,目标函数为包含登陆注解、请求注解和/或反馈注解的函数;基于目标函数中所包含的登陆注解,构建登陆函数,并缓存执行登陆函数所得到的第一响应数据;若第一响应数据指示已成功登陆,则基于目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行目标请求所得到的第二响应数据;基于第二响应数据及目标函数中所包含的反馈注解,执行对应的断言。本申请方案可以将测试用例的设计拆分为几类注解的不同组合,提升了测试框架的灵活性,同时方便测试人员对测试框架进行维护。
Description
技术领域
本申请属于自动化测试技术领域,尤其涉及一种测试方法、测试装置、电子设备及计算机可读存储介质。
背景技术
当前,超文本传输协议(HyperText Transfer Protocol,HTTP)接口测试在接口自动化测试领域中占有相当大的比重,其测试的效率一定程度上影响了工程的上线速度。当前,较为广泛使用的HTTP接口测试框架几乎都采用HttpClient+TestNG的方式来实现,但这种方式也存在如下的不足:一方面是每个测试用例代码比较冗长,且很多都是一些数据组装与提取方面的操作,这些操作的流程与方式大同小异,但是却大大的增加了测试用例的设计流程;另一方面是现有的测试框架的灵活程度有所欠缺。
发明内容
有鉴于此,本申请提供了一种测试方法、测试装置、电子设备及计算机可读存储介质,可简化测试用例的设计流程,提升测试框架的灵活程度。
本申请的第一方面提供了一种测试方法,包括:
扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,所述目标函数为包含预设注解的函数,所述预设注解包括以下至少一种注解:登陆注解、请求注解及反馈注解;
基于所述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行所述登陆函数所得到的第一响应数据,其中,所述登陆注解用于标注当前请求为登陆请求;
若所述第一响应数据指示已成功登陆,则基于所述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行所述目标请求所得到的第二响应数据,其中,所述请求注解用于定义与测试用例相关的超文本传输协议HTTP请求的内容;
基于所述第二响应数据及所述目标函数中所包含的反馈注解,执行对应的断言,其中,所述反馈注解用于对测试用例的预期结果进行判断。
本申请的第二方面提供了一种测试装置,包括:
筛选单元,用于扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,所述目标函数为包含预设注解的函数,所述预设注解包括以下至少一种注解:登陆注解、请求注解及反馈注解;
登陆单元,用于基于所述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行所述登陆函数所得到的第一响应数据,其中,所述登陆注解用于标注当前请求为登陆请求;
请求单元,用于若所述第一响应数据指示已成功登陆,则基于所述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行所述目标请求所得到的第二响应数据,其中,所述请求注解用于定义与测试用例相关的超文本传输协议HTTP请求的内容;
断言单元,用于基于所述第二响应数据及所述目标函数中所包含的反馈注解,执行对应的断言,其中,所述反馈注解用于对测试用例的预期结果进行判断。
本申请实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如下步骤:
扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,所述目标函数为包含预设注解的函数,所述预设注解包括以下至少一种注解:登陆注解、请求注解及反馈注解;
基于所述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行所述登陆函数所得到的第一响应数据,其中,所述登陆注解用于标注当前请求为登陆请求;
若所述第一响应数据指示已成功登陆,则基于所述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行所述目标请求所得到的第二响应数据,其中,所述请求注解用于定义与测试用例相关的超文本传输协议HTTP请求的内容;
基于所述第二响应数据及所述目标函数中所包含的反馈注解,执行对应的断言,其中,所述反馈注解用于对测试用例的预期结果进行判断。
本申请实施例的第四方面提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如下步骤:
扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,所述目标函数为包含预设注解的函数,所述预设注解包括以下至少一种注解:登陆注解、请求注解及反馈注解;
基于所述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行所述登陆函数所得到的第一响应数据,其中,所述登陆注解用于标注当前请求为登陆请求;
若所述第一响应数据指示已成功登陆,则基于所述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行所述目标请求所得到的第二响应数据,其中,所述请求注解用于定义与测试用例相关的超文本传输协议HTTP请求的内容;
基于所述第二响应数据及所述目标函数中所包含的反馈注解,执行对应的断言,其中,所述反馈注解用于对测试用例的预期结果进行判断。
由上可见,在本申请方案中,首先扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,所述目标函数为包含预设注解的函数,所述预设注解包括以下至少一种注解:登陆注解、请求注解及反馈注解,然后基于所述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行所述登陆函数所得到的第一响应数据,若所述第一响应数据指示已成功登陆,则基于所述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行所述目标请求所得到的第二响应数据,最后基于所述第二响应数据及所述目标函数中所包含的反馈注解,执行对应的断言。通过本申请方案,通过多个不同类别的注解来设计测试用例,提升了测试框架的灵活性,同时方便测试人员对测试框架进行维护。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的测试方法的实现流程示意图;
图2是本申请实施例提供的测试装置的结构框图;
图3是本申请实施例提供的电子设备的示意图。
具体实施方式
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本申请一部分实施例,而非全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
为了说明本申请上述的技术方案,下面通过具体实施例来进行说明。
实施例一
下面对本申请实施例提供的一种测试方法进行描述,请参阅图1,本申请实施例中的测试方法包括:
步骤101,扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数;
在本申请实施例中,电子设备在进行HTTP接口的自动化测试之前,可以先扫描当前待进行测试的工程中的所有文件,以筛选得到该工程的一个或多个目标函数。上述目标函数具体为包含预设注解的函数,上述预设注解包括以下至少一种注解:登陆注解、请求注解及反馈注解;也即,只要某函数中包含登陆注解、请求注解或反馈注解中的任意一种或多种注解,则将该函数确定为本次测试的目标函数之一。具体地,上述步骤101包括:
A1、扫描当前工程中的所有Java格式的文件;
其中,在一个Java工程中,存在有多种格式的文件。本申请实施例中,由于是对目标函数进行筛选,而函数往往只存在于Java格式的文件中,因而,可以先扫描获取当前工程中所存在的所有Java格式的文件。
A2、确定当前工程中的所有Java格式的文件中所包含的各个类;
其中,Java反射指的是在运行状态中,对于任何一个类,Java虚拟机都能够知道这个类有哪些方法和属性,也即,对于任何一个对象,Java虚拟机都能够对它的方法和属性进行调用,这一动态获取对象信息和调用对象方法的功能被称之为反射机制。因而,在本申请实施例中,可以先确定当前工程中的所有Java格式的文件中所包含的各个类,。
A3、在任一类中,根据预设的反射机制遍历上述类的所有函数,并基于预设注解对所有函数进行筛选,得到一个以上目标函数。
在本申请实施例中,在获取到当前工程中的java文件所包含的类之后,针对任一类,即可通过上述反射机制对该类的内容进行遍历,以获取到该类所包含的各个函数及对应属性;随后,再对上述所有函数进行遍历,具体为检测各个函数中是否包含有任一类型的预设注解,只要某函数中包含登陆注解、请求注解或反馈注解中的其中任意一种或多种注解,则将该函数确定为本次测试的目标函数之一。最终所得到的目标函数的个数应至少有一个。
步骤102,基于上述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行上述登陆函数所得到的第一响应数据;
在本申请实施例中,上述登陆注解,也可称为Login注解,其在框架中的使用方式可以为:@Login,其作用是标注此次请求是登陆请求,该登陆请求具体为HTTP登陆请求。也即,当电子设备解析到该登陆注解时,后续会执行相应的登陆操作。通常需要在执行了HTTP登陆请求后,才能执行其他请求,因而,在本申请实施例中,需要首先对上述登陆注解进行操作。需要注意的是,包含有登陆注解的目标函数并不能等价于登陆函数,因而,此处可以抽取出上述目标函数中所包含的登陆注解,并基于该登陆注解构建得到登陆函数。上述构建登陆函数的过程可以由测试人员根据实际的测试情况所预先设置好,此处不作限定。在构建得到了登陆函数后,执行该登陆函数,并接收服务器基于该登陆函数所反馈回的第一响应数据。具体地,上述第一响应数据中可以包含有session(会话)参数以及令牌(token)参数等数据,其中,上述会话参数用于唯一的表示当前发起请求的客户端(也即当前发起请求的电子设备),以使得服务器能够区分各个客户端;上述令牌参数在后续电子设备与服务器的数据交互过程中起到身份验证的作用,可以保障数据传输的合法性与安全性。上述第一响应数据将会被电子设备所缓存,以待执行后续请求注解时再使用,实现数据的无缝连接交互。
步骤103,若上述第一响应数据指示已成功登陆,则基于上述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行上述目标请求所得到的第二响应数据;
在本申请实施例中,上述请求注解,也可称为Request注解,其在框架中的使用方式可以为:@Request(method=bbb,url=xxx,params=yyy,headers=zzz…),其作用是定义了与测试用例相关的HTTP请求的内容,例如url、params及headers等,这些都是标准的HTTP协议属性,使用这些属性可以方便的构建HTTP请求实体。上述使用方式中的“bbb”、“xxx”、“yyy”及“zzz”仅作为对请求注解进行说明的示例,测试人员可基于实际应用情况进行相应设置,此处并不对上述method、url、params及headers等属性的具体值作出限定。其中,上述第一响应数据还可以指示与上述登陆注解相关联的登陆请求的执行状态,若上述第一响应数据指示已成功登陆,则可以基于上述目标函数中所包含的请求注解,封装得到对应的目标请求,其中,该目标请求具体为HTTP请求。上述测试框架在识别到上述请求注解后,首先使用请求注解所携带的url和params构建完整的url,然后根据method、headers等属性灵活的构建整个HTTP请求。进一步地,在本步骤中,上述测试框架在识别到请求注解时,还可以获取上述第一响应数据中的会话参数及令牌参数,并将上述会话参数及令牌参数一并注入基于上述请求注解所封装得到的对应目标请求中;也即,先解析上述目标函数中所包含的请求注解,得到上述请求注解所携带的注解数据(也即method、url、params及headers等数据),然后根据上述会话参数、上述令牌参数及上述注解数据,一起封装得到与上述请求注解相对应的目标请求。电子设备在封装得到了对应的目标请求后,可以即刻或等待一定时间后执行该目标请求,并接收上述服务器基于该目标请求所反馈回的第二响应数据。上述第二响应数据可以包含有内容类型(content-type)数据。
步骤104,基于上述第二响应数据及上述目标函数中所包含的反馈注解,执行对应的断言。
在本申请实施例中,上述反馈注解,也可称为Response注解,其在框架中的使用方式为:@Response(datas=k1=v1&k2=v2&…),其作用是用来对测试用例的预期结果进行判断。其中,测试框架在识别得到上述反馈注解时,将首先基于“&”符号,将其所携带的注解数据拆分成多个不同的(k,v);随后基于上述内容类别参数,将上述第二响应数据构建为预设格式的结构体,也即将上述第二响应数据封装为标准的JSON格式;最后结合上述结构体的层次,分别对各个注解数据(也即拆分得到的(k,v)数据)自适应相应的断言,并打印断言结果,上述断言包括相等、包含及存在等等,此处不作限定。也即,判断各个(k,v)数据的对应断言的结果,例如,假定基于上述结构体的层次,确定对(k1,v1)的断言为相等,也即此处为判断k1与v1是否相等,并输出其判断结果。
由上可见,本申请实施例提出了一种新的测试框架,并在该测试框架中引入了登陆注解、请求注解以及反馈注解,在进行测试时,首先扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,上述目标函数为包含预设注解的函数,上述预设注解包括以下至少一种注解:登陆注解、请求注解及反馈注解,然后基于上述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行上述登陆函数所得到的第一响应数据,若上述第一响应数据指示已成功登陆,则基于上述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行上述目标请求所得到的第二响应数据,最后基于上述第二响应数据及上述目标函数中所包含的反馈注解,执行对应的断言。上述应用测试框架的过程中,通过多个不同类别的注解来设计测试用例,提升了测试框架的灵活性,同时方便测试人员对测试框架进行维护。
可选地,测试人员还可以在测试框架中引入第四种注解,也即依赖注解。
则上述测试方法还包括;
基于上述依赖注解构建测试用例的执行链;
则在上述基于上述目标函数中所包含的请求注解,封装得到对应的目标请求之前,上述测试方法还包括:
基于上述依赖注解,获取上述请求注解所依赖的测试用例的执行状态;
若上述请求注解所依赖的测试用例执行成功,则基于上述依赖注解对上述请求注解进行解析,以获得上述请求注解的真实注解数据;
相应地,上述基于上述目标函数中所包含的请求注解,封装得到对应的目标请求,包括:
根据上述请求注解的真实注解数据封装得到对应的目标请求。
在本申请实施例中,上述依赖注解,也可称为Dependency注解,其在框架中的使用方式为:@Dependency(depends=’pkg1.class1.m1;pkg2.class2.m2’),其作用为定义了当前测试用例的依赖测试用例集,只有当依赖测试用例集中的各个测试用例都执行成功时,当前测试用例才有必要执行;也即,上述依赖注解的作用是判断当前测试用例是否具备执行条件。因而,可以基于目标函数中所包含的依赖注解去构建各个测试用例的执行链,其中,上述执行链指示了各个测试用例的执行顺序,随后在该执行链的指示下,依次执行各个测试用例。而在后续测试框架识别到请求注解时,还可以基于上述依赖注解,获取上述请求注解所依赖的测试用例的执行状态,以此判断该请求注解是否具备可执行条件,若上述请求注解所依赖的测试用例执行成功,则认为该请求注解具备可执行条件,此时可以基于上述依赖注解对上述请求注解进行解析,以获得上述请求注解的真实注解数据。具体地,上述基于上述依赖注解对上述请求注解进行解析的过程,实际为基于上述依赖注解对上述请求注解的注解数据进行替换的过程:对于请求注解来说,如果其所携带的params数据中涉及到变量,则需要解析上述依赖注解来获取相应变量数据,并将上述变量数据代入至上述params数据中,以获得真实注解数据。相应地,后续在封装目标请求时,也需要根据上述请求注解的真实注解数据封装得到对应的目标请求。
可选地,上述依赖注解对上述反馈注解也会产生影响,则在上述步骤104之前,上述测试方法还包括:
基于上述依赖注解,获取上述反馈注解所依赖的测试用例的执行状态;
若上述反馈注解所依赖的测试用例执行成功,则基于上述依赖注解对上述反馈注解进行解析,以获得上述反馈注解的真实注解数据;
相应地,上述基于上述第二响应数据及上述目标函数中所包含的反馈注解,执行对应的断言,包括:
基于上述第二响应数据及上述反馈注解的真实注解数据,执行对应的断言。
在本申请实施例中,测试框架识别到反馈注解时,可以基于上述依赖注解,获取上述反馈注解所依赖的测试用例的执行状态,以此判断该反馈注解是否具备可执行条件,若上述反馈注解所依赖的测试用例执行成功,则认为该反馈注解具备可执行条件,此时可以基于上述依赖注解对上述反馈注解进行解析,以获得上述反馈注解的真实注解数据。具体地,上述基于上述依赖注解对上述反馈注解进行解析的过程,实际为基于上述依赖注解对上述反馈注解的注解数据进行替换的过程:对于反馈注解来说,如果其所携带的(k,v)注解数据执行变量模式,则需要解析上述依赖注解来获取相应变量数据,并将上述变量数据代入至上述(k,v)注解数据中,以获得真实注解数据。相应地,后续在断言时,也需要基于上述第二响应数据及上述反馈注解的真实注解数据,执行对应的断言。
可选地,在上述测试框架执行测试方法的过程中,还可以同时将与服务器交互过程中所得到的日志信息及响应信息保存于本地数据库,比如请求地址、参数、上传内容、服务器的响应码、响应内容等等;再基于上述本地数据库所存储的日志信息及响应信息,生成并输出测试报告。当然,测试人员还可以利用上述志信息及响应信息进行排错(debug),此处不作限定。
由上可见,在本申请实施例中,通过自定义登陆注解、请求注解、反馈注解及依赖注解等各式注解,构建得到基于注解的HTTP测试框架,以注解的方式实现了HTTP请求的组装以及响应数据的断言,实现过程简单方便,且节约了测试人员的时间成本,并能够使得HTTP接口测试框架更具备灵活性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
实施例二
本申请实施例二提供了一种测试装置,上述测试装置可集成于电子设备中,如图2所示,本申请实施例中的测试装置200包括:
筛选单元201,用于扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,上述目标函数为包含预设注解的函数,上述预设注解以下至少一种注解:登陆注解、请求注解及反馈注解;
登陆单元202,用于基于上述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行上述登陆函数所得到的第一响应数据,其中,上述登陆注解用于标注当前请求为登陆请求;
请求单元203,用于若上述第一响应数据指示已成功登陆,则基于上述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行上述目标请求所得到的第二响应数据,其中,上述请求注解用于定义与测试用例相关的超文本传输协议HTTP请求的内容;
断言单元204,用于基于上述第二响应数据及上述目标函数中所包含的反馈注解,执行对应的断言,其中,上述反馈注解用于对测试用例的预期结果进行判断。
可选地,上述筛选单元201,包括:
文件扫描子单元,用于扫描获取当前工程中的所有Java格式的文件;
类确定子单元,用于确定当前工程中的所有Java格式的文件中所包含的各个类;
筛选子单元,用于在任一类中,根据预设的反射机制遍历上述类的所有函数,并基于预设注解对所有函数进行筛选,得到一个以上目标函数;
可选地,上述第一响应数据中包含有会话参数及令牌参数;相应地,登陆单元202包括:
请求注解解析子单元,用于解析上述目标函数中所包含的请求注解,得到上述请求注解所携带的注解数据;
目标请求封装子单元,用于根据上述会话参数、上述令牌参数及上述注解数据,封装得到与上述请求注解相对应的目标请求。
可选地,上述第二响应数据中包含内容类别参数,上述断言单元204包括:
注解数据拆分子单元,用于通过预设符号拆分得到上述反馈注解所携带的各个注解数据;
结构体构建子单元,用于基于上述内容类别参数,将上述第二响应数据构建为预设格式的结构体;
断言执行子单元,用于根据上述结构体的层次,对各个注解数据执行相应断言。
可选地,上述测试装置200还包括:
保存单元,用于将与服务器交互过程中所得到的日志信息及响应信息保存于本地数据库;
报告单元,用户基于上述本地数据库所存储的日志信息及响应信息,生成并输出测试报告。
可选地,上述预设注解还包括依赖注解;上述测试装置200还包括:
执行链构建单元,用于若存在包含有依赖注解的目标函数,则基于上述依赖注解构建测试用例的执行链,其中,上述执行链指示了各个测试用例的执行顺序,上述依赖注解用于定义测试用例的依赖测试用例集;
第一状态获取单元,用于在上述基于上述目标函数中所包含的请求注解,封装得到对应的目标请求之前,基于上述依赖注解,获取上述请求注解所依赖的测试用例的执行状态;
第一状态获取单元,用于若上述请求注解所依赖的测试用例执行成功,则基于上述依赖注解对上述请求注解进行解析,以获得上述请求注解的真实注解数据;
相应地,上述请求单元203,具体用于根据上述请求注解的真实注解数据封装得到对应的目标请求。
可选地,上述测试装置200还包括:
第二状态获取单元,用于在上述基于上述第二响应数据及上述目标函数中所包含的反馈注解,执行对应的断言之前,基于上述依赖注解,获取上述反馈注解所依赖的测试用例的执行状态;
第二状态获取单元,用于若上述反馈注解所依赖的测试用例执行成功,则基于上述依赖注解对上述反馈注解进行解析,以获得上述反馈注解的真实注解数据;
相应地,上述断言单元204,具体用于基于上述第二响应数据及上述反馈注解的真实注解数据,执行对应的断言。
由上可见,在本申请实施例中,通过自定义登陆注解、请求注解、反馈注解、依赖注解等各式注解,构建得到基于注解的HTTP测试框架,以注解的方式实现了HTTP请求的组装以及响应数据的断言,实现过程简单方便,且节约了测试人员的时间成本,并能够使得HTTP接口测试框架更具备灵活性。
实施例三
本申请实施例三提供了一种电子设备,请参阅图3,本申请实施例中的电子设备3包括:存储器301,一个或多个处理器302(图3中仅示出一个)及存储在存储器301上并可在处理器上运行的计算机程序。其中:存储器301用于存储软件程序以及模块,处理器302通过运行存储在存储器301的软件程序以及单元,从而执行各种功能应用以及数据处理,以获取上述预设事件对应的资源。具体地,处理器302通过运行存储在存储器301的上述计算机程序时实现以下步骤:
扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,上述目标函数为包含预设注解的函数,上述预设注解包括以下至少一种注解:登陆注解、请求注解及反馈注解;
基于上述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行上述登陆函数所得到的第一响应数据,其中,上述登陆注解用于标注当前请求为登陆请求;
若上述第一响应数据指示已成功登陆,则基于上述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行上述目标请求所得到的第二响应数据,其中,上述请求注解用于定义与测试用例相关的超文本传输协议HTTP请求的内容;
基于上述第二响应数据及上述目标函数中所包含的反馈注解,执行对应的断言,其中,上述反馈注解用于对测试用例的预期结果进行判断。
假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,上述扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,包括:
扫描获取当前工程中的所有Java格式的文件;
确定当前工程中的所有Java格式的文件中所包含的各个类;
在任一类中,根据预设的反射机制遍历上述类的所有函数,并基于预设注解对所有函数进行筛选,得到一个以上目标函数。
在上述第一种可能的实施方式作为基础而提供的第三种可能的实施方式中,上述第一响应数据中包含有会话参数及令牌参数;相应地,上述基于上述目标函数中所包含的请求注解,封装得到对应的目标请求,包括:
解析上述目标函数中所包含的请求注解,得到上述请求注解所携带的注解数据;
根据上述会话参数、上述令牌参数及上述注解数据,封装得到与上述请求注解相对应的目标请求。
在上述第一种可能的实施方式作为基础而提供的第四种可能的实施方式中,上述第二响应数据中包含内容类别参数,上述基于上述第二响应数据及上述目标函数中所包含的反馈注解,执行对应的断言,包括:
通过预设符号拆分得到上述反馈注解所携带的各个注解数据;
基于上述内容类别参数,将上述第二响应数据构建为预设格式的结构体;
根据上述结构体的层次,对各个注解数据执行相应断言。
在上述第一种可能的实施方式作为基础而提供的第四种可能的实施方式中,处理器302通过运行存储在存储器301的上述计算机程序时还实现以下步骤:
将与服务器交互过程中所得到的日志信息及响应信息保存于本地数据库;
基于上述本地数据库所存储的日志信息及响应信息,生成并输出测试报告。
在上述第一种可能的实施方式作为基础,或者上述第二种可能的实施方式作为基础,或者上述第三种可能的实施方式作为基础,或者上述第四种可能的实施方式作为基础,或者上述第五种可能的实施方式作为基础而提供的第六种可能的实施方式中,上述预设注解还包括依赖注解,处理器302通过运行存储在存储器301的上述计算机程序时还实现以下步骤:
若存在包含有依赖注解的目标函数,则基于上述依赖注解构建测试用例的执行链,其中,上述执行链指示了各个测试用例的执行顺序,上述依赖注解用于定义测试用例的依赖测试用例集;
则在上述基于上述目标函数中所包含的请求注解,封装得到对应的目标请求之前,处理器302通过运行存储在存储器301的上述计算机程序时还实现以下步骤:基于上述依赖注解,获取上述请求注解所依赖的测试用例的执行状态;
若上述请求注解所依赖的测试用例执行成功,则基于上述依赖注解对上述请求注解进行解析,以获得上述请求注解的真实注解数据;
相应地,上述基于上述目标函数中所包含的请求注解,封装得到对应的目标请求,包括:
根据上述请求注解的真实注解数据封装得到对应的目标请求。
在上述第六种可能的实施方式作为基础而提供的第七种可能的实施方式中,在上述基于上述第二响应数据及上述目标函数中所包含的反馈注解,执行对应的断言之前,处理器302通过运行存储在存储器301的上述计算机程序时还实现以下步骤:
基于上述依赖注解,获取上述反馈注解所依赖的测试用例的执行状态;
若上述反馈注解所依赖的测试用例执行成功,则基于上述依赖注解对上述反馈注解进行解析,以获得上述反馈注解的真实注解数据;
相应地,上述基于上述第二响应数据及上述目标函数中所包含的反馈注解,执行对应的断言,包括:
基于上述第二响应数据及上述反馈注解的真实注解数据,执行对应的断言。
应当理解,在本申请实施例中,所称处理器302可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器301可以包括只读存储器和随机存取存储器,并向处理器302提供指令和数据。存储器301的一部分或全部还可以包括非易失性随机存取存储器。例如,存储器301还可以存储设备类型的信息。
由上可见,在本申请实施例中,通过自定义登陆注解、请求注解、反馈注解、依赖注解等各式注解,构建得到基于注解的HTTP测试框架,以注解的方式实现了HTTP请求的组装以及响应数据的断言,实现过程简单方便,且节约了测试人员的时间成本,并能够使得HTTP接口测试框架更具备灵活性。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者外部设备软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读存储介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机可读存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括是电载波信号和电信信号。
以上上述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种测试方法,其特征在于,包括:
扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,所述目标函数为包含预设注解的函数,所述预设注解包括以下至少一种注解:登陆注解、请求注解及反馈注解;
基于所述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行所述登陆函数所得到的第一响应数据,其中,所述登陆注解用于标注当前请求为登陆请求;
若所述第一响应数据指示已成功登陆,则基于所述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行所述目标请求所得到的第二响应数据,其中,所述请求注解用于定义与测试用例相关的超文本传输协议HTTP请求的内容;
基于所述第二响应数据及所述目标函数中所包含的反馈注解,执行对应的断言,其中,所述反馈注解用于对测试用例的预期结果进行判断。
2.如权利要求1所述的测试方法,其特征在于,所述扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,包括:
扫描获取当前工程中的所有Java格式的文件;
确定当前工程中的所有Java格式的文件中所包含的各个类;
在任一类中,根据预设的反射机制遍历所述类的所有函数,并基于预设注解对所有函数进行筛选,得到一个以上目标函数。
3.如权利要求1所述的测试方法,其特征在于,所述第一响应数据中包含有会话参数及令牌参数;相应地,所述基于所述目标函数中所包含的请求注解,封装得到对应的目标请求,包括:
解析所述目标函数中所包含的请求注解,得到所述请求注解所携带的注解数据;
根据所述会话参数、所述令牌参数及所述注解数据,封装得到与所述请求注解相对应的目标请求。
4.如权利要求1所述的测试方法,其特征在于,所述第二响应数据中包含内容类别参数,所述基于所述第二响应数据及所述目标函数中所包含的反馈注解,执行对应的断言,包括:
通过预设符号拆分得到所述反馈注解所携带的各个注解数据;
基于所述内容类别参数,将所述第二响应数据构建为预设格式的结构体;
根据所述结构体的层次,对各个注解数据执行相应断言。
5.如权利要求1所述的测试方法,其特征在于,所述测试方法还包括:
将与服务器交互过程中所得到的日志信息及响应信息保存于本地数据库;
基于所述本地数据库所存储的日志信息及响应信息,生成并输出测试报告。
6.如权利要求1至5任一项所述的测试方法,其特征在于,所述预设注解还包括依赖注解;所述测试方法还包括:
若存在包含有依赖注解的目标函数,则基于所述依赖注解构建测试用例的执行链,其中,所述执行链指示了各个测试用例的执行顺序,所述依赖注解用于定义测试用例的依赖测试用例集;
在所述基于所述目标函数中所包含的请求注解,封装得到对应的目标请求之前,所述测试方法还包括:
基于所述依赖注解,获取所述请求注解所依赖的测试用例的执行状态;
若所述请求注解所依赖的测试用例执行成功,则基于所述依赖注解对所述请求注解进行解析,以获得所述请求注解的真实注解数据;
相应地,所述基于所述目标函数中所包含的请求注解,封装得到对应的目标请求,包括:
根据所述请求注解的真实注解数据封装得到对应的目标请求。
7.如权利要求6所述的测试方法,其特征在于,在所述基于所述第二响应数据及所述目标函数中所包含的反馈注解,执行对应的断言之前,所述测试方法还包括:
基于所述依赖注解,获取所述反馈注解所依赖的测试用例的执行状态;
若所述反馈注解所依赖的测试用例执行成功,则基于所述依赖注解对所述反馈注解进行解析,以获得所述反馈注解的真实注解数据;
相应地,所述基于所述第二响应数据及所述目标函数中所包含的反馈注解,执行对应的断言,包括:
基于所述第二响应数据及所述反馈注解的真实注解数据,执行对应的断言。
8.一种测试装置,其特征在于,包括:
筛选单元,用于扫描当前工程中的所有文件,筛选得到当前工程中的一个以上目标函数,其中,所述目标函数为包含预设注解的函数,所述预设注解包括以下至少一种注解:登陆注解、请求注解及反馈注解;
登陆单元,用于基于所述目标函数中所包含的登陆注解,构建登陆函数,并缓存执行所述登陆函数所得到的第一响应数据,其中,所述登陆注解用于标注当前请求为登陆请求;
请求单元,用于若所述第一响应数据指示已成功登陆,则基于所述目标函数中所包含的请求注解,封装得到对应的目标请求,并缓存执行所述目标请求所得到的第二响应数据,其中,所述请求注解用于定义与测试用例相关的超文本传输协议HTTP请求的内容;
断言单元,用于基于所述第二响应数据及所述目标函数中所包含的反馈注解,执行对应的断言,其中,所述反馈注解用于对测试用例的预期结果进行判断。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910882179.0A CN110768860B (zh) | 2019-09-18 | 2019-09-18 | 一种测试方法、测试装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910882179.0A CN110768860B (zh) | 2019-09-18 | 2019-09-18 | 一种测试方法、测试装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110768860A CN110768860A (zh) | 2020-02-07 |
CN110768860B true CN110768860B (zh) | 2022-03-15 |
Family
ID=69330102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910882179.0A Active CN110768860B (zh) | 2019-09-18 | 2019-09-18 | 一种测试方法、测试装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110768860B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559083B (zh) * | 2020-12-24 | 2023-08-04 | 成都新希望金融信息有限公司 | 函数插件执行方法、装置、电子设备及存储介质 |
CN112839096B (zh) * | 2021-01-14 | 2022-07-22 | 深圳赛安特技术服务有限公司 | 监控函数执行时长的方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2552064A1 (en) * | 2011-07-27 | 2013-01-30 | Fujitsu Limited | Processing apparatus, test signal generator, and method of generating test signal |
CN104536884A (zh) * | 2014-12-17 | 2015-04-22 | 广州酷狗计算机科技有限公司 | 代码测试方法和装置 |
CN107145437A (zh) * | 2016-03-01 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 一种java注解测试方法及装置 |
CN107562626A (zh) * | 2017-08-31 | 2018-01-09 | 国家电网公司 | 一种封装Selenium和Sikuli实现Web自动化测试的方法 |
CN108427646A (zh) * | 2018-04-13 | 2018-08-21 | 中国民航信息网络股份有限公司 | 基于Appium的安卓App自动化测试框架构建方法和装置 |
CN109213683A (zh) * | 2018-09-06 | 2019-01-15 | 无线生活(杭州)信息科技有限公司 | 测试用例生成方法及装置 |
-
2019
- 2019-09-18 CN CN201910882179.0A patent/CN110768860B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2552064A1 (en) * | 2011-07-27 | 2013-01-30 | Fujitsu Limited | Processing apparatus, test signal generator, and method of generating test signal |
CN104536884A (zh) * | 2014-12-17 | 2015-04-22 | 广州酷狗计算机科技有限公司 | 代码测试方法和装置 |
CN107145437A (zh) * | 2016-03-01 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 一种java注解测试方法及装置 |
CN107562626A (zh) * | 2017-08-31 | 2018-01-09 | 国家电网公司 | 一种封装Selenium和Sikuli实现Web自动化测试的方法 |
CN108427646A (zh) * | 2018-04-13 | 2018-08-21 | 中国民航信息网络股份有限公司 | 基于Appium的安卓App自动化测试框架构建方法和装置 |
CN109213683A (zh) * | 2018-09-06 | 2019-01-15 | 无线生活(杭州)信息科技有限公司 | 测试用例生成方法及装置 |
Non-Patent Citations (2)
Title |
---|
一种基于内部类的断言框架研究与实现;屈国栋等;《微计算机信息》;20100315(第08期);全文 * |
基于Velocity的代码生成引擎的设计与实现;薛召等;《电信工程技术与标准化》;20120815(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110768860A (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766262B (zh) | 接口数据处理方法、自动化测试方法、装置、设备和介质 | |
CN105099811B (zh) | 一种接口测试方法和装置 | |
CN110275831B (zh) | 协议接口的mock数据校验方法和装置 | |
KR101520056B1 (ko) | 클라우드 기반 모바일/온라인 게임 서버 부하 테스트 자동화 서비스 방법 | |
CN106484611B (zh) | 基于自动化协议适配的模糊测试方法和装置 | |
CN108628748B (zh) | 自动化测试管理方法和自动化测试管理系统 | |
CN110768860B (zh) | 一种测试方法、测试装置及电子设备 | |
CN110096380B (zh) | Android内部通讯方法、系统、装置及存储介质 | |
CN112988599B (zh) | 一种页面调试方法、装置、电子设备和存储介质 | |
CN112395184A (zh) | 一种信息获取方法、设备和计算机存储介质 | |
CN108632361A (zh) | 一种网页上线方法、服务器、系统和存储介质 | |
CN108694120B (zh) | 测试服务组件的方法和装置 | |
CN109714406A (zh) | 资源描述文件的处理、页面资源的获取方法及设备 | |
CN113760697A (zh) | 接口测试的方法、装置、电子设备和存储介质 | |
CN109725887B (zh) | 基于消息研发框架的数据交互方法、装置及终端设备 | |
CN113360377B (zh) | 一种测试方法和装置 | |
CN112559348B (zh) | 基于jacoco的测试分析方法、系统、设备以及介质 | |
CN113971257A (zh) | 混合应用的功能菜单访问方法及装置 | |
CN109788251A (zh) | 视频处理方法、装置及存储介质 | |
CN113312633A (zh) | 一种网站漏洞扫描方法、装置、设备及存储介质 | |
CN110874278A (zh) | 外部系统的嵌入方法、工作流系统、设备及存储介质 | |
CN112559278B (zh) | 操作数据的获取方法和装置 | |
CN113204449A (zh) | 会话备份方法、计算机可读存储介质及终端设备 | |
CN105306478A (zh) | Http协议数据规格化的系统及方法 | |
CN109995607B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |