BDD على Java: كيفية تحويل الاختبارات إلى وثائق يفهمها حتى المدراء

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو BDD ولماذا سينقذ مشروعك؟

\n\n

هل سبق لك أن وجدت نفسك في موقف حيث يقول المطورون: "المنطق يعمل بشكل مثالي"، ويرد العميل: "لكن هذا ليس ما طلبته على الإطلاق!"؟ مألوف؟ هنا يظهر BDD (التطوير القائم على السلوك) على المسرح — التطوير من خلال السلوك.

\n\n

BDD على Java ليس مجرد مصطلح عصري. إنها منهجية تزيل الحدود بين متطلبات العمل والكود. بدلاً من كتابة اختبارات تقنية جافة (كما في TDD)، تكتب سيناريوهات بلغة بشرية مفهومة. ونعم، حتى مديرك الذي يعتقد أن "Java جزيرة" يمكنه قراءتها.

\n\n

كيف يختلف BDD عن TDD؟ (تنبيه: ليسا نفس الشيء)

\n\n

كثيرون يخلطون بين TDD (التطوير القائم على الاختبار) وBDD. دعنا نوضح الأمور:

\n\n
    \n
  • TDD: تكتب اختباراً يفشل، ثم تكتب كوداً ليجتاز الاختبار. التركيز على التنفيذ التقني.
  • \n
  • BDD: تصف أولاً سلوك النظام بمصطلحات المستخدم. "عندما يضغط المستخدم على الزر، يقوم النظام بكذا". التركيز على قيمة الأعمال.
  • \n
\n\n

يستخدم BDD لغة Gherkin — لغة سيناريوهات بكلمات مفتاحية مثل Given وWhen وThen. تبدو كالتالي:

\n\n
Feature: تسجيل الدخول إلى الحساب الشخصي\n  Scenario: تسجيل دخول ناجح ببيانات صحيحة\n    Given المستخدم موجود على صفحة تسجيل الدخول\n    When يقوم المستخدم بإدخال اسم المستخدم "admin" وكلمة المرور "12345"\n    Then يرى المستخدم رسالة "مرحباً بك!"\n
\n\n

أوافقك الرأي، هذا يُقرأ كتعليمات وليس كوثيقة تقنية. هذه هي قوة التطوير السلوكي على Java.

\n\n

أدوات BDD في Java: اختر الإطار المناسب

\n\n

في عالم Java، هناك لاعبان رئيسيان لـ BDD: Cucumber وJBehave. دعنا نقارن بينهما.

\n\n

Cucumber لـ Java: ملك BDD

\n\n

Cucumber هو الإطار الأكثر شهرة. يدعم Gherkin مباشرة، ويتكامل مع JUnit وTestNG، وله مجتمع ضخم. إذا كنت مبتدئاً في BDD Java، ابدأ بـ Cucumber.

\n\n

JBehave: قديم لكن موثوق

\n\n

JBehave هو "جد" BDD. أقل شهرة، لكنه لا يزال مستخدماً في المشاريع القديمة (legacy). الفرق الرئيسي: تُكتب السيناريوهات في ملفات نصية، وترتبط الخطوات عبر التعليقات التوضيحية @Given و@When و@Then.

\n\n

شخصياً، أوصي بـ Cucumber — لديه وثائق أفضل وأمثلة أكثر. لكن إذا كنت تعمل على مشروع قديم، فإن JBehave مقبول أيضاً.

\n\n

كتابة أول اختبار BDD على Java: دليل خطوة بخطوة

\n\n

دعنا ننتقل من النظرية إلى التطبيق. سننشئ مشروعاً بسيطاً باستخدام Maven وCucumber. مهمتك هي فهم الهيكل، وليس مجرد نسخ الكود.

\n\n

الخطوة 1: إضافة التبعيات

\n\n

أضف التبعيات التالية إلى ملف pom.xml:

\n\n
<dependency>\n    <groupId>io.cucumber</groupId>\n    <artifactId>cucumber-java</artifactId>\n    <version>7.18.0</version>\n    <scope>test</scope>\n</dependency>\n<dependency>\n    <groupId>io.cucumber</groupId>\n    <artifactId>cucumber-junit-platform-engine</artifactId>\n    <version>7.18.0</version>\n    <scope>test</scope>\n</dependency>\n
\n\n

الخطوة 2: إنشاء ملف feature

\n\n

في المجلد src/test/resources، أنشئ ملفاً باسم login.feature:

\n\n
Feature: تسجيل دخول المستخدم\n  كمستخدم مسجل\n  أريد تسجيل الدخول إلى النظام\n  للحصول على الوصول إلى الحساب الشخصي\n\n  Scenario: تسجيل دخول ناجح\n    Given المستخدم فتح صفحة تسجيل الدخول\n    When يقوم المستخدم بإدخال اسم المستخدم "te                

المدونات

توصيات الكتب