ما هو اختبار الواجهة؟ أنواع وأمثلة

⚡ ملخص ذكي

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

  • 🔗 فريف: الواجهة هي أي اتصال - واجهة برمجة تطبيقات، أو خدمة ويب، أو قائمة انتظار رسائل - يربط بين مكونين.
  • 🧭 جزأين: يستهدف الاختبار الربط بين خادم الويب وخادم التطبيق، والربط بين خادم التطبيق وخادم قاعدة البيانات.
  • 📄 مثال عملي: يتم التحقق من صحة مدخلات XML ومخرجات JSON وفقًا لمواصفات التنسيق المنشورة.
  • 🧪 أنواع الاختبار: سير العمل، والحالات الاستثنائية، والأداء والحمل، بالإضافة إلى اختبار كل نظام على حدة.
  • 🛠️ الأدوات: تقوم واجهات برمجة التطبيقات (API) وتقنية المحاكاة الافتراضية للخدمات بتوجيه الطلبات عندما لا توجد واجهة مستخدم للنقر عليها.
  • 🔍 نطاق الحدود: اختبار الواجهة هو نوع فرعي من اختبار التكامل يركز على اتصال الواجهةtracنفسها.

اختبار واجهة الاتصال بين خادم الويب وخادم التطبيقات وخادم قاعدة البيانات

ما هو اختبار الواجهة؟

اختبار الواجهة يُعرَّف بأنه نوع من أنواع اختبار البرمجيات الذي يتحقق مما إذا كان الاتصال بين نظامين برمجيين مختلفين يتم بشكل صحيح.

يُطلق على الاتصال الذي يدمج مكونين اسم الواجهة. في عالم الحوسبة، قد تكون هذه الواجهة أي شيء مثل واجهات برمجة التطبيقات (APIs) وخدمات الويب، وما إلى ذلك. ويُشار إلى اختبار هذه الخدمات المتصلة أو الواجهة باسم اختبار الواجهة.

الواجهة هي في الواقع برنامج يتكون من مجموعات من الأوامر والرسائل والسمات الأخرى التي تتيح الاتصال بين الجهاز والمستخدم.

النقطة المهمة هي أن الواجهة لها عيبtract: تنسيق طلب متفق عليه، وتنسيق استجابة متفق عليه، ومجموعة متفق عليها من رموز الخطأ، ومهلة زمنية متفق عليها. تمارين اختبار الواجهة التي تتضمنtracيتم رصد العيوب من كلا الجانبين، لذا فإن أي تغيير يُجريه أحد الفريقين لا يُعطّل عمل الفريق الآخر دون علمه. ولأن معظم هذه البيانات لا تصل إلى الشاشة، فإن العيوب التي تكتشفها تكون غير مرئية. اختبار الصندوق الأسود يتم ذلك من خلال واجهة المستخدم فقط.

كيفية القيام باختبار الواجهة

يتضمن اختبار الواجهة اختبار قسمين رئيسيين:

  1. خادم الويب وواجهة خادم التطبيق
  2. واجهة خادم التطبيق وخادم قاعدة البيانات.

بالنسبة للسيناريوهات المذكورة أعلاه، يتم إجراء اختبار الواجهة

  • التحقق من تنفيذ الخوادم بشكل صحيح أم لا
  • تتم معالجة الأخطاء بشكل صحيح أو يتم إرجاع رسالة خطأ لأي استعلام يتم إجراؤه بواسطة التطبيق
  • تحقق من النتائج عند إعادة تعيين الاتصال بخادم الويب بينهما

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

اختبار الواجهات عبر سلسلة خادم الويب وخادم التطبيقات وخادم قاعدة البيانات

عمليًا، يعمل المختبِر على هذه السلسلة خطوة بخطوة. تُجرى كل خطوة بطلب صحيح أولًا، ثم بطلب غير صحيح، ثم بجعل الطرف البعيد غير متاح عمدًا، بحيث يتم تسجيل كل من مسار النجاح ومسار الفشل في نفس الوقت. حالة اختبار.

مثال على اختبار الواجهة

