DEV Community

Cover image for دليل إعداد خدمة وهمية SoapUI وبديل حديث
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

دليل إعداد خدمة وهمية SoapUI وبديل حديث

ملخص سريع

تحاكي خدمات SoapUI الوهمية نقاط نهاية SOAP أو REST محليًا، ولكنها تتطلب عملية Java قيد التشغيل، وتكوين إرسال يدوي، ولا يمكن مشاركتها عبر الفريق دون جهاز مشترك. تُنشئ المحاكاة الذكية من Apidog استجابات وهمية من مخطط API الخاص بك، وتعمل في السحابة، وتتم مشاركتها تلقائيًا مع فريقك.

جرّب Apidog اليوم

💡Apidog هي منصة تطوير واجهات برمجة تطبيقات مجانية ومتكاملة تحتوي على محاكاة ذكية مدمجة تُنشئ نقاط نهاية وهمية فورية من تعريفات واجهة برمجة التطبيقات الخاصة بك دون تشغيل عملية Java محلية. جرب Apidog مجانًا، لا يلزم وجود بطاقة ائتمان.

مقدمة

خدمات المحاكاة تحل مشكلة أساسية في تطوير واجهات برمجة التطبيقات: اختبار تفاعل العميل مع خدمة لم تكتمل بعد، أو اختبار سيناريوهات استثنائية (مثل الأخطاء أو التأخيرات) بدون التأثير على النظام الفعلي.

خدمة المحاكاة في SoapUI متوفرة منذ الإصدارات الأولى وتتيح تشغيل خادم HTTP محلي يرد على الطلبات حسب القواعد التي تحددها. لكن وجودها على جهاز محلي يعوق مشاركة الفريق ويجعل الإعداد معقدًا.

في هذا الدليل ستتعرف عمليًا على كيفية إعداد واستخدام خدمات SoapUI الوهمية، أبرز مشاكلها، وكيفية مقارنة ذلك مع محاكاة Apidog.

كيف تعمل خدمات SoapUI الوهمية

