CI/CD / أسس الدمج والمرشح / الدرس 5
الاختبارات وحالة الخروج وبوابات الإصدار المفيدة
اربط التأكيدات وانتقال الحالة والأدلة المحفوظة حتى تصبح الفحوص ذات معنى.
في هذه الصفحة
أهداف الدرس
- تمييز تنفيذ الاختبار عن فرض نتيجته.
- تصميم فحوص سريعة وأبطأ لمخاطر مختلفة.
تعالج البوابة خطراً مسمى
تفيد بوابة الإصدار عندما ينبئ إخفاقها بخطر مهم ويستطيع شخص معالجته. يفحص اختبار وحدة Parcel تطبيع الرمز البريدي، ويفحص اختبار العقد الشكل المتوقع لمحوّل شركة الشحن، ويسأل فحص أولي إن كانت نقطة دخول الحزمة تبدأ في مختبر مناسب. تجيب هذه الاختبارات عن أسئلة مختلفة. لا يثبت عدد الاختبارات ولا نسبة التغطية وحدهما صحة السلوك. حدد نمط الفشل والدليل الناتج وقرار الإصدار الذي يتحكم فيه.
استخدم حالات تظهر العقد
للمطبّع الذي يحذف المسافات المحيطة ويحوّل الرمز إلى أحرف كبيرة سلوك حتمي بسيط. يختبر المثال الكامل التحويلين والمدخل الفارغ. لا يتحقق من صيغ البريد الفعلية أو قواعد العناوين الدولية، لذلك لا ينبغي لاسمه الإيحاء بتلك القدرة. يجب أن يفشل التأكيد للعيب المقصود ويسهل تشخيصه ويتجنب الوقت والتوفر الخارجي ما لم يكونا موضوع الفحص نفسه.
def normalize(code):
return code.strip().upper()
cases = [(" ab12 ", "AB12"), ("", ""), (" x9", "X9")]
for supplied, expected in cases:
assert normalize(supplied) == expected, (supplied, expected)
print("3 normalization cases passed")
3 normalization cases passed
كل المدخلات نصوص افتراضية. ينجح خروج البرنامج فقط إذا صحت جميع التأكيدات. لا يدعي صحة قانونية للرمز البريدي.
احفظ الإخفاق خلال الغلاف
يمكن لغلاف يتجاهل حالة الخروج تعطيل اختبار صحيح. قد تجعل أنابيب الصدفة وإعدادات تجاهل الخطأ وأوامر النجاح غير المشروطة مجموعة فاشلة تبدو ناجحة. افصل تنفيذ الاختبار ونشر التقرير وتقييم البوابة. ينبغي للجامع الاحتفاظ بالدليل بعد الفشل دون إحلال نجاحه محل نتيجة الاختبار. افحص دلالات الأخطاء والأنابيب للصدفة المختارة بدلاً من افتراض تطابق كل مشغّل مع الطرفية المحلية.
python test_normalizer.py
result=$?
# A report publisher would run here under its own reviewed policy.
exit "$result"
يفترض المقطع صدفة تستمر بعد أمر الاختبار ووجود test_normalizer.py، وليس سير عمل كاملاً. إن فعّلت المنصة الخروج الفوري فاستخدم آليتها الصريحة لجمع التقرير دائماً، وأبق نتيجة الاختبار الأصلية هي البوابة المطلوبة.
رتّب الفحوص حسب الكلفة والتشخيص
تصلح الاختبارات الحتمية السريعة مبكراً لأنها تقدم تغذية قليلة الكلفة. تحتاج اختبارات التكامل والتوافق تجهيزات مضبوطة وتنظيفاً صريحاً، وتغطي اختبارات الرحلة الكاملة سلوكاً مهماً لكنها قد تصعب التشخيص حين تتغير أشياء كثيرة معاً. لا تحذف اختباراً لمجرد بطئه. اسأل إن أمكن تغطية الخطر مبكراً أو عزله، وأين يقع الفحص المكلف المتبقي: الاقتراح أم الدمج أم التوافق الدوري. تبقى للأدلة المطلوبة قاعدة حداثة محددة.
عامل عدم الاستقرار كعيب
يقوّض الاختبار المتناوب بين النجاح والفشل على المدخلات نفسها الثقة. قد تجمع إعادة واحدة دليلاً عن عدم الاستقرار، لكن الإعادة حتى النجاح تخفي معدل الفشل. احفظ نتائج المحاولات منفصلة وسجل البذرة والافتراضات الزمنية وعيّن مسؤولاً. يحتاج العزل المؤقت نهاية زمنية وتغطية بديلة للخطر. لا تحول فحصاً إلزامياً بصمت إلى تقرير اختياري. حقق الحالة المشتركة والترتيب والخدمات الخارجية والتسابق الحقيقي قبل اختيار العلاج.
الأخطاء الشائعة وإصلاحها
يحتوي السجل إخفاقات والمهمة المطلوبة ناجحة.
- لماذا يحدث؟
- ابتلع الغلاف رمز الفشل أو تجاهل الأخطاء.
- كيف تصلحه؟
- اجعل نتيجة المجموعة الأصلية حاكمة وارفع التقرير منفصلاً.
- كيف تتجنب تكراره؟
- راجع انتقال الفشل بحالة افتراضية فاشلة عمداً.
تخفي الإعادة اختباراً كثير الفشل.
- لماذا يحدث؟
- لا تُعرض إلا المحاولة الناجحة الأخيرة.
- كيف تصلحه؟
- احفظ جميع المحاولات وحقق المدخلات غير الحتمية.
- كيف تتجنب تكراره؟
- راقب عدم الاستقرار وحدد نهاية لأي عزل.
تُعامل التغطية العالية كدليل صحة الملصقات.
- لماذا يحدث؟
- اختلط تنفيذ الأسطر بتأكيد السلوك.
- كيف تصلحه؟
- أضف أمثلة موجهة للخطر وتأكيدات للحالات الحدية.
- كيف تتجنب تكراره؟
- راجع ما يكتشفه كل اختبار وحدوده.
اختبر فهمك
1. نجحت المجموعة بعد الإعادة الرابعة. ماذا يسجل الإصدار؟
اعرض الحل المشروح
يسجل المحاولات الفاشلة والناجحة وسماح السياسة بهذا القبول وصاحب معالجة عدم الاستقرار. تفقد النتيجة الأخيرة وحدها دليلاً مهماً. إذا تعلق الفشل بتسابق حاسم فلا تثبت الإعادة اختفاء الخطر.
2. يحتاج اختبار العقد شركة شحن غير متاحة للاقتراحات. كيف نحافظ على التغطية؟
اعرض الحل المشروح
استخدم تجهيز عقد محلياً مضبوطاً للاقتراحات، وتحقق من مطابقته في مسار توافق منفصل مصرح به، واشترط دليلاً حديثاً مناسباً قبل الإصدار. اذكر الحد بدلاً من منح شيفرة الاقتراح وصولاً خارجياً ذا صلاحيات.
أهم ما تعلمته
- تحتاج البوابة خطراً مسمى وحالة فشل محفوظة.
- تشرح التقارير النتائج ولا تستبدلها.