٣ أشياء لا يخبرك بها أحد عن BDD

تستغرق مجموعة اختبارات Cucumber الخاصة بك أربعين دقيقة للتشغيل. ولا يمكنك شرح ما يختبره ملف ميزة (feature file) واحد دون قراءة طبقات من الكود.

تتبنى العديد من الفرق منهجية BDD لأن أصحاب المصلحة في العمل (business stakeholders) يحتاجون لقراءة الاختبارات. ثم يتوقف هؤلاء عن القراءة، لتنتهي بك الحال في كابوس من الصيانة.

إليك ثلاث حقائق حول BDD.

١. Gherkin ليست لغة برمجة

توقف عن كتابة نصوص الاختبار (test scripts) بلغة Gherkin. إذا كانت السيناريوهات الخاصة بك تسرد كل نقرة وكل حقل، فأنت تفعل ذلك بشكل خاطئ.

Gherkin سيء:

  • Given أن المستخدم يدخل البريد الإلكتروني "test@example.com"
  • And أن المستخدم يدخل كلمة المرور "Password123!"
  • And أن المستخدم ينقر على "Place Order"

Gherkin جيد:

  • Given أن لدى المستخدم عناصر جاهزة للشراء
  • When يقوم المستخدم بالدفع باستخدام بطاقة ائتمان صالحة
  • Then يتم تأكيد الطلب

الـ "كيف" (how) توجد في تعريفات الخطوات (step definitions)، بينما الـ "ماذا" (what) توجد في ملفات الميزات (feature files). حافظ على بساطة ملفات الميزات حتى يتمكن مدير المنتج من قراءتها في ثوانٍ.

٢. تعريفات الخطوات (step definitions) ليست مخطط اعتمادية (dependency graph)

لا تجعل تعريفات الخطوات تستورد تعريفات خطوات أخرى؛ فهذا يخلق شبكة متشابكة. إذا فشلت خطوة واحدة، فإنها تفسد الحالة (state) بأكملها.

الحل بسيط:

  • افصل كائنات الصفحات (page objects) عن تعريفات الخطوات.
  • استخدم طبقة نطاق (domain layer) مشتركة.
  • يجب أن تكون تعريفات الخطوات مجرد أغلفة رقيقة (thin wrappers) تستدعي كائنات النطاق (domain objects).

هذا يجعل خطواتك عديمة الحالة (stateless). يمكنك تغيير جزء واحد من الكود الخاص بك دون كسر أي سيناريو آخر.

٣. BDD هو مشروع توثيق

تتمحور BDD حول التواصل، وليس مجرد الاختبار. الاختبارات هي مجرد نتيجة جانبية.

إذا كنت تحسن الأداء فقط من أجل تغطية الاختبار (test coverage) أو سرعة التنفيذ، فستفقد الهدف الرئيسي. يجب أن تكون ملفات الميزات هي أول شيء يقرأه المهندس الجديد لفهم نظامك.

إذا لم يتمكن الشخص من فهم نظامك من خلال قراءة ملفات الميزات، فقد فشلت مجموعة BDD الخاصة بك.

ماذا تفعل غداً:

  • اختر أسوأ ملف ميزات لديك.
  • أعد كتابة السيناريوهات لتكون بطول ثلاثة إلى خمسة أسطر.
  • انقل البيانات إلى تعريفات الخطوات أو المصانع (factories).
  • استبدل استيراد الخطوات من خطوة إلى أخرى بكائنات النطاق (domain objects).

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

المصدر: https://dev.to/qawalah/3-things-nobody-tells-you-about-bdd-before-your-cucumber-suite-becomes-a-maintenance-nightmare-9c7

مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi