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

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

Ответ

Тестирование белого ящика (White-box Testing) — это метод, при котором тесты проектируются на основе знания внутренней структуры, исходного кода и алгоритмов тестируемого приложения. Тестировщик анализирует пути выполнения кода.

Ключевые характеристики:

  • Доступ к коду: Требует полного доступа к исходному коду.
  • Уровень: Применяется в основном на уровнях модульного (unit) и интеграционного тестирования.
  • Техники: Включает тестирование путей, условий, циклов, покрытия кода (statement, branch, condition coverage).

Пример модульного теста (Python, pytest):

# Тестируемая функция
def factorial(n: int) -> int:
    if n < 0:
        raise ValueError("Факториал определен только для n >= 0")
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

# Тест, проверяющий внутреннюю логику (ветвления и циклы)
def test_factorial():
    # Проверка основного пути
    assert factorial(5) == 120
    # Проверка граничного условия
    assert factorial(0) == 1
    assert factorial(1) == 1
    # Проверка обработки ошибки (ветвление `if n < 0`)
    with pytest.raises(ValueError):
        factorial(-1)

Преимущества: Позволяет находить скрытые ошибки в алгоритмах, оптимизировать код и достигать высокого процента покрытия. Недостатки: Требует навыков программирования и может «слепо» следовать реализации, пропуская ошибки в требованиях.