ما هو معقول مدونة التغطية % عن وحدة الاختبارات (ولماذا)?[مغلقة]

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

سؤال

إذا كنت تريد ولاية الحد الأدنى النسبة المئوية رمز-تغطية وحدة الاختبارات ، وربما حتى شرط الالتزام مستودع, ماذا سيكون ؟

يرجى شرح كيف وصلت إلى الجواب (لأنه إذا كان كل ما فعلته هو اختيار الرقم ، ثم يمكنني فعل ذلك بنفسي ;)

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

المحلول

هذا النثر البرتو سافويا يجيب بدقة على هذا السؤال (في لطيف طريقة مسلية في ذلك!):

http://www.artima.com/forums/flat.jsp?forum=106&thread=204677

Testivus على اختبار التغطية

في وقت مبكر صباح أحد الأيام ، مبرمج طلب المعلم الكبير:

"أنا مستعد أن أكتب بعض وحدة الاختبارات.ماذا مدونة التغطية يجب أن الهدف ؟ "

المعلم الكبير أجاب:

"لا تقلق بشأن تغطية مجرد كتابة بعض الاختبارات جيدة."

مبرمج ابتسم وانحنى ، غادر.

...

في وقت لاحق من ذلك اليوم الثاني مبرمج سأل نفس السؤال.

المعلم الكبير وأشار في وعاء من الماء المغلي و قال:

"كم عدد حبات الأرز في الإناء؟"

مبرمج يبحث في حيرة ، أجاب:

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

"بالضبط" ، وقال المعلم الكبير.

الثاني مبرمج ابتسم وانحنى ، واليسار.

...

في نهاية اليوم الثالث مبرمج جاء وطلب نفس سؤال حول مدونة التغطية.

"ثمانون في المئة و لا أقل!" أجاب السيد في صوت شديد اللهجة ، يدق بقبضته على الطاولة.

الثالث مبرمج ابتسم وانحنى ، واليسار.

...

بعد هذا الأخير رد الشباب المتدرب اقترب العظيم الماجستير:

"المعلم الكبير ، اليوم سمعت منكم الإجابة على نفس السؤال عن مدونة التغطية مع ثلاثة مختلفة إجابات.لماذا؟"

سيد عظيم وقفت من الرئيس:

"يأتي الحصول على بعض الشاي الطازجة معي دعونا نتحدث عن ذلك."

بعد أن ملأ الكؤوس مع التدخين الساخنة الشاي الأخضر العظيم بدأ سيد الإجابة:

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

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

"أرى" ، وقال الشاب المتدرب ، "ولكن إذا كان هناك أي واحد بسيط الجواب, ثم لماذا لم تجيب على الثالث مبرمج 'ثمانين في المئة ، لا تقل'?"

المعلم الكبير ضحك بجد بصوت عال أن بطنه دليل على أنه شربت أكثر من الشاي الأخضر ، متخبط صعودا وهبوطا.

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

الشباب المتدرب و أشهب المعلم الكبير الانتهاء من شرب الشاي في الصمت التأملي.

نصائح أخرى

مدونة التغطية مضللة متري إن تغطية 100% هو الهدف الخاص بك (بدلا من 100% اختبار جميع الميزات).

  • هل يمكن الحصول على 100% من خلال ضرب كل الخطوط مرة واحدة.ومع ذلك هل يمكن أن لا تزال تفوت اختبار تسلسل معين (المسار المنطقي) في تلك الخطوط هي ضرب.
  • كنت لا يمكن الحصول على 100% ولكن لا تزال لديها اختبار كل ما تبذلونه من 80%/التكرار تستخدم مسارات التعليمات البرمجية.وجود اختبارات اختبار كل 'رمي ExceptionTypeX' أو ما شابه دفاعية البرمجة الحرس كنت قد وضعت في 'من الجميل أن يكون' لا 'يجب أن يكون'

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

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

أنا لا أهتم إذا كنت قد البرمجية التي يتم تغطيتها في الاختبارات, ولكن أود أن الرعاية إذا كنت ريفاكتور قانون بلدي في نهاية المطاف بعد سلوكا مختلفا.ولذلك 100% وظائف التغطية هو الهدف الوحيد.

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

أنا سوف أخذ لقطة في القيام بذلك.أنا لست خبيرا في اختبار الهندسة و سيكون سعيدا لرؤية المزيد من علم الإجابة.

عند تعيين رمز تغطية متطلبات

