ما هي بعض المفاهيم الخاطئة الشائعة عن TDD?

StackOverflow https://stackoverflow.com/questions/72123

  •  09-06-2019
  •  | 
  •  

سؤال

قراءة أكثر من الردود على هذا السؤال عيوب اختبار مدفوعة التنمية ؟ لدي انطباع أن هناك الكثير من سوء الفهم حول ما TDD و كيفية تنفيذها.قد تكون مفيدة لمعالجة هذه المسائل هنا.

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

المحلول

أشعر قبول الإجابة كانت واحدة من أضعف (عيوب اختبار مدفوعة التنمية ؟ ), و الأكثر كتكوت يجيب الروائح من شخص قد يكون كتابة على الاختبارات المقررة.

كبير استثمار الوقت:بسيطة الحالة تفقد حوالي 20% من الفعلي التنفيذ ، ولكن معقدة الحالات تفقد أكثر من ذلك بكثير.

TDD استثمار.لقد وجدت أن مرة واحدة كنت تماما في TDD الوقت فقدت هو القليل جدا جدا و ما الوقت لم تفقد أكثر من تتكون عندما جاء إلى maintence الوقت.

الحالات المعقدة الاختبار الحالات اصعب أقترح في مثل هذه الحالات محاولة استخدام التلقائي الإشارة التعليمات البرمجية التي سيتم تشغيلها بالتوازي في إصدار تصحيح / اختبار تشغيل بدلا من وحدة اختبار أبسط الحالات.

إذا كان لديك اختبار أصبحت معقدة جدا, قد يكون الوقت قد حان لمراجعة التصميم الخاص بك.TDD أن يؤدي كنت في الطريق أصغر وأقل تعقيدا وحدات من قانون العمل معا

في بعض الأحيان كنت التصميم غير واضح في البداية وتتطور كما تذهب على طول - هذا سوف يجبرك على إعادة الاختبار الخاصة بك والتي سوف تولد وقتا كبيرا تفقد.أود أن أقترح تأجيل اختبارات الوحدة في هذه الحالة حتى يكون لديك فهم بعض من التصميم في الاعتبار.

هذا هو أسوأ نقطة من كل منهم!TDD ينبغي أن يكون حقا "اختبار مدفوعة تصميم".TDD عن تصميم لا اختبار.أن تدرك تماما قيمة فوائد TDD, لديك لعبة بالسيارة التصميم الخاص بك من الاختبارات الخاصة بك.لذلك يجب أن تكون الإعادة الإنتاج الخاص بك التعليمات البرمجية الخاصة بك لجعل الاختبارات تمر ، وليس العكس كما يشير إلى هذه النقطة

الآن حاليا معظم upmodded: عيوب اختبار مدفوعة التنمية ؟

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

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

نصائح أخرى

IMHO أكبر سوء فهم حول TDD هو أن: الوقت الذي يقضيه الكتابة و تقسيم الاختبارات سيكون الوقت الضائع. يذهب التفكير مثل "نعم, جناح اختبار جميل ولكن الميزة لن يكتمل أسرع بكثير إذا كنا مجرد ترميز".

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

الكبيرة الأخرى وتشمل المفاهيم الخاطئة وتجاهل أثر TDD على عملية التصميم ، و لم يدركوا أن "اختبارات مؤلمة" خطيرة رمز رائحة تحتاج إلى إصلاح بسرعة.

أرى الكثير من الناس سوء فهم ما هي الفحوصات التي هي في الواقع مفيدة إلى TDD.الناس يكتبون كبيرة اختبارات القبول بدلا من وحدة صغيرة الاختبارات ثم تنفق الكثير من الوقت على الاختبارات الخاصة بهم ومن ثم نستنتج أن TDD لا يعمل.أعتقد أن BDD الناس لديهم نقطة في تجنب استخدام كلمة اختبار تماما.

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

الاعتقاد الخاطئ بأن كثيرا ما أرى هو أن TDD يضمن نتائج جيدة.

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

هذه هي القضايا التي في رأيي هي مثيرة للجدل للغاية وبالتالي عرضة لسوء الفهم:

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

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

  • العيب الكبير من TDD هو شعور زائف بالأمان نظرا لعدم اكتمال الاختبارات:رأيت مواقع النزول لأن الناس يفترض أن اختبار وحدة كانت كافية لتحريك النشر.

  • ليست هناك حاجة من الاستهزاء الأطر للقيام TDD.انها مجرد أداة لاختبار بعض الحالات بطريقة أسهل.أفضل وحدة الاختبارات على الرغم من طرد عالية في المكدس و يجب أن يكون الملحد على طبقات في المدونة.اختبار طبقة واحدة في وقت واحد لا معنى له في هذا السياق.

مجرد الرمي إجابة أخرى في وعاء.

واحدة من الأكثر شيوعا سوء الفهم هو أن رمز ثابت, ، أي.لدي هذا الكود الآن كيف يمكنني اختبار ذلك ؟ إذا كان من الصعب كتابة اختبار, علينا أن نسأل السؤال التالي:كيف يمكنني تغيير هذا القانون لتسهيل الاختبار ؟

لماذا..?

حسنا هذا النوع من التعليمات البرمجية التي من السهل أن الاختبار هو:

  1. وحدات - كل أسلوب لا شيء واحد.
  2. Parameterised - كل أسلوب يقبل كل ما يحتاج والنواتج كل شيء كما ينبغي.
  3. حسنا المحدد - كل أسلوب لا بالضبط ما ينبغي, لا أكثر ولا أقل.

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

أفضل ما في أسهل قراءة, وأسهل اختبار, وأسهل فهم, وأسهل التصحيح.هذا هو السبب TDD غالبا ما يوصف بأنه تصميم ممارسة الرياضة.

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