关键信息
- 分类
- 开发与 Web
- 输入类型
- textarea, text, checkbox, number
- 输出类型
- json
- 样本覆盖
- 4
- 支持 API
- Yes
概览
API 契约变异测试器是一款专为开发者与测试人员设计的安全与健壮性检测工具。通过解析 OpenAPI 3.x 规范文档,它能自动为接口字段生成缺失必填项、越界数值、特殊字符等危险语义变体。你可以仅生成变异测试计划,或直接将这些异常请求发送至真实后端,快速验证 API 的防御性校验是否完善,提前发现潜在的越权或崩溃风险。
适用场景
- •在 API 上线前,需要验证后端接口对异常参数(如负数、特殊字符、空值)的拦截能力时。
- •进行安全审计或渗透测试前,希望自动化生成并执行接口的边界条件测试用例时。
- •重构旧版后端服务后,需确保新的参数校验逻辑与 OpenAPI 契约定义严格一致时。
工作原理
- •解析输入的 OpenAPI 3.x YAML 或 JSON 文档,提取所有接口路径、请求体结构及参数校验规则。
- •基于契约定义生成合法的基准请求,随后对每个字段应用语义变异(如移除必填项、注入非法枚举值或超长字符串)。
- •如果配置了基础 URL 并开启执行选项,工具会携带指定的授权头,将变异请求并发发送至真实后端。
- •收集后端响应状态码,比对契约定义,输出测试报告并标记每个变异请求是被成功防御(defended)还是被意外接受(accepted)。
使用场景
用户案例
1. 生成用户注册接口的变异测试计划
测试工程师- 背景原因
- 团队刚完成用户注册接口的设计,OpenAPI 文档已就绪,但尚未编写异常测试用例。
- 解决问题
- 需要快速列出所有可能的异常参数组合,用于指导后续的测试脚本编写。
- 如何使用
- 将注册接口的 OpenAPI YAML 粘贴到规范输入框,保持基础 URL 为空,将每字段变异数设为 3。
- 示例配置
-
baseUrl: (空) executeMutations: false mutationsPerField: 3 - 效果
- 工具输出 JSON 格式的变异计划,列出了针对 email 注入特殊字符、age 传入负数等变异策略,未发送任何真实请求。
2. 验证订单接口的防御性校验
后端开发- 背景原因
- 开发人员为订单创建接口添加了参数校验逻辑,要求商品数量必须大于 0,且状态必须是指定枚举值。
- 解决问题
- 需要验证测试环境的后端服务是否真的能拦截非法数量和未知的状态枚举。
- 如何使用
- 粘贴 OpenAPI 文档,填写测试环境的基础 URL,勾选“执行变异请求”,并填入测试用的 Bearer Token。
- 示例配置
-
baseUrl: https://api.test.com executeMutations: true authorizationHeader: Bearer test_token_123 - 效果
- 工具向测试环境发送了变异请求。结果显示数量为负数的请求被成功拦截(defended),但传入未知枚举值的请求被意外处理(accepted),提示开发人员修复枚举校验漏洞。
用 Samples 测试
development相关专题
常见问题
支持哪些版本的 OpenAPI 规范?
目前仅支持 OpenAPI 3.x 版本的 YAML 或 JSON 格式文档,暂不支持 Swagger 2.0。
什么是“被防御 (defended)”和“被接受 (accepted)”?
“被防御”指后端正确识别了异常参数并返回了错误状态码(如 400);“被接受”指后端未拦截异常参数,仍返回了成功状态码(如 200),这通常意味着校验存在漏洞。
工具会自动发送请求修改我的真实数据吗?
只有在填写了“基础 URL”并勾选“执行变异请求”时,工具才会向后端发送真实请求。建议在测试环境或沙盒环境中使用,避免污染生产数据。
如何测试需要登录的接口?
可以在“授权头”字段中填入有效的认证信息,例如 Bearer <token>,工具会在发送真实请求时自动携带该请求头。
为什么有些字段没有生成变异请求?
工具会根据“每字段变异数”限制生成的变体数量。此外,如果没有在 OpenAPI 中明确定义字段的类型或约束,工具可能无法生成针对性的语义变异。