هل يجب أن تكون اختبارات الوحدة اختبارات الصناديق السوداء أو اختبارات الصندوق الأبيض؟

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

سؤال

قل أن لدي ثلاث طرق ، كلها متشابهة جدًا ولكن مع أنواع الإدخال المختلفة:

void printLargestNumber(int a, int b) { ... }
void printLargestNumber(double a, double b) { ... }
void printLargestNumber(String numberAsString, String numberAsString) { ... }

يستخدم الثلاثة نفس المنطق الأساسي. على سبيل المثال: ربما double الإصدار هو الوحيد الذي يقارن الأرقام ، والآخران فقط يحولان مدخلاتهما إلى double.

يمكن أن نتخيل بعض اختبارات الوحدة المختلفة: الإدخال الأول أكبر ، والثانية أكبر ، وكلا المدخلات سلبية ، إلخ.

سؤالي

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

أو

يجب فقط double يتم اختبار الإصدار بكثافة واختبرهما الآخران بخفة للتحقق من تحويل المعلمة (اختبار الصندوق الأبيض لأننا نعلم أنهما يشتركان في نفس التنفيذ وقد تم اختباره بالفعل في double الاختبارات)؟

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

المحلول

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

نصائح أخرى

هذا يعتمد.

هل تعتقد أن التنفيذ من المحتمل أن يتغير؟ إذا كان الأمر كذلك ، فانتقل مع اختبار الصندوق الأسود.

إذا كان بإمكانك ضمان أن التنفيذ لن يتغير مع Box White Box. ومع ذلك ، فإن فرص أن تكون قادرًا على ضمان أن هذا ليس 100 ٪.

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

ربما يجب عليك التحقيق في إمكانية إجراء الاختبارات بالتوازي.

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

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

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

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