اختبار مزدوج

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

يستخدم المبرمج عادةً نسخة اختبارية لعزل سلوك الكود المستهلك عن بقية قاعدة الكود .

عادة ما يكون البديل التجريبي نسخة مبسطة من كود الإنتاج وقد يتضمن إمكانيات خاصة بالاختبار.

تُستخدم نماذج الاختبار البديلة لبناء منصات الاختبار .

الاستخدامات

يمكن استخدام بديل الاختبار لتبسيط الاختبارات، أو زيادة سرعة التنفيذ، أو السماح بنتائج حتمية لإجراء ما.

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

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

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

محاذير

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

أساليب التنفيذ

عند تطبيق بدائل الاختبار، يتضمن النهج المعتاد خطوتين رئيسيتين:

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

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

الأنواع

تُصنف بدائل الاختبار بعدة طرق.

عام

على الرغم من عدم قبولها عالميًا، يصنف جيرارد ميسزاروس [ 2 ] بدائل الاختبار على النحو التالي:

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

على الرغم من عدم وجود معيار مفتوح للتصنيفات، فقد استخدم مارتن فاولر هذه المصطلحات في مقالته " الاختبارات الوهمية ليست مجرد بنود " [ 3 ] ، مشيرًا إلى كتاب ميسزاروس. كما استخدمت مايكروسوفت المصطلحات والتعريفات نفسها في مقال بعنوان " استكشاف سلسلة اختبارات البدلاء " [ 4 ] .

خدمة

في أنظمة بنية الخدمات الموجهة (SOA) والخدمات المصغرة ، يستخدم المختبرون نماذج اختبارية تتواصل مع النظام قيد الاختبار عبر بروتوكول الشبكة. [ 5 ] [ 6 ] وتُطلق شركات تصنيع الأدوات على هذه النماذج أسماءً مختلفة. ومن المصطلحات الشائعة " محاكاة الخدمة" . وتشمل الأسماء الأخرى "محاكاة واجهة برمجة التطبيقات" و"نموذج واجهة برمجة التطبيقات" [ 7 ] و"نموذج HTTP" و"نموذج HTTP" و"نموذج اختبار عبر الشبكة". [ 8 ] [ 9 ]

تم التحقق من أنها مزيفة

الكائن المزيف المُتحقق منه هو كائن مزيف تم التحقق من سلوكه ليطابق سلوك الكائن الحقيقي باستخدام مجموعة من الاختبارات التي تُجرى على كل من الكائن المزيف المُتحقق منه والتنفيذ الحقيقي. [ 10 ]

انظر أيضاً

مراجع

  1. فاولر، مارتن (1999). إعادة هيكلة الكود - تحسين تصميم الكود الحالي . بوسطن: أديسون ويسلي لونغمان، إنك. ISBN 0-201-48567-2.
  2. ميسزاروس، جيرارد (2007). أنماط اختبار xUnit: إعادة هيكلة كود الاختبار . أديسون-ويسلي. ISBN 978-0-13-149505-0.
  3. فاولر، مارتن (2007). " الاختبارات التجريبية ليست مجرد بنود " . تم الاسترجاع في 29-12-2010 .
  4. سيمان، مارك (2007). " استكشاف سلسلة اختبارات المحاكاة " . تم الاسترجاع في 29-12-2010 .
  5. كليمسون، توبي "استراتيجيات الاختبار في بنية الخدمات المصغرة" ، martinfowler.com ، 18 نوفمبر 2014. تم الاطلاع عليه في 7 ديسمبر 2017.
  6. بايرز، براندون. "اختبار الخدمات المصغرة باستخدام ماونتبانك"، منشورات مانينغ ، بدأ برنامج MEAP في مارس 2017. ISBN 9781617294778تم الاطلاع عليه بتاريخ 7 ديسمبر 2017.
  7. براينت، دانيال "إصدار أداة محاكاة واجهة برمجة التطبيقات WireMock v2 مع تحسين مطابقة الطلبات وإدارة الواجهات الوهمية" ، InfoQ ، 16 أغسطس 2016. تم الاطلاع عليه في 7 ديسمبر 2017.
  8. ThoughtWorks "الرادار التكنولوجي، الأدوات: المحتال" ، ThoughtWorks ، نوفمبر 2015. تم الاطلاع عليه في 7 ديسمبر 2017.
  9. بولاتي، فويتشيك "الاختلافات بين المحاكاة والنمذجة الافتراضية للخدمات لفرق الاختبار والتطوير" ، InfoQ ، 19 فبراير 2016. تم الاطلاع عليه في 7 ديسمبر 2017.
  10. تيرنر-تراورينغ، إيتامار (2019). " اختبارات سريعة للخدمات البطيئة: لماذا يجب عليك استخدام حسابات وهمية موثقة " . تم الاسترجاع في 21 يناير 2019 .

جيرارد ميسزاروس:

مارتن فاولر:

المصادر المفتوحة:

  • برنامج ELF Spy - برامج التزييف والتجسس بلغة C++
  • FakeIt - محاكاة، وتزييف، وتجسس بلغة C++
  • محاكاة جوجل - المحاكاة في لغة C++
  • jMock - تطوير البرمجيات الموجه بالاختبار باستخدام النماذج الوهمية
  • Mockito - إطار عمل للمحاكاة في جافا
  • unittest.mock - المحاكاة باستخدام بايثون