DEV Community

Cover image for تشغيل مجموعات بوستمان في التكامل المستمر بدون نيومان
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

تشغيل مجموعات بوستمان في التكامل المستمر بدون نيومان

ملخص سريع (TL;DR)

Newman، أداة تشغيل CLI الرسمية لـ Postman، تتطلب npm و Node.js في مسار CI الخاص بك. هذا يقدم مخاطر لسلسلة التوريد، ويضيف عبئًا إضافيًا لإدارة التبعيات، وفي الطبقة المجانية من Postman، أصبحت عمليات تشغيل المجموعات عبر API محدودة المعدل. يغطي هذا الدليل ثلاثة بدائل لتشغيل اختبارات API في CI بدون Newman: أداة تشغيل Apidog CLI، و k6، و Hurl. Apidog هو المسار الأكثر مباشرة إذا كان لديك مجموعات Postman موجودة لأنه يستوردها أصلاً وليس لديه قيود على عدد التشغيلات.

جرّب Apidog اليوم

💡Apidog هي منصة مجانية ومتكاملة لتطوير واجهات برمجة التطبيقات (API). يقوم أداة تشغيل CLI الخاصة بها بتنفيذ مجموعات متوافقة مع Postman في CI بدون تبعية npm وبدون قيود على عدد التشغيلات. جرب Apidog مجانًا، لا يلزم وجود بطاقة ائتمان.

مقدمة

كانت Newman فكرة جيدة. أداة سطر أوامر (CLI) تقوم بتشغيل مجموعات Postman في مسارات CI جعلت اختبار واجهات برمجة التطبيقات (API) محمولاً وقابلاً للأتمتة. جاءت مع ثقة علامة Postman التجارية، وتكاملت مع GitHub Actions عبر إجراء مجتمعي شائع، وعملت بشكل جيد بما يكفي لدرجة أن العديد من الفرق بنت استراتيجيتها الكاملة لأتمتة اختبارات API حولها.

ثم ظهرت ثلاث مشاكل:

  1. Newman هي حزمة npm. كل مسار يستخدمها يسحب من سجل npm وقت البناء. أظهر اختراق ua-parser-js في عام 2021 وحادثة node-ipc في عام 2022 أن هجمات سلسلة التوريد عبر npm ليست نظرية. بدأت فرق الأمان تتساءل لماذا تحتاج طبقة اختبار API إلى npm على الإطلاق.
  2. بدأت Postman في تحديد عدد عمليات تشغيل المجموعات في الطبقات المجانية والمدفوعة الأساسية. الفرق التي اعتمدت على تشغيل المجموعات عبر Postman API كجزء من CI واجهت حصصًا وكان عليها إما ترقية خططها أو إعادة تصميم مساراتها.
  3. تباطأت وتيرة صيانة 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
Enter fullscreen mode Exit fullscreen mode

لأدوات تشغيل CI المستندة إلى Docker، استخدم الصورة الرسمية:

FROM apidog/cli:latest
Enter fullscreen mode Exit fullscreen mode

تشغيل مجموعة Postman

  1. صدّر مجموعتك من Postman: File > Export > Collection v2.1
  2. صدّر بيئتك: Manage Environments > Export
  3. شغّل الأمر التالي:
apidog run collection.json \
  --environment environment.json \
  --reporter-junit results.xml
Enter fullscreen mode Exit fullscreen mode

مثال على 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
Enter fullscreen mode Exit fullscreen mode

لا يوجد 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
Enter fullscreen mode Exit fullscreen mode

الخيار الثاني: 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
Enter fullscreen mode Exit fullscreen mode

يمكنك إخراج نتائج 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

مقارنة الخيارات الثلاثة

الميزة Apidog CLI k6 Hurl
استيراد Postman أصلي محول (مع فقدان البيانات) لا
تبعية npm لا لا لا
كتابة سكربتات JavaScript نعم (واجهة برمجة تطبيقات pm.*) نعم (ES6) لا (لغة وصفية DSL فقط)
اختبار الأداء لا نعم لا
حجم الملف الثنائي ~50 ميجابايت ~30 ميجابايت ~10 ميجابايت
قيود التشغيل المجاني لا يوجد لا يوجد لا يوجد
مخرجات JUnit نعم عبر إضافة نعم

الترحيل من Newman: خطوات عملية

إذا كان لديك مسار عمل (pipeline) يعتمد على Newman، اتبع الخطوات التالية للترحيل إلى Apidog CLI:

  1. تصدير المجموعات:

    في Postman، انقر بزر الماوس الأيمن على كل مجموعة وصدرها كـ v2.1. ثم صدّر البيئات بشكل منفصل.

  2. تثبيت Apidog CLI:

    أضف خطوة التثبيت إلى إعدادات الـ CI الخاصة بك كما في الأمثلة أعلاه.

  3. استبدال أمر Newman:

    مثال على أمر Newman:

   newman run collection.json -e environment.json --reporters junit --reporter-junit-export results.xml
Enter fullscreen mode Exit fullscreen mode

مكافئ Apidog:

   apidog run collection.json --environment environment.json --reporter-junit results.xml
Enter fullscreen mode Exit fullscreen mode

هيكل الأعلام متقارب ليسهل التحويل.

  1. تحقق من توافق السكربت:

    شغّل المجموعة محليًا باستخدام Apidog CLI قبل تنفيذ تغيير CI. أغلب سكربتات pm.* ستعمل مباشرة. إذا كنت تستخدم pm.require لتحميل وحدات خارجية، ستحتاج إلى تعديل السكربت.

  2. أزل 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)