ملخص سريع (TL;DR)
Newman، أداة تشغيل CLI الرسمية لـ Postman، تتطلب npm و Node.js في مسار CI الخاص بك. هذا يقدم مخاطر لسلسلة التوريد، ويضيف عبئًا إضافيًا لإدارة التبعيات، وفي الطبقة المجانية من Postman، أصبحت عمليات تشغيل المجموعات عبر API محدودة المعدل. يغطي هذا الدليل ثلاثة بدائل لتشغيل اختبارات API في CI بدون Newman: أداة تشغيل Apidog CLI، و k6، و Hurl. Apidog هو المسار الأكثر مباشرة إذا كان لديك مجموعات Postman موجودة لأنه يستوردها أصلاً وليس لديه قيود على عدد التشغيلات.
مقدمة
كانت 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 سقفًا على عمليات تشغيل المجموعات في أي خطة. مسار عمل يقوم بتشغيل 500 مجموعة يوميًا يعمل بنفس طريقة المسار الذي يشغل 5 مجموعات.
التثبيت
قم بتنزيل ملف CLI الثنائي لمنصتك من apidog.com/cli أو استخدم أداة تثبيت shell:
# macOS / Linux
curl -sSf https://apidog.com/cli/install.sh | sh
# Verify
apidog --version
بالنسبة لأدوات تشغيل CI المستندة إلى Docker، يوفر Apidog صورة رسمية:
FROM apidog/cli:latest
تشغيل مجموعة Postman
قم بتصدير مجموعتك من Postman (ملف > تصدير > Collection v2.1) وبيئتك (إدارة البيئات > تصدير).
ثم قم بالتشغيل:
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 | 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 إلى سكربتات k6 باستخدام محول
postman-to-k6، ولكن المخرجات غالبًا ما تحتاج إلى تنظيف يدوي، خاصة للسكربتات المعقدة. - واجهة برمجة تطبيقات
pm.*الخاصة بـ Postman بشكل أصلي. تحاكي طبقة التحويل ذلك ولكن مع وجود ثغرات.
متى تختار k6
إذا كنت بحاجة إلى دمج الاختبار الوظيفي مع اختبار الأداء في نفس المسار – على سبيل المثال، التحقق من صحة واجهة برمجة التطبيقات (API) تحت الحمل – فإن k6 تستحق تكلفة الترحيل. إذا كنت ترغب فقط في استبدال Newman للاختبارات الوظيفية، فإن Apidog أسرع في الإعداد.
الاستخدام الأساسي لـ k6 في CI
# Install (Linux)
sudo apt-get install k6
# Run a test script
k6 run api-tests.js
يقوم k6 CI بإخراج نجاح/فشل بناءً على تعريفات الحدود في سكربتك. يتوفر إخراج JUnit XML عبر حزمة k6-reporter.
الخيار الثالث: Hurl
Hurl هي أداة اختبار HTTP مفتوحة المصدر مكتوبة بلغة Rust. إنها سريعة، ولا تحتوي على تبعيات وقت التشغيل، وتستخدم لغة وصفية بسيطة (DSL) لتحديد الطلبات والتأكيدات.
ما يدعمه
- HTTP/1.1 و HTTP/2
- تأكيدات JSON و XPath و regex
- المتغيرات وسلسلة الطلبات
- مخرجات HTML و JUnit و JSON
ما لا يدعمه
- تنسيق مجموعة Postman. يستخدم Hurl تنسيق ملفات
.hurlالخاص به. لا يوجد محول آلي. - سكربتات اختبار JavaScript. التأكيدات تعريفية وليست برمجية.
متى تختار Hurl
إذا كنت مستعدًا لإعادة كتابة اختباراتك بلغة Hurl الوصفية (DSL)، فستحصل على ثنائي صغير بشكل ملحوظ بدون وقت تشغيل. الثنائي هو ملف واحد بحجم 10 ميجابايت. Hurl هو خيار قوي للمشاريع الجديدة حيث لا يوجد لديك عبء مجموعات 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 تشغيل اختبارات تعتمد على البيانات؟نعم. قم بتمرير ملف بيانات CSV أو JSON باستخدام العلامة --iteration-data. هذا يعادل العلامة -d في Newman للتكرار المعتمد على البيانات.
ما هي مخاطر سلسلة التوريد مع أدوات التشغيل القائمة على npm؟أي حزمة يتم سحبها من npm في وقت CI هي سطح هجوم محتمل. يمكن للحزم المخترقة تسريب متغيرات البيئة، والتي تتضمن في سياق CI مفاتيح ورموز API. تتجنب أداة تشغيل ثنائية يتم تنزيلها عبر HTTPS وتثبيتها على قيمة تجزئة (checksum) هذه الفئة من المخاطر.
هل يدعم k6 اختبار gRPC؟نعم. يدعم k6 gRPC أصلاً، مما يجعله أحد الأدوات مفتوحة المصدر القليلة التي تتعامل مع كل من REST و gRPC في نفس مجموعة الاختبار. إذا كانت واجهة برمجة التطبيقات الخاصة بك تتضمن نقاط نهاية gRPC، فإن k6 تستحق التقييم.
هل يدعم Hurl رؤوس المصادقة؟نعم. يدعم Hurl الرؤوس المخصصة، بما في ذلك Authorization، Bearer، والمصادقة المستندة إلى ملفات تعريف الارتباط. تتيح لك المتغيرات حقن الأسرار من متغيرات البيئة في وقت التشغيل.
ينتهي عصر Newman كخيار CI الافتراضي لاختبارات واجهات برمجة التطبيقات. مخاطر سلسلة التوريد حقيقية، وقد غيرت قيود الطبقة المجانية الحسابات للعديد من الفرق، وتوجد الآن بدائل أفضل. الترحيل إلى مسار عمل خالٍ من Newman مباشر وسهل، خاصة إذا كنت تنتقل إلى Apidog CLI باستخدام مجموعات Postman الموجودة لديك.
