Что такое Framework Unit Testing (FUT)?

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

Ответ

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 тестами.