Недавно у меня был последний экзамен по курсу разработки программного обеспечения для моей магистерской программы, и один из вопросов на экзамене был следующим:
Unit Testing is considered:
a. White-box Testing
b. Black-box Testing
c. Either
В моем 7-летнем опыте разработки программного обеспечения модульное тестирование всегда проводилось по принципу «белого ящика». При написании тестов тестировщик всегда имел полное представление о реализации модуля. Тестирование черного ящика всегда приходило позже в виде интеграционных, системных и приемочных испытаний.
Тем не менее, правильный ответ на экзамен (по словам профессора) заключается в том, что модульное тестирование может быть либо тестом белого, либо черного ящика.
Я провел некоторое исследование, и кажется, что во многих случаях «модульное тестирование черного ящика» используется для описания первого подхода к тестированию, когда модульные тесты пишутся до написания кода. Однако, на мой взгляд, это все еще тестирование белого ящика. Хотя реализация еще не существует, тот, кто пишет тест, обычно имеет довольно хорошее представление о том, как будет реализован исходный код.
Может кто-нибудь объяснить мне, как работает модульное тестирование черного ящика (если оно действительно есть) и чем оно отличается от модульного тестирования белого ящика?
While the implementation does not yet exist, whoever is writing the test generally has a pretty good idea about how the source code is going to be implemented.
- Да, но сам тест не дает. Тестирование белого ящика означает тестирование чего-то внутреннего для метода или класса, например, значения переменной. Это не означает, что автор теста знает, как выглядит тестируемый код.