SoapUI يسمح بإنشاء خدمات وهمية من واجهات SOAP أو REST في مشروعك. آلية العمل كالتالي:

  1. الاستماع على منفذ محلي تحدده (مثال: http://localhost:8088/MockService)
  2. اعتراض الطلبات الواردة
  3. مطابقة الطلب مع "استجابة وهمية" بحسب منطق الإرسال
  4. إعادة الاستجابة المهيئة

لخدمات SOAP، يمكن إنشاء استجابات وهمية تلقائيًا من WSDL لكل عملية. هذا عملي إذا كنت تريد محاكاة خدمة قبل توفرها أو أمام نقطة نهاية حقيقية.

إعداد خدمة SoapUI الوهمية (خطوة بخطوة)

لواجهة SOAP

  1. في مشروع SoapUI، انقر بزر الفأرة الأيمن على واجهة SOAP.
  2. اختر "إنشاء خدمة وهمية (MockService)".
  3. في مربع الحوار، عيّن:
    • اسم الخدمة (مثال: "OrderService Mock")
    • رقم المنفذ (الافتراضي 8088 أو غيره)
    • المسار (مثال: /orders)
  4. اضغط موافق. ستظهر عقدة MockService جديدة في شجرة المشروع.
  5. قم بتوسيعها، ستجد "عملية وهمية" لكل عملية SOAP.
  6. انقر نقرًا مزدوجًا على MockOperation لفتح محرر الاستجابة.
  7. عدّل XML الاستجابة حسب القيم التي تريد محاكاتها.
  8. اضغط زر التشغيل الأخضر لتشغيل الخادم المحلي.

الآن، تعمل الخدمة على http://localhost:8088/orders ويمكنك توجيه طلبات العميل إليها.

لواجهة REST

  1. انقر بزر الفأرة الأيمن على واجهة REST أو المورد.
  2. اختر "إضافة إلى خدمة وهمية" أو "إنشاء خدمة وهمية".
  3. حدد المنفذ والمسار كما في الخطوات السابقة.
  4. لكل مورد/طريقة، عيّن نص الاستجابة ورمز الحالة.
  5. شغّل خدمة المحاكاة.

تكوين الإرسال

افتراضيًا، ترجع الخدمة أول استجابة وهمية فقط. للحصول على استجابات مختلفة حسب الطلب:

  • استخدم "نص إرسال" (Groovy) لمطابقة الطلب مع استجابة معينة.
  • أو اختر نوع الإرسال "SEQUENCE" لإرجاع الاستجابات بشكل متسلسل.

مثال نص إرسال Groovy:

def request = mockRequest.getRequestContent()
if (request.contains("orderId>12345")) {
  return "OrderFoundResponse"
} else {
  return "OrderNotFoundResponse"
}
Enter fullscreen mode Exit fullscreen mode

أنشئ استجابات وهمية متعددة بأسماء مثل "OrderFoundResponse" و "OrderNotFoundResponse"، وسيختار النص البرمجي الاستجابة المناسبة حسب محتوى الطلب.

المشاكل الشائعة في خدمة SoapUI الوهمية

المشكلة 1: توقف الخدمة الوهمية عند إغلاق SoapUI

خادم المحاكاة يعمل ضمن عملية SoapUI. إذا أغلقت البرنامج، تتوقف المحاكاة ويخسر الفريق الوصول.

حلول عملية:

  • إبقاء SoapUI مفتوحًا على جهاز مخصص
  • تشغيل المحاكاة عبر سطر الأوامر:
  mockservicerunner.sh -p 8088 -s "OrderService Mock" project.xml
Enter fullscreen mode Exit fullscreen mode
  • استخدام جهاز افتراضي أو مشترك

كل هذه الحلول تتطلب وجود Java وبيئة SoapUI على الجهاز.

المشكلة 2: مشاركة الخدمة الوهمية عبر الفريق

المحاكاة متاحة فقط على localhost. لتمكين الفريق:

  • تحتاج إلى إعداد شبكة وجدار حماية أو VPN
  • أو تشغيل المحاكاة على جهاز مشترك دائم

المشكلة 3: صعوبة نصوص الإرسال مع XML المعقدة

مطابقة نصوص Groovy تعتمد على محتوى XML الخام. مع اختلاف مساحات الأسماء أو البادئات في SOAP، قد تفشل المطابقة وتحتاج إلى معالجة XML حقيقية باستخدام GroovyUtils، مما يزيد التعقيد.

المشكلة 4: الحالة لا تستمر بين المكالمات

SoapUI عديم الحالة افتراضيًا. لمحاكاة سيناريوهات CRUD (إنشاء/استرجاع)، يجب تخزين الحالة في متغيرات Groovy بنص الإرسال، وهو حل هش وغير موثوق.

المشكلة 5: إعداد SSL لخدمات المحاكاة

محاكاة HTTPS تتطلب إعداد KeyStore وتكوينات SSL داخل SoapUI وتوزيع الشهادة على العملاء، ما يجعل الأمر أكثر تعقيدًا مقارنة بالحالات التي تعتمد على HTTP فقط.

المحاكاة الذكية من Apidog: كيف تقارن

Apidog تعتمد على تصميم API وليس على تشغيل عملية محلية.

بمجرد تعريف نقطة نهاية API في Apidog (الطريقة، المسار، مخطط الطلب والاستجابة)، يتم إنشاء نقطة نهاية وهمية تلقائيًا في السحابة دون أي إعداد إضافي.

مثال على عنوان URL للمحاكاة:

https://{your-project}.mock.apidog.io/orders/{id}
Enter fullscreen mode Exit fullscreen mode

مميزات هذا النهج:

  • تعمل دائمًا (بدون بدء/إيقاف يدوي)
  • متاحة لكل أعضاء الفريق عبر الرابط
  • تولد الاستجابات بناءً على المخطط الذي عرفته

كيف تُنشئ Apidog استجابات وهمية

Apidog تقرأ مخطط الاستجابة (JSON Schema أو OpenAPI) وتولد بيانات وهمية منطقية:

  • إذا كان orderId سلسلة UUID، يتم توليد UUID عشوائي
  • إذا كان amount رقم بين 0 و 10000، سيتم توليد رقم ضمن هذا النطاق

يمكن تخصيص القيم بإعداد قواعد محاكاة ثابتة، مثل إرجاع "test-123" دومًا لـ orderId.

نقاط نهاية SOAP في محاكاة Apidog

Apidog تركز على REST واستجابات JSON. لمحاكاة SOAP:

  • أنشئ طلبًا في Apidog
  • عيّن استجابة مخصصة بصيغة SOAP XML
  • استخدم خادم المحاكاة في Apidog للرد

هذا يتطلب إعداد يدوي، لكنه عملي لمحاكاة بسيطة دون الحاجة إلى Java.

المحاكاة ذات الحالة

Apidog تدعم نصوص استجابة مخصصة بلغة JavaScript. يمكنك فحص الطلب وإرجاع استجابة ديناميكية، تمامًا مثل نصوص Groovy في SoapUI، لكن باستخدام JavaScript.

مقارنة جنبًا إلى جنب

الميزة محاكاة SoapUI محاكاة Apidog الذكية
يتطلب Java نعم لا
يعمل دائمًا فقط مع مشغل سطر الأوامر نعم (سحابي)
يمكن للفريق الوصول إليه شبكات يدوية نعم، عبر رابط مشترك
توليد WSDL تلقائيًا نعم لا
يعتمد على مخطط REST لا نعم
استجابات ديناميكية إرسال Groovy نصوص محاكاة JavaScript
دعم HTTPS إعداد مخزن مفاتيح يدوي مدمج
المحاكاة ذات الحالة عبر متغيرات Groovy عبر نصوص JavaScript
مجاني نعم نعم

متى تستخدم كل منهما

استخدم خدمات محاكاة SoapUI إذا:

  • تحتاج إلى محاكاة خدمة SOAP مبنية على WSDL باستجابات مولدة تلقائيًا
  • فريقك يعمل أوفلاين أو خلف قيود شبكة قوية
  • تعتمد بشكل كامل على بيئة SoapUI ولا ترغب بتغيير الأدوات

استخدم المحاكاة الذكية من Apidog إذا:

  • تريد محاكاة نقاط نهاية REST مع مشاركة سهلة عبر الفريق وبدون إعداد شبكة
  • تحتاج إلى خوادم محاكاة تعمل دائمًا دون تدخل يدوي
  • تبدأ مشروعًا وتحدد عقد API قبل التنفيذ
  • تريد تجنب متاعب تثبيت Java وصيانة بيئة محاكاة محلية

الأسئلة الشائعة

هل يمكنني تشغيل خدمات المحاكاة في SoapUI بدون واجهة رسومية؟
نعم. استخدم mockservicerunner.sh (Linux/macOS) أو mockservicerunner.bat (Windows) مع مسار ملف المشروع واسم الخدمة. ستحتاج لتثبيت Java فقط.

هل يدعم Apidog خدمات محاكاة SOAP؟
جزئيًا. يمكنك إعداد استجابات SOAP XML يدوياً في خادم المحاكاة، لكن لا يوجد توليد تلقائي من WSDL. إذا كنت تعرف واجهات SOAP جيدًا، الإعداد اليدوي سهل.

هل يمكن لمحاكاة SoapUI إرجاع استجابات بطيئة؟
نعم. عيّن "تأخير" بالمللي ثانية في إعداد الاستجابة. Apidog يدعم أيضاً تأخير الاستجابة لمحاكاة الشبكة البطيئة.

كم عدد الطلبات التي يستطيع Apidog محاكاتها؟
خادم Apidog السحابي مناسب لأعباء التطوير والاختبار النمطية. لاختبار الأداء العالي، قد تحتاج إلى أداة مخصصة.

ماذا لو احتاج أعضاء فريق لاستجابات مختلفة لنفس نقطة النهاية؟
في SoapUI، كل شخص يدير محاكاته الخاصة. في Apidog، يمكنك عمل بيئات متعددة أو استخدام معلمات الاستعلام لتحديد سيناريوهات مختلفة. خاصية "Mock expects" تتيح مطابقة الطلبات مع استجابات مخصصة.

هل تحتاج المحاكاة في Apidog إلى تعريف API كامل؟
يفضل وجود مخطط للاستجابة لتوليد بيانات واقعية، لكن يمكنك إعداد استجابات يدوية بأي وقت عبر تحديد نقطة النهاية ونص الاستجابة.

خدمة المحاكاة في SoapUI عملية ولكنها محصورة بجهاز محلي وبيئة Java. إذا كنت بحاجة لمحاكاة متواصلة ومشتركة للفريق، تقدم Apidog حلاً سحابياً فعالاً وسريع الإعداد.

Top comments (0)