أولا لماذا تريد أن تفرض مثل هذا المعيار في المقام الأول ؟ في عام ، عندما تريد إدخال التجريبية الثقة في العملية الخاصة بك.ماذا تعني "التجريبية الثقة"?حسنا الهدف الحقيقي صحة.معظم البرامج لا يمكننا ان نعرف هذا في جميع المدخلات ، لذلك نقبل قول هذا الكود مجربة.هذا هو أكثر ما يمكن معرفته, ولكن لا يزال معيار ذاتي:وسوف يكون دائما مفتوحة لمناقشة ما إذا كان أو لم يكن لديك اجتمع عليه.هذه مناقشات مفيدة و يجب أن تحدث ، ولكن كما كشف اليقين.

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

بعض الحالات التي يكون فيها وجود التجريبية القياسية يمكن أن تضيف قيمة:

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

المقاييس استخدام

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

سوف نستخدم اثنين من مقاييس موحدة أمثلة عندما يمكن استخدامها لوضع معايير:

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

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

ما هي النسبة المئوية التي تتطلب

وأخيرا نعود إلى السؤال الأصلي:إذا قمت بتعيين رمز معايير التغطية ، ما ينبغي أن عدد ؟

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

بعض الأرقام التي يمكن للمرء أن يختار:

  • 100%.قد تختار هذا لأنك تريد أن تتأكد من أن كل شيء يتم اختبار.هذا لا يعطيك أي التبصر في اختبار الجودة ، ولكن لا أقول لك أن بعض اختبار من بعض وقد لمست كل بيان (أو فرع ، إلخ.) مرة أخرى, هذا يعود إلى درجة من الثقة:إذا التغطية الخاصة بك هو أقل من 100% ، أعلم بعض فرعية من التعليمات البرمجية الخاصة بك التي لم تختبر.
    • قد يجادل البعض بأن هذا سخيف, و يجب عليك فقط اختبار أجزاء من التعليمات البرمجية التي هي مهمة حقا.أنا أزعم أنه يجب أيضا على أجزاء من التعليمات البرمجية التي هي مهمة حقا.مدونة التغطية يمكن تحسينها من خلال إزالة تختبر رمز أيضا.
  • 99% (أو 95% وأرقام أخرى في التسعينات.) المناسبة في الحالات حيث تريد أن أنقل مستوى الثقة مماثلة إلى 100% ، ولكن تترك نفسك بعض الهامش أن لا تقلق حول عرضية من الصعب اختبار ركن من التعليمات البرمجية.
  • 80%.لقد رأيت هذا العدد في استخدام بضع مرات, و لا أعرف تماما أين كان مصدره.أنا أعتقد قد يكون غريبا اختلاس قاعدة 80-20;عموما, القصد هنا هو إظهار أن معظم من التعليمات البرمجية الخاصة بك التي تم اختبارها.(نعم 51% من شأنه أيضا أن "معظم" لكن 80% هو أكثر تعبيرا من معظم الناس يعني قبل أكثر من غيرها.) هذا هو المناسب في منتصف الأرض الحالات التي يكون فيها "مجربة" ليس أولوية عالية (كنت لا تريد أن تضيع جهد منخفض القيمة الاختبارات) ، ولكن يكفي من الأولوية أن كنت لا تزال ترغب في الحصول على بعض القياسية في المكان.

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

ملاحظات أخرى

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

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

العملية الأساسية هي:

  1. وأنا أكتب الاختبارات ممارسة كل وظيفة الحالات حافة أستطيع التفكير (عادة العمل من الوثائق).
  2. تشغيل التعليمات البرمجية أدوات تغطية
  3. أنا دراسة أي خطوط أو مسارات لا تغطيها أي التي أعتبرها غير مهم أو غير قابلة للوصول (بسبب دفاعي البرمجة) أنا علامة لا عد
  4. أنا أكتب اختبارات جديدة لتغطية الخطوط المفقودة وتحسين الوثائق إذا كانت تلك الحافة الحالات التي لم يتم ذكرها.

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

كنت آخر anectode على اختبار التغطية أود أن حصة.

لدينا مشروع ضخم حيث ، على "تويتر" ، أشرت إلى ذلك ، مع 700 وحدة الاختبارات لدينا سوى 20% مدونة التغطية.

سكوت Hanselman أجاب مع كلمات من الحكمة:

