Endava/cats

GitHub: Endava/cats

基于 OpenAPI 规范的 REST API 模糊测试与负面测试工具,无需编码即可自动生成、运行和报告数千个自愈测试用例。

Stars: 1346 | Forks: 87

CATS logo

![CI](https://img.shields.io/github/actions/workflow/status/Endava/cats/main.yml?style=for-the-badge&logo=git&logoColor=white) [![提交](https://img.shields.io/github/commit-activity/m/Endava/cats?style=for-the-badge&logo=git&logoColor=white)](https://github.com/Endava/cats/pulse) [![许可证](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Java 版本](https://img.shields.io/badge/Java-25+-blue.svg)](https://openjdk.org) [![GraalVM](https://img.shields.io/badge/GraalVM-Native-orange.svg)](https://www.graalvm.org) [![质量门状态](https://sonarcloud.io/api/project_badges/measure?project=cats&metric=alert_status)](https://sonarcloud.io/dashboard?id=cats) [![覆盖率](https://sonarcloud.io/api/project_badges/measure?project=cats&metric=coverage)](https://sonarcloud.io/dashboard?id=cats) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=cats&metric=bugs)](https://sonarcloud.io/dashboard?id=cats) [![代码异味](https://sonarcloud.io/api/project_badges/measure?project=cats&metric=code_smells)](https://sonarcloud.io/dashboard?id=cats)

**REST API fuzzer 和负面测试工具。在几分钟内运行数千个自愈 API 测试,无需编写代码!** - **全面**:测试基于大量场景自动生成,覆盖**每一个**字段和标头 - **智能**:测试根据数据类型和约束生成;每个 Fuzzer 根据被测场景都有特定的预期 - **高度可配置**:高度可定制:您可以过滤特定的 Fuzzer、HTTP 响应代码、HTTP 方法、请求路径,提供业务上下文等等 - **自愈**:随着测试的生成,任何 OpenAPI 规范的更改都会自动被识别 - **易于学习**:学习曲线平缓,配置和语法直观 - **快速**:自动化的编写、运行和报告测试流程,可在几分钟内覆盖数千个场景

# 概述 通过使用简单且极简的语法,加上平缓的学习曲线,CATS(**C**ontract **A**PI **T**esting 和 **S**ecurity,契约 API 测试与安全)使您能够在几分钟内生成数千个 API 测试,**无需编写代码**。 所有测试都基于预定义的 **100+ Fuzzers** 集**自动生成、运行和报告**。 这些 Fuzzers 涵盖了广泛的边界测试和负面场景,从完全随机的大型 Unicode 值到基于请求数据类型和约束精心制作的、依赖于上下文的值。 此外,您可以利用 CATS 动态生成请求负载的特性,编写简单的端到端功能测试。 ## HTML 报告
CATS
## 命令行
CATS
# 关于如何使用 CATS 的教程 这是一些包含如何使用 CATS 的分步指南的文章列表: * [使用 CATS 测试 GitHub API](https://ludovicianul.github.io/posts/github-api-testing/) * [如何编写无需编码的自愈功能测试](https://ludovicianul.github.io/posts/self-healing-api-tests/) # CATS 发现的一些 Bugs - https://github.com/hashicorp/vault/issues/13274 | https://github.com/hashicorp/vault/issues/13273 - https://github.com/hashicorp/vault/issues/13225 | https://github.com/hashicorp/vault/issues/13232 - https://github.com/go-gitea/gitea/issues/19397 | https://github.com/go-gitea/gitea/issues/19398 - https://github.com/go-gitea/gitea/issues/19399 # 安装 ## Homebrew ``` > brew tap endava/tap > brew install cats ``` ## 手动安装 CATS 打包为可执行 JAR 或原生二进制文件。原生二进制文件不需要安装 Java。 下载适合您操作系统的原生二进制文件后,您可以将其添加到 PATH 中,以便像任何其他命令行工具一样执行它: ``` sudo cp cats /usr/local/bin/cats ``` 您还可以通过下载 [cats_autocomplete](cats_autocomplete) 脚本并执行以下命令来获取自动补全功能: ``` source cats_autocomplete ``` 要获得持久的自动补全功能,请将上述行添加到 `.zshrc` 或 `.bashrc` 中,但请确保使用 `cats_autocomplete` 脚本的完整路径。 您也可以查看 `cats_autocomplete` 源码以了解其他设置方式。 Windows 没有原生二进制文件,但您可以使用 uberjar 版本。这需要安装 Java 25+。 您可以以 `java -jar cats.jar` 的方式运行它。 前往 releases 页面下载最新版本:[https://github.com/Endava/cats/releases](https://github.com/Endava/cats/releases)。 ## 从源码构建 您可以在本地机器上从源码构建 CATS。您需要 [Java 21+](https://sdkman.io/jdks)。Maven 已捆绑。 您可以使用以下 Maven 命令将项目构建为 uberjar: `./mvnw package -Dquarkus.package.type=uber-jar` 您将在 `target` 文件夹中得到一个 `cats-runner.jar`。您可以使用 `java -jar cats-runner.jar ...` 运行它。 您也可以使用 [GraalVM Java 版本](https://www.graalvm.org/) 构建原生镜像。 `./mvnw package -Pnative` ### 关于单元测试的说明 在运行单元测试时,您可能会看到一些 `error` 日志消息。这些是测试 Fuzzer 负面场景时的预期行为。 ## 实验性:用于编程使用的 Maven 依赖 CATS(目前)还没有明确支持通过 JUnit 或 TestNG 进行编程使用。 不过,您可以尝试使用与命令行相同的参数运行 `CatsMain` 类。 您必须添加这 2 个依赖项: ``` com.squareup.okhttp3 okhttp 4.11.0 com.endava cats 9.0.3 ``` # 贡献 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
标签:API安全, CISA项目, DevSecOps, Fuzzing, GraalVM, JSON输出, JS文件枚举, OpenAPI, REST API, Swagger, 上游代理, 协议模糊测试, 域名枚举, 域名枚举, 安全测试, 接口安全, 攻击性安全, 服务器监控, 测试工具, 负面测试, 边界测试, 黑盒测试