شعار ConstructiCat
CodeBust.
تصفح القسم ▾

التطوير المدفوع بالاختبارات.

يُعرف أيضاً باسم — TDD, Red-Green-Refactor

منهجية تطوير تكتب فيها اختباراً فاشلاً قبل الكود الذي يجتازه، ثم تُعيد الهيكلة — مدعاً الاختباراتِ تقود التصميم في دورات قصيرة ومتسارعة.

##الغرض

قيادة التصميم والتحقق من صحة الكود بكتابة اختبار فاشل لكل جزء صغير من السلوك قبل كتابة الكود الذي يُرضيه، ثم تحسين التصميم بينما تحرسك الاختبارات.

##المشكلة

الكود المكتوب بدون اختبارات محفوف بالمخاطر عند التعديل: لا توجد طريقة سريعة لمعرفة ما إذا كان التعديل قد كسر شيئاً. الاختبارات المكتوبة بعد الواقعة تميل إلى أن تكون سطحية، مُشكَّلة لتناسب كوداً قد يكون صعب الاختبار أصلاً، وتؤثر نادراً في التصميم.

بدون قوة دافعة، تميل التصاميم إلى أن تصبح متشابكة وصعبة الاختبار المعزول.

##الحل

اعمل في دورة أحمر-أخضر-إعادة هيكلة قصيرة:

  1. أحمر — اكتب اختباراً صغيراً للجزء التالي من السلوك وشاهده يفشل.
  2. أخضر — اكتب أبسط كود يجتاز الاختبار، حتى لو كان قبيحاً.
  3. إعادة هيكلة — نظّف الكود (والاختبارات) بعد اخضرارها، مع حراسة المجموعة ضد الانحدار.

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

##البنية

  • الدورة — أحمر → أخضر → إعادة هيكلة، تتكرر باستمرار.
  • قائمة الاختبارات — القائمة الجارية للسلوكيات التي لا تزال بحاجة إلى تغطية.
  • ترتيب-تشغيل-تأكيد — هيكل اختبار الوحدة المُركَّز.
  • الوحدة قيد الاختبار — الشريحة الصغيرة من السلوك التي يُثبّتها كل اختبار.

##متى يُستخدم

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

##كيفية التنفيذ

  1. اختر السلوك الصغير التالي من قائمة اختباراتك.
  2. اكتب اختباراً يتحقق منه، وشغّل المجموعة لتراه يفشل (أحمر).
  3. اكتب الحد الأدنى من الكود اللازم للنجاح؛ شغّل المجموعة (أخضر).
  4. أعد هيكلة كود الإنتاج وكود الاختبار مع إبقاء المجموعة خضراء.
  5. كرّر، مضيفاً سلوكيات إلى القائمة كلما اكتشفتها.

##المزايا والعيوب

المزايا
  • تغطية اختبار عالية كنتاج طبيعي، لا ضرورة لاحقة.
  • التغذية الراجعة السريعة تكتشف الانحدار في ثوانٍ.
  • يشجع على تصاميم مفككة وقابلة للاختبار.
  • المجموعة تعمل كوثائق حية وقابلة للتنفيذ.
العيوب
  • وتيرة أولية أبطأ ومنحنى تعلم حقيقي.
  • قد يُركّز على الوحدات المعزولة ويفوته ثغرات التكامل.
  • الاختبارات هي كود أيضاً — يجب صيانتها وإعادة هيكلتها.
  • ليست بديلاً عن الاختبار الاستكشافي أو التكاملي أو الشامل.