التطوير القائم على الاختبار (TDD) هو نهج لتطوير البرمجيات تتم فيه كتابة اختبارات البرامج قبل الوظائف المقابلة لها.
يكتب المطورون ما يكفي من التعليمات البرمجية لتمرير كل اختبار، ثم يتم تحسين كلٍّ من الاختبار والتعليمات البرمجية قبل الانتقال إلى اختبار جديد ثم ميزة جديدة.
يفرض التطوير القائم على الاختبار على المطورين تباطؤ الإيقاع، والتحقق من تعليماتهم البرمجية وتنقيحها ضمن دورات تعليقات قصيرة. على الرغم من عدم كون ذلك إلزاميًا، تشجِّع فرق عمليات التطوير المبرمجين، من المبتدئين إلى المحترفين، على استخدام TDD عبر مجموعة واسعة من لغات البرمجة. على سبيل المثال، Java وPython وما إلى ذلك، وواجهات برمجة التطبيقات (APIs) وتطبيقات البرامج.
تعمل البرمجة بهذا الأسلوب على تعزيز العلاقة بين الترميز والاختبار (في شكل اختبارات مؤتمتة على مستوى الوحدة) وتصميم الكود. على الرغم من أن التطوير القائم على الاختبار قد يؤدي إلى زيادة وقت التطوير الأوَّلي، فقد ثبت أنه يعمل على تحسين وظائف الكود ومرونته وتوفير الوقت بشكل عام.
من خلال تحديد أي أخطاء ومعالجتها على الفور، يمكن للمطورين الذين يستخدمون TDD منع تحوُّل المشكلات الصغيرة إلى مشكلات أكبر. يُجبر التطوير القائم على الاختبار المطورين على التحقق من صحة التعليمات البرمجية وتنقيحها أثناء عملهم، وبالتالي تبسيط عمليات التحقق من الجودة النهائية والتصحيحات.
تتضمن إطارات العمل البديلة كتابة كود الإنتاج قبل كتابة جميع الاختبارات المؤتمتة أو كتابة مجموعة الاختبار بأكملها قبل كتابة كود الإنتاج. وقد ثبت أن هذه الأساليب، على الرغم من أنها ليست بالضرورة غير فعَّالة، تعمل على زيادة أوقات التصحيح الضرورية، خاصةً مع المشاريع الأكبر حجمًا والأكثر تعقيدًا.
في حين أن التطوير القائم على الاختبار يُستخدم عادةً لإنشاء تعليمات برمجية جديدة للإنتاج، إلا إنه غالبًا ما يتم تطبيقه أيضًا لتحسين تصحيح التعليمات البرمجية القديمة التي تم تطويرها بتقنيات قديمة أو تقنيات أخرى.
يعكس التطوير القائم على الاختبار عملية التطوير التقليدية من خلال وضع الاختبار قبل التطوير. باعتباره نهجًا تكراريًا، يعمل التطوير القائم على الاختبار على تحسين جودة الكود وقابلية قراءته من خلال تعزيز سير العمل القابل للاختبار والذي يؤدي إلى كود عالي الجودة على مستوى الوحدة. عندما يقوم المطورون بتنفيذ اختبار الوحدة، فإنهم يركِّزون على جزء صغير من المنطق، مثل خوارزمية فردية. وكتابة التعليمات البرمجية بهدف نجاح الاختبارات لا يؤدي فقط إلى كود أنظف وأكثر متانة، بل يُسهم أيضًا في تحسين التوثيق.
النشرة الإخبارية الخاصة بالمجال
ابقَ على اطلاع دومًا بأهم—اتجاهات المجال وأكثرها إثارة للفضول—بشأن الذكاء الاصطناعي والأتمتة والبيانات وغيرها الكثير مع نشرة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.
سيتم تسليم اشتراكك باللغة الإنجليزية. ستجد رابط إلغاء الاشتراك في كل رسالة إخبارية. يمكنك إدارة اشتراكاتك أو إلغاء اشتراكك هنا. راجع بيان خصوصية IBM لمزيد من المعلومات.
هناك مستويان رئيسيان للتطوير القائم على الاختبار.
بالنسبة إلى قبول TDD -والذي يُطلق عليه أحيانًا اسم Behavior-Driven Development (BDD)- يكتب المبرمجون اختبار قبول واحدًا ثم ما يكفي من التعليمات البرمجية الجديدة لتمريرها. تُعرف اختبارات القبول أحيانًا باسم اختبارات العملاء أو اختبارات قبول العملاء.
يمكن فهمها بشكل عام على أنها حالات اختبار مطلوبة للحد الأدنى من الوظائف كما هو موضَّح من قِبَل الأطراف المعنية في المنتج. تسعى ATDD إلى تحديد المتطلبات التفصيلية القابلة للتنفيذ. يمكن إجراء اختبارات القبول باستخدام أدوات اختبار مختلفة، مثل Fitnesse أو RSpec.
يُشار إليه أحيانًا ببساطة باسم TDD، حيث يتطلب تطوير TDD من المبرمجين كتابة اختبارات فردية لتقييم حلولهم الخاصة لاختبار ATDD. يستخدم مطور TDD أدوات أتمتة الاختبار، مثل JUnit أو VBUnit.
عند استخدام استراتيجية التطوير القائمة على الاختبار، يقوم المبرمجون أولًا بكتابة اختبارات للتحقق من كل عنصر فردي أو وظيفة في قطعة من البرامج قبل كتابة ما يكفي من التعليمات البرمجية لتمرير هذا الاختبار الفردي. بمجرد اكتمال العملية، يتم اختبار البرنامج مرة أخرى، وإذا نجح، يتم تحسين الكود (وهي عملية تُعرف باسم إعادة الهيكلة) لتشمل العناصر الأساسية فقط. ثم يكرر المطورون هذه العملية لكل وظيفة برمجية لاحقة.
تنقسم عملية التطوير القائمة على الاختبار إلى خمس خطوات فردية:
ببساطة، تتَّبِع عملية التطوير القائمة على الاختبار حلقة قابلة للتكرار، يُشار إليها بدورة إعادة البناء الأحمر والأخضر. وخطوات الدورة هي:
على الرغم من أن الأصول المحددة لتطوير الاختبار غير معروفة، فإن مفهوم كتابة الاختبارات أولًا ثم كتابة كود الإنتاج ثانيًا لم يكن ممارسة شائعة حتى منتصف التسعينيات. قبل ذلك، كانت أطر عمل الاختبار تفصل المطورين عن اختبار قواعد التعليمات البرمجية الخاصة بهم. ومع ذلك، مع تطوُّر هندسة البرمجيات، أصبحت فرق عمليات التطوير بحاجة إلى منهجيات أسرع وأكثر مرونة لتلبية متطلبات الأطراف المعنية، وخاصةً عند التعامل مع متطلباتهم المتغيرة بسرعة.
تطوَّر التطوير القائم على الاختبار من وإلى جانب العديد من أطر عمل الاختبار الجديدة وتم اعتماده كمكون معياري في العديد من أطر العمل الأخرى أيضًا. الأمر الأكثر أهمية هو أن TDD مدرج في مفهوم Extreme Programming (XP)، وهو إطار عمل لتطوير البرامج الرشيقة تم تطويره لتحسين جودة البرامج وجودة الحياة للمطورين.
تُنسَب إلى مهندس البرمجيات Kent Beck، أحد الشخصيات البارزة في مجتمع الأسلوب الرشيق ومبتكر البرمجة القصوى (Extreme Programming)، "إعادة اكتشاف" تطوير البرمجيات القائم على الاختبار (TDD). على حد تعبير Beck نفسه:
"كان الوصف الأصلي لعملية TDD موجودًا في كتاب قديم عن البرمجة. يقول إنه عليك أخذ شريط الإدخال، ثم كتابة شريط الإخراج الذي تتوقعه يدويًا، ثم برمجته حتى يتطابق شريط الإخراج الفعلي مع الإخراج المتوقع. بعد أن كتبت إطار عمل xUnit الأول في Smalltalk، تذكرت قراءة هذا وجربته. كان هذا هو أصل TDD بالنسبة لي. عند وصف TDD للمبرمجين الأكبر سنًا، كثيرًا ما أسمع، " بالطبع. وإلا كيف يمكنك البرمجة؟" لذلك، أشير إلى دوري باسم "إعادة اكتشاف" TDD".
تتضمن التواريخ البارزة في تطوُّر التطوير القائم على الاختبار ما يلي:
كجزء من البرمجة القصوى (Extreme Programming)، تبيَّن أن تطوير البرمجيات القائم على الاختبار (TDD) مفيد ليس فقط لإنتاج كود أفضل، بل أيضًا لصقل مهارات المطورين أنفسهم. يُتيح TDD للمطورين فهم مشاريعهم بشكل أفضل ويساعد على توجيه تصميم البرنامج. من خلال وضع حالة الاختبار في المقام الأول قبل تنفيذ كل ميزة، يضطر المطورون إلى تصوُّر كيفية استخدام الوظيفة من قبل العميل أو المستخدم. تضع هذه الطريقة واجهة المنتج قبل التنفيذ، ما يساعد المطورين على إنشاء تطبيقات أكثر تركيزًا على المستخدم.
تتضمن بعض الفوائد الإضافية للتطوير القائم على الاختبار ما يلي:
على الرغم من وجود العديد من الفوائد لاستخدام التطوير القائم على الاختبار (TDD)، إلا إنه لا يخلو من التحديات. على الرغم من أن شدة هذه التحديات قد تعتمد على المشروع أو يمكن تخفيفها باستخدام تقنيات أخرى مختلفة، فإن بعض عيوب TDD تشمل ما يلي:
يُمكنك إنشاء أعمال أكثر مرونةً باستخدام الحلول المدعومة بالذكاء الاصطناعي لإدارة الأصول الذكية وسلسلة التوريد.
حوّل عملياتك التجارية مع IBM باستخدام البيانات الغنية وتقنيات الذكاء الاصطناعي الفعالة لدمج عمليات التحسين.
IBM Cloud Pak for Business Automation عبارة عن مجموعة معيارية من مكونات البرامج المتكاملة لإدارة العمليات والأتمتة.