BDD: حول أفكارك إلى مواصفات برمجية قابلة للتنفيذ لضمان الجودة!

استمع للبودكاست حوار شيق بين لمى وأبو عمر
0:00 / 0:00

مقدمة: لما نحكي BDD، مش بس بنحكي اختبار!

بتذكر مرة، كنا شغالين على مشروع كبير لإدارة المخزون. كل فريق كان يشتغل لحاله، وفهم كل واحد للمتطلبات كان مختلف. النتيجة؟ تطبيق مليان مشاكل، وكل تعديل بكلفنا وقت وجهد مضاعف. وقتها، عرفت إنه في شي غلط! مش معقول هيك نضيع وقتنا وجهدنا. ومن هون بدأت رحلتي مع الـ BDD.

BDD أو Behavior-Driven Development (التطوير الموجه بالسلوك) مش مجرد طريقة للاختبار، هي فلسفة كاملة بتغير طريقة تفكيرنا في تطوير البرمجيات. هي طريقة بتخلينا نركز على سلوك البرنامج من وجهة نظر المستخدم، مش بس على الكود.

شو يعني BDD؟

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

المكونات الأساسية لـ BDD

* **السلوك (Behavior):** كيف لازم البرنامج يتصرف في سيناريوهات مختلفة.
* **المواصفات (Specifications):** وصف واضح ومفصل للسلوك المطلوب.
* **الأمثلة (Examples):** أمثلة ملموسة بتوضح كيف لازم البرنامج يتصرف في حالات محددة.
* **اللغة المشتركة (Ubiquitous Language):** استخدام مصطلحات واضحة ومفهومة للجميع (المطورين، المختبرين، أصحاب المصلحة).

كيف نكتب مواصفات BDD؟

الكتابة بلغة الـ BDD مش صعبة، بس بدها شوية تركيز. بنستخدم لغة بسيطة وواضحة، قريبة من اللغة الطبيعية، عشان الكل يفهمها. أشهر الأدوات اللي بتساعدنا في هيك هي Gherkin.

Gherkin: لغة المواصفات

Gherkin هي لغة بسيطة وسهلة القراءة، بتستخدم لكتابة مواصفات الـ BDD. بتعتمد على مجموعة من الكلمات المفتاحية اللي بتحدد هيكل المواصفة.

* **Feature:** بتوصف الميزة اللي بدنا نختبرها.
* **Scenario:** بتوصف سيناريو محدد للميزة.
* **Given:** بيحدد الحالة الأولية أو الظروف اللي بتبدأ فيها السيناريو.
* **When:** بيوصف الحدث أو الإجراء اللي بيصير.
* **Then:** بيوصف النتيجة المتوقعة بعد حدوث الحدث.
* **And, But:** كلمات ربط بتستخدم لإضافة تفاصيل إضافية.

مثال عملي باستخدام Gherkin

خلينا ناخد مثال على ميزة تسجيل الدخول:


Feature: تسجيل الدخول

  Scenario: تسجيل الدخول بنجاح باستخدام اسم مستخدم وكلمة مرور صحيحة
    Given المستخدم موجود في قاعدة البيانات
    And  المستخدم غير مسجل دخوله
    When المستخدم يدخل اسم المستخدم "abuomar"
    And  المستخدم يدخل كلمة المرور "password123"
    And  المستخدم يضغط على زر "تسجيل الدخول"
    Then يجب أن يتم تسجيل دخول المستخدم بنجاح
    And  يجب أن تظهر رسالة ترحيب "مرحباً بك يا أبو عمر!"

هذا المثال ببساطة بيوصف سيناريو تسجيل الدخول بنجاح. الـ Given بتحدد الشروط المسبقة، الـ When بتوصف الإجراء اللي بيقوم فيه المستخدم، والـ Then بتوصف النتيجة المتوقعة.

أدوات مفيدة في تطبيق BDD

في أدوات كتير بتساعدنا في تطبيق الـ BDD، أشهرها:

* **Cucumber:** أداة بتسمح لنا ننفذ مواصفات Gherkin كاختبارات تلقائية.
* **SpecFlow:** نسخة .NET من Cucumber.
* **Behave:** مكتبة Python لتطبيق BDD.

فوائد تطبيق BDD

* **تحسين التواصل:** الـ BDD بتساعد الفرق على التواصل بشكل أفضل، لأن الكل بيفهم المواصفات بنفس الطريقة.
* **تقليل الأخطاء:** من خلال تحديد السلوك المتوقع بشكل واضح، بنقلل احتمالية حدوث الأخطاء.
* **زيادة جودة البرمجيات:** الـ BDD بتساعدنا نركز على سلوك البرنامج من وجهة نظر المستخدم، وهذا بيؤدي إلى برمجيات ذات جودة أعلى.
* **تسهيل عملية الاختبار:** المواصفات بتصير بمثابة اختبارات تلقائية، وهذا بيوفر علينا وقت وجهد في عملية الاختبار.

نصائح من تجربتي الشخصية

* **ابدأ صغيرًا:** مش ضروري تطبق الـ BDD على كل المشروع مرة وحدة. ابدأ بميزة صغيرة وجرب، وبعدين وسع نطاق التطبيق.
* **ركز على السلوك:** الأهم هو فهم سلوك البرنامج من وجهة نظر المستخدم. لا تركز على التفاصيل التقنية في المواصفات.
* **شارك الجميع:** الـ BDD بدها مشاركة من كل أعضاء الفريق، من المطورين للمختبرين لأصحاب المصلحة.
* **استخدم لغة واضحة:** اختار مصطلحات واضحة ومفهومة للجميع، وتجنب المصطلحات التقنية المعقدة.
* **لا تخف من التعديل:** المواصفات مش ثابتة، ممكن تتغير مع تطور المشروع. لا تخف من تعديلها وتحديثها.

خلاصة: الـ BDD مش بس كود، هي ثقافة! 🚀

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

**نصيحة أخيرة:** لا تخافوا تجربوا الـ BDD. ابدأوا بميزة صغيرة، وجربوا تكتبوا مواصفات Gherkin. شوفوا كيف بتأثر على طريقة عملكم، وكيف بتزيد جودة برمجياتكم. بالتوفيق! 👍

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

التوظيف وبناء الهوية التقنية

سيرتي الذاتية عبرت فلتر الـ ATS لكنها فشلت أمام المدير التقني: كيف أعدت بناءها لتتحدث لغة المهندسين؟

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

28 فبراير، 2026 قراءة المزيد
التوسع والأداء العالي والأحمال

خدمة واحدة فاشلة كادت أن تسقط النظام بأكمله: كيف أنقذني نمط ‘قاطع الدائرة’ (Circuit Breaker) من كارثة متتالية؟

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

27 فبراير، 2026 قراءة المزيد
اختبارات الاداء والجودة

لقد ‘هاجمت’ تطبيقي بنفسي عمداً: كيف كشفت لي ‘هندسة الفوضى’ نقاط الضعف التي لم تظهرها الاختبارات التقليدية

أشارككم قصة حقيقية حول إطلاق فاشل كاد أن يدمر سمعتنا، وكيف قادتنا هذه التجربة المريرة إلى تبني "هندسة الفوضى" (Chaos Engineering). اكتشفوا معنا كيف يمكن...

26 فبراير، 2026 قراءة المزيد
التوسع والأداء العالي والأحمال

عاصفة من الطلبات كادت أن تغرق تطبيقي: كيف أنقذتني طوابير الرسائل (Message Queues) من كارثة الجمعة السوداء؟

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

24 فبراير، 2026 قراءة المزيد
البودكاست