
OpenAPIエンドポイント向けの自動REST APIファザーおよびネガティブテストツール。コーディング不要で数千の自己修復テストを生成、実行、レポートし、境界やセキュリティのシナリオをカバーします。
CATSのドキュメントはhttps://endava.github.io/cats/で入手できます。
REST APIファザーおよびネガティブテストツール。コーディング不要で、数千の自己修復型APIテストを数分で実行できます!
時間がありませんか?1分間クイックスタートガイドをご覧ください!
シンプルで最小限の構文と緩やかな学習曲線を採用したCATS(Contract API Testing and Security)は、コーディング不要で数千のAPIテストを数分で生成できます。
すべてのテストは、事前定義された160以上のファザー(および継続的ファジング用の31のランダムミューテーター)のセットに基づいて自動的に生成、実行、レポートされます。
ファザーは、境界テスト、型強制、インジェクション、ネガティブシナリオの幅広い範囲をカバーします。具体的には、大規模なUnicodeや制御文字のペイロードから、リクエストのデータ型と制約に由来するコンテキスト依存の値、さらにIDOR、PUTの冪等性、更新-読み取りの一貫性、条件付きETag処理、削除されたリソースの可用性、機密データの露出に関するステートフルなチェックまで含まれます。
CATSは標準で、プロデューサーのPOSTパスを依存する操作より前に並べ、ファザーをパス全体にわたって幅優先のウェーブで実行し、2XXレスポンスから学習した識別子とベースラインを再利用して後続のリクエストに適用し、HappyPathのDELETE呼び出しを実行の最後まで延期し、レスポンスをOpenAPI 3.0および3.1スキーマに対して検証します。また、cats runを使用してYAMLでエンドツーエンドの機能テストを記述することもできます。
# Run the full suite against an OpenAPI contract
cats -c openapi.yml -s http://localhost:8080
# Run a built-in profile (quick, security, compliance, ci, coverage, crash, type-coercion, health-check)
cats -c openapi.yml -s http://localhost:8080 --profile quick
# Run for a fixed time budget, continuing with random mutations if deterministic fuzzers finish early, and enforce a quality gate
cats -c openapi.yml -s http://localhost:8080 --stopAfterTimeInSec 60 --fillTimeBudget --qualityGate "errors<1"
# Lint the OpenAPI contract
cats lint -c openapi.yml
# Inspect dependency-ordered paths or explain a profile/fuzzer
cats list --paths --executionOrder -c openapi.yml
cats explain --type profile security
# Replay a test case or print the equivalent curl command
cats replay Test12
cats replay Test12 --curl
通常のファジングコマンドに --tui を付けると、ターミナルを離れることなく実行状況を追跡し、結果を確認できます:
cats --contract openapi.yml --server http://localhost:8080 --tui
概要には、CLI および HTML レポートと同じ用語を使用して、Paths、Run configuration、Response time、HTTP Response Codes、Success/Warnings/Errors、および実行された Fuzzers が表示されます。ファザーテーブルは利用可能なターミナルの行をすべて使用します。完全なリストが収まらない場合は、j/k または Page Up/Page Down を使用して参照してください。2 を押すと Execution Details、3 を押すと Execution summary と Quality gate result、4 を押すと Result Reason 別の Execution Details、5 を押すと含まれる Paths、6 を押すと Response Time でソートされた実行済みテストが表示されます。Result Reason と Path の行は、Enter で対応するテストを開きます。
矢印キーまたは j/k を使用してテストを選択し、Enter を押すと、そのリクエスト、レスポンス、結果、トレース、およびリプレイコマンドを全画面の詳細ビューで確認できます。テスト一覧で / を押すと、テスト ID、ファザー、パス、シナリオ、結果理由、メソッド、結果、およびレスポンスコードを検索できます。a、e、w、s、および i は、すべて、エラー、警告、成功、およびスキップされた結果をフィルタリングします。Esc はまずアクティブな検索をクリアし、それ以外の場合は前の画面に戻ります。1 を押すと概要が開きます。
q を押すとインターフェースを終了します。実行中の場合、これはキャンセルを要求し、可能な場合は現在のテストを完了し、すでに書き込まれた結果を保持して、ステータス 130 で終了します。実行が終了した後は、q は通常どおり終了します。
TUI には少なくとも 80 列 × 24 行のインタラクティブなターミナルが必要で、--dryRun と組み合わせることはできません。これは OpenAPI ベースのファジングコマンドで利用可能です。スタンドアロンの template コマンドは引き続き通常の CLI 出力を使用します。TUI はデフォルトで最新の 10,000 件のテスト詳細を保持します。別の正の上限を指定するには --tuiMaxResults を使用してください。古い詳細が破棄された場合でも、集計統計は実行全体を引き続きカバーします。
これは CATS の使用方法に関するステップバイステップガイドを含む記事のリストです:
> brew tap endava/tap
> brew install cats
CATS は実行可能な JAR またはネイティブバイナリの両方としてバンドルされています。ネイティブバイナリは Java のインストールを必要としません。
お使いの OS のネイティブバイナリをダウンロードした後、PATH に追加することで、他のコマンドラインツールと同様に実行できます:
sudo cp cats /usr/local/bin/cats
bash または zsh で、バイナリから直接シェル補完を有効にできます:
source <(cats generate-completion)
あるいは、リポジトリから cats_autocomplete スクリプトを source することもできます:
source cats_autocomplete
補完を永続化するには、コマンドを .zshrc または .bashrc に追加してください。
Windows 用のネイティブバイナリはありませんが、uberjar 版を利用できます。これには Java 25 以上がインストールされている必要があります。
java -jar cats.jar として実行できます。
最新バージョンをダウンロードするには、リリースページへアクセスしてください: https://github.com/Endava/cats/releases。
CATS はローカルマシン上でソースからビルドできます。Java 25 が必要です。Maven はすでに同梱されています。
最初のビルドを実行する前に、必ず
./mvnw cleanを実行してください。CATS は OkHttp (com.squareup.okhttp3:okhttp:5.5.0-CATS) と Swagger Parser (io.swagger.parser.v3:swagger-parser-v3:2.1.49-CATS) のパッチ適用済みフォークを使用しており、これらは公式の依存関係バージョンを上書きすることなく、Maven によってlib/からローカルにインストールされます。
次の Maven コマンドを使用して、プロジェクトを uberjar としてビルドできます:
./mvnw package -Dquarkus.package.jar.type=uber-jar -DskipTests
target フォルダに cats-runner.jar が生成されます。java -jar cats-runner.jar ... で実行できます。
GraalVM Java バージョン を使用してネイティブイメージをビルドすることもできます。
./mvnw package -Pnative
ユニットテストの実行中に、いくつかの error ログメッセージが表示される場合があります。これらは Fuzzer のネガティブシナリオをテストする際の想定された動作です。
CATS はデフォルトでサーバー証明書とホスト名を検証します。自己署名証明書を使用する信頼済みのテスト環境では、--insecure を指定して明示的に検証を無効にできます。
相互 TLS には、--sslKeystore、--sslKeystorePwd、--sslKeyPwd を使用します。--sslKeyPwd を省略した場合、CATS は秘密鍵にキーストアのパスワードを使用します。