На каких уровнях тестирования применяется White Box тестирование?

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

Ответ

White Box (или структурное) тестирование применяется в первую очередь на низких (low-level) уровнях, где необходим доступ к исходному коду и внутренней структуре приложения.

Основные уровни:

  1. Модульное тестирование (Unit Testing): Проверка отдельных функций, методов или классов. Тестировщик или разработчик пишет тесты, зная реализацию.

    # Пример unit-теста для функции сложения
    def add(a: int, b: int) -> int:
        return a + b
    
    def test_add():
        # White-box: мы знаем, что функция просто складывает два числа
        assert add(2, 3) == 5
        assert add(-1, 1) == 0  # Проверка граничного случая
        assert add(0, 0) == 0
  2. Интеграционное тестирование (Integration Testing): Проверка взаимодействия между модулями, классами или системами (например, сервис ↔ база данных, микросервис A ↔ микросервис B). Требует знания интерфейсов и протоколов взаимодействия.

    # Пример интеграционного теста (подключение к БД)
    def test_db_integration():
        connection = connect_to_database(config)
        cursor = connection.cursor()
        cursor.execute("SELECT 1")
        result = cursor.fetchone()
        # White-box: мы знаем, какой запрос отправляем и что ожидаем получить
        assert result[0] == 1
        connection.close()
  3. Статический анализ кода (Static Code Analysis): Не является уровнем тестирования в прямом смысле, но это ключевая white-box техника. Включает ревью кода, использование линтеров (pylint, ESLint), анализ метрик покрытия (coverage.py, JaCoCo) и поиск уязвимостей (SonarQube).

Важно: На более высоких уровнях (системное, приемочное) преобладает Black Box подход, но элементы White Box (например, анализ логов или глубокое понимание архитектуры) могут использоваться для углубленного исследования дефектов.