Что такое методологии тестирования «черного», «белого» и «серого» ящика?

«Что такое методологии тестирования «черного», «белого» и «серого» ящика?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Это классификация подходов к тестированию программного обеспечения, основанная на уровне знания его внутреннего устройства.

Метод Знание внутренней структуры Фокус тестирования Примеры
Черный ящик (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}, но не знает деталей реализации бизнес-логики на сервере. Проверяется структура, типы данных и статус-коды ответов.

Выбор подхода зависит от этапа тестирования, доступной документации, целей и необходимой глубины проверок.