هل يجب أن تكون اختبارات الوحدة اختبارات الصناديق السوداء أو اختبارات الصندوق الأبيض؟
-
29-09-2019 - |
سؤال
قل أن لدي ثلاث طرق ، كلها متشابهة جدًا ولكن مع أنواع الإدخال المختلفة:
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 ٪.
يمكنك التسوية والقيام ببعض اختبارات الصندوق الأسود ، وخاصة حول ظروف الحدود. ومع ذلك ، يجب أن تكون كتابة الاختبارات سهلة - لذلك لا يوجد عذر من وجهة النظر هذه ليس القيام اختبار الصندوق الأسود الكامل. العامل المقيد الوحيد هو الوقت الذي يستغرقه إجراء الاختبارات.
ربما يجب عليك التحقيق في إمكانية إجراء الاختبارات بالتوازي.
هناك مجموعة من الاختبارات التي تمارس بشكل صريح الواجهات العامة. أود أن أعامل هؤلاء كاختبارات الصناديق السوداء.
هناك مجموعة ثانية من الاختبارات التي يمكن اعتبارها تبحث في حالات الزاوية للتنفيذ. هذا هو اختبار الصندوق الأبيض وبالتأكيد له مكان في اختبار الوحدة. لا يمكنك معرفة المسارات المثيرة للاهتمام دون معرفة تنفيذ صندوق البيض. أود إيلاء اهتمام خاص لحالة السلسلة ، لأن الواجهة تسمح بسلاسل قد لا تتحول بشكل نظيف إلى الزوجي ، والتي تدفع حدود الدقة وما إلى ذلك.
هل سأقطع بعض الزوايا في قضية عدد صحيح؟ أعلم أنني دفعت المسارات في العلبة المزدوجة ، وربما لا ينبغي ولكنها قد لا تكون تحت ضغط الوقت.