Вопрос проверяет понимание уровней тестирования и границ тестируемой системы.
Unit-тесты проверяют отдельные функции или классы в изоляции. Интеграционные тесты проверяют взаимодействие компонентов. End-to-end тесты проверяют систему целиком, включая внешние зависимости и пользовательские сценарии. Различие заключается в уровне охвата и скорости выполнения.
Тестирование обычно разделяют на уровни в зависимости от области покрытия.
Unit-тест — это тест минимальной единицы логики.
Особенности:
тестируется одна функция или класс
используются mock-объекты
высокая скорость выполнения
минимальные зависимости
Пример:
def test_sum():
assert add(2, 3) == 5
Проверяют взаимодействие компонентов.
Особенности:
работа с базой данных
работа с API
меньше mock-объектов
Пример:
def test_create_user(db_session):
user = create_user("test")
assert db_session.query(User).count() == 1
Проверяют систему целиком, как её использует пользователь.
Особенности:
полный стек
медленные
сложная инфраструктура
Пример сценария:
пользователь отправляет запрос
API обрабатывает
данные сохраняются
возвращается ответ
Различия определяются:
областью тестирования
скоростью выполнения
уровнем изоляции
Unit-тесты проверяют логику, интеграционные — взаимодействие компонентов, end-to-end — систему целиком.