جودة DevOps / الأساسي: أدلة التسليم وتصميم الحزم / الدرس 2
استراتيجية CI المبنية على الخطر ومواضع البوابات
اختر الفحوص بحسب أثر الفشل وقوة الكشف وكلفة التغذية بدلاً من جمع قائمة اختبارات غير مميزة.
في هذه الصفحة
أهداف الدرس
- اربط السلوك المتغير بالخطر والدليل المناسب.
- وزع الفحوص السريعة والبوابات الأعمق على مسار التسليم.
صِف الفشل بلغة المستخدم
صف لكل تغيير نتيجة غير مرغوبة والمستخدمين المتأثرين وعوامل احتمالها وقابلية كشفها وصعوبة التعافي. تختلف خوارزمية تبيع مقاعد زائدة عن تعديل مسافة تجميلية ولو مسّا ملفاً واحداً. قد تدعم الدرجات النقاش لكن ضرب أرقام ذاتية لا يجعلها موضوعية. استخدم فئات بأمثلة وراجع الحالات غير المعتادة. الهدف اختيار دليل يكشف فشلاً ضاراً محتملاً لا إلحاق وسم خطر زخرفي بعد تصميم المسار.
اربط المخاطر بفحوص ذات حدود
يفحص اختبار وحدة شرط السعة بكلفة قليلة ويفحص API تحقق الطلب وقد يكشف اختبار تكامل متزامن سباقاً في التخزين الحقيقي. يتحقق مسار متصفح من إتمام المستخدم للحجز عبر الواجهة المرئية. لا تستبدل طبقة الأخرى تلقائياً. سجل النقطة العمياء لكل فحص مختار. تكشف التغطية مناطق الشيفرة المنفذة وفق أدوات القياس، لا معنى التحققات أو دراسة سيناريوهات الأعمال الغائبة. افصل تغطية الخطر عن تغطية الأسطر.
{
"changeClass": "capacity-rule",
"requiredEvidence": ["unit-boundary", "api-validation", "concurrent-store"],
"advisoryEvidence": ["browser-layout"],
"owner": "booking-maintainers",
"missingEvidenceDecision": "hold"
}
هذا JSON سجل سياسة يعرّفه التطبيق وليس ميزة مدمجة بمزود CI. يجب أن تقيمه بوابة موثوقة. المالك اسم فريق اصطناعي، ويوضح السجل أن غياب الدليل المطلوب يوقف الترقية بدلاً من الاختفاء بصمت.
حسّن تسلسل التعلم
نفذ الفحوص الحتمية الرخيصة مبكراً لتصل تغذية العيوب الواضحة بسرعة. ضع التكامل والمتصفح والوصول والأداء حيث تبرر البيئة والكلفة ذلك. يعمل بعضها بالتوازي ويعتمد آخر على حزمة مبنية. صمم رسم اعتماديات لا طابوراً واحداً لكل اختبار. قد تفيد حزمة بطيئة تكشف إخفاقات حاسمة متكررة وقد لا تفيد سريعة مكررة. قِس زمن التشخيص القابل للتصرف شاملاً الانتظار والتحقيق لا مدة التنفيذ وحدها.
عامل قواعد الاختيار كبرمجيات مختبرة
تسرّع مرشحات المسار وتصنيف التغييرات التغذية لكنها سياسة تنفيذية ذات أنماط فشل. قد يؤثر اعتماد مشترك أو ترحيل خارج الملفات التي يختارها مرشح ساذج. وقد يتفاعل فحص مطلوب لا يعمل مع حماية الفرع سلباً. احتفظ بمدخل بوابة ثابت يقيم الأدلة المتوقعة وأسباب الاختيار. تكشف التشغيلات الأوسع دورياً فجوات لكنها لا تثبت بأثر رجعي أمان مرشح سابق. راجع قواعد الاختيار بعناية الاختبارات التي تتحكم بها.
def required_suites(changed_paths):
suites = {"unit"}
if any(path.startswith(("api/", "shared/", "migrations/")) for path in changed_paths):
suites.update({"api", "component"})
if any(path.startswith(("web/", "shared/")) for path in changed_paths):
suites.add("browser-smoke")
return sorted(suites)
يجب أن يحدد المستودع هذه المسارات ويختبرها مع إعادة التسمية والمدخلات المولّدة. لا يفترض أمان فرق فارغ أو ناقص. الدالة مقتطف من تقييم السياسة وليست محرك اختيار كاملاً يراعي الاعتماديات.
اجعل الاستثناءات محدودة وظاهرة
يحتاج استثناء البوابة بيان خطر محدداً ودليلاً تعويضياً ومالكاً مسؤولاً وانتهاء وخطة تعاف. ينبغي ألا يتحول إلى continue-on-error دائم. افصل التجارب الإرشادية عن الضوابط الإلزامية لإدخال فحص جديد دون ادعاء نضج إشارته. راجع العيوب المتسربة والمنع الخاطئ لتحسين الاستراتيجية. إذا كافأت العتبة تجاوز الاختبارات الصعبة فالتحفيز خاطئ. قيّم الاستراتيجية بمنع الضرر والتعلم المفيد لا بزيادة نسبة التشغيلات الخضراء.
الأخطاء الشائعة وإصلاحها
يتجاوز تغيير مكتبة مشتركة الحزم المتأثرة
- لماذا يحدث؟
- تمثل قواعد المسار المجلدات لا الاعتماديات.
- كيف تصلحه؟
- وسع الاختيار للمدخلات المشتركة وأضف حالات ارتداد.
- كيف تتجنب تكراره؟
- اختبر قواعد الاختيار على تغييرات سابقة.
ترتفع التغطية وتتسرب عيوب الحجز
- لماذا يحدث؟
- تستخدم تغطية التنفيذ بديلاً لتغطية الخطر.
- كيف تصلحه؟
- أضف تحققات وسيناريوهات مرتبطة بالإخفاقات المتسربة.
- كيف تتجنب تكراره؟
- راجع ادعاءات السلوك مع تقارير التغطية.
يبقى التجاوز المؤقت دائماً
- لماذا يحدث؟
- لا يملك الاستثناء انتهاء أو مالكاً.
- كيف تصلحه؟
- أنشئ استثناء محدوداً وأعد الإنفاذ.
- كيف تتجنب تكراره؟
- نبّه للاستثناءات المنتهية وراجع مبررها.
اختبر فهمك
1. لا يغير ترحيل قاعدة ملفات API. هل يتجاوز مرشح مجلد API اختبارات التوافق؟
اعرض الحل المشروح
لا ينتج حكم آلي من المسار وحده. قد يغير الترحيل شكل البيانات والسلوك. اطلب أدلة الترحيل وAPI أو المكون المناسبة، وعلّم الاختيار أثر المخطط. تحقق من الترقية من مخطط قديم ممثل.
2. لفحص أداء جديد خطوط أساس غير مستقرة. حدد وضع بوابته الأولي.
اعرض الحل المشروح
شغله إرشادياً بصورة ظاهرة أثناء التحقق من ظروف القياس والملكية. لا تسمّ غياب الثقة نجاحاً. حدد موعد الإنفاذ والتراجعات المستهدفة والدليل المؤقت الذي يحمي تغييرات الأداء الخطرة.
أهم ما تعلمته
- اختيار الفحوص وسياسة البوابات جزء من ضوابط خطر المنتج.
- تفيد التغذية السريعة عندما تبقى ذات صلة وموثوقة.
- تحتاج الاستثناءات حدوداً ومسؤولية صريحتين.