سؤال

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

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

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

عزيزي SOers ، ما هي آرائكم في هذا ؟

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

المحلول

وذلك يعتمد على الطريقة التي نموذج المجال (ق) من البرنامج.

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

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

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

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

نصائح أخرى

قرأت 2 الأسئلة:

ما هو رأيك في اختبار معين الطرق على مكونات تسمى في النظام ؟

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

الاختبارات وهو اختبار شيء واحد فقط هي أسهل للفهم و الحفاظ عليها.

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

ينبغي أن يكون هاجس اختبار التغطية ؟

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

عموما اختبار وحدة التغطية الإحصائيات ؟ لا سيما المهتمين طالما أنهم عالية.

100% اختبار وحدة تغطية كامل النظام ؟ ليست مهتمة على الإطلاق.

وأنا أتفق - أنا في صالح يميل بشدة نحو التحقق الدولة بدلا من التحقق السلوك (تفسير فضفاض من <لأ href = "http://martinfowler.com/articles/mocksArentStubs.html#ClassicalAndMockistTesting" يختلط = " نوفولو noreferrer "> الكلاسيكية TDD حين لا تزال تستخدم اختبار الزوجي).

فن وحدة اختبار لديها الكثير من النصائح الجيدة في هذه المجالات.

100٪ اختبار التغطية، واختبار واجهة المستخدم الرسومية، واختبار حاصل / اضعي أو غيرها من أي رمز منطق، وما يبدو من غير المرجح أن توفر ROI جيدة. سوف TDD توفر تغطية اختبار عالية على أي حال. اختبار ما قد كسر.

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

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

  2. ما هي تكلفة على المؤسسة إذا كان هذا الشيء يحدث في إنتاج انقطاع, التصحيح/إصلاح/إعادة الاختبار/إعادة-release القانونية/المالية ومخاطر السمعة ومخاطر ، الخ... ؟

الآن, ضرب #1 و #2 و التحقق ما إذا كان لديك الرغبة في تحقيق قدر معقول من اختبار التغطية يستحق المخاطرة.

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

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

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

كما أنني لست متأكدا إذا أنا أقرأ كثيرا في سؤالك ولكن يبدو أنك تلمح إلى أن وجود ساخرا-تمكين وحدة اختبار بطريقة أو بأخرى excluds التطبيق/التكامل اختبار وظيفي.إذا كان هذا هو الحال, أنت على حق الاعتراض على هذا المفهوم - وهما اختبار النهج يجب أن تتعايش.

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