Ответ
Framework Unit Testing (FUT) — это подход к модульному тестированию, при котором тесты пишутся на том же языке программирования, что и основной код, и выполняются в изолированной среде с использованием специализированного тестового фреймворка (например, JUnit, pytest, Mocha).
Ключевые характеристики:
- Тестирует отдельные функции, методы или классы изолированно (мокируются внешние зависимости: БД, API, файловая система).
- Выполняется быстро, так как не требует развертывания полного приложения или интеграции с внешними системами.
- Является основой пирамиды тестирования и служит для раннего обнаружения дефектов.
Пример на Python с использованием pytest:
# production_code.py
def calculate_discount(price, discount_percent):
if discount_percent < 0 or discount_percent > 100:
raise ValueError("Discount must be between 0 and 100")
return price * (1 - discount_percent / 100)
# test_production_code.py
import pytest
# Тест корректного расчета
def test_calculate_discount_success():
assert calculate_discount(1000, 20) == 800.0
assert calculate_discount(1000, 0) == 1000.0
# Тест обработки невалидных данных
def test_calculate_discount_invalid_input():
with pytest.raises(ValueError):
calculate_discount(1000, 150)
Преимущества:
- Скорость и ранняя обратная связь.
- Простота отладки — падающий тест четко указывает на проблему в конкретной единице кода.
- Поддержка рефакторинга — тесты гарантируют, что изменения не сломали существующую логику.
Ограничения:
- Не проверяет интеграцию между компонентами.
- Не выявляет системные или бизнес-логические ошибки на уровне всего приложения.
FUT является обязательной практикой в разработке, но его необходимо дополнять интеграционными и end-to-end тестами.