هل هو حق من 20% ؟ هل هو 20% الذي يمثل رمز المستخدمين ضرب أكثر ؟ يمكنك إضافة أكثر من 50 الاختبارات فقط إضافة 2%.

مرة أخرى يعود إلى Testivus على مدونة التغطية الجواب.كم الأرز يجب أن نضع في القدر ؟ ذلك يعتمد.

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

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

حظا سعيدا!

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

فإنه من السهل لاقالة هذا السؤال مع شيء من هذا القبيل:

  • تغطية خطوط لا يساوي اختبار المنطق و يجب أن لا تقرأ كثيرا في النسبة.

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

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

عند استخدام رمز التغطية متري يجب أن لا يكون مجرد ثابتة (التعسفي) النسبة المئوية التي يجب الوفاء بها. يفعل هذا لا يعطيك فوائد حقيقية من مدونة التغطية تحليل في رأيي.بدلا من ذلك تحديد المقاييس التالية:

  • المياه المنخفضة علامة (لوم) ، وهو أدنى عدد من كشف خطوط رأيت من أي وقت مضى في النظام تحت الاختبار
  • العلامة المائية (HWM) ، وهو أعلى رمز تغطية نسبة رأيت من أي وقت مضى على النظام تحت الاختبار

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

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

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

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

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

