it-swarm.asia

كيف نفعل التنمية مدفوعة الاختبار (TDD) في دروبال؟

  • ما هي الأدوات المستخدمة TDD في Drupal (وحدات PHP ، Drupal Modules ، إلخ)؟
  • كيف يبدو سير العمل الخاص بك الالتزام/الاختبار/النشر؟ هل تستخدم Phing و PHPUnderControl و Hudson لإدارة سير العمل هذا؟
  • بأي طريقة يجعل اختبار الوحدة رمزك أكثر موثوقية؟
  • هل تحتاج إلى خادم اختبار وحدة منفصل ومكلف ومستقل ، أم يمكنك القيام بذلك من جهاز كمبيوتر محمول؟

أعلم أن روبرت كتب مشاركة فنية ممتازة هنا حول اختبار الوحدة في Drupal مع SimpleTest ؛ أنا مهتم أكثر بتغطية جزء سير العمل والتكوين. لدي حاليًا جهاز تطوير ، خادم مرحلي وإنتاج ، يعمل كل من مواقع الإنتاج والمرحلة على وحدة معالجة مركزية Dreamhost VPS بسعة 300 ميجابايت/300 ميجاهرتز.

29
amateur barista

في عالم Ruby ، يتم تسهيل TDD من خلال أدوات مضمنة في إطار العمل. Factory Girl و Mocha و rSpec وغيرها تسمح للمطورين بإنشاء اختبارات سهلة وحيوية تتناول حالات الاختبار المطلوبة.

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

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

أنا اخترق أحد الحلول معًا باستخدام Phactory و phpunit ، وهو bootstraps Drupal يدويًا. من الواضح أنه يواجه بعض المشكلات ولم ينته ، ولكنه يصل إلى هناك.

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

في النهاية ، TDD في Drupal غير مدعوم جيدًا ، لذا يمكنك كتابة خاصتك لجعلها تعمل خارج drupal ، أو تحمل أداء ضعيف.

-- تحديث --

لقد أعددت بنجاح Drupal مع Phactory ، وأجري الآن اختباراتي عبر phpunit بدلاً من Drupal Web Test Case. لذا فمن الممكن.

آمل أن أصل إلى نقطة يمكنني فيها تحريرها ويمكن دمجها في مستند Phactory.

- التحديث 2 -

مستند حول كيفية إعداد Phactory على https://github.com/trimbletodd/phactory .

8
trimbletodd

نظرًا لأن مدونة Mark غير متصلة بالإنترنت ، فسأذكر بعض الأدوات التي نفذها فريقه:

الاختبار الوظيفي: السيلينيوم
اختبار الوحدة: أبسط
بناء الخادم: Jenkins
قياس الأداء: XDebug + Cachegrind

في العامين منذ أن طرحت هذا السؤال ، رأيت بعض الأدوات الإضافية تكتسب شعبية في مشهد TDD. في الوقت الحاضر عندما تتحدث عن التطوير المدفوع باختبار (في Drupal ، بالطبع) هناك وجهان لعملة واحدة - اختبار الواجهة الأمامية ، واختبار النهاية الخلفية.

في ما يلي عرضان بارزان من أحدث Drupalcon Portland 2013 يمثلان هذه المسألة:

تطوير بالارقام اختبار الخلفية.
الاختبار الآلي مع ياسمين و PhantomJS ، اختبار الواجهة الأمامية.

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

13
amateur barista

الشيء الوحيد الذي أعلمه هو أنه بالنسبة للوحدات المساهمة ، يمكنك تمكين الاختبار الآلي لعمليات التصحيح و التصحيحات في قائمة انتظار المشكلات ، راجع - http://drupal.org/node/68999 . لا يزال الوضع غير مستقر إلى حد ما ، خاصة إذا كان لديك تبعيات.

من المحتمل أن معظم المشاريع تفعل شيئًا على غرار التطوير المدفوع بالأخطاء ، والذي يأتي أساسًا لكتابة اختبار أولاً عند العثور على خطأ ثم إصلاحه. إذا كان على كل حال ؛)

من تجربتي الشخصية ، فإن TDD صعب إلى حد ما في دروبال ، لأنك غالبًا لا تكتب (فقط) اختبارات الوحدة مع أبسط ولكن اختبارات التكامل ، حيث يمكنك عرض الصفحات وإرسال النماذج. لذلك قد يكون من الصعب كتابة اختبارات جيدة مقدمًا. ولكن ربما أنا لست معتادًا على فعل ذلك :)

5
Berdir