System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于资源层次关系分组的Restful API黑盒模糊测试方法技术_技高网

基于资源层次关系分组的Restful API黑盒模糊测试方法技术

技术编号:40923449 阅读:3 留言:0更新日期:2024-04-18 14:47
本发明专利技术公开了一种基于资源层次关系分组的Restfu l API模糊测试方法,包括:测试准备阶段:解析OpenAPI文档得到API请求操作模板集合,并构建API请求操作组群集合;遍历API请求操作组群集合,根据固定模板或随机产生测试序列,对测试序列中的AP I请求操作模板的参数进行赋值,再发送至待测系统,接收待测系统返回响应结果;结果信息反馈阶段:首先记录完整测试序列报告,再根据响应结果的状态码输出错误报告,解析响应结果中的数据得到数据资源项,以及更新AP I操作请求模板,将数据资源项存储到数据资源池。本发明专利技术具有检测效率高,准确率高,拓展性高等优点,进一步提高Restfu l API开发的安全性。

【技术实现步骤摘要】

本专利技术涉及软件工程中的软件测试领域,具体是一种基于资源层次关系分组的restful api黑盒模糊测试方法。


技术介绍

1、rest是一种面向资源的api设计风格,restful api通常使用openapi规范语言来描述,具体包括待测系统可以处理哪些请求,接受哪些请求参数,请求参数的取值和类型,可能收到哪些响应码、响应数据以及对应格式。

2、restful api黑盒模糊测试是通过解析openapi文档来生成测试序列从而对待测系统进行检测,而想要进行深入测试,检测出由多个连续api请求引发的错误,通常需要从openapi文档中解析出数据依赖关系,即一个api请求的响应结果中的某个字段是另一个api请求参数的输入值。

3、中国专利cn113918473a公开了一种对restful api组合测试方法,其首先使用crud语义约束和restful api的资源层级关系对操作约束建模,即对一个资源必须以创建(post)开始,删除(delete)结束,其他请求可以在这之间的任意位置,在操作约束模型的指导下,生成满足这些约束的操作序列,生成所有可能的操作的顺序组合,此外使用自然语言处理来对api文档中参数的描述进行分析,解决api内参数和参数之间的约束关系。

4、文献《forest:a tree-based black-box fuzzing approach for restful apis》使用url构建api树的方法来捕获api之间数据依赖关系,树中子节点中的api请求所需数据更可能来源于父节点而不是其他节点。通过遍历树结构和crud语义生成测试序列。但是上述两种方法均存在不足:前者对于一些特殊的参数名称未做处理,而后者仍然需要手动标注一些特殊参数名称,同时两者均通过资源层次关系构建的树约束了api之间组合空间,导致测试不够全面。


技术实现思路

1、为了解决现有技术中任需要手动标注一些特殊参数名称识别数据依赖关系和api之间测试不够全面的问题,本专利技术提出了一种基于资源层次关系分组的restful api黑盒模糊测试方法,无需人工干预,能够识别出更多的api之间的数据依赖关系,对api的测试更加全面,因此该方法能提高restful api黑盒模糊测试的效率。

2、为了实现上述目的,本专利技术具体采用的技术方案如下:

3、一种基于资源层次关系分组的restful api黑盒模糊测试方法,包括三个主要阶段:测试准备阶段、模糊测试阶段、结果信息反馈阶段,其中,测试准备阶段:首先将openapi文档作为输入,解析出api操作请求模板集合,然后根据api操作请求模板的请求路径得到资源标识符集合,再根据资源标识符集合构建api请求操作组群集合和标准化部分参数名称,api请求操作组群集合将在模糊测试阶段使用。模糊测试阶段:该阶段由测试预处理、测试序列生成、参数赋值和发送待测系统四个部分组成。测试预处理:生成对应的数据资源池来保存待测系统返回数据。测试序列生成:按照固定顺序和随机打乱两种方式,遍历api请求操作组群集合生成测试序列。参数赋值:对测试序列中的api请求操作模板的参数根据对应赋值策略对参数进行赋值。发送待测系统:将赋值后的api请求操作发送给待测系统。待测系统返回的响应结果在结果信息反馈阶段使用。结果信息反馈阶段:首先记录完整测试序列报告,再根据响应结果的状态码输出错误报告,解析响应结果中的数据得到数据资源项,以及更新api操作请求模板,将数据资源项存储到数据资源池。

4、本专利技术所述的测试准备阶段,整体流程包含以下步骤:

5、s1-1.解析openapi文档

6、输入待测程序对应的openapi文档,通过解析openapi文档得到api请求操作模板集合,来生成api请求操作模板集合otcollection:{ot1,…,oti...,otn};表示api请求操作模板集合otcollection有n个api请求操作模板ot;其中,操作码oti表示为:{enpoint,method,params,response,picollection,otricollection},对应参数解释如下:enpoint为请求路径;method为请求方法;response请求响应信息;params为请求参数集合,内载:请求头参数headparamter,路径参数pathparamter,查询参数queryparamter,请求体参数bodyparamter,其中,路径参数pathparamter是必选参数,其他请求参数可以是必选参数,也可以是可选参数,picollection为路径标识符集合,otricollection为资源标识符集合;将获得api操作模板集合otcollection作为输入进入步骤s1-2构建的api请求操作组群集合;

7、s1-2.构建api请求操作组群集合

8、本阶段由以下四个阶段组成

9、s1-2-1.生成路径标识符(pi)集合

10、路径标识符pi是由步骤s1-1中api请求操作模板ot中的请求路径endpoint得来,用于得到步骤s1-2-2中所描述的资源描述符。

11、根据步骤s1-1所得到的api请求操作模板集合otcollection,使用api请求操作模板ot中的请求路径enpoint,其表现形式为v1/{*}/…/vn,通过’/’划分endpoint,除去路径参数(路径参数在restful请求路径中以{*}形式出现,*为任意字符,路径参数可以不存在),得到路径标识符集合picollection:{pi1,…,pin},pi1=v1,…,pin=vn,picollection中的元素与endpoint中的元素一一对应,经过上述处理后得到路径标识符集合picollection用于对api请求操作模板ot中的picollection参数赋值,将赋值后得到的api操作模板集合otcollection作为步骤s1-2-2的输入。

12、s1-2-2生成资源标识符(ri)集合

13、资源标识符ri是由步骤s1-2-1生成的路径标识符集合picollection得来,用于得到步骤s1-2-3中请求参数名称标准化和步骤s1-2-4中构建api请求操作组群。

14、根据步骤s1-2-1中得到的api请求操作模板ot的路径标识符集合picollection,对其内每一个路径标识符pi进一步判断是否为资源标识符ri。对于一个api请求操作模板oti的路径标识符集合picollectioni中的每一个路径标识符如果中存在一个otj(i可以等于j),其picollectionj的最后一个路径标识符与相等,即那么就是一个资源标识符ri,如图4(b)所示。经过上述对路径标识符集合picollection的处理后每个api请求操作模板ot都会对参数otricollection赋值,赋值后资源标识符集合otricollection形式如下:{ri1,本文档来自技高网...

【技术保护点】

1.一种基于资源层次关系分组的Restful API模糊测试方法,其特征在于,包括:

2.如权利要求1所述的基于资源层次关系分组的Restful API模糊测试方法,其特征在于,所述的测试准备阶段包括如下步骤:

3.根据权利要求1所述的一种基于资源层次关系分组的Restful API黑盒模糊测试方法,其特征在于,模糊测试阶段,具体实现如下:

4.如权利要求2所述的基于资源层次关系分组的Restful API模糊测试方法,其特征在于,所述的步骤S2-2中,遍历一次API请求操作组群OTG会生成四个测试序列:首先是固定模板对必选参数赋值的测试序列,接着是固定模板对必选参数赋值和部分可选参数赋值的测试序列,然后是随机生成对必选参数赋值的测试序列,最后是随机对必选参数赋值和部分可选参数赋值的测试序列,将生成的四个测试序列TS做好标记后,合并为一个测试序列TS;TS:{OT1,…,OTi,OTi+1,…,OTj,OTj+1,…,OTz,OTz+1,…,OTn},标记如下:OT1到OTi属于固定模板对必选参数赋值子测试序列STS1,OTi+1到OTj属于固定模板对必选参数赋值和部分可选参数赋值子测试序列STS2,OTj+1到OTz属于随机生成对必选参数赋值子测试序列STS3,OTz+1到OTn属于随机对必选参数赋值和部分可选参数赋值子测试序列STS4。

5.如权利要求2所述的基于资源层次关系分组的Restful API模糊测试方法,其特征在于,所述的步骤S2-2中,按照固定模板顺序生成序列时,首先根据CRUD语义设计一个固定的模板来生成测试序列,然后根据API请求操作组群内每一个API资源标识符集合RICollection的长度进行排序,然后再按照固定的请求顺序GET-POST-PUT-PATCH-DELETE进行排序,排好序后遍历API组群内的API请求操作模板OT,对API请求操作模板OT进行克隆,将克隆出来的API请求操作模板OT加入到测试序列TS中。

6.如权利要求2所述的基于资源层次关系分组的Restful API模糊测试方法,其特征在于,所述的步骤S2-2中,按照随机顺序生成序列时,分为以下两种:一种是将请求路径endpoint相同的API请求操作模板的OT随机打乱在遍历;另一种是将该API请求操作组群OTG内所有的API请求操作模板OT随机打乱然后在遍历;随机选择这两种方式,然后遍历API组群内的API请求操作模板OT,对API请求操作模板OT进行克隆,将克隆出来的API请求操作模板OT加入到测试序列TS中。

7.如权利要求2所述的基于资源层次关系分组的Restful API模糊测试方法,其特征在于,所述的步骤S2-3中,对不同类型的参数具有不同的赋值策略,具体如下:

8.如权利要求1所述的基于资源层次关系分组的Restful API模糊测试方法,其特征在于,所述的结果信息反馈阶段,具体实现如下:

...

【技术特征摘要】

1.一种基于资源层次关系分组的restful api模糊测试方法,其特征在于,包括:

2.如权利要求1所述的基于资源层次关系分组的restful api模糊测试方法,其特征在于,所述的测试准备阶段包括如下步骤:

3.根据权利要求1所述的一种基于资源层次关系分组的restful api黑盒模糊测试方法,其特征在于,模糊测试阶段,具体实现如下:

4.如权利要求2所述的基于资源层次关系分组的restful api模糊测试方法,其特征在于,所述的步骤s2-2中,遍历一次api请求操作组群otg会生成四个测试序列:首先是固定模板对必选参数赋值的测试序列,接着是固定模板对必选参数赋值和部分可选参数赋值的测试序列,然后是随机生成对必选参数赋值的测试序列,最后是随机对必选参数赋值和部分可选参数赋值的测试序列,将生成的四个测试序列ts做好标记后,合并为一个测试序列ts;ts:{ot1,…,oti,oti+1,…,otj,otj+1,…,otz,otz+1,…,otn},标记如下:ot1到oti属于固定模板对必选参数赋值子测试序列sts1,oti+1到otj属于固定模板对必选参数赋值和部分可选参数赋值子测试序列sts2,otj+1到otz属于随机生成对必选参数赋值子测试序列sts3,otz+1到otn属于随机对必选参数赋值和部分可选参数赋值子测试序列sts4。

5.如权利要求2所述的基于资源层次关系分组的restfu...

【专利技术属性】
技术研发人员:徐向华刘涛
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1