
أداة اختبار سريع لواجهات REST API واختبار سلبي لنقاط نهاية OpenAPI. تولّد وتنفّذ وتُبلغ عن آلاف الاختبارات ذاتية الإصلاح دون أي جهد برمجي، وتغطي سيناريوهات الحدود والأمان.
وثائق CATS متاحة على https://endava.github.io/cats/
أداة اختبار سلبي وتخمين (fuzzing) لواجهات REST API. شغّل آلاف اختبارات API ذاتية الإصلاح في غضون دقائق دون أي جهد برمجي!
هل أنت ضيق الوقت؟ اطّلع على دليل البدء السريع في دقيقة واحدة!
باستخدام صياغة بسيطة ومختصرة، مع منحنى تعلم سلس، تتيح لك CATS (Contract API Testing and Security) إنشاء آلاف اختبارات API في غضون دقائق دون أي جهد برمجي.
يتم إنشاء جميع الاختبارات وتشغيلها وإعداد تقاريرها تلقائيًا بناءً على مجموعة محددة مسبقًا من أكثر من 160 أداة تخمين (Fuzzer) (بالإضافة إلى 31 مُحوِّل عشوائي للتخمين المستمر).
تغطي أدوات التخمين مجموعة واسعة من اختبارات الحدود، وإكراه الأنواع، والحقن، والسيناريوهات السلبية: من الحمولات الكبيرة من Unicode وأحرف التحكم إلى القيم المعتمدة على السياق المستمدة من أنواع بيانات الطلبات وقيودها، بالإضافة إلى الفحوصات ذات الحالة لـ IDOR، وخاصية العدم التكرارية (idempotency) لـ PUT، واتساق التحديث والقراءة، والتعامل الشرطي مع ETag، وتوافر الموارد المحذوفة، وتعرض البيانات الحساسة.
بشكل افتراضي، ترتّب CATS مسارات POST المُنتِجة قبل العمليات التابعة، وتنفّذ أدوات التخمين في موجات عرض أولًا عبر المسارات، وتعيد استخدام المعرّفات وخطوط الأساس المستفادة من استجابات 2XX في الطلبات اللاحقة، وتؤجّل استدعاءات DELETE الخاصة بـ HappyPath حتى نهاية التشغيل، وتتحقق من صحة الاستجابات مقابل مخططات OpenAPI 3.0 و3.1. يمكنك أيضًا كتابة اختبارات وظيفية من طرف إلى طرف بصيغة YAML باستخدام 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
استخدم --tui على أمر fuzzing عادي لمتابعة التنفيذ وفحص النتائج دون مغادرة الطرفية:
cats --contract openapi.yml --server http://localhost:8080 --tui
تعرض النظرة العامة المسارات، وتكوين التشغيل، ووقت الاستجابة، ورموز استجابة HTTP، والنجاح/التحذيرات/الأخطاء، والـ Fuzzers التي تم تشغيلها باستخدام المصطلحات نفسها المستخدمة في CLI وتقرير HTML. يستخدم جدول الـ fuzzer جميع صفوف الطرفية المتاحة؛ استخدم j/k أو Page Up/Page Down لتصفحه عندما لا تتسع القائمة الكاملة. اضغط 2 لعرض تفاصيل التنفيذ، أو 3 لملخص التنفيذ ونتيجة بوابة الجودة، أو 4 لتفاصيل التنفيذ حسب سبب النتيجة، أو 5 للمسارات المضمّنة، أو 6 للاختبارات المنفذة مرتبة حسب وقت الاستجابة. تفتح صفوف Result Reason وPath الاختبارات المطابقة لها بالضغط على Enter.
استخدم مفاتيح الأسهم أو j/k لتحديد اختبار، واضغط Enter لفحص طلبه واستجابته ونتيجته وتتبعه وأمر إعادة تشغيله في عرض تفصيلي بملء الشاشة. اضغط / في قائمة الاختبارات للبحث في معرّفات الاختبارات والـ fuzzers والمسارات والسيناريوهات وأسباب النتائج والطرق والنتائج ورموز الاستجابة. تصفّي المفاتيح a وe وw وs وi النتائج الكلية والأخطاء والتحذيرات والنتائج الناجحة والنتائج المتخطاة. يمسح Esc أولاً بحثًا نشطًا، وإلا يعود إلى الشاشة السابقة؛ ويفتح 1 النظرة العامة.
اضغط q لمغادرة الواجهة. أثناء تشغيل نشط، يطلب ذلك الإلغاء، ويُنهي الاختبار الحالي حيثما أمكن، ويحافظ على النتائج المكتوبة بالفعل، ويخرج بالحالة 130. بعد انتهاء التنفيذ، يخرج q بشكل طبيعي.
تتطلب TUI طرفية تفاعلية لا تقل عن 80 عمودًا و24 صفًا، ولا يمكن دمجها مع --dryRun. وهي متاحة لأوامر الـ fuzzing المدعومة بـ OpenAPI؛ ويستمر الأمر المستقل template في استخدام مخرجات CLI العادية. تحتفظ TUI افتراضيًا بأحدث 10,000 تفصيل اختبار؛ استخدم --tuiMaxResults لاختيار حد موجب مختلف. تستمر الإحصاءات المجمّعة في تغطية التشغيل الكامل عند التخلص من التفاصيل الأقدم.
هذه قائمة بمقالات تحتوي على أدلة خطوة بخطوة حول كيفية استخدام CATS:
> brew tap endava/tap
> brew install cats
يُقدَّم CATS كملف JAR قابل للتنفيذ أو كملف ثنائي أصلي. لا تحتاج الملفات الثنائية الأصلية إلى تثبيت Java.
بعد تنزيل الملف الثنائي الأصلي الخاص بنظام التشغيل لديك، يمكنك إضافته إلى PATH لتتمكن من تنفيذه كأي أداة أخرى من أدوات سطر الأوامر:
sudo cp cats /usr/local/bin/cats
يمكنك تفعيل إكمال الصدفة (shell completion) في bash أو zsh مباشرةً من الملف التنفيذي:
source <(cats generate-completion)