
أداة اختبار سريع لواجهات REST API واختبار سلبي لنقاط نهاية OpenAPI. تولّد وتنفّذ وتُبلغ عن آلاف الاختبارات ذاتية الإصلاح دون أي جهد برمجي، وتغطي سيناريوهات الحدود والأمان.
وثائق CATS متاحة على https://endava.github.io/cats/
أداة اختبار REST API العشوائي والاختبار السلبي. شغّل آلاف اختبارات API ذاتية الإصلاح في دقائق دون أي جهد برمجي!
هل أنت ضيق الوقت؟ اطّلع على دليل البدء السريع في دقيقة واحدة!
باستخدام صيغة بسيطة ومختصرة، مع منحنى تعلم مسطح، تتيح لك CATS (Contract API Testing and Security) إنشاء آلاف اختبارات API في دقائق دون أي جهد برمجي. يتم إنشاء جميع الاختبارات وتشغيلها وإعداد تقاريرها تلقائيًا بناءً على مجموعة محددة مسبقًا من أكثر من 100 Fuzzer. تغطي Fuzzers مجموعة واسعة من اختبارات الحدود والسيناريوهات السلبية، من قيم Unicode العشوائية الكبيرة بالكامل إلى قيم مصممة بعناية ومعتمدة على السياق بناءً على أنواع بيانات الطلب وقيوده. بل وأكثر من ذلك، يمكنك الاستفادة من حقيقة أن CATS تُنشئ حمولات الطلبات ديناميكيًا وكتابة اختبارات وظيفية بسيطة من طرف إلى طرف.
استخدم --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 للاختبارات المنفذة مرتبة حسب زمن الاستجابة. تفتح صفوف سبب النتيجة والمسار اختباراتها المطابقة بمفتاح 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
يمكنك أيضًا الحصول على الإكمال التلقائي عن طريق تنزيل نص 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.
بالنسبة لـ mutual TLS، استخدم --sslKeystore و--sslKeystorePwd و--sslKeyPwd. إذا تم حذف --sslKeyPwd، تستخدم CATS كلمة مرور keystore للمفتاح الخاص.
تُخفي CATS ترويسات المصادقة ومعاملات الاستعلام الحساسة في التقارير افتراضيًا، وتستبدل قيم الطلبات بعناصر نائبة قابلة لإعادة التشغيل بصيغة $$EnvironmentVariable. وتُنشئ replay.env.example بدون قيم سرية في الدليل الذي يتم تشغيل CATS فيه.
تحمّل CATS تلقائيًا ./.env عند وجوده. استخدم --envFile path/to/cats.env لاختيار ملف مختلف أو --noEnvFile لتعطيل تحميل dotenv في أوامر normal وrandom وfunctional وtemplate وreplay. تأخذ متغيرات بيئة العملية الأولوية على قيم dotenv. استخدم --showSecrets فقط عندما يكون مخرجات التقرير والطرفية غير المُقنّعة مطلوبة صراحةً.