اختبار التكامل
اختبار التكامل هو أحد أشكال اختبار البرمجيات، حيث يتم اختبار مكونات أو وحدات أو خدمات برمجية متعددة معًا للتحقق من عملها كما هو متوقع عند دمجها. وينصب التركيز على اختبار التفاعلات وتبادل البيانات بين الأجزاء المتكاملة، بدلاً من اختبار المكونات بشكل منفصل.
يصف اختبار التكامل كيفية إجراء الاختبارات على مستوى التكامل، وذلك على عكس الاختبار على مستوى الوحدة أو النظام .
غالباً ما يتم إجراء اختبار التكامل لتقييم مدى توافق المكون مع المتطلبات الوظيفية . [ 1 ]
في عملية تطوير منظمة، يأخذ اختبار التكامل كمدخلات وحدات تم اختبارها كوحدات، ويجمعها في مجموعات أكبر، ويطبق الاختبارات المحددة في خطة اختبار التكامل ، ويقدم نتائج الاختبار كمخرجات كخطوة تؤدي إلى اختبار النظام. [ 2 ]
يقترب
تتضمن بعض أنواع اختبارات التكامل المختلفة ما يلي: اختبار الانفجار الكبير، والاختبار المختلط (الساندويتش)، والاختبار الأكثر خطورة، والاختبار من أعلى إلى أسفل، والاختبار من أسفل إلى أعلى . وتشمل أنماط التكامل الأخرى [ 3 ] : تكامل التعاون، وتكامل البنية الأساسية، وتكامل الطبقات، وتكامل العميل والخادم، وتكامل الخدمات الموزعة، والتكامل عالي التردد.
في اختبار "الانفجار الكبير"، تُدمج معظم الوحدات المطورة معًا لتشكيل نظام برمجي متكامل أو جزء رئيسي منه، ثم تُستخدم لاختبار التكامل. تُعد هذه الطريقة فعّالة جدًا في توفير الوقت خلال عملية اختبار التكامل . مع ذلك، إذا لم تُسجل حالات الاختبار ونتائجها بشكل صحيح، ستصبح عملية التكامل أكثر تعقيدًا، وقد تُعيق فريق الاختبار عن تحقيق هدف اختبار التكامل.
في اختبار البرمجيات من الأسفل إلى الأعلى، تُختبر المكونات ذات المستوى الأدنى أولاً، ثم تُستخدم لتسهيل اختبار المكونات ذات المستوى الأعلى. تُكرر هذه العملية حتى يتم اختبار المكون الموجود في أعلى التسلسل الهرمي. تُدمج جميع الوحدات أو الإجراءات أو الوظائف ذات المستوى الأدنى، ثم تُختبر. بعد اختبار تكامل الوحدات المدمجة ذات المستوى الأدنى، يتم تشكيل المستوى التالي من الوحدات، والذي يمكن استخدامه لاختبار التكامل. يُعد هذا النهج مفيدًا فقط عندما تكون جميع أو معظم الوحدات من نفس مستوى التطوير جاهزة. كما تُساعد هذه الطريقة في تحديد مستويات البرمجيات المطورة، وتُسهل الإبلاغ عن تقدم الاختبار كنسبة مئوية.
في اختبار "من أعلى إلى أسفل"، يتم اختبار الوحدات المتكاملة العليا أولاً، ثم يتم اختبار فرع الوحدة خطوة بخطوة حتى نهاية الوحدة ذات الصلة.
يجمع اختبار الساندويتش بين الاختبار من أعلى إلى أسفل والاختبار من أسفل إلى أعلى. ومن بين القيود التي تواجه هذا النوع من الاختبار أن أي شروط غير مذكورة في اختبارات التكامل المحددة، باستثناء تأكيد تنفيذ عناصر التصميم، لن يتم اختبارها عمومًا.
نهج من أعلى إلى أسفل
نهج من القاعدة إلى القمة
نهج الساندويتش
نهج الانفجار العظيم
أدوات مفتوحة المصدر
تُستخدم العديد من الأدوات مفتوحة المصدر على نطاق واسع لدعم اختبار التكامل في تطوير البرمجيات الحديثة. فهي تساعد في التحقق من صحة الاتصال بين الخدمات، ومحاكاة التبعيات الخارجية، والتحقق من سير العمل بين الواجهة الأمامية والخلفية. وتُدمج العديد من الفرق هذه الأدوات في مسارات التكامل المستمر لتحسين الموثوقية والتغطية الآلية.
| أداة | عدد نجوم GitHub (تقريبًا) | دعم وهمي | اختبار الواجهة الخلفية | اختبار الواجهة الأمامية | حالة الاستخدام الأساسية |
|---|---|---|---|---|---|
| الكاتب المسرحي | أكثر من 75000 | لا | محدود | نعم | اختبار واجهة المستخدم والتكامل من البداية إلى النهاية |
| Pytest + Requests/HTTPX | أكثر من 39000 | لا | نعم | محدود | اختبار واجهات برمجة التطبيقات والخدمات باستخدام لغة بايثون |
| ك6 | أكثر من 29000 | لا | نعم | محدود | اختبار تكامل التحميل والأداء |
| كيبلوي | أكثر من 15000 | نعم | نعم | محدود | اختبار التسجيل وإعادة التشغيل والمحاكاة الآلية |
| WireMock | أكثر من 14000 | نعم | لا | محدود | محاكاة خدمة HTTP واستبدالها |
| الكاراتيه | أكثر من 8000 | محدود | نعم | محدود | اختبار واجهة برمجة التطبيقات باستخدام المحاكاة المدمجة |
| اطمئن، لا تشغل بالك | أكثر من 8000 | لا | نعم | لا | اختبار تكامل واجهة برمجة تطبيقات REST بلغة Java |
| ذبابة الحوام | أكثر من 5000 | لا | نعم | لا | محاكاة واجهة برمجة التطبيقات (API) ومحاكاة الخدمة |
إدارة بيانات الاختبار
ينبغي تصميم اختبارات التكامل التي تُجري تغييرات على أي مخزن بيانات دائم أو قاعدة بيانات بعناية فائقة، مع مراعاة الحالة الابتدائية والنهائية للملفات أو قاعدة البيانات، حتى في حال فشل أي اختبار. ويتحقق ذلك غالبًا باستخدام مزيج من التقنيات التالية:
- هذه
TearDownالطريقة، التي تُعد جزءًا لا يتجزأ من العديد من أطر الاختبار. try...catch...finallyهياكل معالجة الاستثناءات حيثما توفرت.- معاملات قواعد البيانات حيث تتضمن المعاملة بشكل ذري ربما عملية كتابة وقراءة وعملية حذف مطابقة.
- يتم أخذ "لقطة" من قاعدة البيانات قبل تشغيل أي اختبارات، ثم العودة إلى تلك اللقطة بعد كل تشغيل للاختبار. يمكن أتمتة هذه العملية باستخدام إطار عمل مثل Ant أو NAnt أو نظام تكامل مستمر مثل CruiseControl .
- يُفضّل تهيئة قاعدة البيانات إلى حالة نظيفة قبل الاختبارات، بدلاً من تنظيفها بعدها . قد يكون هذا الأمر ذا أهمية في الحالات التي قد يُصعّب فيها التنظيف تشخيص حالات فشل الاختبارات، وذلك بحذف الحالة النهائية لقاعدة البيانات قبل إجراء التشخيص التفصيلي.
انظر أيضاً
مراجع
- ↑ المعيار الدولي ISO/IEC/IEEE - هندسة النظم والبرمجيات . ISO/IEC/IEEE 24765:2010(E). 2010. المجلد ، العدد، الصفحات 1-418، 15 ديسمبر 2010.
- ↑ مارتن أ. أولد وتشارلز أونوين (محرران)، الاختبار في تطوير البرمجيات ، جمعية الحاسبات البريطانية (1986)، ص 71. تاريخ الوصول: 31 أكتوبر 2014
- ↑ بايندر، روبرت ف.: اختبار الأنظمة الموجهة للكائنات: النماذج والأنماط والأدوات . أديسون ويسلي 1999. ISBN 0-201-80938-9
- اختبار البرمجيات
- اختبار الأجهزة
