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

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

Ответ

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

Ключевые техники:

  • Покрытие кода (Code Coverage):
    • Покрытие операторов (Statement): Проверен ли каждый исполняемый оператор?
    • Покрытие ветвей (Branch): Проверены ли все возможные пути выполнения (true/false в условиях)?
    • Покрытие путей (Path): Проверены ли все возможные комбинации путей выполнения?
  • Анализ потока данных: Отслеживание значений переменных.

Пример на Python:

def calculate_discount(price, is_member):
    if price > 100:           # Ветвь 1
        discount = 10
    else:
        discount = 5
    if is_member:             # Ветвь 2
        discount += 5
    return price - discount

Для полного покрытия ветвей нужны тест-кейсы, покрывающие все комбинации условий:

  1. price=150, is_member=True (price>100, is_member=True)
  2. price=150, is_member=False (price>100, is_member=False)
  3. price=50, is_member=True (price<=100, is_member=True)
  4. price=50, is_member=False (price<=100, is_member=False)

Плюсы: Глубокое понимание системы, возможность найти скрытые ошибки в логике. Минусы: Требует навыков программирования, может быть трудоемким, не выявляет пропущенные требования.