لنفترض أن واجهة أي تطبيق xyz تأخذ XML الملف كمدخل ويقوم بتسليمه JSON يُستخدم ملف كمخرج. لاختبار واجهة هذا التطبيق، كل ما يتطلبه الأمر هو تحديد مواصفات تنسيق ملف XML وتنسيق ملف JSON.

باستخدام هذه المواصفات، يمكننا إنشاء ملفات XML نموذجية للإدخال وإدخالها في الواجهة. ثم يتم التحقق من صحة ملف الإدخال (XML) وملف الإخراج (JSON) وفقًا للمتطلبات، وهو ما يُعرف باختبار الواجهة.

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

لماذا اختبار الواجهة

يتم اختبار الواجهة

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

وهناك أيضاً جانب يتعلق بالتكلفة. فإصلاح عيب في تنسيق الطلب يكون رخيصاً أثناء ربط النظامين معاً، ولكنه يصبح مكلفاً بمجرد أن يقوم نظام لاحق بتخزين البيانات المشوهة.

أنواع اختبار الواجهة

أثناء اختبار الواجهة، يتم إجراء أنواع مختلفة من الاختبارات على الواجهة والتي قد تتضمن

  • العمل: فهو يضمن أن محرك الواجهة يتعامل مع سير العمل القياسي الخاص بك كما هو متوقع.
  • الحالات الشاذة - القيم غير المتوقعة: يتم أخذ هذا الأمر في الاعتبار عند إجراء الاختبارات التي تتضمن عكس التاريخ والشهر واليوم.
  • اختبار الأداء والحمل والشبكة: قد تتطلب واجهة ذات حجم كبير المزيد اختبار الحمل من واجهة منخفضة الحجم، اعتمادًا على محرك الواجهة والبنية التحتية للاتصال
  • الأنظمة الفردية: يتضمن ذلك اختبار كل نظام على حدة. على سبيل المثال، يجب أن يكون نظام الفوترة ونظام إدارة المخزون لمتجر التجزئة قادرين على العمل بشكل منفصل.

العنصر الأول قريب بما فيه الكفاية من اختبار سير العمل لإعادة استخدام سيناريوهاتها، ويتداخل العنصر الأخير مع اختبار الوحدةلأن النظام الذي يفشل بمفرده سيفشل مرة أخرى بمجرد توصيله.

استراتيجية اختبار الواجهة

استراتيجية اختبار الواجهات هي طريقة تُستخدم لاختبار الواجهات باستخدام اختبارات مشتركة بغض النظر عن طريقة التنفيذ. يمكننا استخدامtracقم بإنشاء حالات اختبار t وإنشاء نماذج ملموسة لحالة الاختبار لكل تطبيق لاستراتيجية اختبار الواجهة. الأساس/المطلقtracتقوم حالات الاختبار بإجراء اختبارات محايدة للتنفيذ، بينما تتولى الاختبارات الملموسة مهمة إنشاء الكائنات لاختبارها وإجراء اختبارات خاصة بالتنفيذ.

تكمن فائدة هذا الهيكل في إعادة الاستخدام. فعندما يظهر تطبيق ثالث لنفس الواجهة، فإن القيمة المطلقةtracيتم تشغيل t suite عليه دون تغيير، ولا يلزم سوى كتابة كود الإنشاء. ويتم تطبيق الفكرة نفسها على نطاق أوسع في اختبار المكونات، حيث يكون هناك تفاهم مشتركtracيتم تشغيل مجموعة أدوات t على كل مكون يدعي أنه يفي بها.

أدوات اختبار الواجهات

