Ответ
White-box (или структурное) тестирование, требующее знания внутреннего устройства системы, пишут разработчики и инженеры по автоматизации тестирования (SDET/QA Automation).
Распределение ответственности:
| Роль | Типичные white-box тесты | Почему именно они? |
|---|---|---|
| Разработчик | Модульные (Unit), интеграционные (Integration) тесты. | Имеют глубочайшее понимание кода, логики и архитектуры. Пишут тесты параллельно с разработкой (TDD). |
| QA Automation | Компонентные, API-тесты, тесты на покрытие сложных бизнес-логик. | Обладают экспертизой в тест-дизайне и создании устойчивых тестовых фреймворков. |
Пример модульного теста (Python/pytest):
def calculate_discount(price, is_member):
if is_member:
return price * 0.9 # 10% скидка
return price
def test_calculate_discount_member():
# White-box тест: мы знаем внутреннюю ветку `if is_member:`
result = calculate_discount(100, True)
assert result == 90, f"Для участника ожидалась скидка. Получено: {result}"
def test_calculate_discount_non_member():
result = calculate_discount(100, False)
assert result == 100, f"Для не-участника скидки нет. Получено: {result}"
Ключевое требование: Написание white-box тестов невозможно без доступа к исходному коду и понимания используемых алгоритмов и структур данных.