
Outil automatisé de fuzzing et de tests négatifs d'API REST pour les endpoints OpenAPI. Génère, exécute et rapporte des milliers de tests auto-réparateurs sans effort de codage, couvrant les scénarios de limites et de sécurité.
CATS documentation is available at https://endava.github.io/cats/
Outil de fuzzing et de tests négatifs pour API REST. Exécutez des milliers de tests d'API auto-réparateurs en quelques minutes sans aucun effort de codage !
Vous manquez de temps ? Consultez le Guide de démarrage rapide en 1 minute !
En utilisant une syntaxe simple et minimale, avec une courbe d'apprentissage douce, CATS (Contract API Testing and Security) vous permet de générer des milliers de tests d'API en quelques minutes avec aucun effort de codage.
Tous les tests sont générés, exécutés et rapportés automatiquement sur la base d'un ensemble prédéfini de plus de 160 Fuzzers (plus 31 mutateurs aléatoires pour le fuzzing continu).
Les Fuzzers couvrent un large éventail de tests aux limites, de coercition de type, d'injection et de scénarios négatifs : des charges utiles Unicode et de caractères de contrôle volumineuses aux valeurs dépendantes du contexte dérivées des types de données et des contraintes des requêtes, ainsi que des vérifications avec état pour l'IDOR, l'idempotence de PUT, la cohérence mise à jour-lecture, la gestion conditionnelle des ETag, la disponibilité des ressources supprimées et l'exposition de données sensibles.
Prêt à l'emploi, CATS ordonne les chemins POST de production avant les opérations dépendantes, exécute les fuzzers par vagues en largeur sur les chemins, réutilise les identifiants et les références de base appris à partir des réponses 2XX dans les requêtes suivantes, reporte les appels DELETE de HappyPath jusqu'à la fin de l'exécution, et valide les réponses par rapport aux schémas OpenAPI 3.0 et 3.1. Vous pouvez également écrire des tests fonctionnels de bout en bout en YAML avec cats run.
# 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
Utilisez --tui sur une commande de fuzzing normale pour suivre l'exécution et inspecter les résultats sans quitter le terminal :
cats --contract openapi.yml --server http://localhost:8080 --tui
La vue d'ensemble affiche Paths, Run configuration, Response time, HTTP Response Codes, Success/Warnings/Errors et Fuzzers run en utilisant la même terminologie que la CLI et le rapport HTML. Le tableau des fuzzers utilise toutes les lignes disponibles du terminal ; utilisez j/k ou Page Up/Page Down pour le parcourir lorsque la liste complète ne tient pas. Appuyez sur 2 pour Execution Details, 3 pour le résumé d'exécution et le résultat du Quality gate, 4 pour Execution Details par Result Reason, 5 pour les Paths inclus, ou 6 pour les tests exécutés triés par Response Time. Les lignes Result Reason et Path ouvrent leurs tests correspondants avec Entrée.
Utilisez les flèches ou j/k pour sélectionner un test, et appuyez sur Entrée pour inspecter sa requête, sa réponse, son résultat, sa trace et sa commande de replay dans une vue détaillée plein écran. Appuyez sur / dans la liste des tests pour rechercher des IDs de test, fuzzers, paths, scénarios, result reasons, méthodes, résultats et codes de réponse. a, e, w, s et i filtrent tous les résultats, les erreurs, les avertissements, les résultats réussis et les résultats ignorés. Échap efface d'abord une recherche active et, sinon, revient à l'écran précédent ; 1 ouvre la vue d'ensemble.
Appuyez sur q pour quitter l'interface. Pendant une exécution active, cela demande l'annulation, termine le test en cours lorsque c'est possible, préserve les résultats déjà écrits et quitte avec le statut 130. Une fois l'exécution terminée, q quitte normalement.
La TUI nécessite un terminal interactif d'au moins 80 colonnes sur 24 lignes et ne peut pas être combinée avec --dryRun. Elle est disponible pour les commandes de fuzzing basées sur OpenAPI ; la commande autonome template continue d'utiliser la sortie CLI normale. La TUI conserve par défaut les 10 000 détails de test les plus récents ; utilisez --tuiMaxResults pour choisir une limite positive différente. Les statistiques agrégées continuent de couvrir l'exécution complète lorsque les anciens détails sont supprimés.