Ответ
Эти подходы различаются уровнем знания тестировщиком внутреннего устройства тестируемой системы (SUT).
| Подход | Знание внутренней структуры | Уровень тестирования | Примеры техник/видов тестирования |
|---|---|---|---|
| Белый ящик (White-box) | Полное. Доступен исходный код, архитектура, базы данных. | Низкий (модули, компоненты). | Модульное тестирование, анализ покрытия кода (statement, branch), статический анализ. Тестировщик знает, как работает система. |
| Серый ящик (Gray-box) | Частичное. Известны архитектура, схемы БД, логи, но нет прямого доступа к коду. | Средний (интеграция, система). | Интеграционное тестирование, тестирование API, тестирование на основе моделей. Тестировщик знает, что делает система и частично как. |
| Черный ящик (Black-box) | Отсутствует. Система рассматривается как «черный ящик» с известными входами и ожидаемыми выходами. | Высокий (система, приемка). | Функциональное, нефункциональное (нагрузочное, UX), приемочное тестирование. Тестировщик знает только что должна делать система. |
Практический пример для веб-приложения:
- Белый ящик: Разработчик пишет юнит-тест для функции расчёта скидки, проверяя все ветви условия
if-else. - Серый ящик: QA-инженер тестирует интеграцию сервиса оплаты с основным приложением через API, анализируя логи и ответы промежуточных сервисов.
- Черный ящик: QA-инженер проверяет сценарий «Пользователь добавляет товар в корзину и оформляет заказ» через UI, не вникая в реализацию бизнес-логики.