معمارية البرمجيات / التطور: السعة والانتقال والتحقق والمراجعة / الدرس 16
تحقق من الادعاءات المعمارية بأدلة مركزة
اختر فحوص الاعتماد الثابت واختبارات السياسة والمحول والعقد والاستعادة لادعاءات مختلفة.
في هذه الصفحة
أهداف الدرس
- طابق حد الاختبار مع الخاصية التي يستطيع إثباتها.
- فسّر النجاح دون توسيع ادعائه خارج المثال.
اكتب الخاصية قبل أداة الاختبار
يبدأ التحقق بادعاء قابل للدحض. عدم استيراد السياسة حزمة المزود ادعاء اعتماد؛ وعدم تجاوز السعة ادعاء تزامن؛ وفهم العملاء القدماء للرد الجديد ادعاء توافق. يحتاج كل منها دليلا مختلفا. قد يلمس اختبار شامل كل المكونات دون تفسير الحد الفاشل. تحدد الفحوص المركزة الخاصية والنطاق، وتتحقق السيناريوهات الأوسع من التفاعلات التي لا تثبتها العزلة.
استخدم فحص الاعتماد لقواعد الاعتماد
يفحص التحليل الثابت الاستيرادات أو مراجع الحزم أو رسما صريحا ويرفض علاقة ممنوعة. لا يثبت عزل التشغيل أو صحة العمل. يقيم البرنامج رسما افتراضيا، فيثبت القاعدة المعلنة فقط. ويحتاج المشروع الحقيقي استخلاصا يفهم اللغة والاعتماديات المولدة والديناميكية. أبق القاعدة صغيرة ومفهومة؛ فالقاعدة الهشة التي تُعطل باستمرار أضعف من فحص مركز واستثناء مملوك.
edges = [("booking_policy", "reservation_port"), ("mail_adapter", "mail_sdk")]
forbidden = [(a, b) for a, b in edges if a == "booking_policy" and b.endswith("_sdk")]
print(f"forbidden_edges={len(forbidden)}")
assert not forbidden
forbidden_edges=0
لا توجد علاقات ممنوعة في الرسم المعطى وينجح التوكيد. لا يمسح البرنامج مستودعا ولا يدعي التزام تطبيق حقيقي.
اختبر المحول والمستهلك عند التقاء الافتراضات
يحقن اختبار السياسة مستودعا وهميا لفحص الإلغاء، لكنه لا يثبت ربط محول SQL للتراجع والتعارض. تختبر المحولات اعتمادية حقيقية معزولة عند الإمكان، وتقارن العقود توقع المستهلك بسلوك المزود. توافق المخطط جزء فقط. أدرج الأخطاء والحقول الاختيارية المجهولة والوحدات. تجنب وهميا يكرر افتراضات التنفيذ فينجح بينما يشترك هو ومحول الإنتاج في الفهم الخاطئ.
صمّم سيناريوهات الفشل بقيود قابلة للرصد
ينبغي أن تغطي مصفوفة إشعارات الحجز انهيارا بعد التثبيت وإعادة المُرحّل وفشل المستهلك والانتهاء. يحتاج كل صف حالة دائمة متوقعة ونتيجة عميل مسموحة. المصفوفة تصميم اختبار لا سجل نتائج. يفوّت فحص إعادة العملية وحدها الرسائل المكررة والنوايا الضائعة والحالات الخاطئة. اجعل التجارب معزولة ومحدودة؛ فحقن فشل الإنتاج وإدارة الخدمات يحتاج نطاقا تشغيليا مستقلا ولا يدخل الدورة.
Scenario: crash after booking commit, before relay publication
Expected: confirmed reservation plus pending outbox intention
Scenario: relay publishes the same event twice
Expected: consumer applies the repeat-sensitive effect at most once under its declared protocol
Scenario: persistent consumer rejection
Expected: bounded retries plus owned unresolved state
يتوقف توقع المستهلك على تصميم منع التكرار. لا يُنفذ وسيط أو اختبار انهيار هنا؛ وتحتاج الادعاءات دليل التنفيذ المختار.
أبق الفحوص حساسة للفشل المقصود
يفيد الفحص إذا أفشله خرق مهم وسمح بتغيير مشروع. راجع تغطية الخطر المعماري بدلا من تكرار كل سطر. إذا تغيرت القاعدة فحدّث سجل القرار والفحص معا ليفهم القائمون الضمان الجديد. احفظ النطاق الدقيق في التقارير، ومنها الاعتماديات الوهمية وغير المنفذة. يثبت نجاح الرسم والدوال المحلية أمثلتها فقط؛ وليس شهادة معمارية أو تقييما لجاهزية الإنتاج.
الأخطاء الشائعة وإصلاحها
يُدعى أن اختبار مستودع وهمي يثبت عزل القاعدة.
- لماذا يحدث؟
- بُولغ في نطاق الحد المختبر.
- كيف تصلحه؟
- اذكر ادعاء السياسة وأضف دليل المحرك المعزول للتزامن.
- كيف تتجنب تكراره؟
- سمّ الاعتماديات المستبدلة في ملخص الاختبار.
يسمح فحص الاعتماد بكل استثناء صامتا.
- لماذا يحدث؟
- ليس لصيانة القاعدة مالك مسؤول.
- كيف تصلحه؟
- اشترط استثناءات ضيقة مبررة وشروط مراجعة.
- كيف تتجنب تكراره؟
- راجع نمو الاستثناءات والخرق الفعلي.
يتجاهل اختبار الإعادة العمل الضائع أو المكرر.
- لماذا يحدث؟
- حلت حياة العملية محل صحة العمل.
- كيف تصلحه؟
- افحص الحالة الدائمة والآثار المسموحة بعد الاستعادة.
- كيف تتجنب تكراره؟
- حدّد القيود قبل إدخال العطل.
اختبر فهمك
1. ما الدليل الذي يثبت تجاهل عميل قديم حقلا جديدا؟
اعرض الحل المشروح
شغّل العميل أو محلله الممثل على رد يتضمن الحقل وتحقق من السلوك. لا تكفي مراجعة مخطط أو اختبار المزود إذا رفض المحلل المجهول. سجّل نسخة العميل ونطاق المثال ليبقى الاستنتاج محددا.
2. لماذا قد يقلل اختبار كل مساعد خاص قيمة اختبار المعمارية؟
اعرض الحل المشروح
قد يربط الفحوص بتفاصيل التنفيذ ويترك الحد المؤثر بلا اختبار. ركز على قواعد الاعتماد ومعنى العقد والقيود والاستعادة. تغطي اختبارات الوحدة الخوارزميات المحلية عند الفائدة، لكن كثرتها لا تعوض دليل الخصائص العابرة للحدود.
أهم ما تعلمته
- يثبت الاختبار الخاصية والحد اللذين يفحصهما فقط.
- تحتاج فحوص المعمارية إخفاقات دالة وقواعد قابلة للصيانة.