Ответ
Это классификация подходов к тестированию программного обеспечения, основанная на уровне знания его внутреннего устройства.
| Метод | Знание внутренней структуры | Фокус тестирования | Примеры |
|---|---|---|---|
| Черный ящик (Black Box) | Отсутствует. Тестировщик видит только входные данные и выходные результаты. | Поведение системы. Соответствие функциональным и нефункциональным требованиям. | Функциональное, приемочное (UAT), тестирование интерфейса. |
| Белый ящик (White Box) | Полное. Известна архитектура, код, алгоритмы. | Внутренняя логика и структура. Покрытие кода, корректность путей выполнения. | Модульное (юнит), интеграционное, статический анализ кода. |
| Серый ящик (Grey Box) | Частичное. Известны некоторые аспекты внутреннего устройства (например, схемы данных, диаграммы состояний). | Комбинация поведения и внутренних взаимодействий. Часто используется для тестирования интеграций. | Тестирование API, тестирование безопасности на уровне архитектуры. |
Пример для каждого подхода:
1. Черный ящик (Функциональный тест формы входа):
Вход: Логин
"user", пароль"pass123".
Ожидаемый выход: Перенаправление на личный кабинет.
Внутренняя проверка пароля (хеширование, запрос к БД) неизвестна.
2. Белый ящик (Юнит-тест на Python):
def is_even(number: int) -> bool:
return number % 2 == 0
# Тест, написанный с пониманием реализации функции
def test_is_even():
assert is_even(4) == True # Проверка четного числа
assert is_even(7) == False # Проверка нечетного числа
assert is_even(0) == True # Проверка граничного случая
3. Серый ящик (Тестирование API):
Тестировщик знает схему (JSON Schema) ожидаемого ответа от эндпоинта
/api/users/{id}, но не знает деталей реализации бизнес-логики на сервере. Проверяется структура, типы данных и статус-коды ответов.
Выбор подхода зависит от этапа тестирования, доступной документации, целей и необходимой глубины проверок.