Ответ
Тестирование белого ящика (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)
Преимущества: Позволяет находить скрытые ошибки в алгоритмах, оптимизировать код и достигать высокого процента покрытия. Недостатки: Требует навыков программирования и может «слепо» следовать реализации, пропуская ошибки в требованиях.