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

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

Ответ

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

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

  • Доступ к коду: Требует доступа к исходному коду.
  • Фокус на логике: Проверяет правильность условных переходов, циклов, обработки данных и исключений.
  • Метрики: Часто используется для измерения покрытия кода (code coverage), например, покрытия строк, ветвей или условий.

Пример на Python: Допустим, есть функция для валидации пароля:

def validate_password(password):
    if len(password) < 8:
        return False, "Password too short"
    if not any(char.isdigit() for char in password):
        return False, "Password must contain a digit"
    return True, "OK"

Тестировщик, зная код, напишет целенаправленные тесты для каждого условия:

def test_validate_password():
    # Проверка короткого пароля (первое условие)
    assert validate_password("123") == (False, "Password too short")
    # Проверка пароля без цифр (второе условие)
    assert validate_password("abcdefgh") == (False, "Password must contain a digit")
    # Проверка валидного пароля
    assert validate_password("pass1234") == (True, "OK")

Преимущества:

  • Позволяет находить скрытые ошибки в сложной логике.
  • Помогает достичь высокого покрытия кода.
  • Эффективно для модульного и интеграционного тестирования.

Недостатки:

  • Требует глубоких знаний кода и технологий.
  • Может пропускать ошибки, связанные с требованиями или пользовательским интерфейсом.
  • Затратно по времени, так как требует анализа реализации.