محتويات الدورة

Terraform / البيانات الحساسة والحوكمة والتعافي / الدرس 14

التحقق والاختبارات والفحوص وآثارها

اختر حد التحقق المناسب وتذكر أن الاختبار قد يخطط أو يطبق فعلياً.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • قارن تحقق المتغير والشروط والفحوص وعبارات الاختبار.
  • ميّز التنسيق والتحقق والمحاكاة والخطة والتكامل.

توقف الشروط أو تبلغ عند حدود مختلفة

يتحقق المتغير من مجال المدخل. تعبر الشروط السابقة واللاحقة عن عقود الموارد والبيانات والمخرجات عند توقيتاتها الموثقة. تدعم check تحققاً مستمراً وتبلغ الإخفاقات كتحذير لا بوابة منع عامة، بينما تقيم عبارات test المتوقع داخل التشغيل. اختر الآلية من المتطلب وسلوك الفشل لا افتراض أن كل check تمنع غير الآمن. وقد يؤجل المجهول قابلية الشرط للتقييم.

يسهل فهم عقد مخرج نقي

يطبع الجذر الكامل اسم الخدمة ويضع شرطاً سابقاً على مخرجه. لا يضم موارد مُدارة أو قراءات خارجية، لكنه يبقى HCL تحريرياً غير منفذ لغياب أداة التحقق. يشترط أن يبدأ المطبع بـ atlas-. لا يعد فحص النص نتيجة تحقق Terraform مشهودة. افصل اختبار المزود والتشغيل عن مثال التعبير الثابت.

hcl عقد تعبير كامل
terraform {
  required_version = ">= 1.16.0, < 1.17.0"
}

variable "service_name" {
  type    = string
  default = "atlas-api"
}

locals {
  normalized = lower(var.service_name)
}

output "name" {
  value = local.normalized
  precondition {
    condition     = startswith(local.normalized, "atlas-")
    error_message = "Normalized service names must start with atlas-."
  }
}

يطبع الافتراضي منطقياً إلى atlas-api ويلائم البادئة. الشرط عقد منع عند حد المخرج لا check تحذيرية. لم ينفذ أمر أو تحقق.

يجب أن يحدد الاختبار عمليته عمداً

تفترض كتل run في Terraform test التطبيق إن لم يحدد غيره، وقد تنشئ أو تغير بنية فتحتاج تصريحاً وتنظيفاً. يختار الاختبار المرافق plan صراحة ويفحص مخرجاً معلوماً. وحتى اختبار الخطة قد يقرأ مزوداً أو خلفية أو مصدراً بإعداد آخر؛ فلا يجعل اسم test مشروعاً مجهولاً آمناً. نعرض الملف دون تشغيل أو نزل مزود أو ننفذ تطبيقاً.

hcl اختبار خطة مرافق غير منفذ
run "normalized_name" {
  command = plan
  variables {
    service_name = "ATLAS-API"
  }
  assert {
    condition     = output.name == "atlas-api"
    error_message = "The output must publish the normalized catalogue name."
  }
}

موضعه tests/name.tftest.hcl مع الجذر السابق. يقارن المخرج العام بالعقد لا معرّفاً منشأ. هو مثال نصي لا ادعاء نجاح اختبار.

تغير المحاكاة الدليل لا حقيقة الإنتاج

قد تعزل المحاكاة والتجاوزات المدعومة سلوك الموديول، لكن مخططها وقيمها لا يثبتان صلاحيات API والحصة والجاهزية والتعافي الفعلية. تختلف أسئلة الخطة والمحاكاة والتكامل. حدد ما يثبته كل اختبار وما يبقى بلا فحص. يكشف التنسيق اختلاف الأسلوب ويتحقق التحليل من الاتساق ضمن متطلباته، ولا يعوض أيهما مراجعة خطة تغيير مصرح.

اجعل الفشل وحد التنفيذ صريحين

اختبر الهوية المستقرة وحدود المدخل والمفقود والمجهول وتوافق المخرجات وقصد الاستبدال ورفض السياسة حيث تخص العقد. تجنب تكرار نص التنفيذ دون سلوك مفيد. احفظ الإصدار والاعتماد مع النتائج وميّز فشل الشرط المتوقع من خطأ نوع أو مزود آخر. حدد بيئة الاختبار وتنظيفه المعتمدين. لا نستدعي validate أو test أو plan أو apply أو سحابة.

الأخطاء الشائعة وإصلاحها

توقع منع التطبيق بفحص تحذيري.

لماذا يحدث؟
خُلط التحقق المستمر بشرط منع أو سياسة.
كيف تصلحه؟
اختر آلية المنع المناسبة.
كيف تتجنب تكراره؟
راجع الشدة والتوقيت صراحة.

ينشئ الاختبار موارد دون توقع.

لماذا يحدث؟
لم يراجع التطبيق الافتراضي أو سلوك المزود.
كيف تصلحه؟
أو قف بالإجراء المعتمد وطابق الحالة والكائنات.
كيف تتجنب تكراره؟
حدد العملية والنطاق والاعتماد والتنظيف قبل التشغيل.

اعتبار المحاكاة إثبات جاهزية إنتاج.

لماذا يحدث؟
عُمم دليل عقد معزول.
كيف تصلحه؟
حدد المثبت واطلب قبول البيئة مستقلاً.
كيف تتجنب تكراره؟
سم نتائج الأنواع المختلفة منفصلة.

اختبر فهمك

1. لماذا يحدد الاختبار command=plan؟

اعرض الحل المشروح

يفترض التشغيل التطبيق خلاف ذلك. يوضح التصريح النطاق ولا يجيز اختبار خطة مجهولاً قد يقرأ خلفية أو مزوداً. راجع المصدر والسياق قبل التصريح.

2. هل يعوض تحذير check رفض مدخل غير آمن؟

اعرض الحل المشروح

لا؛ استخدم التحقق أو الشرط أو السياسة وفق العقد. يفيد التحذير للرصد ولا يعني الرفض. وثق الفشل واختبر مسار المنع لا الرسالة المطمئنة.

أهم ما تعلمته

  • قد تنفذ الاختبارات أفعالاً؛ حدد نطاقها وأمرها.
  • حدد ما يثبته كل نوع من الأدلة.

المراجع الرسمية