لأن الواجهة لا تحتوي على شاشة، يتعين على الأدوات إنشاء الطلبات مباشرةً والتحقق من الاستجابات الأولية. عادةً ما تجمع الفرق بين ثلاث فئات من الأدوات.

  • عملاء واجهة برمجة التطبيقات (API) ومنشئو الطلبات: أدوات مثل Postman, SoapUIتقوم كل من Insomnia و Hoppscotch بإرسال طلبات REST أو SOAP أو GraphQL، وتخزينها كمجموعات قابلة لإعادة الاستخدام، والتحقق من رموز الحالة والعناوين ونصوص الاستجابة.
  • Codeمكتبات اختبار المستوى -: تتيح المكتبات التي تعمل داخل مجموعة الاختبارات الحالية إجراء فحوصات الواجهة بجانب اختبارات الوحدة وتنفيذها في كل إصدار، مما يمنعها من أن تصبح قديمة.
  • أدوات التحميل والبروتوكول: أداة مثل JMeter يُشغّل نفس الواجهة عند مستوى الصوت، وهذا ما يحوّل الفحص الوظيفي إلى اختبار أداء من الاتصال.
  • محاكاة الخدمات والنماذج الوهمية: يسمح استخدام طرف بديل للطرف البعيد باختبار أحد الجانبين بينما يكون الجانب الآخر غير متاح أو غير مكتمل أو مكلف للغاية للاتصال به بشكل متكرر.

لا يُعدّ اختيار البرنامج بنفس أهمية تغطية جميع الاختبارات. أيًا كان البرنامج المُختار، يجب تخزين مجموعة الطلبات في نظام التحكم بالإصدارات جنبًا إلى جنب مع الكود، بحيث يتم دمج أي تغيير في واجهة المستخدم مع أي تغيير في اختباراتها في نفس عملية التثبيت. تُغطّى تفاصيل هذه الفئة الأوسع في اختبار API.

قائمة مراجعة اختبار الواجهة وأفضل الممارسات

تضمن قائمة التحقق المختصرة تغطية واجهة المستخدم بشكل دقيق عبر الإصدارات. قم بتطبيقها على كل اتصال على حدة بدلاً من تطبيقها على التطبيق ككل.

  • معtracأولاً: تأكد من أن مخططات الطلب والاستجابة تتطابق مع المواصفات المنشورة، حقلًا بحقل، بما في ذلك أنواع البيانات والحقول الاختيارية.
  • قيم الحدود: إرسال حمولات فارغة، وحقول ذات طول أقصى، ومجموعات أحرف غير متوقعة، وتنسيقات تاريخ معكوسة.
  • مسارات الخطأ: تأكد من أن كل فشل يُرجع رمزًا ورسالة ذات معنى بدلاً من مكدس الاستدعاءات. tracأو نجاح صامت.
  • مهلة الانتظار وإعادة المحاولات: قم بمقاطعة الاتصال في منتصف الطلب وتأكد من أن المتصل يعيد المحاولة بأمان دون تكرار المعاملة.
  • الأمن: تحقق من المصادقة والتفويض والتشفير على الرابط، وتأكد من أن رسائل الخطأ لا تكشف عن تفاصيل داخلية.
  • تناسق البيانات: اقرأ السجل من الجانب الآخر وتأكد من عدم اقتطاع أي شيء أو إعادة ترميزه أو إعادة ترتيبه أثناء النقل.
  • حجم: كرر إجراء المكالمة ذات أعلى حركة مرور في ظل الحمل المتزامن وراقب استنفاد مجموعة الاتصالات.

ثلاث ممارسات تجعل قائمة التحقق هذه قابلة للتكرار. أولًا، أتمتة مجموعة الاختبارات وتشغيلها في كل إصدار، لأن واجهات المستخدم تتغير بشكل أقل وضوحًا من الشاشات. ثانيًا، تسجيل الطلب والاستجابة بالكامل لكل فشل، إذ يكاد يكون من المستحيل إعادة إنتاج عيب في واجهة المستخدم من لقطة شاشة. ثالثًا، الحفاظ على استقلالية مجموعة الاختبارات عن بيانات الاختبار التي أنشأتها مجموعات أخرى، بحيث يشير الفشل إلى واجهة المستخدم بدلًا من سجل مفقود.

تندرج هذه الفحوصات بشكل طبيعي ضمن الخطة الأوسع الموضحة في أنواع اختبار البرمجياتويتم تشغيلها قبل استخدام نفس الاتصالات من البداية إلى النهاية أثناء اختبار النظام.

اختبار الواجهة مقابل اختبار التكامل

