
OpenAPIエンドポイント向けの自動REST APIファザーおよびネガティブテストツール。コーディング不要で数千の自己修復テストを生成、実行、レポートし、境界やセキュリティのシナリオをカバーします。
CATSのドキュメントは https://endava.github.io/cats/ で入手できます。
REST APIファザーおよびネガティブテストツール。コーディング不要で、数千の自己修復型APIテストを数分で実行できます!
時間がないですか? 1分間クイックスタートガイドをご覧ください!
シンプルで最小限の構文と緩やかな学習曲線を持つCATS(Contract API Testing and Security)を使えば、コーディング不要で数千のAPIテストを数分で生成できます。 すべてのテストは、事前定義された100以上のFuzzerのセットに基づいて自動的に生成、実行、レポートされます。 Fuzzerは、完全にランダムな大きなUnicode値から、リクエストのデータ型と制約に基づいて巧みに作成されたコンテキスト依存の値まで、幅広い境界テストとネガティブシナリオをカバーします。 さらに、CATSがリクエストペイロードを動的に生成するという特性を活かして、シンプルなエンドツーエンドの機能テストを書くこともできます。
通常のファジングコマンドで --tui を使用すると、ターミナルを離れることなく実行を追跡し、結果を検査できます:
cats --contract openapi.yml --server http://localhost:8080 --tui
概要には、Paths、Run configuration、Response time、HTTP Response Codes、Success/Warnings/Errors、および実行されたFuzzerが、CLIとHTMLレポートと同じ用語で表示されます。Fuzzerテーブルは利用可能なすべてのターミナル行を使用します。完全なリストが収まらない場合は、j/k または Page Up/Page Down で閲覧できます。2 を押すとExecution Details、3 でExecution summaryとQuality gate result、4 でExecution Details by Result Reason、5 でPaths included、6 でResponse Time順にソートされた実行済みテストが表示されます。Result ReasonとPathの行は、Enterで対応するテストを開きます。
矢印キーまたは j/k でテストを選択し、Enterを押すと、そのリクエスト、レスポンス、結果、トレース、リプレイコマンドを全画面の詳細ビューで検査できます。テストリストで / を押すと、テストID、Fuzzer、パス、シナリオ、結果理由、メソッド、結果、レスポンスコードを検索できます。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
cats_autocomplete スクリプトをダウンロードして、以下のようにすることでオートコンプリートを取得することもできます:
source cats_autocomplete
永続的なオートコンプリートを取得するには、上記の行を .zshrc または .bashrc に追加しますが、cats_autocomplete スクリプトの完全修飾パスを指定するようにしてください。
代替のセットアップについては、cats_autocomplete のソースも確認できます。
Windows用のネイティブバイナリはありませんが、uberjarバージョンを使用できます。これにはJava 25+がインストールされている必要があります。
java -jar cats.jar として実行できます。
最新バージョンをダウンロードするには、リリースページにアクセスしてください:https://github.com/Endava/cats/releases。
CATSはデフォルトでサーバー証明書とホスト名を検証します。自己署名証明書を使用する信頼されたテスト環境では、--insecure で検証を明示的に無効にできます。
相互TLSには、--sslKeystore、--sslKeystorePwd、--sslKeyPwd を使用します。--sslKeyPwd を省略した場合、CATSは秘密鍵にキーストアのパスワードを使用します。
CATSはデフォルトでレポート内の認証ヘッダーと機密クエリパラメータをマスクし、リクエスト値をリプレイ可能な $$EnvironmentVariable プレースホルダーに置き換えます。CATSが実行されるディレクトリに、シークレット値を含まない replay.env.example を作成します。
CATSは、存在する場合 ./.env を自動的に読み込みます。別のファイルを選択するには --envFile path/to/cats.env を使用するか、通常、ランダム、機能、テンプレート、リプレイの各コマンドでdotenvの読み込みを無効にするには --noEnvFile を使用します。プロセス環境変数はdotenvの値より優先されます。マスクされていないレポートとコンソール出力が明示的に必要な場合にのみ --showSecrets を使用してください。
CATSは --callTimeout を超える呼び出しをキャンセルします(デフォルトは20秒)。また、展開されたレスポンスボディの最大 --maxResponseBytes(デフォルトは10 MiB)までしかキャプチャしません。いずれかのオプションを 0 に設定すると、その制限が無効になります。切り詰められたレスポンスはステータスとヘッダーを保持し、ボディ全体の検証をスキップし、専用の警告とともに報告されます。
--dryRun が有効な場合、CATSはローカル設定を解析し、ターゲットサービス、WFCログインエンドポイント、認証スクリプト、更新チェック、レポートライターを呼び出すことなくテスト数を計算します。
ローカルマシンでCATSをソースからビルドできます。Java 25 が必要です。Mavenはすでにバンドルされています。
最初のビルドを実行する前に、必ず
./mvnw cleanを実行してください。CATSは OKHttp のフォークを使用しており、これは5.X.X-CATSバージョンでローカルにインストールされるため、公式バージョンを上書きする心配はありません。
プロジェクトをuberjarとしてビルドするには、以下のMavenコマンドを使用できます:
./mvnw package -Dquarkus.package.type=uber-jar
target フォルダに cats-runner.jar が生成されます。java -jar cats-runner.jar ... で実行できます。
GraalVM Javaバージョン を使用してネイティブイメージをビルドすることもできます。
./mvnw package -Pnative
ユニットテストの実行中に、いくつかの error ログメッセージが表示される場合があります。これらはFuzzerのネガティブシナリオをテストするための想定された動作です。
CONTRIBUTING.md を参照してください。