سؤال

أنا مطور ويب أعمل في PHP.لدي بعض الخبرة المحدودة في استخدام التطوير القائم على الاختبار في تطبيقات سطح المكتب C#.في هذه الحالة استخدمنا nUnit لإطار اختبار الوحدة.

أرغب في البدء في استخدام TDD في مشاريع جديدة ولكني لست متأكدًا حقًا من أين أبدأ.

ما هي التوصيات التي لديك بشأن إطار عمل اختبار الوحدة المستند إلى PHP وما هي بعض الموارد الجيدة لشخص جديد جدًا في مفهوم TDD؟

هل كانت مفيدة؟

المحلول

لقد استخدمت كلاً من PHPUnit & اختبار بسيط ووجدت اختبار بسيط ليكون أسهل في الاستخدام.

بقدر ما يذهب TDD، لم يحالفني الحظ كثيرًا بالمعنى النقي.أعتقد أن هذه مشكلة تتعلق بالوقت/الانضباط من جهتي بالرغم من ذلك.

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

نصائح أخرى

أنصح بشدة التطوير القائم على الاختبار بقلم كينت بيك (ردمك-10:0321146530).لم تتم كتابته خصيصًا لـ PHP، ولكن المفاهيم موجودة ويجب ترجمتها بسهولة إلى PHP.

تعد PHPUnit معيارًا قياسيًا، ولكنها في بعض الأحيان تكون مربكة أيضًا، لذا إذا وجدت أنها معقدة للغاية، فراجعها phpt للبدء.من السهل جدًا كتابة الاختبارات فيه.لا يوجد تفكير لأي مبرمج.

وللإجابة على سؤال TDD الخاص بك - لست متأكدًا مما إذا كان TDD مستخدمًا على نطاق واسع في مساحة PHP.أستطيع أن أرى أن التطوير السريع للتطبيقات وTDD يتعارضان إلى حد ما (IMHO بدقة).يتطلب TDD أن يكون لديك صورة كاملة لما تقوم بإنشائه وأن تكتب اختباراتك مقدمًا ثم تقوم بتنفيذ الكود لاجتياز الاختبار.

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

أنا شخصيا أفضل SimpleTest.يوجد مشغل اختبار سطر الأوامر ومشغل اختبار قائم على الويب، كما يوجد أيضًا Eclipse توصيل في للسماح لك بإجراء اختبارات الوحدة من IDE نفسه.لقد وجدت أن اتصال Zend بـ PHPUnit أصعب بكثير في العمل، خاصة مع مصحح الأخطاء.

الطريقة التي نستخدم بها SimpleTest داخليًا هي باستخدام التكامل المستمر السيناريو الذي كتبناه بأنفسنا.في كل مرة نقوم فيها بالتحقق من إحدى الميزات إلى SVN، نقوم بتضمين اختبارات الوحدة.كل ساعة أو نحو ذلك، يتم تشغيل البرنامج النصي CI واستدعاء برنامج PHP النصي لسطر الأوامر الذي يقوم بتشغيل جميع اختبارات وحدتنا.إذا حدث أي انقطاع، أحصل على البريد الإلكتروني.لقد كانت طريقة رائعة لتقليل الأخطاء في أنظمتنا.

ومع ذلك، يمكنك بسهولة استخدام شيء من هذا القبيل بينغ لتشغيل اختباراتك تلقائيًا، إما في مهمة cron أو باستخدام ربط تسجيل الدخول SVN.

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

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

يجب أن تنظر في PHPUnit, ، فهو يشبه إلى حد كبير nUnit.

أداة حديثة أخرى يجب أن تنظر إليها كودسيبتيون.إنها أبسط بكثير من PHPUnit وتتضمن منهجًا يحركه السيناريو، وهو مفيد جدًا لتوليد الوثائق من الاختبارات.

التطوير القائم على الاختبار هو أسلوب تتم فيه كتابة الاختبارات دائمًا قبل التعليمات البرمجية.يجب أن تتعلم PHPUNIT أولاً من أجل بدء تطوير TDD.ثم أثناء إنشاء وظيفتك، يجب عليك دائمًا التفكير في كيفية فشل الوظيفة وكتابة حالة اختبار في phpunit وفي النهاية يجب عليك كتابة التعليمات البرمجية من أجل اجتياز الاختبار.سيكون هذا أسلوبًا جديدًا، لذا سيكون الأمر صعبًا بعض الشيء في البداية، ولكن بمجرد أن تعتاد عليه، ستجده مفيدًا جدًا خاصة لأخطاء ما بعد التطوير وأسلوب البرمجة.يمكنك الذهاب من خلال هذا خطوة بخطوة دليل لفهم هذا المفهوم.

تذكر دائمًا أنه إذا تمت كتابة الاختبار بعد التطوير، فهو عديم الفائدة.لذا فإن TDD ضروري إذا كنت تفكر في كتابة اختبار الوحدة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top