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

如何用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。

  1. 从发布页面下载适合你操作系统的原生二进制文件:CATS releases
  2. 将下载的文件添加到PATH,以便像其他命令行工具一样执行:
sudo cp cats /usr/local/bin/cats
  1. 为了获得自动补全功能,可以下载cats/_autocomplete脚本并执行:
source cats_autocomplete
  1. 要使自动补全持久化,可以将上述命令添加到.zshrc.bashrc文件中,但要确保提供cats_autocomplete脚本的完整路径。
Windows系统安装

Windows系统没有原生二进制文件,但可以使用uberjar版本,这需要安装Java 25+。

java -jar cats.jar
从源代码构建

你也可以在本地从源代码构建CATS。需要Java 21+环境,Maven已捆绑。

  1. 首先确保执行./mvnw clean
  2. 使用以下Maven命令构建uberjar:
./mvnw package -Dquarkus.package.type=uber-jar
  1. target文件夹中会生成cats-runner.jar,可以通过以下命令运行:
java -jar cats-runner.jar ...
  1. 如果你使用GraalVM Java版本,还可以构建原生镜像:
./mvnw package -Pnative

CATS基本使用方法

克隆项目仓库

首先,克隆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)

以上资料如何领取?

http://www.jsqmd.com/news/710836/

相关文章:

  • WCF webHttpBinding is open for web browser and wpf
  • LLM工具调用面试篇4
  • Box86深度解析:ARM架构上的x86用户空间模拟器技术实现机制
  • 英语单词发音MP3音频批量下载方案:构建海量语音库的技术实现
  • 突破QQ音乐限制:高效QMCFLAC转MP3完整指南
  • HCLA第五次作业
  • 深度解析:如何通过三层架构设计实现Cursor Pro功能的技术实现方案
  • 5分钟解锁Windows桌面新美学:用TranslucentTB打造你的专属透明任务栏
  • 山东大学软件学院项目实训-基于语言大模型的智能居家养老健康守护系统-个人博客(三)
  • 5分钟搞定!魔兽争霸III WarcraftHelper插件完全指南:解锁300帧+宽屏完美体验
  • 告别调参玄学:用PANNs预训练模型搞定音频分类,附AudioSet实战代码
  • 第八届智源大会即将在6月12日-13日正式开启
  • SeanLib系列函数库-W25QXX
  • 从LeetCode到真实项目:DAG(有向无环图)在任务调度和依赖管理中的实战避坑指南
  • 人工海马网络(AHN)架构解析与长序列处理优化
  • 写给Ivy(我自己你信吗:))啊······
  • Bibata Gruvbox Yellow光标主题:Linux桌面美化与视觉统一方案
  • 2026降AI率工具实测:AI占比90%也能稳降到个位数
  • 终极指南:用Ryujinx模拟器在电脑上免费畅玩Switch游戏的完整攻略
  • Java 基础(十一)反射
  • SILENTTRINITY:基于Python异步架构的现代C2渗透测试框架解析
  • Windows电脑终极指南:如何用APK安装器直接运行安卓应用
  • 【Python】错误和异常
  • 亲测5款论文降AI工具:AIGC疑似度从90%降到4%实用指南
  • LycheeMemory:高效处理长上下文任务的创新解决方案
  • 星穹铁道跃迁记录分析工具:5分钟掌握抽卡数据可视化
  • Git 命令大全测试
  • 后端全栈轻松写前端!用 Vue,自动生成可维护 React
  • 终极RPG Maker解密工具:如何快速提取游戏资源与项目文件
  • 别再只用filter: blur()了!聊聊backdrop-filter在Vue3音乐播放器项目中的实战应用