كما أود أن أذكر اثنين من المنافع العامة من مدونة التغطية متري.

  • مدونة التغطية التحليل هو جزء من ديناميكية تحليل رمز (بدلا من ثابت واحد ، أيالوبر).المشاكل التي وجدت خلال تحليل رمز الحيوي (عن طريق أدوات مثل تنقية الأسرة ، http://www-03.ibm.com/software/products/en/rational-purify-family) أشياء مثل غير مهيأ الذاكرة يقرأ (UMR) تسرب الذاكرة ، الخ. هذه المشاكل يمكن أن يكون إلا إذا كان رمز يتم تغطيتها من قبل تنفيذه حالة اختبار.الرمز الذي هو أصعب لتغطية في اختبار الحالة عادة ما تكون حالات غير طبيعية في النظام ، ولكن إذا كنت تريد النظام فشل بأمان (أيخطأ التتبع بدلا من تحطم) قد ترغب في وضع بعض الجهد في تغطية حالات غير طبيعية في تحليل رمز الحيوي أيضا.مع قليلا من الحظ السيئ ، UMR يمكن أن يؤدي إلى segfault أو ما هو أسوأ.

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

و السلبية ، للتأكد من اكتمالها.

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

85% من شأنه أن يكون نقطة انطلاق جيدة من أجل الوصول إلى معايير.

ربما اختار مجموعة متنوعة من أعلى القضبان الشحن المعايير اعتمادا على حساسية النظم الفرعية/مكونات يجري اختبارها.

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

في .صافي العالم والناس في كثير من الأحيان اقتباس 80% كما ريسونبلي.ولكن يقولون هذا في حل المستوى.أنا أفضل أن التدبير على مستوى المشروع:30% قد يكون على ما يرام بالنسبة واجهة المستخدم المشروع إذا كنت قد حصلت على السيلينيوم ، إلخ أو دليل الاختبارات ، 20% البيانات طبقة المشروع قد يكون على ما يرام ، ولكن 95%+ قد تكون قابلة تماما للتحقيق لرجال الأعمال القواعد طبقة ، إن لم يكن كليا اللازمة.وبالتالي فإن التغطية الشاملة قد يكون, 60%, ولكن الأعمال الهامة المنطق قد يكون أعلى من ذلك بكثير.

لقد سمعت أيضا هذا:تطمح إلى 100% و سوف تصل إلى 80 في المائة ؛ ولكن نطمح إلى 80% و ستحصل على 40%.

خلاصة القول:تطبيق 80:20 القاعدة ، والسماح التطبيق الخاص بك علة العد دليل لك.

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

<cobertura-check linerate="0"
                 branchrate="0"
                 totallinerate="70"
                 totalbranchrate="90"
                 failureproperty="build.failed" />

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

إذا كنت زيادة التغطية في وحدة اختبار - أعرف أن هذا اختبار الوحدة يستحق شيئا.

وهذا ينطبق على التعليمات البرمجية التي لا تغطي 50% من تغطية أو 97% تغطيتها.

مدونة التغطية هو مجرد مقياس آخر.في حد ذاته يمكن أن يكون مضللا للغاية (انظر www.thoughtworks.com/insights/blog/are-test-coverage-metrics-overrated).الهدف الخاص بك ولذلك لا ينبغي أن يحقق 100% مدونة التغطية وإنما للتأكد من أنه يمكنك اختبار جميع السيناريوهات ذات الصلة من التطبيق الخاص بك.

إذا كنت قد تم القيام به اختبار الوحدة على مبلغ محترم من الوقت, أنا لا أرى أي سبب لا تقترب من 95%+.ومع ذلك ، كحد أدنى ، لقد عملت دائما مع 80 ٪ ، حتى عندما جديدا على الاختبار.

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

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

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

مدونة التغطية العظيمة ولكن فقط طالما الفوائد التي تحصل من ذلك تفوق التكلفة/الجهد لتحقيق ذلك.

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

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

أنا أفضل أن تفعل BDD الذي يستخدم مزيجا من الآلي اختبارات القبول ، وربما غيرها من التكامل اختبارات وحدة الاختبارات.السؤال بالنسبة لي هو ما الهدف التغطية الاختبار الآلي جناح ككل ينبغي أن يكون.

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

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

تحقق من Crap4j.انها قليلا أكثر تعقيدا من النهج المستقيم مدونة التغطية.فهو يجمع بين رمز تغطية قياسات مع التعقيد القياسات ثم يظهر لك ما المعقدة رمز ليس اختبارها حاليا.

جوابي على هذا اللغز هو أن يكون 100% تغطية سطر من التعليمات البرمجية يمكنك اختبار 0% تغطية سطر من التعليمات البرمجية يمكنك اختبار.

بلدي الممارسة الحالية في بيثون هو تقسيم بلدي .py وحدات في مجلدين:التطبيق1/ و app2/ و عند تشغيل وحدة الاختبارات حساب التغطية هذين المجلدات بصريا الاختيار (أنا يجب أن أتمتة هذه الأيام) أن التطبيق1 100% تغطية app2 0% التغطية.

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

هذا يعني أنه يمكنني أن أوصي تحقيق 100% تغطية خط المكتبة البرمجية.

أنا أيضا أحيانا استعراض app2/ لمعرفة إذا كان من الممكن اختبار أي رمز هناك و لو كنت أستطيع نقل إلى التطبيق1/

الآن أنا لست قلقا جدا بشأن إجمالي التغطية لأن ذلك يمكن أن تتفاوت اعتمادا على حجم المشروع ، ولكن عموما لقد رأيت 70% إلى 90%.

مع بيثون ، يجب أن تكون قادرة على وضع اختبار الدخان التي يمكن تلقائيا تشغيل التطبيق أثناء قياس التغطية على أمل الحصول على aggreagate من 100% عند الجمع بين الدخان اختبار مع unittest الأرقام.

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

في رأيي, الجواب هو "ذلك يعتمد على كم من الوقت لديك".أنا في محاولة لتحقيق 100% ولكن أنا لا تثير ضجة إذا كنت لا تحصل عليه مع الوقت لدي.

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

وعادة ما تتبع المعايير التالية أو القواعد:

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

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

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

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

لا أعتقد أن يمكن أن يكون هناك مثل هذا ب/ث القاعدة.
رمز يجب مراجعته مع إيلاء اهتمام خاص إلى التفاصيل الهامة.
ومع ذلك ، إذا لم يتم اختبارها ، فقد الخلل!

الجواب القصير:60-80%

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

اعتمادا على أهمية الرمز في أي مكان من 75% -85% قاعدة جيدة من الإبهام.كود الشحن بالتأكيد ينبغي أن يكون اختبار أكثر دقة من في البيت المرافق العامة ، الخ.

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

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

اعتمادا على المجال الخاص بك فإنه من غير المعقول أن تطلق النار على 95%, ولكن يجب أن أقول في المتوسط الذهاب إلى أن تبحث في المتوسط حالة من 85% إلى 90%.

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

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

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

من Testivus نشر أعتقد أن الإجابة السياق ينبغي أن يكون ثاني مبرمج.وقد قلت هذا من وجهة النظر العملية نحتاج المعلمة / أهداف نسعى من أجله.أنا أعتبر أن هذا يمكن أن يكون "اختبار" في عملية رشيقة من خلال تحليل التعليمات البرمجية لدينا العمارة وظيفة (قصص المستخدم) و ثم تأتي مع عدد.بناء على خبرتي في مجال الاتصالات أود أن أقول أن 60% هي قيمة جيدة للتحقق.

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