一种接口测试方法、装置、介质和计算设备与流程

文档序号:23922883发布日期:2021-02-09 19:19阅读:99来源:国知局
一种接口测试方法、装置、介质和计算设备与流程

[0001]
本发明的实施方式涉及计算机技术领域,更具体地,本发明的实施方式涉及一种接口测试方法、装置、介质和计算设备。


背景技术:

[0002]
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003]
相关技术中,常规接口测试流程,根据实际的业务场景特性配置具体的请求参数,构建具体的接口测试用例,接着触发执行对应的接口用例,随后通过断言等形式来自动化分析判断用例结果。上述接口测试流程主要指的是正常测试,而往往在接口测试中还需要进行逆向测试,也就是为待测接口的属性字段设计异常参数进行测试,然而现有的接口测试方法中的逆向测试存在配置灵活性较低、设计成本较高以及测试覆盖率较低的问题。


技术实现要素:

[0004]
本发明期望提供一种接口测试方法、装置、介质和计算设备,以至少解决上述技术问题。
[0005]
本发明实施方式的第一方面,提供一种接口测试方法,包括:
[0006]
基于待测接口的属性字段所对应的逆向开关,确定执行逆向测试的第一类属性字段;
[0007]
从异常参数库中包含的多个候选异常参数集合中,确定所述第一类属性字段对应的异常参数集合;其中,所述多个候选异常参数集合中不同的候选异常参数集合对应不同的场景类别;所述候选异常参数集合中包括同一场景类别下的一个或多个候选异常参数;
[0008]
基于所述第一类属性字段对应的异常参数集合,生成针对所述待测接口的测试请求;
[0009]
基于所述针对待测接口的测试请求对所述待测接口执行逆向测试得到测试结果。
[0010]
在本发明的一个实施例中,所述方法还包括:
[0011]
基于预设的过滤规则对所述测试结果进行过滤,得到异常测试结果;
[0012]
其中,所述预设的过滤规则中包含以下至少之一:
[0013]
若所述测试结果中的响应码与预设响应码不同,则确定所述测试结果为异常测试结果;
[0014]
若所述测试结果中的响应头与预设响应头不同,则确定所述测试结果为异常测试结果;
[0015]
若所述测试结果中的响应体长度不在预设响应体的长度范围内,则确定所述测试结果为异常测试结果;
[0016]
若所述测试结果中的响应内容中不包含预设响应内容,则确定所述测试结果为异常测试结果。
[0017]
在本发明的一个实施例中,所述基于待测接口的属性字段所对应的逆向开关,确定执行逆向测试的第一类属性字段,包括:
[0018]
将所述待测接口的属性字段中逆向开关为第一值的n个属性字段作为执行逆向测试的n个第一类属性字段,将所述待测接口的属性字段中逆向开关为第二值的k个属性字段作为不执行逆向测试的k个第二类属性字段;
[0019]
其中,所述n和k为大于等于0的整数。
[0020]
在本发明的一个实施例中,所述从异常参数库中包含的多个候选异常参数集合中,确定所述第一类属性字段对应的异常参数集合,包括:
[0021]
基于所要执行的逆向接口测试的场景类型,从异常参数库中包含的多个候选异常参数集合中选取与所述场景类型对应的候选异常参数集合;从与所述场景类型对应的候选异常参数集合中,确定所述n个第一类属性字段中的第i个第一类属性字段的异常参数集合;其中i为大于等于1且小于等于n的整数。
[0022]
在本发明的一个实施例中,所述基于所述第一类属性字段对应的异常参数集合,生成针对所述待测接口的测试请求,包括:
[0023]
基于所述n个第一类属性字段分别对应的所述异常参数集合,确定在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数;
[0024]
基于在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数以及所述k个第二类属性字段所对应的正常参数,生成m个测试请求;m为大于等于1的整数。
[0025]
在本发明的一个实施例中,所述基于所述针对待测接口的测试请求对所述待测接口执行逆向测试得到测试结果,包括:
[0026]
将所述m个测试请求添加至执行队列中;多线程并行执行所述执行队列中包含的所述m个测试请求,得到所述多线程并行执行逆向测试得到的m个测试结果。
[0027]
在本发明的一个实施例中,所述基于所述n个第一类属性字段分别对应的所述异常参数集合,确定在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数,基于在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数以及所述k个第二类属性字段所对应的正常参数,生成m个测试请求,包括:
[0028]
从所述n个第一类属性字段中确定目标第一类属性字段;
[0029]
从所述目标第一类属性字段所对应的异常参数集合获取用于构建m个测试请求中的第j个测试请求的目标参数;j为大于等于1的整数;
[0030]
基于所述目标第一类属性字段所对应的目标参数、以及除所述目标第一类属性字段之外的其他属性字段对应的正常参数,构建所述第j个测试请求;
[0031]
其中,所述其他属性字段中包含:所述k个第二类属性字段、以及除所述目标第一类属性字段之外的其他第一类属性字段。
[0032]
在本发明的一个实施例中,所述基于所述n个第一类属性字段分别对应的所述异常参数集合,确定在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数以及所述k个第二类属性字段所对应的正常参数,基于在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数,生成m个测试请求,包括:
[0033]
从n个第一类属性字段分别对应的异常参数集合分别获取每一个第一类属性字段用于构建m个测试请求中的第j个测试请求的目标参数;j为大于等于1的整数;
[0034]
基于所述n个第一类属性字段对应的目标参数,以及所述k个第二类属性字段所对应的正常参数,构建所述第j个测试请求。
[0035]
在本发明的一个实施例中,所述方法还包括:
[0036]
获取所述待测接口的逆向测试过程中涉及到的类名与方法名;
[0037]
相应的,所述基于所述针对待测接口的测试请求对所述待测接口执行逆向测试得到测试结果时,所述方法还包括:
[0038]
获取在执行逆向测试期间与所述类名以及所述方法名对应的待分析日志,从所述待分析日志中获取所述待测接口在逆向测试过程中所触发的异常日志。
[0039]
在本发明的一个实施例中,所述方法还包括:
[0040]
基于所述异常日志确定触发所述异常测试结果的待处理异常参数;
[0041]
在所述异常参数库中不包含所述待处理异常参数的情况下,基于所述待处理异常参数对应的场景类别,将所述待处理异常参数添加到对应的候选异常参数集合中。
[0042]
在本发明的一个实施例中,所述获取在执行逆向测试期间与所述类名以及所述方法名对应的待分析日志,包括:
[0043]
根据执行逆向测试所对应的测试时间,从日志中筛选得到在所述测试时间内的候选日志;将所述类名以及所述方法名作为关键词,从所述候选日志中获取与所述关键词匹配的待分析日志。
[0044]
本发明实施方式的第二方面,提供一种接口测试装置,包括:
[0045]
配置单元,用于基于待测接口的属性字段所对应的逆向开关,确定执行逆向测试的第一类属性字段;
[0046]
参数选取单元,用于从异常参数库中包含的多个候选异常参数集合中,确定所述第一类属性字段对应的异常参数集合;其中,所述多个候选异常参数集合中不同的候选异常参数集合对应不同的场景类别;所述候选异常参数集合中包括同一场景类别下的一个或多个候选异常参数;
[0047]
请求生成单元,用于基于所述第一类属性字段对应的异常参数集合,生成针对所述待测接口的测试请求;
[0048]
接口测试单元,用于基于所述针对待测接口的测试请求对所述待测接口执行逆向测试得到测试结果。
[0049]
在本发明的一个实施例中,所述装置还包括:
[0050]
过滤单元,用于基于预设的过滤规则对所述测试结果进行过滤,得到异常测试结果;
[0051]
其中,所述预设的过滤规则中包含以下至少之一:
[0052]
若所述测试结果中的响应码与预设响应码不同,则确定所述测试结果为异常测试结果;
[0053]
若所述测试结果中的响应头与预设响应头不同,则确定所述测试结果为异常测试结果;
[0054]
若所述测试结果中的响应体长度不在预设响应体的长度范围内,则确定所述测试结果为异常测试结果;
[0055]
若所述测试结果中的响应内容中不包含预设响应内容,则确定所述测试结果为异
常测试结果。
[0056]
在本发明的一个实施例中,所述配置单元,用于将所述待测接口的属性字段中逆向开关为第一值的n个属性字段作为执行逆向测试的n个第一类属性字段,将所述待测接口的属性字段中逆向开关为第二值的k个属性字段作为不执行逆向测试的k个第二类属性字段;
[0057]
其中,所述n和k为大于等于1的整数。
[0058]
在本发明的一个实施例中,参数选取单元,用于基于所要执行的逆向接口测试的场景类型,从异常参数库中包含的多个候选异常参数集合中选取与所述场景类型对应的候选异常参数集合;从与所述场景类型对应的候选异常参数集合中,确定所述n个第一类属性字段中的第i个属性字段的异常参数集合;其中i为大于等于1且小于等于n的整数。
[0059]
在本发明的一个实施例中,所述请求生成单元,用于
[0060]
基于所述n个第一类属性字段分别对应的所述异常参数集合,确定在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数;
[0061]
基于在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数以及所述k个第二类属性字段所对应的正常参数,生成m个测试请求;m为大于等于1的整数。
[0062]
在本发明的一个实施例中,所述接口测试单元,用于
[0063]
将所述m个测试请求添加至执行队列中;多线程并行执行所述执行队列中包含的所述m个测试请求,得到所述多线程并行执行逆向测试得到的m个测试结果。
[0064]
在本发明的一个实施例中,所述请求生成单元,用于从所述n个第一类属性字段中确定目标第一类属性字段;从所述目标第一类属性字段所对应的异常参数集合获取用于构建m个测试请求中的第j个测试请求的目标参数;j为大于等于1的整数;基于所述目标第一类属性字段所对应的目标参数、以及除所述目标第一类属性字段之外的其他属性字段对应的正常参数,构建所述第j个测试请求;
[0065]
其中,所述其他属性字段中包含:所述k个第二类属性字段、以及除所述目标第一类属性字段之外的其他第一类属性字段。
[0066]
在本发明的一个实施例中,所述请求生成单元,用于从n个第一类属性字段分别对应的异常参数集合分别获取每一个第一类属性字段用于构建m个测试请求中的第j个测试请求的目标参数;j为大于等于1的整数;基于所述n个第一类属性字段对应的目标参数,以及所述k个第二类属性字段所对应的正常参数,构建所述第j个测试请求。
[0067]
在本发明的一个实施例中,所述装置还包括:
[0068]
日志处理单元,用于基于所述待测接口的设计文档,获取所述待测接口的逆向测试过程中涉及到的类名与方法名;
[0069]
以及
[0070]
获取在执行逆向测试期间与所述类名以及所述方法名对应的待分析日志,从所述待分析日志中获取所述待测接口在逆向测试过程中所触发的异常日志。
[0071]
在本发明的一个实施例中,所述装置还包括:
[0072]
参数集合管理单元,用于基于所述异常日志确定触发所述异常测试结果的待处理异常参数;在所述异常参数库中不包含所述待处理异常参数的情况下,基于所述待处理异常参数对应的场景类别,将所述待处理异常参数添加到对应的候选异常参数集合中。
[0073]
在本发明的一个实施例中,所述日志处理单元,用于根据执行逆向测试所对应的测试时间,从日志中筛选得到在所述测试时间内的候选日志;将所述类名以及所述方法名作为关键词,从所述候选日志中获取与所述关键词匹配的待分析日志。
[0074]
本发明实施方式的第三方面,提供一种介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现上述方法。
[0075]
本发明实施方式的第四方面,提供一种计算设备,包括:
[0076]
一个或多个处理器;
[0077]
存储装置,用于存储一个或多个程序;
[0078]
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述方法。
[0079]
根据本发明实施方式,通过预先已经构建的包含了多种场景类别所对应的多个候选异常参数集合,灵活的对待测接口中的任意一个或多个属性字段进行逆向测试,提升了逆向测试的灵活性;其中预先构建的候选异常参数集合并非针对某次逆向测试单独设计的,而是在针对任意待测接口均可以适用的,因此避免了现有技术中为某个属性字段单独设计异常参数所带来的设计成本较高的问题;并且,候选异常参数集合基于场景类别划分,一个候选异常参数集合中包含该场景类别下的多种候选异常参数,从而可以在逆向测试中覆盖到尽可能多的异常参数,从而提升了逆向测试的覆盖率。
附图说明
[0080]
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
[0081]
图1示意性地示出了根据本发明一实施方式的接口测试方法实现流程图一;
[0082]
图2示意性地示出了根据本发明一实施方式的逆向属性灵活配置示意图;
[0083]
图3示意性地示出了根据本发明一实施方式的接口测试方法实现流程图二;
[0084]
图4示意性地示出了根据本发明一实施方式的语料库示意图;
[0085]
图5示意性地示出了根据本发明一实施方式的接口测试方法实现流程图三;
[0086]
图6示意性地示出了根据本发明一实施方式的批量自动化执行示意图;
[0087]
图7示意性地示出了根据本发明一实施方式的接口测试方法实现流程图四;
[0088]
图8示意性地示出了根据本发明一实施方式的接口测试方法实现流程图五;
[0089]
图9示意性地示出了根据本发明一实施方式的异常定位分析示意图;
[0090]
图10示意性地示出了根据本发明一实施方式的接口测试总体方案示意图;
[0091]
图11示意性地示出了根据本发明一实施方式的介质结构示意图;
[0092]
图12示意性地示出了根据本发明一实施方式的接口测试装置结构示意图;
[0093]
图13示意性地示出了根据本发明一实施方式的计算设备结构示意图。
[0094]
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
[0095]
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这
些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0096]
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
[0097]
根据本发明的实施方式,提出了一种接口测试方法、装置、介质和计算设备。
[0098]
在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
[0099]
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
[0100]
发明概述
[0101]
本发明人发现,现有的接口测试方法中的逆向测场景中需要单独确定需要为执行逆向测试的属性字段单独设计逆向测试用例,这样就会出现配置灵活性较低并且设计成本较高的问题;另外,现有的接口测试方法中,逆向测试场景由于测试边界难以划分,设计的异常参数往往无法穷尽,这样就导致测试覆盖率较低的问题。
[0102]
有鉴于此,本发明提供一种接口测试方法、装置、介质和计算设备,基于待测接口的属性字段所对应的逆向开关来确定执行逆向测试的第一类属性字段,然后从多个候选异常参数集合中选取第一类属性字段对应的异常参数集合;基于第一类属性字段的异常参数集合构建测试请求并完成测试。其中,候选异常参数集合为基于场景类别划分的,并且在候选异常参数集合中尽可能多的覆盖到该场景类别的多个候选异常参数。
[0103]
这样,本实施例提供的方案,通过预先已经构建的包含了多种场景类别所对应的多个候选异常参数集合,灵活的对待测接口中的任意一个或多个属性字段进行逆向测试,提升了逆向测试的灵活性;其中预先构建的候选异常参数集合并非针对某次逆向测试单独设计的,而是在针对任意待测接口均可以适用的,因此避免了现有技术中为某个属性字段单独设计异常参数所带来的设计成本较高的问题。并且,候选异常参数集合是基于场景类别划分的,一个候选异常参数集合中包含的该场景类别下的多种候选异常参数,从而可以在逆向测试中覆盖到尽可能多的异常参数,从而提升了逆向测试的覆盖率。
[0104]
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
[0105]
示例性方法
[0106]
本发明的第一个方面提供一种接口测试方法,下面参考图1来描述,包括:
[0107]
s101:基于待测接口的属性字段所对应的逆向开关,确定执行逆向测试的第一类属性字段;
[0108]
s102:从异常参数库中包含的多个候选异常参数集合中,确定所述第一类属性字段对应的异常参数集合;其中,所述多个候选异常参数集合中不同的候选异常参数集合对应不同的场景类别;所述候选异常参数集合中包括同一场景类别下的一个或多个候选异常参数;
[0109]
s103:基于所述第一类属性字段对应的异常参数集合,生成针对所述待测接口的测试请求。
[0110]
s104:基于所述针对待测接口的测试请求对所述待测接口执行逆向测试得到测试结果。
[0111]
本申请实施例可以应用于电子设备;所述电子设备可以为终端设备或服务器;所述终端设备可以为笔记本电脑、平板电脑、智能终端或个人电脑等等,这里不做穷举。
[0112]
上述s101中,所述基于待测接口的属性字段所对应的逆向开关,确定执行逆向测试的第一类属性字段,包括:
[0113]
将所述待测接口的属性字段中逆向开关为第一值的n个属性字段作为执行逆向测试的n个第一类属性字段,将所述待测接口的属性字段中逆向开关为第二值的k个属性字段作为不执行逆向测试的k个第二类属性字段;
[0114]
其中,所述n和k为大于等于0的整数。
[0115]
所述待测接口中包含的属性字段的个数可以是n+k个。上述n和k根据实际情况来确定,可以相同也可以不同。
[0116]
针对待测接口中包含的属性字段举例说明,例如待测接口为一个查询接口,该列表查询接口为“http://xxx.xxx.com/?page=5&keyword=test”,其中page和keyword为两个属性字段,针对这两个属性字段都会分配到一个逆向开关。
[0117]
进一步地,可以从所述待测接口的多个属性字段中选取一个或多个属性字段执行逆向测试,其他属性字段则执行正常测试(或称为非逆向测试)。将其中执行逆向测试的属性字段称为第一类属性字段,执行正常测试(或非逆向测试)的属性字段称为第二类属性字段。
[0118]
本申请实施例配置待测接口的每一个属性字段是否执行逆向测试的方式,具体可以是:为待测接口的每一个属性字段配置一个对应的逆向开关,在该逆向开关为第一值的情况下,该逆向开关所对应的属性字段为执行逆向测试的第一类属性字段;在该逆向开关为第二值的情况下,该逆向开关所对应的属性字段为不执行逆向测试的第二类属性字段。
[0119]
上述第一值和第二值可以根据实际情况预先设置,比如,第一值为1、第二值为0;又或者反之亦可。再比如,上述第一值可以为y,第二值可以为n;或者,第一值可以为yes,第二值可以为no,均在本申请的保护范围内,不做穷举。
[0120]
示例性的,参见图2,假设一个待测接口包括属性字段1-属性字段6,每一个属性字段均配置对应的逆向开关,即图2中属性字段1所对应的逆向开关,至属性字段6所对应的逆向开关;若要针对属性字段1以及属性字段4执行逆向测试,则将属性字段1、属性字段4所分别对应的逆向开关设置为1,其余不需要执行逆向测试的属性字段2、3、5、6则将其分别对应的逆向开关设置为0。
[0121]
在确定了所述待测接口中执行逆向测试的第一类属性字段以及第二类属性字段之后,执行前述s102,从异常参数库中包含的多个候选异常参数集合中,确定所述第一类属性字段对应的异常参数集合;其中,所述多个候选异常参数集合中不同的候选异常参数集合对应不同的场景类别;所述候选异常参数集合中包括同一场景类别下的一个或多个候选异常参数。
[0122]
首先需要指出的是,可以在电子设备中预先设置异常参数库,在预先设置的异常参数库中包含多个候选异常参数集合;每一个候选异常参数集合中预先设置一个或多个候选异常参数。
[0123]
其中,多个候选异常参数集合中不同的候选异常参数集合对应的场景类别不同。
[0124]
所述异常参数库也可以称为逆向语料参数库,所述候选异常参数集合也可以被称为异常场景类目所对应的异常参数集合;所述候选异常参数也可以被称为逆向参数;场景类别也可以称为场景类目、或逆向场景类别、或逆向场景类目等等。当然还可以存在其他名称本申请实施例不进行穷举。
[0125]
该异常参数库是在逆向场景接口测试中,为待测接口的第一类属性字段提供候选异常参数的参数用例集合。其主要通过根据不同逆向请求场景的特点,构建一个具体的场景目录库,比如可以包括但不限于以下场景类别(或场景类目):xss(cross site scripting,跨站脚本)、sql-injection(结构化查询语言注入)、xml-attacks(可扩展标记语言攻击)、html5-injections(第5代标准通用标记语言注入)、js-injections(java脚本注入)、abnormal-character-set(异常字符集)等;针对每一个场景类别(或场景类目)都对应一个根据场景类别的特性而聚类整理的候选异常参数集合。
[0126]
关于构建异常参数库的方式,参见图3,可以包括:
[0127]
s301:根据不同场景类别的特点,构建一个目录树来索引表示各个候选异常参数集合。其中,目录树中可以包括全部的场景类别;也就是针对目录树中每一个场景类别都可以用于索引其对应的候选异常参数集合。
[0128]
s302:收集每一个场景类别所对应的异常参数,将收集到的所述异常参数作为候选异常参数以构建每一个场景类别所对应的候选异常参数集合。
[0129]
收集每一个场景类别所对应的异常参数可以是依据不同的场景类别各自的特性进行异常参数的收集。比如,在xss场景类别下,收集该场景类别下对网页进行攻击的参数作为异常参数等等,在不同场景类别下可以具备不同的特性,也就是针对不同特性的异常参数进行收集,本实施例不对其做穷举。
[0130]
需要指出的是,上述收集每一个场景类别所对应的异常参数并不是一次性处理过程,可以是一个持续的处理,也就是可以在日常使用过程中增量式补充各个场景类别所对应的异常参数集合,如此可以持续迭代,增量式更新,从而使得各场景类别下的异常参数集合更具专业性和有效性。
[0131]
如图4所示,例如异常参数库中包含5个场景类别,分别为:“#1xml-attacks、#2xss lib、#3badchar lib、#4sql-injection、#5js-inject;”。在v1为#2xss lib场景类别下的初版候选异常参数,在日常迭代过程中,根据测试人员实际的测试经验,慢慢补充新增了v2、v3、v4版本的候选异常参数。以#2xss lib场景类别为例,结合图4来说,在该场景类别所对应的候选异常参数集合的每一个版本中包含的候选异常参数,可以包括有v1版本中的:1<font style=