يرتبط المصطلحان ببعضهما البعض ولا يتعارضان: فاختبار الواجهة هو جزء من عملية التكامل يركز على الاتصال نفسه. يوضح الجدول أدناه أهمية كل جانب.

اختبار الواجهة اختبار التكامل
نوع من اختبارات التكامل يهتم باختبار الواجهات بين المكونات أو الأنظمة يتم إجراء الاختبار لكشف العيوب في الواجهات وفي التفاعلات بين المكونات أو الأنظمة المتكاملة.
التركيز هو الخدعةtract — تنسيق الطلب، تنسيق الاستجابة، رموز الخطأ، والمهلات التركيز هو السلوك المشترك للمكونات بمجرد انضمامها
يمكن تنفيذه بمجرد وجود المواصفات، مع وضع الطرف البعيد كبديل مؤقت يتطلب ذلك بناء المكونات المشاركة ونشرها معًا
يشير العطل إلى اتصال واحد قد يشير العطل إلى أي مكون في المجموعة المجمعة

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

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

عادةً ما يتولى مهندسو ضمان الجودة مسؤولية تغطية التكامل، ويعملون مع مطوري كلا النظامين. أما في المنتجات التي تعتمد بشكل كبير على الخدمات، فيتولى هذه المهمة مختبر واجهات برمجة التطبيقات (API) متخصص، لأن العمل يتطلب مهارات بناء الطلبات أكثر من مهارات التنقل بين الشاشات.

لا توجد مخرجات مرئية للفحص، ونقاط نهاية خارجية لا يمكن استدعاؤها بحرية، وبيانات اختبار يجب أن تكون موجودة على كلا الجانبين، ومواصفات تتغير دون إشعار. تعمل النماذج الأولية ومجموعات الطلبات الخاضعة للتحكم في الإصدار على تقليل معظم هذه المشاكل.

تتداخل هذه الأنواع بشكل كبير. واجهة برمجة التطبيقات (API) هي أحد أنواع الواجهات، لذا اختبار API هل يتم تطبيق اختبار الواجهة على تلك التقنية تحديدًا؟ يشمل اختبار الواجهة أيضًا عمليات نقل الملفات، وقوائم انتظار الرسائل، وروابط قواعد البيانات التي لا تحتوي على واجهة برمجة تطبيقات (API).

لا. الاسم مشترك، لكن الهدف مختلف. يختبر اختبار الواجهة الاتصالات بين الأنظمة، بينما يختبر اختبار واجهة المستخدم الشاشات وعناصر التحكم والتصميم. الخلط بينهما يُبقي اتصالات جانب الخادم دون اختبار.

بمجرد الاتفاق على مواصفات الطلب والاستجابة، وهو ما يحدث عادةً قبل اكتمال أي من النظامين، يتم تشغيل مجموعة الاختبارات مبكرًا، وتُعاد استخدام نفس المجموعة بمجرد تشغيل كلا النظامين.

نسبة نقاط النهاية الموثقة التي تحتوي على اختبار إيجابي واحد على الأقل واختبار سلبي واحد على الأقل، ونسبة رموز الخطأ المعلنة التي تم تشغيلها فعليًا، وعدد عيوب الواجهة escaping إلى المراحل اللاحقة. نتائج الاختبارات الأولية لا تثبت إلا القليل جدًا.

تقوم تقنية التعلم الآلي بقراءة مخطط البيانات وإنشاء حدود وحمولات سلبية قد يتجاهلها المستخدم البشري، ثم تصنف الاستجابات الفاشلة بحيث لا يتم الإبلاغ عن سبب جذري واحد ثماني مرات. كما أنها تُشير إلى تغييرات مخطط البيانات التي لم تعد الطلبات الحالية تتطابق معها.

نعم. عند إدخال مخطط أو حمولة بيانات نموذجية، يقوم النظام بإنشاء مُنشئات الطلبات والتأكيدات والاستجابات الأولية بسرعة. مع ذلك، لا يزال يتعين على المستخدم تقديم المواصفات، لأن التأكيد المُنشأ يعتمد على صحة البيانات المُدخلة.tract خلفها.

تلخيص هذه التدوينة بـ: