CN111159044B - 基于特征类型的自动化移动端rest协议模糊测试方法 - Google Patents

基于特征类型的自动化移动端rest协议模糊测试方法 Download PDF

Info

Publication number
CN111159044B
CN111159044B CN201911411221.7A CN201911411221A CN111159044B CN 111159044 B CN111159044 B CN 111159044B CN 201911411221 A CN201911411221 A CN 201911411221A CN 111159044 B CN111159044 B CN 111159044B
Authority
CN
China
Prior art keywords
interface
parameter
test
fuzzy
protocol
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
Application number
CN201911411221.7A
Other languages
English (en)
Other versions
CN111159044A (zh
Inventor
夏鸣远
杨扬
戚正伟
姚朋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Tuotang Mdt Infotech Ltd
Original Assignee
Shanghai Tuotang Mdt Infotech Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Tuotang Mdt Infotech Ltd filed Critical Shanghai Tuotang Mdt Infotech Ltd
Priority to CN201911411221.7A priority Critical patent/CN111159044B/zh
Publication of CN111159044A publication Critical patent/CN111159044A/zh
Application granted granted Critical
Publication of CN111159044B publication Critical patent/CN111159044B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供了一种基于特征类型的自动化移动端REST协议模糊测试方法,获取REST网络原始请求数据;利用REST协议接口筛选算法,对原始请求数据进行分析,筛选出协议接口;使用参数特征类型识别器,通过精细化参数特征类型模,判定协议接口所有调用参数的特征类型;将原始请求数据、参数的特征类型输入参数变异模糊生成器,生成模糊测试用例程序并执行实际测试,将测试结果与原始请求数据进行比较,识别接口故障,并反馈造成故障的变异参数值。本发明能够找出导致接口故障的特殊变异输入、减少模糊测试时间、找出接口安全渗透威胁,帮助开发者提高REST接口的健壮性、安全性以及性能,提高App REST协议接口的质量。

Description

基于特征类型的自动化移动端REST协议模糊测试方法
技术领域
本发明涉及移动端应用软件(App)测试技术领域,具体地,涉及一种基于特征类型的自动化移动端REST协议模糊测试方法。
背景技术
当今越来越多的移动应用程序形态从原生App慢慢扩展到Hybrid App(原生App中嵌入部分或者完整Web页面),其中Web业务服务系统的复杂度也在不断地上升。手机QQ中大概70%以上的业务是基于Web开发的,例如会员相关业务:主要商城、游戏分发中心、会员特权中心和个性化业务的商城等。大部分移动端应用程序的网络请求接口都是基于HTTPREST协议(Representational state transfer,即表述性状态转移)通过POST、DELETE、PUT、GET方法来执行对应资源的增、删、改、查操作。随着App的业务不断增长,通常一个App需要几百个甚至上千个REST协议接口,以及近万个参数。目前REST协议接口主要依赖人工写测试用例的方式,但无法涵盖特殊值、安全注入等特殊情况,App开发者需要自动化的模糊接口测试方法来进行大规模的特殊值测试,发现REST协议接口的健壮性问题、安全漏洞以及响应性能偏差。
移动领域的接口模糊测试方案大多为针对桌面Web应用的方案,目前主要分为产生式方案以及变异式方案。其中产生式方案要求App开发者提供详细的接口定义文档(接口参数类型、取值范围、返回值的所有情况等)从而通过定义产生特殊情况,例如美国微软公司于2018年提出了一种针对REST协议的Swagger规范接口的模糊测试的工具REST-ler。然而在移动开发快速迭代的开发模式下,接口定义文档大量缺少并不断在变化,产生式方案无法实际使用。变异式方案基于现有的合法的接口调用参数插入特殊值从而产生变异后的测试用例,目前代表性的有BurpSuite,Sulley,Boo-Fuzz或商业AppSpider或Qualys的WAS,可以捕获/重放HTTP流量,解析HTTP请求/响应及其内容,然后使用预定义的试探法或用户定义的规则对它们进行模糊测试。此类方法由于缺少接口定义,普遍对接口参数粗糙地选取预定义的特殊值进行变异,导致变异后的测试用例数量非常多,测试时间非常长,且这些测试用例并不能有效发现接口故障,导致测试效果差。
目前没有发现同本发明类似技术的说明或报道,也尚未收集到国内外类似的资料。
发明内容
本发明针对现有技术中存在的上述不足,提供了一种基于特征类型的自动化移动端REST协议模糊测试方法,该方法讨论了一种移动端App REST协议接口精细化模糊测试技术,属于一种变异式模糊测试方案,用于解决现有变异式方案粗粒度选择变异值带来的测试性能和效果问题。
本发明是通过以下技术方案实现的。
一种基于特征类型的自动化移动端REST协议模糊测试方法,包括:
S1,获取应用程序(App)在移动设备上一段测试时长内的REST网络原始请求数据;
S2,利用REST协议接口筛选算法,对S1中获取的原始请求数据进行分析,筛选出协议接口;
S3,使用参数特征类型识别器,通过精细化参数特征类型模型(REST ParameterType-Value Feature Lattice Model),判定S2中筛选出的协议接口所有调用参数的特征类型;
S4,将S1中获取的原始请求数据、S3中得到的参数的特征类型输入参数变异模糊生成器,生成模糊测试用例程序并执行实际测试,将测试结果与S1中获取的原始请求数据进行比较,识别接口故障,并反馈造成故障的变异参数值。
优选地,所述S1中,使用通用网络抓包工具获取REST网络原始请求数据,所述原始请求数据包括:请求响应的详细网络地址、请求参数、返回参数以及响应时间数据。
优选地,所述S2中,REST协议接口筛选算法,包括:
S21,判断REST网络请求响应的MIME类型,去除MIME中的多媒体类型(图片、视频、音频,具体为image/*,video/*)、样式文件(text/css)、JS代码文件(application/x-javascript)、字体文件(font/*)、二进制数据(application/octet-stream)以及压缩数据(application/zip),保留application/json、text/plain、text/html三类MIME;
S22,对S21中保留的三类MIME的请求的返回数据进行JSON反序列化,并将接口返回数据能够成功反序列化为JSON的请求认定为协议接口。
优选地,所述S3中,参数特征类型识别器采用的精细化参数特征类型模型,包括如下结构:
所述精细化参数特征类型模型通过一个多叉树表示,其中,树的每一个节点为一个参数特征类型,树的最顶层根节点为
Figure BDA0002350012350000031
(上确界),树的所有叶子节点均有一个隐式的子节点⊥(下确界);给定任意一个具体的输入参数值,均可以唯一匹配一条从上确界到下确界的特征类型路径,该路径包含上确界且不包含下确界,路径上的节点类型从顶层自下逐步严格(精细)。
优选地,所述S3中,精细化参数特征类型模型判定所有调用参数的特征类型的方法为:
对输入一个协议接口的原始请求数据进行分析,并获取其中每一个具体参数值的特征类型;如果一个协议接口的某个参数有多个取值,则对多次取值计算得到的特征类型路径进行合并,求取路径的公共部分作为其最终特征类型。
优选地,所述S4中,参数变异模糊生成器生成模糊测试用例程序并执行实际测试的方法为:
S41,对协议接口中的单个参数进行模糊,形成单个参数模糊方案;
S42,对包含多个参数的接口,将S41中的单个参数模糊方案进行组合,生成多参数被测接口的可行模糊方案;
S43,对于S42中生成的多参数被测接口的可行模糊方案,对被测REST协议接口进行批量并行测试,得到接口模糊测试结果;
S44,将S43中得到的模糊测试结果与该接口原始请求数据响应值进行比较,得到该接口最优的模糊测试方案。
优选地,所述S41中,对协议接口中的单个参数进行模糊的具体实施过程为:选取任意一个协议接口参数(被测参数),根据S3获取其特征类型,并获取特征类型对应的候选变异值;对于每一个变异值产生一个接口测试用例,将每个用例中仅选取的参数的请求值改为变异值,对其他参数的请求值则直接从原始请求数据中获取。
优选地,所述S42中,对多参数接口,将单个参数模糊方案进行组合的具体实施过程为:对多个参数作为被测参数组,根据S3中获取的特征类型,并获取特征类型对应的候选变异值;对于被测参数组的变异值的每一个组合产生一个接口测试用例,其中,对每个用例中非被测参数的参数值从原始请求数据中获取,将被测参数的参数值改为变异值。
优选地,所述S43中,对被测REST协议接口进行批量并行测试的具体实施过程为:对于S41和S42中产生的所有接口测试用例进行收集,并优先测试S41的用例;其中,对所有用例并行进行测试,考虑到被测服务器可能存在流量控制,如果有多个协议接口的用例并行测试,应交替进行,避免出现短时间内反复请求单个协议接口的大量测试用例的情况。
优选地,所述S44中,将模糊测试结果与原始请求数据响应值进行比较的具体实施过程为:比较每个接口测试用例结果与该接口未变异时请求结果,通过请求返回码(HTTPStatus Code)判断接口是否发生故障;其中,得到该接口最优的模糊测试方案的具体方法为:如果该协议接口所有测试用例的请求返回结果均为2xx(HTTP请求正常)或3xx(HTTP请求重定向),则认定该接口整体未通过模糊测试,并输出该协议接口缺乏参数验证的问题报告。如果测试用例的请求返回结果存在5xx(服务端发生错误导致请求错误),则认定该接口部分为通过模糊测试,并输出返回结果为5xx的测试用例中使用的变异值情况,表明服务端将会在这些特殊参数情况发生故障。同时,对于每个测试用例的请求耗时进行计时,如果请求耗时相比原始请求高且超过50%时,则认定为性能问题,同时输出变异值情况,即该接口将会在给定变异值时发生性能响应问题。如果测试用例的请求返回结果存在4xx(认定为客户端请求参数错误),则认定该接口通过模糊测试,作为该接口最优的模糊测试方案。
与现有技术相比,本发明具有如下有益效果:
本发明提供的基于特征类型的自动化移动端REST协议模糊测试方法,其所有步骤互相依赖,能够实现对App REST协议接口进行高效的全自动化模糊测试。
本发明提供的基于特征类型的自动化移动端REST协议模糊测试方法,应用于移动端App接口开发和测试阶段,能够进行大规模全自动测试,找出导致接口故障的特殊变异输入、减少模糊测试时间、找出接口安全渗透威胁,能广泛地适用于原生App、移动Web App、移动Web混合性App以及基于Web技术的各种小程序(微信、支付宝等),帮助App开发者提高REST接口的健壮性、安全性以及性能,提高App REST协议接口的质量。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明实施例所提供的基于特征类型的自动化移动端REST协议模糊测试方法的流程图;
图2为本发明实施例所提供的基于特征类型的自动化移动端REST协议模糊测试方法中采用的精细化参数特征类型模型结构示意图。
具体实施方式
下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
当今移动端App有大量REST协议接口,接口的复杂度不断提高,为了全自动发现业务接口健壮性、安全性、性能上的不足,需要引入接口模糊测试,本发明实施例针对以上问题,提供了一种基于特征类型的自动化移动端REST协议模糊测试方法。
如图1所示,本发明实施例所提供的基于特征类型的自动化移动端REST协议模糊测试方法,主要包括以下几个步骤:
步骤S1,自动化测试App并记录REST请求数据:获取应用程序(App)在移动设备上一段测试时长内的REST网络原始请求数据;
传统基于接口定义的模糊测试方法需要App开发者提供完整的、精确的接口定义(参数类型、URL、返回值情况等)。然而在移动互联网高速发展的过程中,App的接口功能不断迭代变化,而且一个接口可能由多个内部团队维护,不可能维护接口定义。本发明实施例所提供的方法不需要App开发者提供接口定义,而是全自动地对App进行测试,并且在测试过程中抓取并保存App的REST请求数据,通过后继步骤自动推导出接口定义。本步骤使用一台联网的真实移动设备,首先自动安装App到设备,然后通过成熟的Monkey测试方法自动对App进行交互。期间,通过通用的网络抓包工具(Charles,Mitmproxy,Wireshark,Fiddler等)以网络代理的方式获取App的REST请求数据,这些REST请求数据被保存为通用的HAR格式文件格式(World Wide Web Consortium W3C发布的一个通用标准,存储HTTP交互的完整内容,包括URL、请求及响应数据、响应时间等),作为后继步骤的输入。本发明实施例所提供的方法对于App测试方法以及测试环境没有特殊限制,通过其他测试方法对App进行测试,仅要求提供抓包工具获得的HAR文件同样可以进行后续步骤。
步骤S2,协议接口筛选:利用REST协议接口筛选算法,对步骤S1中获取的原始请求数据进行分析,筛选出协议接口;
通过网络抓包获得的原始REST请求数据会包括App请求的网页、多媒体文件(图片、视频、音频)以及协议接口(例如,搜索,获取订单详情等)。模糊测试仅需要测试协议接口,传统的模糊测试方案需要人工提供协议接口,这导致了此类模糊测试的自动化程度较低,对于目前App成百上千的各个协议接口自动化能大大提高测试效率。本发明实施例提供了协议接口筛选算法,可以直接扫描原始REST请求数据,通过REST请求响应的MIME类型、响应的具体数据进行普适筛选协议接口。本算法首先判断响应MIME类型,去除多媒体类型(图片、视频、音频,具体为image/*,video/*)、样式文件(text/css)、JS代码文件(application/x-javascript)、字体文件(font/*)、二进制数据(application/octet-stream)、压缩数据(application/zip),保留application/json、text/plain、text/html三类MIME。然后算法对这三类的请求的返回数据进行JSON反序列化,接口返回数据能够成功反序列化为JSON的请求即认定为协议接口,失败的请求通常为文本、网页、XML等近似数据。经过不完全统计(国内应用市场下载量过百万的25个App,总计超过两万个接口),本算法明显优于简单通过MIME类型为application/json判断协议接口的方案,因为在实际App的网络请求中,有超过35%的协议接口会采用text/html或者text/plain的MIME类型返回接口数据。本算法筛选后,将从原始请求数据中提取协议接口的请求数据,保存为协议原始请求数据,等待下一步进行协议接口参数的特征类型判断。
步骤S3,精细化参数特征类型判断:使用参数特征类型识别器,通过精细化参数特征类型模型(REST Parameter Type-Value Feature Lattice Model),判定S2中筛选出的协议接口所有调用参数的特征类型;
一个协议接口会包含很多请求参数,参数在接口设计时有一定的类型、格式、取值范围等,多个参数间也存在一定关联要求。在App开发者实现接口时应当对传入参数进行严格的检查,确保符合接口要求。然而大量接口故障都是因为传入参数的检查不完全,或者是传入参数有特殊值导致的(例如字符串中有中文字符、数值性参数出现负数或者小数、日期类型参数出现丢失时区、整数类型参数出现超过可表达整数上下限等问题)。模糊测试方法即通过对传入参数值进行一定规则的变异,插入特殊情况,从而测试接口是否能够正常应对此类特殊情况。然而传统模糊测试方案并不会识别各个参数的类型,直接从一个预定义的字典选取变异数值(例如商业产品BurpSuite的SQL注入模糊测试),导致变异的组合数量非常庞大(例如一个协议接口有15个参数,变异数值字典有10种选择,则仅测试一个参数变异有10*15=150种情况,而两个参数变异的情况为15C2*10*10=10500)。其中大量的变异情况并不会对接口造成影响,例如给一个整数类型的参数传入各种字符串或者SQL注入情况并没有实际意义,因为App开发者仅需要最基本的类型检查即可以阻挡所有这些情况。传统模糊测试因此速度非常慢,在有效测试时间内找到的接口故障非常少。
真实的接口故障通常出现在传入参数符合类型要求但有特殊值出现的情况,本发明实施例提出了“精细化参数特征类型模型”(REST Parameter Type-Value FeatureLattice Model,简称Lattice Model)判断REST协议接口参数的具体特征类型。如图2所示,该模型是由一个多叉树表示,树的每个节点为一个参数特征类型,树的最顶层根节点为
Figure BDA0002350012350000071
(上确界),树的所有叶子节点有一个隐式的子节点⊥(下确界)。给定一个具体的输入参数值,每个节点均能够唯一确定该数值是否满足此节点要求(称为节点能够接受该数值)。例如non-negative int(非负整数)节点能够接受数值10,不能接受数值-10和字符串“答案”。上确界接受所有输入参数值,下确界不接受任何输入参数值。任意一个非叶子节点均能接受所有其子节点能够接受的数值;任意一个子节点接受的数值要求都比父节点严格。因此可以推导本模型的特性:给定任意一个具体的输入参数值,均可以唯一匹配一条从上确界到下确界的路径(包含上确界且不包含下确界),路径上的节点类型从顶自下逐步严格(精细)。表3给出了图2所有节点接受的参数数值的详细情况(仅列举灰色叶节点,白色节点依照本模型特性接受其所有子节点接受的数值)。
本模块对于之前输入的一个协议接口的原始请求数据进行分析,对每一个具体参数值通过模型获取其特征类型。如果一个协议接口的某个参数有多个取值,则对多次取值计算得到的特征类型路径进行合并,求取路径的公共部分作为其最终特征类型。例如某个参数f有在两次调用过程中数值分别为“1.0.0”和“202cb962ac59075b964b07152d234b70”,则根据模型数值“1.0.0”会得到特征路径<
Figure BDA0002350012350000082
String,ASCII,version>而数值“202cb962ac59075b964b07152d234b70”会计算得到特征路径</>
Figure BDA0002350012350000083
String,ASCII,hash,MD5>,从而合并后得到</>
Figure BDA0002350012350000084
String,ASCII>。/>
表3精细化参数特征类型模型参数特征类型列表
Figure BDA0002350012350000081
Figure BDA0002350012350000091
步骤S4,生成模糊方案并测试:将S1中获取的原始请求数据、S3中得到的参数的特征类型输入参数变异模糊生成器,生成模糊测试用例程序并执行实际测试,将测试结果与S1中获取的原始请求数据进行比较,识别接口故障,并反馈造成故障的变异参数值。
本发明实施例中对每个接口,基于原始请求数据以及接口参数的特征类型自动生成模糊测试程序。本发明实施例首先对于接口中的单个参数进行模糊,生成单参数模糊方案。例如,对于接口中预判为Int32型的参数,生成边界值-2147483648和2147483647之外的变异值,对于字符串类型ISO8601时间,生成1970年之前的时间来针对性地测试接口的健壮性。第二,对于多参数接口,本发明实施例将单个参数模糊方案进行组合,生成多参数被测接口的可行模糊方案。例如,对于参数为Int32型和字符串类型ISO8601时间的接口,组合-2147483648和1969-12-31、2147483648和1969-12-31等。第三,对于生成的多参数被测接口的可行模糊方案,对被测REST协议接口进行批量并行测试,得到接口模糊测试结果。第四,将模糊测试结果与该接口网络原始请求数据响应值做比较,得到该接口最优的模糊测试方案,发现接口在健壮性、安全性、性能方面的不足之处。
下面对本发明实施例所提供的基于特征类型的自动化移动端REST协议模糊测试方法有效性进行评估实验。
为验证本发明实施例的有效性,此处选取了中国移动应用市场上25个在不同领域拥有巨大用户基数(百万级以上,最多的达到十亿级)的App,包括金融、新闻、音乐、社交媒体、阅读、购物等。对所有的App进行平均为10分钟的自动化测试(使用移动端自动化Monkey测试方案),同时使用通用网络代理工具采集网络请求数据。总计获得6.6万条以上的网络请求数据(6.2GB的HAR文件,平均每个App收集到2668条网络请求数据),经过筛选算法筛选后,得到超过两万个业务接口请求。基于这些数据进行参数建模,并对每个App进行模糊方案。以一个新闻类App为例,采用基础类型的模型下REST协议接口参数预测结果和对String类型进行精细化分类下REST协议接口参数预测结果对比。传统模糊测试方法会简单地判断71%的参数为字符串类型,而本发明实施例的精细化参数特征类型模型将51%字符串类型进一步精细化识别为为Unicode、Uint32、Non-negative、Int32、Int64、ASCII、EmptyString、Epoch、ISO8601、Version、UUID、MD5、SHA256、SHA1、Path、PackageName。被识别为特征数据类型会大大减少需要考虑的变异值情况,假设上述每个精细化特征类型生成一个候选模糊方案,则传统模糊测试的变异值字典有16种情况。应用本发明实施例后每个参数所需要考虑的情况直接减少了15种,减少了80%以上的模糊测试时间。
实验证明,本发明实施例能够全自动对移动端REST协议接口测试,筛选出REST协议接口,广泛的适用于各类移动端应用,以数据流驱动的方式生成的参数层面的细粒度的、类型感知的模糊测试方案大大减少了模糊测试时间,帮助开发人员尽早的发现应用接口上存在的问题并进行优化,提高开发效率与质量。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。

Claims (7)

1.一种基于特征类型的自动化移动端REST协议模糊测试方法,其特征在于,包括:
S1,获取应用程序在移动设备上一段测试时长内的REST网络原始请求数据;
S2,利用REST协议接口筛选算法,对S1中获取的原始请求数据进行分析,筛选出协议接口;
S3,使用参数特征类型识别器,通过精细化参数特征类型模型,判定S2中筛选出的协议接口所有调用参数的特征类型;
S4,将S1中获取的原始请求数据、S3中得到的参数的特征类型输入参数变异模糊生成器,生成模糊测试用例程序并执行实际测试,将测试结果与S1中获取的原始请求数据进行比较,识别接口故障,并反馈造成故障的变异参数值;
所述S2中,REST协议接口筛选算法,包括:
S21,判断REST网络请求响应的MIME类型,去除MIME中的多媒体类型、样式文件、JS代码文件、字体文件、二进制数据以及压缩数据,保留application/json、text/plain、text/html三类MIME;
S22,对S21中保留的三类MIME的请求的返回数据进行JSON反序列化,并将接口返回数据能够成功反序列化为JSON的请求认定为协议接口;
所述S3中,参数特征类型识别器采用的精细化参数特征类型模型,包括如下结构:
所述精细化参数特征类型模型通过一个多叉树表示,其中,树的每一个节点为一个参数特征类型,树的最顶层根节点为上确界,树的所有叶子节点均有一个隐式的子节点下确界;给定任意一个具体的输入参数值,均可以唯一匹配一条从上确界到下确界的特征类型路径,该路径包含上确界且不包含下确界,路径上的节点类型从顶层自下逐步严格;
所述S4中,参数变异模糊生成器生成模糊测试用例程序并执行实际测试的方法为:
S41,对协议接口中的单个参数进行模糊,形成单个参数模糊方案;
S42,对包含多个参数的接口,将S41中的单个参数模糊方案进行组合,生成多参数被测接口的可行模糊方案;
S43,对于S42中生成的多参数被测接口的可行模糊方案,对被测REST协议接口进行批量并行测试,得到接口模糊测试结果;
S44,将S43中得到的模糊测试结果与该接口原始请求数据响应值进行比较,得到该接口最优的模糊测试方案。
2.根据权利要求1所述的基于特征类型的自动化移动端REST协议模糊测试方法,其特征在于,所述S1中,使用通用网络抓包工具获取REST网络原始请求数据,所述原始请求数据包括:请求响应的详细网络地址、请求参数、返回参数以及响应时间数据。
3.根据权利要求1所述的基于特征类型的自动化移动端REST协议模糊测试方法,其特征在于,所述S3中,精细化参数特征类型模型判定所有调用参数的特征类型的方法为:
对输入一个协议接口的原始请求数据进行分析,并获取其中每一个具体参数值的特征类型;如果一个协议接口的某个参数有多个取值,则对多次取值计算得到的特征类型路径进行合并,求取路径的公共部分作为其最终特征类型。
4.根据权利要求1所述的基于特征类型的自动化移动端REST协议模糊测试方法,其特征在于,所述S41中,对协议接口中的单个参数进行模糊的具体实施过程为:选取任意一个协议接口的参数,根据S3中获取的特征类型,同时获取特征类型对应的候选变异值;对于每一个变异值产生一个接口测试用例,将每个用例中仅选取的参数的请求值改为变异值,对其他参数的请求值则直接从原始请求数据中获取。
5.根据权利要求1所述的基于特征类型的自动化移动端REST协议模糊测试方法,其特征在于,所述S42中,对包含多个参数的接口,将单个参数模糊方案进行组合的具体实施过程为:将多个参数作为被测参数组,根据S3中获取的特征类型,同时获取特征类型对应的候选变异值;对于被测参数组的变异值的每一个组合产生一个接口测试用例,其中,对每个用例中非被测参数的参数值从原始请求数据中获取,将被测参数的参数值改为变异值。
6.根据权利要求1所述的基于特征类型的自动化移动端REST协议模糊测试方法,其特征在于,所述S43中,对被测REST协议接口进行批量并行测试的具体实施过程为:对于S41和S42中产生的所有接口测试用例进行收集,并优先测试S41中产生的接口测试用例,其中,对所有用例并行进行测试并应交替进行。
7.根据权利要求1所述的基于特征类型的自动化移动端REST协议模糊测试方法,其特征在于,所述S44中,将模糊测试结果与原始请求数据响应值进行比较的具体实施过程为:对每个接口测试用例结果与该接口未变异时请求结果进行比较,通过请求返回码判断接口是否发生故障;其中,得到该接口最优的模糊测试方案的具体方法为:如果该协议接口所有测试用例的请求返回结果均为2xx或3xx,则认定该接口整体未通过模糊测试,并输出该协议接口缺乏参数验证的问题报告;如果测试用例的请求返回结果存在5xx,则认定该接口部分为通过模糊测试,并输出返回结果为5xx的测试用例中使用的变异值情况,表明服务端将会在这些特殊参数情况下发生故障;同时,对于每个测试用例的请求耗时进行计时,当请求耗时相比原始请求高且超过50%时,则认定为性能问题,同时输出变异值情况,即该接口将会在给定变异值时发生性能响应问题;如果测试用例的请求返回结果存在4xx,则认定该接口通过模糊测试,作为该接口最优的模糊测试方案。
CN201911411221.7A 2019-12-31 2019-12-31 基于特征类型的自动化移动端rest协议模糊测试方法 Active CN111159044B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911411221.7A CN111159044B (zh) 2019-12-31 2019-12-31 基于特征类型的自动化移动端rest协议模糊测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911411221.7A CN111159044B (zh) 2019-12-31 2019-12-31 基于特征类型的自动化移动端rest协议模糊测试方法

Publications (2)

Publication Number Publication Date
CN111159044A CN111159044A (zh) 2020-05-15
CN111159044B true CN111159044B (zh) 2023-05-23

Family

ID=70560250

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911411221.7A Active CN111159044B (zh) 2019-12-31 2019-12-31 基于特征类型的自动化移动端rest协议模糊测试方法

Country Status (1)

Country Link
CN (1) CN111159044B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858374B (zh) * 2020-07-28 2024-04-09 杭州安恒信息技术股份有限公司 一种实现字体模糊测试的方法、装置和介质
CN112291088B (zh) * 2020-12-22 2022-03-29 全知科技(杭州)有限责任公司 一种用于Web接口自动梳理和归类的方法
CN115687119A (zh) * 2022-10-31 2023-02-03 上海安般信息科技有限公司 一种基于生成和变异方式的接口模糊测试系统
CN115774677B (zh) * 2022-12-20 2024-02-23 上海安般信息科技有限公司 一种基于多参数输入的模糊测试方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105721230A (zh) * 2014-11-30 2016-06-29 中国科学院沈阳自动化研究所 一种面向Modbus协议的模糊测试方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8336102B2 (en) * 2007-06-01 2012-12-18 Microsoft Corporation Delivering malformed data for fuzz testing to software applications
US10176194B2 (en) * 2013-02-19 2019-01-08 Digitalglobe, Inc. Enhanced crowdsourced search and locate platform

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105721230A (zh) * 2014-11-30 2016-06-29 中国科学院沈阳自动化研究所 一种面向Modbus协议的模糊测试方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
赵鑫 ; 巫忠跃 ; 易冬阳 ; 付枭 ; .基于网络协议的模糊测试工具设计.通信技术.2019,(11),全文. *

Also Published As

Publication number Publication date
CN111159044A (zh) 2020-05-15

Similar Documents

Publication Publication Date Title
CN111159044B (zh) 基于特征类型的自动化移动端rest协议模糊测试方法
US10146663B2 (en) Modeling and testing interactions between components of a software system
WO2019100635A1 (zh) 自动化测试脚本的编辑方法、装置、终端设备及存储介质
CN113590497A (zh) 业务服务的测试方法、装置、电子设备及存储介质
CN110825618A (zh) 一种生成测试用例的方法及相关装置
CN110941629B (zh) 元数据处理方法、装置、设备及计算机可读存储介质
CN115982012A (zh) 一种接口管理能力成熟度的评估模型及方法
CN113778864A (zh) 一种测试用例的生成方法和装置、电子设备和存储介质
US20210216903A1 (en) Intelligent Service Test Engine
Yamashita et al. Measuring change impact based on usage profiles
CN115994079A (zh) 测试方法、装置、电子设备、存储介质及程序产品
CN112416800A (zh) 智能合约的测试方法、装置、设备及存储介质
CN113918534A (zh) 一种策略处理系统及方法
CN111124937A (zh) 基于插桩函数辅助提高生成测试用例效率的方法及系统
CN113672233B (zh) 一种基于Redfish的服务器带外管理方法、装置及设备
CN113515715B (zh) 埋点事件编码的生成方法、处理方法及相关设备
CN110175043A (zh) 协议接口代码版本更新通知的生成方法和装置
CN112632440B (zh) 基于水印特征规则串的教师个人主页静态资源生成方法
CN111459984B (zh) 基于流式处理的日志数据处理系统及方法
CN113010339A (zh) 联机交易测试中故障自动处理方法及装置
CN111158654A (zh) 算法调用方法、装置、服务器及存储介质
CN114356786B (zh) 一种基于接口自动生成的iam接口权限验证方法和装置
US20230385181A1 (en) Re-usable web-objects for use with automation tools
CN116755684B (zh) OAS Schema的生成方法、装置、设备及介质
US20230333917A1 (en) Methods for providing compliance indicators for api specifications

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