Нещодавно у мене був випускний іспит з курсу програмної інженерії для моєї магістерської програми, і одне з питань на іспиті:
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.
- Так, але сам тест цього не робить. Тестування білого поля означає тестування чогось внутрішнього у методі чи класі, як-от значення змінної. Це не означає, що тестувальник знає, як виглядає тестовий код.