ما هو التطوير القائم على الاختبار: دليل المبتدئين
نشرت: 2018-03-12كان المبرمجون والبق في معركة لا تنتهي من أجل السيادة منذ زمن غير معروف. إنه أمر لا مفر منه - حتى أفضل المبرمجين يقعون فريسة للأخطاء. لا يوجد رمز آمن حقًا من الأخطاء ، ولهذا نجري الاختبار. المبرمجون ، على الأقل العاقلين منهم ، يختبرون الكود الخاص بهم عن طريق تشغيله على أجهزة التطوير للتأكد من أنه يفعل ما كان من المفترض القيام به. تقليديًا ، تمت كتابة حالات الاختبار بعد كتابة الكود ، ولكن في التطوير المستند إلى الاختبار ، تتم كتابة حالة اختبار مؤتمتة قبل كتابة أي جزء من التعليمات البرمجية بحيث يمكن التحقق من التنفيذ والاختبار في وقت واحد.
في هذه المقالة ، سنتحدث عن التطوير المستند إلى الاختبار بعمق ولماذا هو أفضل من الأساليب التقليدية!

جدول المحتويات
ما هو التطوير القائم على الاختبار؟
تم إنشاء التطوير المستند إلى الاختبار كجزء من منهجية Extreme Programming (XP) وتم تسميته بمفهوم "Test-First" . يسمح لك التطوير القائم على الاختبار باختبار التعليمات البرمجية الخاصة بك تمامًا ، كما يتيح لك إعادة اختبار التعليمات البرمجية الخاصة بك بسرعة وسهولة نظرًا لأنها آلية. من حيث الجوهر ، قبل كتابة أي جزء من التعليمات البرمجية ، يقوم المبرمج أولاً بإنشاء اختبار وحدة. بعد ذلك ، ينشئ المبرمج كودًا كافيًا لتلبية اختبار الوحدة. بمجرد اجتياز الاختبار وإعادة بناء الكود ، يمكن للمبرمج المضي قدمًا في إجراء المزيد من التحسينات. يضمن التطوير المدفوع بالاختبار أن الكود قد تم اختباره تمامًا مما يؤدي إلى رمز معياري وقابل للتوسيع ومرن.
في كل مرة يتم فيها إضافة ميزة جديدة ، يجب أن تخضع لما يسمى "دورة حياة" TDD. لنتحدث أكثر عن دورة الحياة هذه.
كيف تصبح مطور مكدس كامل
دورة حياة التطوير المبني على الاختبار
تغطي دورة حياة التطوير المدفوعة بالاختبار كل شيء بدءًا من كتابة اختبار الوحدة الأولي إلى إعادة صياغة الكود.
- إضافة اختبار: يجب أن تخضع كل ميزة جديدة لاختبار قبل تنفيذها. الشرط الأساسي لكتابة الاختبار هو أن يكون لديك فهم واضح لجميع المتطلبات. يتم تحقيق ذلك باستخدام حالات الاستخدام وقصص المستخدم.
- قم بإجراء جميع الاختبارات وتحقق من اختبار الشبكة: يتم ذلك لضمان العمل الصحيح للاختبار الخاص بنا. تهدف هذه المرحلة بشكل أساسي إلى التحقق من عدم اجتياز الاختبار بأي كود لا يفي بالمتطلبات. من خلال القيام بذلك ، تقضي هذه الخطوة على احتمال وجود اختبار خاطئ في متناول اليد.
- اكتب الكود: الآن بعد أن أصبح اختبارك في مكانه ، فإن الخطوة الواضحة التالية هي كتابة رمز يمسح الاختبار. لا يلزم أن يكون هذا الرمز مثاليًا من جميع الجوانب ، ولكنه يحتاج إلى مسح الاختبار. بمجرد أن نتأكد من أن هذا الرمز يمسح الاختبار ، يمكن تعديله وفقًا للمتطلبات.
- قم بتشغيل الاختبارات: بعد كتابة الكود ، حان الوقت الآن لمعرفة ما إذا كان الرمز يجتاز الاختبار أم لا. إذا نجحت التعليمات البرمجية الخاصة بك في الاختبارات ، فهذا يعني أن التعليمات البرمجية الخاصة بك تفي بالمتطلبات - حتى الآن.
- إعادة بناء الكود: يتم ذلك بشكل أساسي لتنظيف الكود. لا تسبب إعادة البناء في أي ضرر لأي من الوظائف ؛ إنه مخصص فقط لتنظيف الكود عن طريق إزالة الازدواجية بين كود الاختبار وكود الإنتاج.
- التكرار: تتكرر هذه الدورة الآن باختبار جديد لإضافة المزيد من الوظائف. تخضع كل وظيفة لنفس الدورة. بشكل أساسي ، يجب ألا يزيد حجم الخطوات عن 1-10 تعديلات بين كل تشغيل اختباري. إذا لم يجتاز الرمز الاختبار بسرعة ، يجب على المطور الرجوع وعدم التصحيح بشكل مفرط.
إيجابيات وسلبيات التنمية المدفوعة باختبار
للتطوير المدفوع بالاختبار بعض المزايا المحددة عن طرق الاختبار التقليدية - والتي كانت في الغالب يدوية. ومع ذلك ، فهي ليست معصومة من الخطأ. تمامًا مثل أي تقنية أخرى ، فإن التطوير القائم على الاختبار له أيضًا مجموعة من العيوب.

دعونا نلقي نظرة على مزايا TDD بالتفصيل:
- تضمن كتابة الاختبارات الصغيرة نمطية التعليمات البرمجية الخاصة بك. تساعدك ممارسة TDD على فهم المبادئ الأساسية للتصميم المعياري الجيد.
- يوفر TDD الوضوح أثناء تنفيذ الكود الخاص بك مما يتيح شبكة أمان أثناء مرحلة إعادة البناء.
- مع TDD ، أصبح التعاون أسهل كثيرًا حيث يمكن الآن للأشخاص تحرير الكود بثقة لأن الاختبار سيعلمهم إذا كانت تغييراتهم لا ترقى إلى مستوى الاختبار.
- أساس TDD هو اختبارات الوحدة. وبسبب ذلك ، فإن إعادة الهيكلة أسهل بكثير وأسرع. تعد إعادة هيكلة رمز قديم أمرًا مزعجًا ، ولكن إذا كان الرمز مدعومًا باختبارات الوحدة ، فسيصبح الأمر أسهل كثيرًا.
- يساعد في توضيح جميع المتطلبات قبل البدء في جزء الترميز. بهذه الطريقة ، يتم تجنب الكثير من الغموض الذي يمكن أن ينشأ لاحقًا.
- يركز التطوير المدفوع بالاختبار على الاختبار أثناء الكتابة. هذا يجبر المبرمج على جعل واجهاته نظيفة بما يكفي لاجتياز الاختبار. من الصعب فهم هذه الميزة حتى تعمل على جزء من التعليمات البرمجية لم يخضع لـ TDD.
- يتم اكتشاف الأخطاء السخيفة على الفور تقريبًا. يساعد في إزالة تلك الأخطاء التي من شأنها أن تضيع الكثير من الوقت إذا وجدت في ضمان الجودة.
الآن ، دعنا نلقي نظرة على ما هي قيود التطوير القائم على الاختبار:
- يجب الحفاظ على مجموعة الاختبار المستخدمة للاختبار وإلا فقد لا تكون الاختبارات حتمية تمامًا.
- الاختبارات صعبة الكتابة - خاصة بعد مرحلة اختبار الوحدة.
- TDD يعمل على إبطاء وتيرة التطوير ، على الأقل في البداية.
- كما هو الحال مع أي شكل من أشكال التطوير ، هناك فرق كبير بين القيام بذلك فقط والقيام به بشكل جيد. تتطلب كتابة اختبارات الوحدة الجيدة مستوى من التخصص.
- من الصعب تطبيق هذا الأسلوب على التعليمات البرمجية القديمة (الحالية) الخاصة بك.
- يتطلب TDD منك إجراء التدبير المنزلي الروتيني. من الضروري تحسين الاختبارات لجعلها تعمل بشكل أسرع.
- من السهل تشتيت انتباهك بالميزات الفاخرة في أي إطار عمل لاختبار الوحدة ، ولكن يجب أن يوضع في الاعتبار أن الاختبارات البسيطة تميل إلى إعطاء أفضل النتائج.
- ما لم يحافظ كل فرد في الفريق على اختباراته بشكل صحيح ، يمكن للنظام بأكمله أن يتدهور بسرعة.
ختاما…
التطوير المدفوع بالاختبار هو الطريق إلى الأمام بقدر ما يذهب تطوير التطبيق في المستقبل. هناك عدد من أطر الاختبار الآلية مثل PHPUnit و Serenity و Robot و RedWoodHQ وغيرها الكثير. اختر ما يناسب احتياجاتك وابدأ في إنشاء تطبيقات أفضل يمكن صيانتها في وقت قصير!
قم بالتسجيل في دورات هندسة البرمجيات من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.
