تشير معظم دروس اختبار واجهة برمجة التطبيقات (API) إلى واجهة المستخدم الرسومية (GUI). ولكن إذا كنت تستخدم الطرفية (terminal)، أو تقوم بتشغيل الاختبارات في التكامل المستمر (CI)، أو تريد أداة يمكنك قراءة شيفرتها المصدرية، فإن سطر الأوامر هو المكان الذي يصبح فيه اختبار واجهة برمجة التطبيقات مثيرًا للاهتمام. توفر أدوات سطر الأوامر مفتوحة المصدر شيئًا لا يمكن للمنتج المستضاف توفيره: ترخيص يمكنك مراجعته، وثنائي (binary) يمكنك استضافته بنفسك، وملف إعداد يمكنك الالتزام به بجوار شيفرتك.
هذا سؤال مختلف عن "ما هي الأداة الأسرع" أو "ما هو أصغر ثنائي". هنا تركز العدسة على الترخيص والتحكم. هل يمكنك تشغيلها داخل شبكتك الخاصة بدون حساب؟ هل المصدر موجود على GitHub بترخيص حقيقي معتمد من OSI؟ هل ستستمر في العمل إذا غير البائع الأسعار في الربع القادم؟ هذه هي الأسئلة التي تجيب عليها هذه القائمة.
فيما يلي ثماني أدوات سطر أوامر مجانية ومتاحة المصدر لاختبار واجهات برمجة التطبيقات REST و GraphQL و HTTP، كل واحدة منها مع ترخيصها الدقيق، وأمر تثبيت حقيقي، وأمر واحد يوضح طريقة عملها. إذا كنت تريد استطلاعًا أوسع يشمل الأدوات المستضافة، فراجع مجموعة أفضل أدوات اختبار واجهة برمجة التطبيقات المجانية. للحصول على نظرة متعمقة تعتمد على الطرفية فقط لاختبار نقاط النهاية يدويًا، يغطي دليل بدائل curl لاختبار واجهة برمجة تطبيقات REST الجانب التفاعلي.
ما الذي يجعل أداة سطر الأوامر "مفتوحة المصدر" لاختبار واجهة برمجة التطبيقات
العديد من الأدوات مجانية للتنزيل. هذا ليس هو نفسه مفتوح المصدر. بالنسبة لهذه القائمة، تتأهل الأداة بناءً على ثلاث نقاط:
- ترخيص حقيقي. المصدر عام بموجب ترخيص معتمد من OSI (MIT, Apache-2.0, MPL-2.0, AGPL-3.0, BSD). يمكنك قراءته، وتعديله، ومعرفة ما هو مسموح لك بفعله.
- قابلة للاستضافة الذاتية، بدون حساب. يمكنك تشغيل كل شيء على جهازك الخاص أو على مشغل التكامل المستمر (CI runner) دون الحاجة للتسجيل في أي شيء. لا توجد تكلفة مقعد، ولا متطلبات اتصال بالخادم الرئيسي.
- مُصانة وقابلة للفحص. المستودع موجود على GitHub مع سجل التزام مرئي ومشاكل مفتوحة، حتى تتمكن من الحكم ما إذا كانت الأداة نشطة قبل بناء خط أنابيب عليها.
كل أداة أدناه تفي بالنقطتين الأوليين. لقد أشرت إلى الأداة التي لم تعد تفي بالنقطة الثالثة. اختيار الترخيص مهم أكثر مما يبدو: AGPL-3.0 (k6) له التزامات copyleft إذا قمت ببناء خدمة حوله، بينما ترخيصي MIT و Apache-2.0 متساهلان. اقرأ الترخيص قبل تضمين أداة في منتج.
Hurl: اختبارات HTTP بنص عادي، ثنائي Rust واحد
يقوم Hurl بتشغيل طلبات HTTP المكتوبة بتنسيق نص عادي ويتحقق من الاستجابات. تم بناؤه بواسطة Orange-OpenSource بلغة Rust، ويستمد قوته من libcurl في الخلفية، ويتم شحنه كملف ثنائي واحد. تُقرأ الاختبارات تقريبًا مثل الطلبات نفسها، مما يسهل مراجعتها في طلب سحب.
الترخيص: Apache-2.0. المصدر: github.com/Orange-OpenSource/hurl.
brew install hurl # or: cargo install --locked hurl
# login.hurl
cat > login.hurl <<'EOF'
POST https://api.example.com/login
{ "user": "acme", "pass": "s3cret" }
HTTP 200
[Asserts]
jsonpath "$.token" exists
EOF
hurl --test login.hurl
الأفضل لـ: فحوصات نمط العقود واختبارات الدخان التي تريد الاحتفاظ بها في نظام التحكم بالإصدار كنص قابل للقراءة. القيد الصريح: إنه يركز على HTTP، لذلك لن يدعم gRPC أو يولد حملاً. لأي شيء يتجاوز سلاسل التأكيد البسيطة، ستقوم بكتابة المزيد من ملفات .hurl بدلاً من اللجوء إلى لغة برمجة نصية.
Step CI: مهام سير عمل API بتنسيق YAML مصممة للتكامل المستمر (CI)
Step CI هو مشغل مهام سير عمل مُعدّ بتنسيق YAML للتكامل المستمر. يغطي REST و GraphQL و gRPC و tRPC و SOAP في ملف سير عمل واحد، ويمكنه اختبار التحميل والتحقق من صحة مخطط OpenAPI. المشغل وواجهة سطر الأوامر مجانيان إلى الأبد.
الترخيص: MPL-2.0. المصدر: github.com/stepci/stepci.
npm install -g stepci
# workflow.yml describes steps, checks, and captures
stepci run workflow.yml
الأفضل لـ: الفرق التي تريد ملفًا تعريفيًا واحدًا يصف تدفق واجهة برمجة تطبيقات متعدد الخطوات وتشغيله بنفس الطريقة محليًا وفي التكامل المستمر (CI). القيد الصريح: MPL-2.0 هو ترخيص copyleft ضعيف، لذا إذا قمت بتعديل ملفات Step CI الخاصة به، فأنت تشارك تلك التغييرات مرة أخرى. استخدامها لاختبار تطبيقك لا يحمل مثل هذا الالتزام.
Schemathesis: اختبار يعتمد على الخصائص من مخططك
يقرأ Schemathesis مخطط OpenAPI أو GraphQL الخاص بك وينشئ آلاف حالات الاختبار منه، باستخدام الاختبار القائم على الخصائص المبني على مكتبة Hypothesis في بايثون. بدلاً من أن تكتب كل حالة، يقوم بتشويه المدخلات للعثور على أخطاء 500، وانتهاكات المخطط، والاستجابات التي لا تتطابق مع ما تعد به وثائقك.
الترخيص: MIT. المصدر: github.com/schemathesis/schemathesis.
uv pip install schemathesis # or: pip install schemathesis
schemathesis run https://api.example.com/openapi.json
الأفضل لـ: اكتشاف الأخطاء النادرة التي لن تفكر أبدًا في كتابة اختبار لها، خاصة قبل الإصدار. إنه أحد أقوى الأسباب للحفاظ على مخطط دقيق. القيد الصريح: يتطلب مخططًا حقيقيًا ليعمل، ويمكن لواجهة برمجة تطبيقات كبيرة أن تنتج الكثير من الضوضاء التي سترغب في تصفيتها باستخدام أدواته وخياراته.
Dredd: اختبار العقود مقابل وصف واجهة برمجة التطبيقات الخاصة بك
يتحقق Dredd من أن واجهة برمجة التطبيقات الحية الخاصة بك تتطابق بالفعل مع مستند الوصف الخاص بها. وجهه إلى ملف OpenAPI (أو API Blueprint) وخلفية تشغيلية، وسيقوم بإعادة تشغيل كل طلب موثق ويقارن الاستجابة الحقيقية بالمواصفات. إنه مستقل عن اللغة ويدعم الخطافات للإعداد والإنهاء.
الترخيص: MIT. المصدر: github.com/apiaryio/dredd.
npm install -g dredd
dredd apiary.apib http://127.0.0.1:3000
الأفضل لـ: إثبات أن وثائقك وتطبيقك لم يتباعدا. القيد الصريح، وهو حقيقي: تم أرشفة مستودع Dredd في نوفمبر 2024 وهو للقراءة فقط. لا يزال يعمل، لكنه لم يعد يُصان، لذا تعامل معه كأداة مستقرة بدون إصلاحات مستقبلية. إذا كنت تريد مدققًا نشطًا يعتمد على المخططات، فإن Schemathesis هو الرهان الأكثر أمانًا.
k6: اختبار التحميل المكتوب بلغة JavaScript
k6 هي أداة Grafana لاختبار التحميل والأداء. تقوم بكتابة الاختبارات بلغة JavaScript أو TypeScript، ويقوم محرك Go سريع بتشغيلها على نطاق واسع. إنه الخيار مفتوح المصدر المفضل عندما تحتاج إلى معرفة كيفية تصرف واجهة برمجة التطبيقات الخاصة بك تحت مئات أو آلاف المستخدمين الافتراضيين، وليس فقط ما إذا كان طلب واحد ينجح.
الترخيص: AGPL-3.0. المصدر: github.com/grafana/k6.
brew install k6
k6 new script.js # generates a starter test
k6 run script.js
الأفضل لـ: اختبار الأداء واختبار التحمل الذي يعيش في نفس المستودع مثل اختباراتك الوظيفية. القيد الصريح: AGPL-3.0 هو ترخيص copyleft قوي. هذا جيد لتشغيل الاختبارات، ولكن إذا قمت ببناء وتوزيع خدمة حول كود k6، فإن الترخيص له التزامات حقيقية؛ اقرأه أولاً. يركز k6 أيضًا على التحميل، وليس التأكيدات الدقيقة للعقود.
Newman: تشغيل مجموعات Postman بدون واجهة المستخدم الرسومية
Newman هو مشغل مجموعات Postman الخاص بسطر الأوامر. إذا كان فريقك يمتلك بالفعل طلبات واجهة برمجة تطبيقات واختبارات محفوظة كمجموعة Postman، يقوم Newman بتشغيل تلك المجموعة بالضبط من الطرفية أو في التكامل المستمر (CI)، دون الحاجة إلى تطبيق سطح مكتب. إنها الطريقة القياسية للحصول على سير عمل Postman في خط الأنابيب.
الترخيص: Apache-2.0. المصدر: github.com/postmanlabs/newman.
npm install -g newman
newman run my-collection.json -e staging-environment.json
الأفضل لـ: الفرق التي لديها مجموعات Postman موجودة وترغب في تشغيل التكامل المستمر (CI) دون دفع مقابل مقاعد Postman إضافية. القيد الصريح: إنه مرتبط بتنسيق مجموعة Postman، لذلك تقوم بتأليف الاختبارات في واجهة مستخدم Postman (أو ملف JSON الخاص بها) بدلاً من ملف إعداد عادي. يقوم بتشغيل المجموعات؛ ولا يقوم بتصميم أو محاكاة واجهات برمجة التطبيقات.
Tavern: اختبارات واجهة برمجة التطبيقات كإضافة لـ pytest
Tavern هي مكتبة Python وواجهة سطر أوامر (CLI) وإضافة لـ pytest تصف اختبارات واجهة برمجة التطبيقات في YAML. نظرًا لأنه يتكامل مع pytest، تحصل على نظام pytest البيئي بأكمله مجانًا: التركيبات (fixtures)، والتقارير، والتوازي، وتكاملات CI التي قد تستخدمها بالفعل. إنه يتعامل مع REST و MQTT و gRPC.
الترخيص: MIT. المصدر: github.com/taverntesting/tavern.
pip install tavern
# test_login.tavern.yaml sits next to your other tests
pytest test_login.tavern.yaml
الأفضل لـ: الشركات التي تستخدم بايثون والتي تشغل pytest بالفعل وتريد أن تعيش اختبارات واجهة برمجة التطبيقات جنبًا إلى جنب مع اختبارات الوحدات. القيد الصريح: يفترض أنك مرتاح في إعداد اختبار بايثون. إذا لم تكن حزمتك بايثون، فإن الاعتماد على pytest سيكون عائقًا بدلاً من ميزة.
Venom: اختبارات تكامل متعددة المنفذين من OVHcloud
Venom، من OVHcloud، يقوم بتشغيل اختبارات التكامل عبر العديد من أنواع المنفذين: طلبات HTTP، نصوص Shell البرمجية، IMAP، الويب، قواعد البيانات، والمزيد. إنه مكتوب بلغة Go، ويستخدم حزم اختبار YAML، ويصدر ملفات نتائج xUnit التي تقرأها أنظمة CI أصلاً. يتألق عندما يحتاج اختبار واحد إلى لمس أكثر من مجرد نقطة نهاية HTTP.
الترخيص: BSD (معدل). المصدر: github.com/ovh/venom.
# download the binary from GitHub releases, then:
venom run testsuite.yml
الأفضل لـ: التدفقات الشاملة التي تمزج مكالمة واجهة برمجة تطبيقات مع فحص قاعدة بيانات أو خطوة نص برمجي في مجموعة اختبار واحدة. القيد الصريح: مع وجود العديد من المنفذين، يصبح YAML مطولًا، وتفترض الوثائق أنك ستقوم بتجميع الأمثلة من المستودع.
مكان Apidog (وملاحظة صادقة)
هذا هو الجزء الصادق. Apidog ليس مفتوح المصدر. إنه منتج تجاري مع طبقة مجانية، لذا فهو لا ينتمي إلى قائمة الأدوات المتاحة المصدر. ولكن من الجدير بالمعرفة لسبب واحد: كل أداة من الأدوات المذكورة أعلاه تقوم بمهمة واحدة، وربط Hurl و Schemathesis و Newman بالإضافة إلى خادم وهمي في سير عمل متماسك هو عمل حقيقي يجب عليك صيانته بنفسك.
تجمع Apidog التصميم والاختبار والمحاكاة والتوثيق في منصة واحدة، وتجلب apidog-cli جانب الاختبار إلى الطرفية. يمكنك تأليف سيناريوهات الاختبار مرة واحدة، ثم تشغيلها في CI بأمر واحد:
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run --access-token <TOKEN> # exits 0 on all-pass, non-zero on failure
الإخراج هو JSON منظم مع agentHints.nextSteps، مما يسهل برمجته أو تسليمه لوكيل ذكاء اصطناعي. يقدم الدليل الكامل لـ apidog-cli مجموعة الأوامر الكاملة. لذا: ليس مفتوح المصدر، ولكن الطبقة المجانية بالإضافة إلى واجهة سطر الأوامر تمنحك بديلاً متكاملًا لربط عدة أدوات أحادية الغرض معًا. إذا كان الترخيص الذي يمكنك مراجعته مطلبًا أساسيًا، فاختر من الأدوات الثمانية المذكورة أعلاه. إذا كان سير العمل المتكامل يهمك أكثر، فهذه هي المقايضة.
كيف تختار
| الأداة | الأفضل لـ | التثبيت | مفتوح المصدر؟ | الترخيص |
|---|---|---|---|---|
| Hurl | تأكيدات HTTP بنص عادي في Git | brew install hurl |
نعم | Apache-2.0 |
| Step CI | مهام سير عمل CI تعريفية | npm i -g stepci |
نعم | MPL-2.0 |
| Schemathesis | اختبار قائم على الخصائص (fuzzing) من مخطط | pip install schemathesis |
نعم | MIT |
| Dredd | اختبارات العقود (وثائق مقابل تطبيق) | npm i -g dredd |
نعم (مؤرشف) | MIT |
| k6 | اختبار التحميل والأداء | brew install k6 |
نعم | AGPL-3.0 |
| Newman | تشغيل مجموعات Postman في CI | npm i -g newman |
نعم | Apache-2.0 |
| Tavern | اختبارات API داخل pytest | pip install tavern |
نعم | MIT |
| Venom | مجموعات تكامل متعددة المنفذين | إصدارات GitHub | نعم | BSD |
| apidog-cli | سير عمل متكامل من التصميم إلى الاختبار | npm i -g apidog-cli |
لا (طبقة مجانية) | تجاري |
طابق الأداة مع المهمة. استخدم Hurl أو Newman عندما تريد فحوصات طلبات سريعة وقابلة للقراءة؛ Schemathesis عندما يكون لديك مخطط وتريد العثور على الأخطاء نيابة عنك؛ k6 عندما يكون السؤال عن الحجم؛ Tavern أو Venom عندما تحتاج الاختبارات إلى أن تكون جزءًا من مجموعة أكبر. إذا كنت تقارن هذه الأدوات بعملية أكبر، يغطي دليل استراتيجيات اختبار واجهة برمجة التطبيقات مكان كل نوع، وتتناول مقالة أدوات اختبار واجهة برمجة التطبيقات بدون واجهة مستخدم تشغيل الاختبارات بدون أي واجهة مستخدم على الإطلاق.
خاتمة
توفر لك أدوات سطر الأوامر مفتوحة المصدر اختبار واجهة برمجة تطبيقات يمكنك قراءته، وتعديله (fork)، وتشغيله وفقًا لشروطك الخاصة. يتعامل Hurl و Newman مع فحوصات الطلبات اليومية، ويفرض Schemathesis و Dredd عقدك، ويدفع k6 نحو الأداء، بينما يدمج Tavern و Venom اختبارات واجهة برمجة التطبيقات في مجموعات أوسع. اختر حسب الترخيص وحسب المهمة الواحدة التي تحتاج إلى إنجازها؛ لا شيء يمنعك من تشغيل اثنين منهم.
عندما تفضل التصميم والاختبار والمحاكاة والتوثيق في مكان واحد بدلاً من صيانة سلسلة أدوات، تغطي Apidog دورة الحياة الكاملة وتوفر apidog-cli للتكامل المستمر (CI). قم بتنزيل Apidog لتجربة واجهة سطر الأوامر جنبًا إلى جنب مع الأدوات المذكورة أعلاه واكتشف أي مزيج يناسب خط الأنابيب الخاص بك.
