如何用CATS进行API负向测试?从入门到精通的完整教程
如何用CATS进行API负向测试?从入门到精通的完整教程
如何用CATS进行API负向测试?从入门到精通的完整教程
为什么选择CATS进行API负向测试?
API负向测试是确保系统在异常输入下仍能稳定运行的关键环节。CATS凭借其独特优势,成为API负向测试的首选工具:
- 全面覆盖:基于大量场景自动生成测试,覆盖每个字段和头部
- 智能测试:根据数据类型和约束生成测试,每个模糊器都有特定的场景预期
- 高度可配置:提供丰富的自定义选项,可过滤特定模糊器、HTTP响应代码、HTTP方法、请求路径等
- 自修复能力:测试自动生成,任何OpenAPI规范变更都会被自动捕获
- 易于学习:学习曲线平缓,配置和语法直观
- 快速高效:自动完成测试的编写、运行和报告,几分钟内即可覆盖数千个场景
CATS的核心功能展示
直观的测试结果概览
CATS提供了清晰直观的测试结果概览,让你快速了解测试的整体情况。从总测试数、错误数、警告数到成功数,一目了然。
详细的测试执行统计
通过命令行界面,你可以看到详细的测试执行统计信息,包括OpenAPI规范路径、API基本URL、配置的模糊器、HTTP方法范围等。
全面的测试详情
CATS提供了全面的测试详情,包括测试ID、时间戳、场景、预期结果、实际结果、契约路径、模糊器、完整请求路径和HTTP方法等。
请求详情查看
你可以查看请求的详细信息,包括请求头、负载和URL,方便你深入分析测试结果。
测试结果统计分析
CATS还提供了测试结果的统计分析,包括总测试数、错误数、警告数、成功数、执行时间、平均响应时间、运行的模糊器数量、包含的路径数量以及HTTP方法分布等。
快速开始:CATS安装指南
使用Homebrew安装
如果你使用的是macOS系统,可以通过Homebrew快速安装CATS:
brew tap endava/tap brew install cats手动安装
CATS提供可执行JAR和原生二进制文件两种形式。原生二进制文件不需要安装Java。
- 从发布页面下载适合你操作系统的原生二进制文件:CATS releases
- 将下载的文件添加到PATH,以便像其他命令行工具一样执行:
sudo cp cats /usr/local/bin/cats- 为了获得自动补全功能,可以下载cats/_autocomplete脚本并执行:
source cats_autocomplete- 要使自动补全持久化,可以将上述命令添加到
.zshrc或.bashrc文件中,但要确保提供cats_autocomplete脚本的完整路径。
Windows系统安装
Windows系统没有原生二进制文件,但可以使用uberjar版本,这需要安装Java 25+。
java -jar cats.jar从源代码构建
你也可以在本地从源代码构建CATS。需要Java 21+环境,Maven已捆绑。
- 首先确保执行
./mvnw clean - 使用以下Maven命令构建uberjar:
./mvnw package -Dquarkus.package.type=uber-jar- 在
target文件夹中会生成cats-runner.jar,可以通过以下命令运行:
java -jar cats-runner.jar ...- 如果你使用GraalVM Java版本,还可以构建原生镜像:
./mvnw package -PnativeCATS基本使用方法
克隆项目仓库
首先,克隆CATS项目仓库到本地:
git clone https://gitcode.com/gh_mirrors/cat/cats基本命令格式
CATS的基本命令格式如下:
cats [命令] [选项]常用命令
run:运行测试lint:检查OpenAPI规范list:列出可用的模糊器explain:解释模糊器的工作原理generate:生成测试报告validate:验证OpenAPI规范
快速运行测试
使用以下命令快速运行测试:
cats run --contract=path/to/openapi.yaml --server=http://localhost:8080高级配置与优化
过滤测试
CATS提供了多种过滤选项,让你可以只运行特定的测试:
- 按模糊器过滤:
--fuzzers=SqlInjectionInStringFieldsFuzzer,XssInjectionInStringFieldsFuzzer - 按HTTP方法过滤:
--http-methods=POST,PUT - 按路径过滤:
--paths=/users,/products - 按响应代码过滤:
--response-codes=200,201
配置文件
你可以使用配置文件来保存常用的配置选项,避免每次运行都输入大量参数。配置文件可以是YAML或Properties格式。
自定义模糊器
CATS允许你创建自定义模糊器来满足特定的测试需求。你可以参考src/main/java/com/endava/cats/fuzzer/目录下的现有模糊器实现。
CATS测试报告解析
CATS生成的测试报告包含丰富的信息,帮助你深入了解API的表现:
- 总测试数:运行的测试总数
- 错误数:发现的错误数量
- 警告数:发现的警告数量
- 成功数:通过的测试数量
- 执行时间:测试执行的总时间
- 平均响应时间:API的平均响应时间
- 模糊器统计:运行的模糊器数量和类型
- 路径统计:测试的API路径数量
- HTTP方法分布:测试的HTTP方法分布情况
通过分析这些报告数据,你可以快速定位API中的潜在问题,并采取相应的修复措施。
实际案例:使用CATS发现的API漏洞
CATS已经帮助发现了多个知名项目中的API漏洞,例如:
- HashiCorp Vault: Issue 13274, Issue 13273, Issue 13225, Issue 13232
- Gitea: Issue 19397, Issue 19398, Issue 19399
这些案例证明了CATS在API安全测试中的有效性。
总结
CATS是一款功能强大、易于使用的API负向测试工具,它能够帮助你自动生成和运行数千个测试用例,发现API中的潜在问题。无论是API开发者还是测试人员,都可以通过CATS提高API的质量和安全性。
通过本教程,你已经了解了CATS的基本安装、使用方法和高级配置技巧。现在,是时候开始使用CATS来测试你的API了!
如果你想深入了解更多关于CATS的使用技巧,可以参考官方文档或查看项目中的CONTRIBUTING.md文件,了解如何为CATS项目做出贡献。
[【免费下载链接】cats CATS is a REST API Fuzzer and negative testing tool for OpenAPI endpoints. CATS automatically generates, runs and reports tests with minimum configuration and no coding effort. Tests are self-healing and do not require maintenance.
《网络安全从零到精通全套学习大礼包》
96节从入门到精通的全套视频教程免费领取
如果你也想通过学网络安全技术去帮助就业和转行,我可以把我自己亲自录制的96节 从零基础到精通的视频教程以及配套学习资料无偿分享给你。
网络安全学习路线图
想要学习 网络安全,作为新手一定要先按照路线图学习,方向不对,努力白费。对于从来没有接触过网络安全的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线,大家跟着这个路线图学习准没错。
配套实战项目/源码
所有视频教程所涉及的实战项目和项目源码
学习电子书籍
学习网络安全必看的书籍和文章的PDF,市面上网络安全书籍确实太多了,这些是我精选出来的
面试真题/经验
以上资料如何领取?
blog.csdnimg.cn/direct/92a6ab8e26034045b97ae8ac36b2a650.png)