color:expression(alert(

xss’))’>,2

onmouseover=alert(/blackspook/),3<%<!—'%><script>alert(1);</script
--
>;v2版本中的4<<scr\0ipt/src=https://xss.com/xss.js></script;v3版本中的5<basehref/src="javascript:alert('xss');//">;v4版本中的6<body/onload=<!
--
>&#10alert(1)>。这里,针对异常参数库的维护可以通过git仓库进行维护,git不仅仅是个版本控制系统,它也是个内容管理系统(cms)。如此,本实施例可以对候选异常参数集合中的候选异常参数灵活地进行增、删、改操作。最后,异常参数库中每一个场景类型所对应的候选异常参数集合的各个版本的异常候选参数可以形成具有较好的全面性和有效性的异常参数库。
[0132]
至此可以完成异常参数库的构建以及增量维护。
[0133]
进而基于上述预先构建或预先存储在电子设备中的异常参数库中,为n个第一类属性字段中的每一个第一类属性字段选取对应的异常参数集合。具体的,在前述图3的基础上,还可以包括s303:从异常参数库中包含的多个候选异常参数集合中,确定所述第一类属性字段对应的异常参数集合。
[0134]
具体的,s303可以包括:基于所要执行的逆向接口测试的场景类型,从异常参数库中包含的多个候选异常参数集合中选取与所述场景类型对应的候选异常参数集合;从与所述场景类型对应的候选异常参数集合中,确定所述n个第一类属性字段中的第i个第一类属性字段的异常参数集合;其中i为大于等于1且小于等于n的整数。
[0135]
这里,所述第i个第一类属性字段可以为n个第一类属性字段中的任意一个,由于针对每一个第一类属性字段确定异常参数集合的方式是相同的,因此这里不做一一赘述。
[0136]
需要理解的是,针对不同的第一类属性字段可以选择不同的场景类别所对应的异常参数集合。
[0137]
同样以图4为例进行说明,假设一个待测接口有n个第一类属性字段,分别为图4中的属性字段1、属性字段2、属性字段n等,针对其中的属性字段1可以选择场景类别#1xml-attacks、#3badchar lib、#5js-inject所分别对应的候选异常参数集合作为其对应的异常参数集合;属性字段2根据实际需要,可以选取选用场景类别#2xss lib、#5js-inject所分别对应的候选异常参数集合作为其对应的异常参数集合等等。
[0138]
基于以上s102的处理在针对待测接口选用候选异常参数集合的时候,可以根据各个场景类别的特点与侧重不同,个性化地选取所需要的参数库,从而可以支持更加灵活的配置模式。
[0139]
由于上述异常参数库为增量式维护的,可以在测试过程中不断迭代补充各个场景类别下的异常参数,从而可以逐步提高异常场景覆盖率。并且还会基于场景类别构建场景目录(或场景索引)基于该场景索引可以快捷的确定对应的异常参数集合。通过根据不同逆向请求的场景类别的特点,构建一个对应的场景目录库,以便面向不同逆向场景时,可以灵活地选择所需的不同候选异常参数集合。
[0140]
完成上述配置每一个第一类属性字段的异常参数集合之后,执行s103,基于所述第一类属性字段对应的异常参数集合,生成针对所述待测接口的测试请求,如图5所示,具体可以包括:
[0141]
s501:基于所述n个第一类属性字段分别对应的所述异常参数集合,确定在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数;
[0142]
s502:基于在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数以及所述k个第二类属性字段所对应的正常参数,生成m个测试请求;m为大于等于1的整数。
[0143]
具体的,关于上述确定目标参数,以及构建测试请求的处理中,可以包括以下两种方式,分别进行说明:
[0144]
方式一、单个第一类属性字段构建测试请求:
[0145]
s501具体可以为:从所述n个第一类属性字段中确定目标第一类属性字段;从所述目标第一类属性字段所对应的异常参数集合获取用于构建m个测试请求中的第j个测试请求的目标参数;j为大于等于1的整数;
[0146]
s502具体可以为:基于所述目标第一类属性字段所对应的目标参数、以及除所述目标第一类属性字段之外的其他属性字段对应的正常参数,构建所述第j个测试请求;其中,所述其他属性字段中包含:所述k个第二类属性字段、以及除所述目标第一类属性字段之外的其他第一类属性字段。
[0147]
所述目标第一类属性字段可以为n个第一类属性字段中的任意一个,选取目标第一类属性字段的方式可以是随机选择,只要保证最终全部n个第一类属性字段均完成测试请求的构建即可。
[0148]
由于前述实施例已经说明,每一个第一类属性字段已经预先确定了对应的异常参数集合,因此这里可以从选中的目标第一类属性字段所对应的异常参数集合中选取目标参数用于构建本次的第j个测试请求;其中,选取目标参数的方式可是随机选择,只要保证不同次构建测试请求选择的参数不同即可。
[0149]
本方式需要注意的是,虽然前面已经确定了n个第一类属性字段,但是在每次构建测试请求的时候,仅将其中一个第一类属性字段作为目标第一类属性字段,也就是仅将n个第一类属性字段中的一个进行逆向测试,除了该目标第一类属性字段之外的其他第一类属性字段均可以采用正常参数,也就是将除了目标第一类属性字段之外的其他第一类属性字段可以先作为第二类属性字段进行参数配置。基于上述处理,可以得到仅包含一个执行逆向测试的第一类属性字段配置的目标参数(即异常参数),其他属性字段均配置正常参数,基于这样的配置构建一个测试请求,依此类推,直至得到全部n个第一类属性字段依次作为目标第一类属性字段所构建的全部测试请求为止。
[0150]
上述正常参数可以为一个属性字段仅对应一个,具体的正常参数包含的内容本申请不做重点说明。
[0151]
对本方式进行示例性的说明,假设一个待测接口包括2个第一类属性字段(分别称为属性字段1、2),1个第二类属性字段(称为属性字段3);在构建任意一个测试请求的时候,可以将属性字段1作为目标第一类属性字段,从属性字段1所对应的异常参数集合1(假设有两个异常参数,分别为异常参数a、异常参数b)中选取一个异常参数a作为目标参数,基于该属性字段1的异常参数a、属性字段2的正常参数以及属性字段3的正常参数构建一个测试请求;
[0152]
在另一个测试请求的构建中,可以将属性字段1作为目标第一类属性字段,从属性字段1所对应的异常参数集合1(假设有两个异常参数,分别为异常参数a、异常参数b)中选取一个异常参数b作为目标参数,基于该属性字段1的异常参数b、属性字段2的正常参数以及属性字段3的正常参数构建一个测试请求;
[0153]
又一个测试请求的构建中,可以将属性字段2作为目标第一类属性字段,从属性字段2所对应的异常参数集合2(假设有3个异常参数,分别为异常参数21、异常参数22、异常参数23)中选取一个异常参数21作为目标参数,基于该属性字段1的正常参数、属性字段2的异常参数21以及属性字段3的正常参数构建一个测试请求。
[0154]
以此类推,直至遍历全部异常参数集合中的异常参数为止,最终可以构建多个测试参数,关于最终构建得到的测试参数的数量本实施例不做限定。
[0155]
方式二、多个第一类属性字段同时进行测试请求的构建:
[0156]
s501具体可以包括:从n个第一类属性字段分别对应的异常参数集合分别获取每
一个第一类属性字段用于构建m个测试请求中的第j个测试请求的目标参数;j为大于等于1的整数;
[0157]
s502具体可以包括:基于所述n个第一类属性字段对应的目标参数,以及所述k个第二类属性字段所对应的正常参数,构建所述第j个测试请求。
[0158]
本方式与前述方式不同之处在于,分别从每一个第一类属性字段所对应的异常参数集合中分别选取一个异常参数作为构建一个测试请求的目标参数。这里,从n个第一类属性字段所分别对应的异常参数集合中选取目标参数的方式,可以采用笛卡尔积模式进行组合,当然还可以采用其他的方式进行组合,只要保证不同次构建测试请求采用的异常参数存在至少一个不同即可。
[0159]
在确定了每一个第一类属性字段所对应的目标参数之后,再结合k个第二类属性字段分别对应的正常参数,构建一个测试请求。
[0160]
举例来说,假设一个待测接口包括2个第一类属性字段(分别称为属性字段1、2),1个第二类属性字段(称为属性字段3);属性字段1所对应的异常参数集合1(假设有两个异常参数,分别为异常参数a、异常参数b),属性字段2所对应的异常参数集合2(假设有3个异常参数,分别为异常参数21、异常参数22、异常参数23);
[0161]
在构建一个测试请求的时候,可以从属性字段1所对应的异常参数集合1中选取一个异常参数a作为属性字段1对应的目标参数,从属性字段2所对应的异常参数集合2中选取一个异常参数21作为属性字段2对应的目标参数,基于异常参数a、异常参数21以及属性字段3的正常参数构建一个测试请求;
[0162]
在构建另一个测试请求的时候,可以从属性字段1所对应的异常参数集合1中选取一个异常参数a作为属性字段1对应的目标参数,从属性字段2所对应的异常参数集合2中选取一个异常参数22作为属性字段2对应的目标参数,基于异常参数a、异常参数22以及属性字段3的正常参数构建一个测试请求。
[0163]
以此类推,直至遍历全部异常参数集合中的异常参数为止,最终可以构建多个测试参数,关于最终构建得到的测试参数的数量本实施例不做限定。
[0164]
s104中,可以包括:依次执行m个测试请求,也就是一次仅执行一个测试请求,得到该测试请求所对应的测试结果,最终得到m个测试结果。
[0165]
又或者,可以包括:将所述m个测试请求添加至执行队列中;多线程并行执行所述执行队列中包含的所述m个测试请求,得到所述多线程并行执行逆向测试得到的m个测试结果。
[0166]
针对并行执行的处理具体来说,如图2以及图6所示,如图2所示,基于前述不同的第一类属性字段配置的对应的异常参数集合,以及其他属性字段(也就是第二类属性字段,图2中的属性字段2、3、5、6)采用正常参数,构建了4个测试请求,然后将4个测试请求添加至执行队列中。比如图6中包含的“1、2、3、4
……”
用于表示多个测试请求,然后执行器(或称为请求执行器)通过并行的多个线程执行多个测试请求,比如图6中所示的线程1、2、3,每一个线程对应一个测试请求;然后将全部线程执行测试请求得到的测试结果保存至结果池中。
[0167]
比如,参见图7,可以包括:
[0168]
s701:请求执行器(request executor)通过并行的多个线程执行m个测试请求;
[0169]
s702:所有线程执行m个测试请求得到的m个测试结果临时保存至结果池文件中。
[0170]
其中,保存在结果池文件中的m个测试结果可以后续用于进行过滤。
[0171]
如此,在基于m个测试请求在执行的时候,会通过多线程批量自动执行各个测试请求,从而可以大幅提升测试效率。
[0172]
至此可以得到逆向场景的测试处理,示例性的,结合图8进行说明:
[0173]
s801:为待测接口的每一个属性字段配置对应的逆向开关。
[0174]
例如一个待测接口为查询接口:列表查询接口http://xxx.xxx.com/?page=5&keyword=test,其中page和keyword两个属性字段都会分配到一个逆向开关。
[0175]
s802:配置过程中对需要进行逆向测试的第一类属性字段对应的逆向开关设置为第一值。
[0176]
比如,可以将逆向开关表示为switch(开关),第一值为1;仍以前述查询接口为例,若需要对keyword属性字段进行逆向场景测试,那么keyword字段对应的逆向开关(switch)值就会置为1。
[0177]
s803:对于第一类属性字段配置对应的异常参数集合。
[0178]
s804:根据第一类属性字段实际配置的目标参数构造出m个测试请求,并将m个测试请求传递至执行队列(eq,execute queues),待执行器执行所述m个测试请求得到m个测试结果。
[0179]
在完成以上处理之后,还会对m个测试结果进行过滤,具体来说:
[0180]
基于预设的过滤规则对所述测试结果进行过滤,得到异常测试结果;
[0181]
其中,所述预设的过滤规则中包含以下至少之一:
[0182]
若所述测试结果中的响应码与预设响应码不同,则确定所述测试结果为异常测试结果;
[0183]
若所述测试结果中的响应头与预设响应头不同,则确定所述测试结果为异常测试结果;
[0184]
若所述测试结果中的响应体长度不在预设响应体的长度范围内,则确定所述测试结果为异常测试结果;
[0185]
若所述测试结果中的响应内容中不包含预设响应内容,则确定所述测试结果为异常测试结果。
[0186]
本实施例为所有进行逆向测试的待测接口的测试结果,引入了条件过滤功能;具体通过提供接口预设响应码、预设响应头、预设响应体、预设响应文案正则匹配等四个维度设置预设的过滤规则来实现。
[0187]
所述预设响应码可以根据实际情况设置,比如可以为200,当然还可以根据实际场景不同可能不同,这里不做穷举。所述预设响应头,可以根据实际的测试请求不同而不同,比如,可以是cache-control:max-age=3600,标识服务端到客户端所有的缓存机制是否可以缓存这个对象,以及缓存时长,单位是秒,需要说明的是,预设响应头这里不做穷举,实际上基于不同的测试请求可以对应不同的预设响应头,不对其进行穷举。所述预设响应内容可以是“status=success”,当然,还可以包括其他预设响应内容,同样不做穷举。所述预设响应体的长度范围可以是根据实际情况设置的一个长度区间范围,单位可以为bit(比特),比如可以是500b~1kb之间(包含500b、以及1kb)。
[0188]
需要理解的是,上述预设的过滤规则可以使用其中的全部,或者可以仅使用其中
的一部分。示例性的,可以某一待测接口的预设响应码为200,响应体对应的预设响应体的长度范围在500b到1kb之间,预设响应内容中会包含“status=success”的固定文案;相应的,在针对该待测接口所对应的测试结果进行过滤的时候,可以反向过滤留下“响应码”≠200或“响应体”长度<500b或文案中不包含“status=success”的测试结果。
[0189]
相应的,将过滤之后保留下来的测试结果作为异常测试结果,分析该异常测试结果可以反向得到触发异常的一个或多个异常参数,从而可以高效复现异常场景,辅助分析并定位异常原因。并且,还可以基于此增加相应的异常参数到异常参数库中。
[0190]
此外,本申请实施例还提供一种基于日志辅助性定位异常结果的方式,具体的:
[0191]
获取所述待测接口的逆向测试过程中涉及到的类名与方法名;
[0192]
相应的,所述基于所述针对待测接口的测试请求对所述待测接口执行逆向测试得到测试结果时,所述方法还包括:
[0193]
获取在执行逆向测试期间与所述类名以及所述方法名对应的待分析日志,从所述待分析日志中获取所述待测接口在逆向测试过程中所触发的异常日志。
[0194]
这里,获取所述待测接口的逆向测试过程中涉及到的类名与方法名的获取方式可以包括:从所述待测接口的设计文档中提取得到逆向测试过程中涉及到的类名与方法名。所述待测接口可以具备设计文档可以是预先能够获取的,其格式可以为excel格式,或者可以为其他格式,这里不做穷举。该设计文档中可以包括有待测接口的相关信息,可以从中提取对应的类名与方法名。示例性的,提取的类名和方法名的方式可以通过以下代码来实现“class hometest(unittest.testcase)(也就是获取当前的类名和方法名)”,获取到的类名可以是表示为“classname=self.__class__.__name”,获取到的方法名可以表示为“methodname=self._testmethodname”。
[0195]
获取在执行逆向测试期间与所述类名以及所述方法名对应的待分析日志,可以包括:
[0196]
根据执行逆向测试所对应的测试时间,从日志中筛选得到在所述测试时间内的候选日志;将所述类名以及所述方法名作为关键词,从所述候选日志中获取与所述关键词匹配的待分析日志。
[0197]
所述执行逆向测试所对应的测试时间可以包括:逆向测试开始时间至逆向测试结束时间之间的时长。
[0198]
也就是说,在执行逆向测试期间会不断的产生相关的日志,可以在服务器侧保存日志。在完成逆向测试之后,可以根据记录的逆向测试所对应的逆向测试开始时间至逆向测试结束时间,从保存的日志中提取处于上述逆向测试开始时间至逆向测试结束时间中获取一条或多条日志作为候选日志;
[0199]
又或者,可以是在执行逆向测试期间,一旦产生日志就会直接提取出来作为候选日志,然后将类名以及方法名作为关键字实时的判断该候选日志是否为待测接口所对应的日志,若是则作为待分析日志进行保存。
[0200]
进一步地,前述已经说明,可以获取到待测接口所对应的类名以及方法名,进而可以将方法名以及类名作为关键词,从一条或多条候选日志中获取包含有上述关键词的日志作为待分析日志。所述待分析日志可以包括有一条或多条。
[0201]
这里,由于关键词是基于待测接口确定的,因此找到待分析日志可以是有针对性
的针对待测接口获取其在逆向测试执行期间产生的日志。然后从待分析日志中获取所述待测接口与在逆向测试过程中触发的异常日志。确定异常日志的方式可以包括从待分析日志中筛选错误或告警日志等等作为所述异常日志。当然,确定异常日志也可以是实时获取的,也就是可以是在执行逆向测试期间,实时获取日志;基于关键词判断是否为待测接口所对应的待分析日志;若是,则进一步判断该待分析日志是否为异常日志(比如根据日志是否出现错误或告警等内容来确定)。
[0202]
进一步地,基于所述异常日志确定触发所述异常测试结果的待处理异常参数;在所述异常参数库中不包含所述待处理异常参数的情况下,基于所述待处理异常参数对应的场景类别,将所述待处理异常参数添加到对应的候选异常参数集合中。
[0203]
具体的,由于前述基于待测接口对应的逆向测试执行的时间有针对性的提取该时间之内的全部日志,并基于待测接口的方法名以及类型作为关键字,从全部日志进一步提取得到待测接口所对应的待分析日志;进而可以通过待分析日志是否对应了错误或告警的情况,定位得到异常日志。得到异常日志之后,可以进一步分析异常日志中包含的全部内容,从中可以基于经验查找到触发异常测试结果的待处理异常参数。
[0204]
基于该待处理异常参数可以准确的定位得到触发本次异常测试结果的原因。另外,还可以遍历异常参数库,从异常参数库中查找是否存在待处理异常参数,若存在,则可以不进行处理;若不存在,可以将该待处理异常参数作为候选异常参数添加到异常参数库中。
[0205]
在添加候选异常参数待异常参数库的具体处理中,可以进一步分析所述候选异常参数所对应的场景类别,基于该所述候选异常参数的场景类别,将该所述候选异常参数添加到该场景类别对应的候选异常参数集合中。这里,关于异常参数库、场景类别、候选异常餐数据集合以及候选异常参数的相关说明与前述实施例相同,因此不做赘述。
[0206]
在完成逆向测试的情况下,可以根据待测接口的设计文档(或可以称为接口设计文档),提取出执行逆向测试过程中涉及到的与所述待测接口对应的类名与方法名,在逆向测试期间会监听日志,同时将待测接口对应的类名与方法名作为关键词监听相关的异常日志,从而可以实现在海量的日志中有针对性地捞取到该接口在逆向场景测试过程中所触发的异常日志,快速地侦查别异常,并辅助开发定位修复问题。
[0207]
结合图9来说,针对前述放入结果池的全部测试结果,基于预设的过滤规则进行过滤得到异常测试结果,其中预设的过滤规则中包含有预设响应码、预设响应头、预设响应内容的长度范围、预设响应内容等等,与前述实施例相同不做赘述;同时结合异常日志与异常测试结果进行异常问题的定位的处理。也就是说,本实施例引入了异常日志监控(可以是服务端的异常日志监控),如此,可以除了基于前述预设的过滤规则提取异常测试结果之外,还可以利用服务端异常日志监控检验,来有效辅助发现并定位异常问题。
[0208]
最后结合图10对本实施例提供的方案进行总体说明:待测接口中包含6个属性字段,分别为:domain,url,request method,request param,request body,request header;每一个属性字段都接一个逆向开关。
[0209]
针对逆向开关为第一值的第一类属性字段通过异常参数库选择对应的候选异常参数集合,该异常参数库为增量式维护的,并且可以根据测试场景灵活选择本次测试针对第一类属性字段所要使用的异常参数集合;比如图10中,逆向开关为第一值可以为yes,第
二值可以为no,其中置为第一值yes的为属性字段5,也就是属性字段5为第一类属性字段;为该属性字段5从异常参数库中选取对应的异常参数集合;
[0210]
预先配置的内容还可以包括有预设的过滤规则以及执行策略;其中,过滤规则可以与前述实施例相同,这里不做赘述;所述执行策略可以包括有单个第一类属性字段构建测试请求、或多个第一类属性字段构建测试请求等等,与前述实施例相同,不做赘述;
[0211]
基于前述针对第一类属性字段选取的异常参数集合,可以批量自动化执行逆向测试,其中包括:基于执行策略对第一类属性字段自动加载对应的异常参数集合中的异常参数,自动组装得到测试请求,并且批量化多线程的执行测试请求;在得到测试结果之后可以基于预设的过滤规则从测试结果中提取异常测试结果并进行自动存储。
[0212]
最后结合上述异常测试结果、配合异常日志共同分析定位安全隐患。最终实现提高接口安全性以及服务稳定性的效果。
[0213]
也就是说,方案的总体思路是在常规接口测试的基础上,引入可灵活选择且支持增量式维护的个性化逆向语料参数库,通过灵活的逆向开关选择需要进行逆向测试的第一类属性字段;然后批量自动化地执行逆向接口测试;最终结合预设的过滤规则提取到待测接口的异常测试结果,并同时结合异常日志来分析并定位潜在的安全隐患,最终提高接口安全性与服务稳定性。
[0214]
结合现有技术对本实施例提供的方案的效果进一步进行分析:在现有技术中,逆向场景接口测试具体指在常规的接口测试基础上,通过给待测接口配置设计的异常参数,触发接口请求,然后触发单接口请求,再通过校验接口响应与服务日志,来判断接口请求是否正常。但是这一过程中存在:对逆向场景测试覆盖率较低的问题;逆向场景配置麻烦,维护成本高的问题;无法批量执行,测试效率低下的问题;逆向测试结果冗杂,无法有效筛选有效用例的问题。
[0215]
本实施例提供的方案,通过引入并构建个性化的异常参数库,在测试过程中不断迭代补充各个类目下的异常参数项,来逐步提高异常场景覆盖率。还引入了逆向开关配置,针对每一个属性均设置一个逆向开关,这样可以灵活地配置该属性是否执行逆向属性。通过这种灵活配置的方式来支持单个或多个属性的逆向测试,从而方便维护。并且本实施例提供的方案会通过多线程协同的模式来批量执行接口的测试请求,以大幅提升测试效率。最后,本实施例提供的方案为所有逆向接口测试结果集引入了条件过滤功能,提供接口响应码、响应体长度、响应文案正则匹配的过滤功能;除了校验待测接口的测试结果(也就是测试响应)之外还利用异常日志监控检验,来有效辅助发现并定位问题,帮助测试人员能够在海量的用例结果中,快速有效地定位到异常场景。
[0216]
示例性介质
[0217]
在介绍了本发明示例性实施方式的方法之后,接下来,参考图10对本发明示例性实施方式的介质进行说明。
[0218]
在一些可能的实施方式中,本发明的各个方面还可以实现为一种计算机可读介质,其上存储有程序,当所述程序被处理器执行时用于实现本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的信息加密/解密方法中的步骤。
[0219]
具体地,上述处理器执行上述程序时用于实现如下步骤:
[0220]
基于待测接口的属性字段所对应的逆向开关,确定执行逆向测试的第一类属性字
段;
[0221]
从异常参数库中包含的多个候选异常参数集合中,确定所述第一类属性字段对应的异常参数集合;其中,所述多个候选异常参数集合中不同的候选异常参数集合对应不同的场景类别;所述候选异常参数集合中包括同一场景类别下的一个或多个候选异常参数;
[0222]
基于所述第一类属性字段对应的异常参数集合,生成针对所述待测接口的测试请求;
[0223]
基于所述针对待测接口的测试请求对所述待测接口执行逆向测试得到测试结果。
[0224]
需要说明的是:上述的介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0225]
如图11示,描述了根据本发明的实施方式的介质50,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序,并可以在设备上运行。然而,本发明不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0226]
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0227]
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算设备。
[0228]
示例性装置
[0229]
在介绍了本发明示例性实施方式的介质之后,接下来,参考图12对本发明示例性实施方式的装置进行说明。
[0230]
本发明实施例提供一种接口测试装置,如图12所示,包括:
[0231]
一种接口测试装置,包括:
[0232]
配置单元1201,用于基于待测接口的属性字段所对应的逆向开关,确定执行逆向测试的第一类属性字段;
[0233]
参数选取单元1202,用于从异常参数库中包含的多个候选异常参数集合中,确定所述第一类属性字段对应的异常参数集合;其中,所述多个候选异常参数集合中不同的候选异常参数集合对应不同的场景类别;所述候选异常参数集合中包括同一场景类别下的一个或多个候选异常参数;
[0234]
请求生成单元1203,用于基于所述第一类属性字段对应的异常参数集合,生成针对所述待测接口的测试请求;
[0235]
接口测试单元1204,用于基于所述针对待测接口的测试请求对所述待测接口执行逆向测试得到测试结果。
[0236]
在一种实施方式中,所述装置还包括:
[0237]
过滤单元1207,用于基于预设的过滤规则对所述测试结果进行过滤,得到异常测试结果;
[0238]
其中,所述预设的过滤规则中包含以下至少之一:
[0239]
若所述测试结果中的响应码与预设响应码不同,则确定所述测试结果为异常测试结果;
[0240]
若所述测试结果中的响应头与预设响应头不同,则确定所述测试结果为异常测试结果;
[0241]
若所述测试结果中的响应体长度不在预设响应体的长度范围内,则确定所述测试结果为异常测试结果;
[0242]
若所述测试结果中的响应内容中不包含预设响应内容,则确定所述测试结果为异常测试结果。
[0243]
在一种实施方式中,所述配置单元1201,用于将所述待测接口的属性字段中逆向开关为第一值的n个属性字段作为执行逆向测试的n个第一类属性字段,将所述待测接口的属性字段中逆向开关为第二值的k个属性字段作为不执行逆向测试的k个第二类属性字段;
[0244]
其中,所述n和k为大于等于1的整数。
[0245]
在一种实施方式中,参数选取单元1202,用于基于所要执行的逆向接口测试的场景类型,从异常参数库中包含的多个候选异常参数集合中选取与所述场景类型对应的候选异常参数集合;从与所述场景类型对应的候选异常参数集合中,确定所述n个第一类属性字段中的第i个属性字段的异常参数集合;其中i为大于等于1且小于等于n的整数。
[0246]
在一种实施方式中,所述请求生成单元1203,用于
[0247]
基于所述n个第一类属性字段分别对应的所述异常参数集合,确定在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数;
[0248]
基于在构建m个测试请求时所述n个第一类属性字段所分别使用的目标参数以及所述k个第二类属性字段所对应的正常参数,生成m个测试请求;m为大于等于1的整数。
[0249]
在一种实施方式中,所述接口测试单元1204,用于
[0250]
将所述m个测试请求添加至执行队列中;多线程并行执行所述执行队列中包含的所述m个测试请求,得到所述多线程并行执行逆向测试得到的m个测试结果。
[0251]
在一种实施方式中,所述请求生成单元1203,用于从所述n个第一类属性字段中确定目标第一类属性字段;从所述目标第一类属性字段所对应的异常参数集合获取用于构建m个测试请求中的第j个测试请求的目标参数;j为大于等于1的整数;基于所述目标第一类属性字段所对应的目标参数、以及除所述目标第一类属性字段之外的其他属性字段对应的正常参数,构建所述第j个测试请求;
[0252]
其中,所述其他属性字段中包含:所述k个第二类属性字段、以及除所述目标第一类属性字段之外的其他第一类属性字段。
[0253]
在一种实施方式中,所述请求生成单元1203,用于从n个第一类属性字段分别对应的异常参数集合分别获取每一个第一类属性字段用于构建m个测试请求中的第j个测试请求的目标参数;j为大于等于1的整数;基于所述n个第一类属性字段对应的目标参数,以及所述k个第二类属性字段所对应的正常参数,构建所述第j个测试请求。
[0254]
在一种实施方式中,所述装置还包括:
[0255]
日志处理单元1205,用于基于所述待测接口的设计文档,获取所述待测接口的逆向测试过程中涉及到的类名与方法名;
[0256]
以及
[0257]
获取在执行逆向测试期间与所述类名以及所述方法名对应的待分析日志,从所述待分析日志中获取所述待测接口在逆向测试过程中所触发的异常日志。
[0258]
在一种实施方式中,所述装置还包括:
[0259]
参数集合管理单元1206,用于基于所述异常日志确定触发所述异常测试结果的待处理异常参数;在所述异常参数库中不包含所述待处理异常参数的情况下,基于所述待处理异常参数对应的场景类别,将所述待处理异常参数添加到对应的候选异常参数集合中。
[0260]
在一种实施方式中,所述日志处理单元1205,用于根据执行逆向测试所对应的测试时间,从日志中筛选得到在所述测试时间内的候选日志;将所述类名以及所述方法名作为关键词,从所述候选日志中获取与所述关键词匹配的待分析日志。
[0261]
本实施例接口测试装置中各个单元的处理与前述实施例中接口测试方法的流程处理相同,这里不再赘述。
[0262]
示例性计算设备
[0263]
在介绍了本发明示例性实施方式的方法、介质和客户端和服务器之后,接下来,参考图13本发明示例性实施方式的计算设备进行说明。
[0264]
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0265]
在一些可能的实施方式中,根据本发明实施方式的计算设备可以至少包括至少一个处理单元以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明的各种示例性实施方式的信息加密方法或信息解密方法中的步骤。
[0266]
下面参照图13来描述根据本发明的这种实施方式的计算设备90。图13显示的计算设备90仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0267]
如图13所示,计算设备90以通用计算设备的形式表现。计算设备90的组件可以包括但不限于:上述至少一个处理单元901、上述至少一个存储单元902,连接不同系统组件(包括处理单元901和存储单元902)的总线903。
[0268]
总线903包括数据总线、控制总线和地址总线。
[0269]
存储单元902可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)9021和/或高速缓存存储器9022,可以进一步包括非易失性存储器形式的可读介质,例如只读存储器(rom)9023。
[0270]
存储单元902还可以包括具有一组(至少一个)程序模块9024的程序/实用工具9025,这样的程序模块9024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0271]
计算设备90也可以与一个或多个外部设备904(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口905进行。并且,计算设备90还可以通过网络适配器906与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图13所示,网络适配器906通过总线903与计算设备90的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备90使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0272]
应当注意,尽管在上文详细描述中提及了信息加密/解密装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
[0273]
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
[0274]
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1