Ответ
White box тестирование валидации — это проверка внутренней логики, структуры кода и всех путей выполнения функции или модуля валидации. Тестировщик имеет доступ к исходному коду.
Основные цели:
- Проверить полноту покрытия всех условий (
if/else, циклов). - Убедиться в корректности бизнес-логики.
- Найти ошибки в алгоритмах.
Пример тестирования функции валидации email (Python):
# Исходный код функции (упрощённый пример)
def validate_email(email: str) -> bool:
if not email or '@' not in email:
return False
local_part, domain_part = email.split('@', 1)
if not local_part or not domain_part or '.' not in domain_part:
return False
return True
Набор тестов для достижения 100% покрытия веток (branch coverage):
import pytest
# 1. Позитивные сценарии (ветка return True)
def test_valid_emails():
assert validate_email("test@example.com") == True
assert validate_email("a.b@domain.co.uk") == True
# 2. Негативные сценарии (разные ветки return False)
# Ветка 1: пустая строка или отсутствие '@'
def test_invalid_no_at_or_empty():
assert validate_email("") == False # not email
assert validate_email("plainaddress") == False # '@' not in email
# Ветка 2: отсутствие local_part или domain_part после split
def test_invalid_malformed_after_at():
assert validate_email("@example.com") == False # not local_part
assert validate_email("test@") == False # not domain_part
# Ветка 3: отсутствие точки в домене
def test_invalid_domain_no_dot():
assert validate_email("test@domain") == False # '.' not in domain_part
Инструменты:
- Покрытие кода:
pytest-cov(Python),JaCoCo(Java),istanbul(JS). - Статический анализ: SonarQube, который может выявлять недостижимый код или необработанные условия.