Ansible / المتقدم: التنسيق والمنصات والاختبارات والتشخيص / الدرس 17
بناء اختبارات أتمتة طبقية وأدلة صادقة
افصل المحلل والمخطط والمصير والوحدة والتقارب والتطبيق والتعافي مع حدود تنفيذ مضبوطة.
في هذه الصفحة
أهداف الدرس
- اختيار اختبارات السلوك العام لا التخطيط العرضي.
- شرح دليل كل طبقة تحقق.
- تخطيط تقارب وتعاف مؤقتين دون تشغيل أهداف هنا.
تجيب كل طبقة تحقق سؤالاً مختلفاً
يفحص YAML النحو والمخطط المطلوب والنوع، وتضيف أدوات Ansible قواعد وأسلوباً ويختبر التصيير المحرك المحدد. تختبر الأهداف المؤقتة الوحدة والتقارب والتطبيق فائدته والتعافي الجزئي. لا يعوض الأخضر الجميع. سجل الأدوات والإصدارات والنطاق؛ نملك PyYAML لا المحرك وJinja فدليلنا محدود عمداً. ويمنع هذا الفصل تحويل نجاح فحص سريع إلى ادعاء تشغيل بعيد، كما يساعد المراجع على معرفة أي سؤال بقي بحاجة إلى مختبر مصرح.
يجب ألا يرث الاختبار نطاق الإنتاج
استخدم جرداً وإعداداً واعتماداً ومدخلات مصطنعة صريحة؛ لا يمنع اسم test اكتشاف إعداد محلي وقد تتصل المصادر والبحث بالتقييم. راجعها واستخدم مؤقتاً بملكية تنظيف لاحقاً. لا تثبت خدمات معقدة لادعاء اختبار؛ المثبت الصادق أوثق من تجربة غير مضبوطة. وقد يكون مصدر الجرد نفسه ديناميكياً رغم أن اسم البيئة تجريبي، لذلك يجب أن يكون مصدر البيانات والاعتماد والنقل محدداً قبل بدء الحاضنة.
يجب أن يرصد اختبار الثاني الحالة والإبلاغ
طبق المطلوب على مؤقت مصرح وافحص ثم كرر ثابتاً وليتوقف غير اللازم. لا تفرض changed_when:false والآثار باقية. اختبر القالب والمعالج عند كونهما عقداً. قد يصح التغير لاختلاف الخارج فاحفظ الافتراض وأكد التطبيق والصحة والتعافي مستقلاً. ويجب حفظ دليل على أن المؤثرات الفعلية توقفت عند التقارب، لا الاكتفاء بأن وحدة التقرير أعادت علماً يمكن للكاتب تجاوزه يدوياً.
إظهار متطلبات القبول في تصميم play
تصرح assert بثابت وتفشل بوضوح وليكن مطلباً لا تكرار شرط داخلي. يفحص المثال شكلاً مصطنعاً لا التطبيق. قد تحتاج الخطة صحة مقروءة أو تحقق إعداد أو بيانات بمؤقت، ولكل نطاق واعتماد. خصص الرسالة ولا تطبع السر أو القاموس كله. وليس الغرض من التحقق تكثير المهام، بل تثبيت مطلب مرئي للمستدعي وإعطاء سبب محدد للرفض قبل أن يتحول الإدخال غير الصالح إلى أثر.
- name: Illustrate explicit input acceptance
hosts: lab_nodes
gather_facts: false
vars:
report_contract:
workers: 2
enabled: true
tasks:
- name: Validate the declared synthetic contract
ansible.builtin.assert:
that:
- report_contract.workers is integer
- report_contract.workers > 0
- report_contract.enabled is boolean
fail_msg: Invalid synthetic report contract
تحلل YAML فقط ولا ينفذ اختبارات Ansible أو يثبت تحقق الدور.
الإبلاغ عن الفعلي وإظهار الناقص
يسرد التقرير النطاق والتحقق والنتيجة وغير المختبر. يوضح نموذج الحالة المفهوم ولا يسمى تشغيل Ansible ثانياً. احفظ الفشل واختبر فشل الحاضنة، وحدود الغائب والنوع والحلقة والمعالج والوسم والتفويض. وسع لمخاطرة جديدة لا تكرار التنفيذ داخلياً. وتبقى حالات الفشل المقصودة ضرورية لإثبات أن الحاضنة نفسها لا تعيد نجاحاً عند إخفاق شرط، وأن التقرير يميز غير المختبر من الناجح.
def converge(observed, desired):
return desired.copy(), observed != desired
desired = {'workers': 2, 'enabled': True}
state, first_changed = converge({'workers': 1, 'enabled': True}, desired)
state, second_changed = converge(state, desired)
assert first_changed and not second_changed and state == desired
print('PASS synthetic convergence contract')
PASS synthetic convergence contract
تنسخ الدالة قواميس وتفحص لاحق النموذج لا وحدة أو تشغيلين على هدف.
الأخطاء الشائعة وإصلاحها
اعتبار نجاح المحلل تغطية تكامل
- لماذا يحدث؟
- أُهملت الطبقات غير المختبرة.
- كيف تصلحه؟
- سم كل حد بدقة.
- كيف تتجنب تكراره؟
- افصل الأدلة بملاحظات الإصدار.
إخفاء البديل كل الفشل
- لماذا يحدث؟
- يعيد المثبت النجاح دائماً.
- كيف تصلحه؟
- أضف الغائب والمشوه والجزئي.
- كيف تتجنب تكراره؟
- اختبر رفض العقد أيضاً.
تزوير التكرارية بتجاوز الإبلاغ
- لماذا يحدث؟
- حل الملخص محل الحالة.
- كيف تصلحه؟
- ارصد الآثار والصدق بالمؤقت.
- كيف تتجنب تكراره؟
- افصل التقارب والمعالج والقبول.
اختبر فهمك
1. ماذا يقول التقرير إذا شغل PyYAML ونماذج Python فقط؟
اعرض الحل المشروح
اذكر نجاح النحو والنماذج وغياب اختبار المحرك وJinja والاتصال والآثار والتكرارية؛ دليل صادق لا اختلاق.
2. لماذا يصمد اختبار السلوك أمام إعادة تنظيم الدور أكثر من عدد المهام؟
اعرض الحل المشروح
قد تنقسم المهام أو تندمج مع حفظ المدخل والحالة والنتيجة والعقد؛ يحمي المرئي الصحة دون تجميد الداخل.
أهم ما تعلمته
- اختر طبقة التحقق وأبلغها بصدق.
- اختبر اللاحق العام والرفض والتكرار والتعافي.