当前位置: 首页 > news >正文

[论文阅读] 软件工程 | REST API模糊测试的“标准化革命”——WFC与WFD如何破解行业三大痛点

REST API模糊测试的“标准化革命”——WFC与WFD如何破解行业三大痛点

论文信息

  • 论文原标题:Web Fuzzing Commons and Dataset: Standardizing and Scaling REST API Fuzz Testing Evaluation
  • 主要作者及研究机构:(根据论文预印本信息整理)Luca Marcelli(瑞典查尔姆斯理工大学)、Andrea Arcuri(瑞典查尔姆斯理工大学)、其他合作作者(含工业界研究者)
  • APA引文格式:Marcelli, L., Arcuri, A., & [合作作者]. (2025). Web Fuzzing Commons and Dataset: Standardizing and Scaling REST API Fuzz Testing Evaluation. arXiv Preprint arXiv:2509.01612. https://doi.org/10.48550/arXiv.2509.01612
  • 论文类型:学术预印本(计算机科学-软件工程领域)
  • 发布平台:arXiv(https://arxiv.org/pdf/2509.01612)

一段话总结

论文针对当前REST API模糊测试中“认证配置各搞一套、故障分类没有标准、实验案例难复现”的三大核心痛点,提出了“Web Fuzzing Commons(WFC)”和“Web Fuzzing Dataset(WFD)”两大解决方案——WFC通过声明式认证配置和标准化故障报告,让不同工具“说同一种话”;WFD提供36个可复现的JVM开源API及完整实验脚手架;团队还通过2160次实验(36个API×6个工具×10次重复)对比了EvoMaster、RESTler等主流工具,证实了方案的有效性,最终为REST API模糊测试提供了标准化框架和公平对比的“基准线”。

思维导图

在这里插入图片描述

研究背景

咱们先打个比方:如果把REST API比作“餐厅服务员”(负责接收用户请求、返回服务结果),那模糊测试就是“找茬顾客”——故意发各种奇怪的请求,看服务员会不会出错(比如崩溃、返回错误数据)。现在云应用里,REST API占了后端服务的“半壁江山”,所以“找茬”的质量直接决定了系统的稳定性。

但之前这个“找茬”过程特别混乱,就像餐饮业没有统一规则:

  1. 进门暗号不统一:有些餐厅(API)要刷身份证(静态token),有些要实时扫码(动态token),但“找茬顾客”(测试工具)每次都得学新暗号——比如用EvoMaster要写一段代码,用RESTler又要改配置文件,换工具就等于重来,效率极低。
  2. 判断“出错”的标准乱:有人觉得“摔盘子(500状态码)才算错”,但“上错菜(返回数据和预期不符)”“慢上菜(响应超时)”却不算——之前的工具只盯着500状态码,漏了很多实际问题,而且报告格式各异,想对比两个工具的效果都得手动整理数据。
  3. 测试的“餐厅”太少:之前大家只在3-5家“小餐馆”(简单API)里测试,要么用在线API(可能突然限流、改规则),导致别人想复现实验结果根本不可能——就像我说“某家餐厅服务差”,但没说哪家、在哪,别人怎么验证?

这些问题导致REST API模糊测试“看起来热闹,实际难落地”:学术研究没法公平对比工具,工业界用工具得反复适配,整个领域进步缓慢。这篇论文就是要解决这些“无规则”的痛点。

创新点

这篇论文的亮点就像给混乱的“餐饮业”立了三个关键规则,每个都很实在:

  1. 首次实现“认证+故障”双标准化:之前要么只解决认证,要么只解决故障统计,这篇论文的WFC把两者结合,还给出可直接用的工具(JSON Schema、HTML报告),不是“纸上谈兵”。
  2. 最大规模可复现的API数据集:之前的数据集最多14个API,还没有完整的运行环境;WFD给了36个真实JVM API,每个都配Docker(一键启动)、覆盖率统计工具(JaCoCo),甚至自动化脚本,别人拿过去就能跑实验,不用自己搭环境。
  3. 最全面的工具实证研究:第一次用36个API、10次重复实验(共2160次)对比6个主流工具,还指出了之前研究的“猫腻”——比如有些论文故意选对自己工具友好的API(cherry-picking),这篇直接给出“不能这么选”的具体指导。
  4. 落地性极强:所有方案都开源,WFC能直接集成到现有工具,WFD能直接用于实验,不是纯理论——就像不仅定了餐饮业规则,还给了“统一菜单模板”“服务员培训手册”,拿来就能用。

研究方法和思路

论文的研究思路就像“发现问题→设计方案→验证方案→给出指导”,步骤特别清晰,尤其是创新部分的细节很到位:

第一步:调研痛点(摸清混乱根源)

  • 分析了23个主流REST API模糊测试工具,发现只有6个支持动态认证,且每个配置方式都不同;
  • 梳理了近5年的相关论文,发现70%的研究只用了少于10个API,且80%没有公开实验代码,复现率极低;
  • 总结出“认证、故障、案例”三大核心痛点,确定解决方案的方向:标准化+可复现。

第二步:设计WFC(解决“规则乱”问题)

分两部分落地,每步都考虑实用性:

  1. 认证标准化
    • 用YAML/TOML写配置文件(不用写代码),比如定义“登录端点是/login,token从响应的/accessToken字段里拿,前缀加Bearer ”;
    • 用JSON Schema验证配置文件(避免写错),还自动生成Java、Python解析代码,工具集成时直接用;
  2. 故障标准化
    • 整理12类常见故障(比如F100=500状态码、F101=返回数据不符合Schema),每个给唯一编码;
    • 定义故障报告的JSON格式(必须包含工具名、故障编码、受影响的API端点等),还能生成HTML可视化报告(看覆盖率、故障分布更直观);
  3. 开源分发:把WFC放到GitHub、Maven(JVM工具能直接引入)、Zenodo(版本归档,避免后续改动)。

第三步:构建WFD(解决“案例少”问题)

  1. 筛选API:从开源社区选36个JVM生态的真实API(Java/Kotlin),覆盖政府(如德国疫情追踪API)、商业工具(如语言检查工具languagetool),确保有简单有复杂,还有15个需认证的;
  2. 搭实验环境
    • 每个API写Docker Compose文件(一键启动API和依赖的数据库,比如PostgreSQL、MongoDB,还带初始化数据);
    • 集成JaCoCo(统计代码覆盖率)、mitmproxy(记录所有HTTP请求,算端点覆盖率);
  3. 写自动化脚本:Bash脚本实现“启动API→跑测试→收集数据→停API”全流程,还支持并行实验(改改端口就能同时跑多个API的测试)。

第四步:实证研究(验证方案有效)

  1. 选工具:挑6个有代表性的工具——工业界常用的(RESTler、Schemathesis,GitHub星数2000+)、学术前沿的(LLamaRestTest、EmRest)、标杆工具(EvoMaster,之前研究里表现最好);
  2. 定参数:每个工具测每个API跑1小时,重复10次(减少偶然误差),共36×6×10=2160次实验,记录3个指标:2xx端点覆盖率(能成功调用的端点比例)、500故障数、代码覆盖率;
  3. 分析结果:用统计学方法(Friedman测试)验证工具差异,还找失败原因(比如某工具不支持OpenAPI 3.x的路径前缀,导致在很多API上崩溃)。

主要成果和贡献

这部分用大白话讲就是:这篇论文给领域带来了“三个能用、一个明白”,价值很实在。

1. 核心成果(表格归纳)

类别具体内容
研究问题(RQ)1. 能否用WFC统一认证与故障报告?2. WFD能否支持大规模可复现实验?3. 6大工具在WFD上表现如何?
对比实验设计36个API×6个工具×10次重复=2160次实验,1小时/实验,3个核心指标
关键实验结论1. EvoMaster最优:2xx覆盖率57.2%、代码覆盖率45.5%(是最差工具的3倍+);2. 工具差异显著(p<0.001);3. 40%工具因Schema兼容性崩溃
开源资源WFC GitHub:https://github.com/WebFuzzing/Commons;WFD GitHub:https://github.com/WebFuzzing/Dataset

2. 实实在在的价值

  • 对学术研究者:不用再自己找API、搭环境——拿WFD就能跑实验,用WFC就能统一数据格式,对比工具更公平,不用再“自说自话”;
  • 对工业界工程师:不用为每个测试工具写认证代码——用WFC的YAML配置,换工具也不用改;故障报告能直接对比,知道哪个工具测得更全;
  • 对整个领域:有了“统一语言”和“标准测试场”,大家能聚焦“怎么把测试做得更好”,而不是“怎么适配工具/复现实验”——就像餐饮业有了统一规则,大家比的是服务质量,不是比谁的规则更复杂。

关键问题

1. WFC到底怎么解决“认证配置乱”的问题?举个例子?

答:比如测试“博客API”(需要动态token),用WFC只需写一个YAML配置文件:

auth:type: dynamiclogin_endpoint: /api/loginlogin_method: POSTlogin_body: '{"username":"test","password":"123"}'token_extract:source: response_jsonpath: /accessToken  # 从登录响应的accessToken字段拿tokenprefix: "Bearer "   # token前缀加Bearer 

不管是EvoMaster还是RESTler,只要支持WFC,导入这个文件就能自动处理认证——不用给每个工具写不同的代码,这就是“统一配置”的好处。

2. WFD比之前的API数据集好在哪?比如和EMB(14个API)比?

答:有三个核心优势:① 规模大:36个API(是EMB的2.6倍),代码量65万行,端点1487个,更贴近真实场景;② 可复现:每个API都有Docker,一键启动,不用自己装依赖、配数据库;③ 支持认证:15个需认证的API,EMB几乎没有,能测更真实的场景。

3. EvoMaster表现最好,核心原因是什么?对工程师选工具有用吗?

答:核心原因有两个:① 支持WFC的动态认证,能测15个需认证API(其他工具要么不支持,要么配置错);② 能处理“不完美的Schema”——真实API的Schema常缺字段描述,EvoMaster能自动兼容,其他工具会直接崩溃。对工程师有用:如果要测需认证的复杂API,优先选EvoMaster;如果是简单无认证API,RESTler、Schemathesis也能用。

4. 这篇论文的方案能直接用到实际工作中吗?比如我是后端测试工程师。

答:完全能!① 用WFC:给团队的测试工具统一配置认证和故障报告,比如用WFC的HTML报告看测试覆盖率,不用再手动整理Excel;② 用WFD:如果要验证新测试工具的效果,拿WFD里的API先测,看看工具在已知场景下的表现,再用到公司项目里,减少试错成本。

总结

这篇论文没有搞复杂的理论,而是聚焦REST API模糊测试的“真痛点”——认证乱、故障乱、实验难复现,给出了“真解决方案”:WFC(标准化工具)+ WFD(可复现数据集)。通过2160次大规模实验,不仅证实了方案的有效性,还指出了之前研究的“坑”(比如cherry-picking API),给出了实操指导。

它的价值不在于提出新的测试算法,而在于“统一规则”——就像给混乱的行业立了标准,让学术研究能公平对比,工业界能高效落地,最终推动整个REST API模糊测试领域从“各自为战”走向“协同进步”。

http://www.xdnf.cn/news/1457551.html

相关文章:

  • 【论文阅读】-《Besting the Black-Box: Barrier Zones for Adversarial Example Defense》
  • AutoLayout与Masonry:简化iOS布局
  • (E题|AI 辅助智能体测)2025年高教杯全国大学生数学建模国赛解题思路|完整代码论文集合
  • 解密llama.cpp:Prompt Processing如何实现高效推理?
  • Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装
  • Scikit-learn Python机器学习 - 特征预处理 - 归一化 (Normalization):MinMaxScaler
  • 孩子学手机里的坏毛病,怎样限制他打开某些APP?
  • Flutter 3.35.2 以上版本中 数字转字符串的方法指南
  • 机器学习基础-day05-深度学习框架PyTorch的tensor及PyTorch进行线性回归
  • 猫头虎AI 荐研|腾讯开源长篇叙事音频生成模型 AudioStory:统一模型,让 AI 会讲故事
  • 数据结构 之 【哈希的相关概念】
  • npm/pnpm软链接的优点和使用场景
  • 2025精选榜:4款好用的企业即时通讯软件推荐!安全有保障
  • 【Proteus仿真】AT89C51单片机中断系列仿真——INT0中断控制LED小灯/INT0和INT1中断控制数码管
  • 小白也能看懂,HTTP中的文件上传与下载到底发生了什么?
  • Spring 框架(IoC、AOP、Spring Boot) 的必会知识点汇总
  • 2025 年高教社杯全国大学生数学建模竞赛C 题 NIPT 的时点选择与胎儿的异常判定 完整成品思路模型代码分享,全网首发高质量!!!
  • 【笔记】AI Agent发展趋势
  • PostgreSQL与SQL Server:为什么 PostgreSQL遥遥领先
  • 异地多活架构:从“机房炸了”到“用户无感”的逆袭之路
  • Linux里面安装Genetic Algorithm Toolbox for MATLAB R2023b
  • unittest自动化测试框架详解
  • c# .net中using的使用
  • vue3入门- script setup详解下
  • (C题|NIPT 的时点选择与胎儿的异常判定)2025年高教杯全国大学生数学建模国赛解题思路|完整代码论文集合
  • 信息化安全性测试中漏洞扫描的定义与核心目的
  • 【DINOv3教程2-热力图】使用DINOv3直接生成图像热力图【附源码与详解】
  • Linux高手才知道的C++高性能I/O秘诀:Vector I/O与DMA深度解析
  • STM32实践项目(激光炮台)
  • git fetch 和 git pull 的区别