سؤال

عند القيام TDD, كيفية معرفة "هذا يكفي اختبارات هذا الفصل / ميزة" ؟

أولا-هاء.عندما يمكن أن تقول ذلك الانتهاء من اختبار كل حافة الحالات ؟

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

المحلول

مع اختبار مدفوعة التنمية عليك كتابة اختبار قبل كتابة رمز الاختبارات.مرة كنت كتبت رمز و اختبار يمر ثم حان الوقت لكتابة اختبار آخر.إذا كنت تتبع TDD بشكل صحيح, كنت قد كتبت بما فيه الكفاية الاختبارات مرة كنت رمز يفعل كل ما هو مطلوب.

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

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

نصائح أخرى

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

على مستوى بعض ، إنه الشعور الغريزي من

"أنا على ثقة من أن الاختبارات سوف التقاط جميع المشاكل أستطيع أن أفكر الآن؟"

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

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

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

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

حسنا, عندما لا تستطيع التفكير في أي أكثر حالات الفشل التي لا تعمل على النحو المنشود.

جزء من TDD هو الحفاظ على قائمة من الأشياء التي تريد أن وتنفيذ مشاكل مع موقعك الحالي تنفيذ...لذلك عندما قائمة نفاد ، هي أساسا القيام به....

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

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

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

بعض الناس يشكون عندما لا يكون X في المئة من التغطية....بعض اختبار عديمة الفائدة ، و تغطية 100% لا يعني أنك اختبار كل شيء يمكن أن تجعل النظام الخاص بك رمز كسر فقط من حقيقة أنها لن انقطاع عن طريقة استخدامه!

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

إذا كنت لا تستطيع التفكير في أي شيء أكثر أن كنت تريد ، أو أي تحسينات على ما تريد, ثم الانتقال إلى شيء آخر.يمكنك دائما العودة في وقت لاحق.

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

حتى يكون لديك ما يكفي من الاختبارات عندما الاختبارات تبدو وكأنها تصف كل التوقعات التي أنت أو أصحاب المصلحة.

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

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

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

مع أطيب التحيات

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

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

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

أنا لن أكذب ولكني في كثير من الأحيان الحصول على كسول عندما تعود إلى كتابة اختبارات إضافية.كنت قد تفوت هذه المنشأة الذي يحتوي على 0 رمز أو منشئ افتراضي أنني لا أهتم.في بعض الأحيان لا يجري تماما الشرج عن عملية يمكن أن توفر لك الوقت ن المناطق التي هي أقل أهمية (100% مدونة التغطية الأسطورة).

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

حظا سعيدا الترميز.

يمكن دائما استخدام اختبار التغطية أداة مثل إيما (http://emma.sourceforge.net/) أو الكسوف المساعد EclEmma (http://www.eclemma.org/) أو ما شابه ذلك.بعض المطورين يعتقدون أن 100% اختبار التغطية هو الهدف المنشود.ويعترض آخرون.

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

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

لا حول مدونة التغطية.وهذا هو خطير متري ، لأن الرمز هو "تغطية" قبل وقت طويل هو "اختبار جيد".

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