ملخص سريع (TL;DR)
Newman، أداة تشغيل CLI الرسمية لـ Postman، تتطلب npm و Node.js في مسار CI الخاص بك. هذا يقدم مخاطر لسلسلة التوريد، ويضيف عبئًا إضافيًا لإدارة التبعيات، وفي الطبقة المجانية من Postman، أصبحت عمليات تشغيل المجموعات عبر API محدودة المعدل. يغطي هذا الدليل ثلاثة بدائل لتشغيل اختبارات API في CI بدون Newman: أداة تشغيل Apidog CLI، و k6، و Hurl. Apidog هو المسار الأكثر مباشرة إذا كان لديك مجموعات Postman موجودة لأنه يستوردها أصلاً وليس لديه قيود على عدد التشغيلات.
💡Apidog هي منصة مجانية ومتكاملة لتطوير واجهات برمجة التطبيقات (API). يقوم أداة تشغيل CLI الخاصة بها بتنفيذ مجموعات متوافقة مع Postman في CI بدون تبعية npm وبدون قيود على عدد التشغيلات. جرب Apidog مجانًا، لا يلزم وجود بطاقة ائتمان.
مقدمة
كانت Newman فكرة جيدة. أداة سطر أوامر (CLI) تقوم بتشغيل مجموعات Postman في مسارات CI جعلت اختبار واجهات برمجة التطبيقات (API) محمولاً وقابلاً للأتمتة. جاءت مع ثقة علامة Postman التجارية، وتكاملت مع GitHub Actions عبر إجراء مجتمعي شائع، وعملت بشكل جيد بما يكفي لدرجة أن العديد من الفرق بنت استراتيجيتها الكاملة لأتمتة اختبارات API حولها.
ثم ظهرت ثلاث مشاكل:
- Newman هي حزمة npm. كل مسار يستخدمها يسحب من سجل npm وقت البناء. أظهر اختراق
ua-parser-jsفي عام 2021 وحادثةnode-ipcفي عام 2022 أن هجمات سلسلة التوريد عبر npm ليست نظرية. بدأت فرق الأمان تتساءل لماذا تحتاج طبقة اختبار API إلى npm على الإطلاق. - بدأت Postman في تحديد عدد عمليات تشغيل المجموعات في الطبقات المجانية والمدفوعة الأساسية. الفرق التي اعتمدت على تشغيل المجموعات عبر Postman API كجزء من CI واجهت حصصًا وكان عليها إما ترقية خططها أو إعادة تصميم مساراتها.
- تباطأت وتيرة صيانة Newman. تبقى المشاكل مفتوحة على GitHub لأشهر. بعض واجهات برمجة تطبيقات Postman النصية الأحدث لديها دعم غير متناسق في Newman.
النتيجة: المطورون الذين بنوا مسارات CI على Newman يبحثون الآن عن بدائل. إليك ما هو متاح وكيفية تطبيقه.
الخيار الأول: Apidog CLI (موصى به لمستخدمي مجموعات Postman)
أداة تشغيل CLI الخاصة بـ Apidog هي أقرب بديل وظيفي لـ Newman إذا كنت تستخدم مجموعات Postman بالفعل.
ما يدعمه:
- تنسيق Postman Collection v2 و v2.1
- بيئات Postman (تصدير JSON)
-
pm.test،pm.expect،pm.environment.set،pm.collectionVariables.set - سكربتات ما قبل الطلب وما بعد الطلب
- الاختبار المعتمد على البيانات عبر ملفات بيانات CSV و JSON
- مخرجات JUnit XML و JSON لتقارير CI
لا يتطلب npm.
يتم توزيع Apidog CLI كثنائي مستقل. قم بتنزيله مرة واحدة، أضفه إلى PATH، وابدأ التشغيل فورًا.
لا توجد قيود على عدد التشغيلات.
Apidog لا يضع سقفًا على عمليات تشغيل المجموعات في أي خطة. يمكنك تشغيل المئات أو الآلاف من المجموعات دون قيود.
التثبيت
لتنزيل ملف CLI الثنائي لمنصتك، استخدم الرابط التالي:
https://apidog.com/cli?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation
أو عبر أداة تثبيت shell:
# macOS / Linux
curl -sSf https://apidog.com/cli/install.sh?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation | sh
# تحقق من التثبيت
apidog --version
لأدوات تشغيل CI المستندة إلى Docker، استخدم الصورة الرسمية:
FROM apidog/cli:latest
تشغيل مجموعة Postman
- صدّر مجموعتك من Postman: File > Export > Collection v2.1
- صدّر بيئتك: Manage Environments > Export
- شغّل الأمر التالي:
apidog run collection.json \
--environment environment.json \
--reporter-junit results.xml
مثال على GitHub Actions
name: API Tests
on: [push, pull_request]
jobs:
api-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Apidog CLI
run: curl -sSf https://apidog.com/cli/install.sh?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation | sh
- name: Run API tests
run: |
apidog run ./tests/collection.json \
--environment ./tests/env.json \
--reporter-junit test-results.xml
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: api-test-results
path: test-results.xml
لا يوجد
npm install، ولاpackage.json، ولا مصفوفة إصدار Node.js. المهمة تعمل بشكل أسرع و سطح التبعيات أصغر.
مثال على GitLab CI
api-tests:
image: apidog/cli:latest
script:
- apidog run ./tests/collection.json
--environment ./tests/env.json
--reporter-junit test-results.xml
artifacts:
reports:
junit: test-results.xml
الخيار الثاني: k6
k6 هي أداة اختبار حمل من Grafana Labs تتعامل أيضًا مع اختبار واجهة برمجة التطبيقات (API) الوظيفي. ممتازة لاختبار الأداء بجانب الفحوصات الوظيفية.
يدعم:
- HTTP/1.1, HTTP/2, WebSocket, gRPC
- سكربتات اختبار JavaScript (ES6+)
- حدود تأكيدات الأداء
- الإخراج إلى InfluxDB, Prometheus, Datadog
لا يدعم:
- تنسيق مجموعة Postman الأصلي (ستحتاج إلى تحويلها عبر محول
postman-to-k6مع احتمال الحاجة لتنظيف يدوي) - واجهة برمجة تطبيقات
pm.*الخاصة بـ Postman بشكل أصلي
متى تختار k6:
إذا كنت بحاجة إلى دمج الاختبار الوظيفي مع اختبار الأداء في نفس المسار، أو لديك نقاط نهاية gRPC، فكر في k6. إن كان هدفك فقط استبدال Newman للاختبارات الوظيفية، Apidog أسرع في الإعداد.
الاستخدام الأساسي لـ k6 في CI:
# التثبيت (Linux)
sudo apt-get install k6
# تشغيل سكربت اختبار
k6 run api-tests.js
يمكنك إخراج نتائج JUnit XML عبر حزمة k6-reporter.
الخيار الثالث: Hurl
Hurl هي أداة اختبار HTTP مفتوحة المصدر مكتوبة بلغة Rust. سريعة، بدون تبعيات وقت تشغيل، وتستخدم لغة وصفية بسيطة (DSL).
يدعم:
- HTTP/1.1 و HTTP/2
- تأكيدات JSON و XPath و regex
- المتغيرات وسلسلة الطلبات
- مخرجات HTML و JUnit و JSON
لا يدعم:
- تنسيق مجموعة Postman (لا يوجد محول آلي، تحتاج لإعادة كتابة الاختبارات)
- سكربتات اختبار JavaScript (التأكيدات تعريفية فقط)
متى تختار Hurl:
إذا كنت مستعدًا لإعادة كتابة اختباراتك بلغة Hurl (DSL)، ستحصل على ثنائي صغير وبيئة تشغيل بسيطة. قوي جدًا للمشاريع الجديدة بدون عبء Postman.
مثال على اختبار Hurl:
GET https://api.example.com/users/1
HTTP 200
[Asserts]
jsonpath "$.id" == 1
jsonpath "$.email" isString
Hurl في GitHub Actions:
- name: Install Hurl
run: |
curl -LO https://github.com/Orange-OpenSource/hurl/releases/latest/download/hurl-x86_64-unknown-linux-gnu.tar.gz
tar -xf hurl-*.tar.gz
sudo mv hurl /usr/local/bin/
- name: Run API tests
run: hurl --test tests/*.hurl
مقارنة الخيارات الثلاثة
| الميزة | Apidog CLI | k6 | Hurl |
|---|---|---|---|
| استيراد Postman | أصلي | محول (مع فقدان البيانات) | لا |
| تبعية npm | لا | لا | لا |
| كتابة سكربتات JavaScript | نعم (واجهة برمجة تطبيقات pm.*) | نعم (ES6) | لا (لغة وصفية DSL فقط) |
| اختبار الأداء | لا | نعم | لا |
| حجم الملف الثنائي | ~50 ميجابايت | ~30 ميجابايت | ~10 ميجابايت |
| قيود التشغيل المجاني | لا يوجد | لا يوجد | لا يوجد |
| مخرجات JUnit | نعم | عبر إضافة | نعم |
الترحيل من Newman: خطوات عملية
إذا كان لديك مسار عمل (pipeline) يعتمد على Newman، اتبع الخطوات التالية للترحيل إلى Apidog CLI:
تصدير المجموعات:
في Postman، انقر بزر الماوس الأيمن على كل مجموعة وصدرها كـ v2.1. ثم صدّر البيئات بشكل منفصل.تثبيت Apidog CLI:
أضف خطوة التثبيت إلى إعدادات الـ CI الخاصة بك كما في الأمثلة أعلاه.استبدال أمر Newman:
مثال على أمر Newman:
newman run collection.json -e environment.json --reporters junit --reporter-junit-export results.xml
مكافئ Apidog:
apidog run collection.json --environment environment.json --reporter-junit results.xml
هيكل الأعلام متقارب ليسهل التحويل.
تحقق من توافق السكربت:
شغّل المجموعة محليًا باستخدام Apidog CLI قبل تنفيذ تغيير CI. أغلب سكربتاتpm.*ستعمل مباشرة. إذا كنت تستخدمpm.requireلتحميل وحدات خارجية، ستحتاج إلى تعديل السكربت.أزل Node.js من إعدادات CI:
إذا كان Newman هو السبب الوحيد لاستخدام Node.js، أزل خطوة إعداد Node.js وnpm installبالكامل.
الأسئلة الشائعة
هل تم إهمال Newman رسميًا؟
لا، حتى أوائل 2026، ما زال Postman يحافظ على Newman. لكن وتيرة الصيانة بطيئة وهناك مشاكل مفتوحة تؤثر على الاستخدام. لا يختفي قريبًا، لكن بناء مسارات جديدة عليه يحمل مخاطر متزايدة.
هل يتطلب Apidog CLI حساب Apidog؟
لتشغيل المجموعات المصدرة محليًا، لا. لمزامنة المجموعات من مساحة عمل Apidog، نعم. للترحيل من Postman، يمكنك الاكتفاء بملفات JSON المصدرة.
هل يمكن لـ Apidog CLI تشغيل اختبارات تعتمد على البيانات؟
نعم. استخدم العلامة --iteration-data لتمرير ملف بيانات CSV أو JSON. يعادل ذلك العلامة -d في Newman للتكرار المعتمد على البيانات.
ما هي مخاطر سلسلة التوريد مع الأدوات القائمة على npm؟
أي حزمة npm يتم سحبها وقت CI هي سطح هجوم محتمل. الحزم المخترقة قد تسرّب متغيرات البيئة بما فيها المفاتيح والرموز. الأداة الثنائية التي تُنزَّل عبر HTTPS وتثبت على قيمة checksum تتجنب هذه المخاطر.
هل يدعم k6 اختبار gRPC؟
نعم. k6 يدعم gRPC أصلاً، مما يجعله خيارًا قويًا إذا كانت واجهة برمجة تطبيقاتك تتضمن نقاط نهاية gRPC.
هل يدعم Hurl رؤوس المصادقة؟
نعم. Hurl يدعم الرؤوس المخصصة مثل Authorization و Bearer والمصادقة عبر ملفات تعريف الارتباط. المتغيرات تمكّنك من حقن الأسرار من متغيرات البيئة في وقت التشغيل.
ينتهي عصر Newman كخيار CI الافتراضي لاختبارات واجهات برمجة التطبيقات. مخاطر سلسلة التوريد حقيقية، وقيود الطبقة المجانية غيّرت الحسابات، وتوجد الآن بدائل أفضل. الترحيل إلى مسار عمل خالٍ من Newman مباشر وسهل، خصوصًا عند استخدام Apidog CLI مع مجموعات Postman الموجودة لديك.
Top comments (0)