Ответ
Интеграционное тестирование — это уровень тестирования, на котором проверяется взаимодействие и корректность обмена данными между интегрированными модулями, компонентами или системами. Его цель — выявить дефекты на стыках модулей, в интерфейсах, API, контрактах и работе с общими ресурсами (базами данных, очередями, кешем).
Пример теста на Python (с использованием pytest):
# Тест интеграции сервиса заказов с сервисом оплаты и БД
def test_order_placement_integration(order_service, payment_gateway_mock, db_session):
# 1. Arrange: Создаём тестовые данные в БД
test_user = db_session.add(User(name='Ivan'))
test_product = db_session.add(Product(price=100))
# 2. Act: Вызываем метод сервиса заказов, который внутри:
# - обратится к БД (модуль доступа к данным)
# - вызовет мок платежного шлюза (внешний сервис)
# - обновит статус заказа
new_order = order_service.place_order(user_id=test_user.id, product_id=test_product.id)
# 3. Assert: Проверяем интеграцию всех компонентов
assert new_order.status == 'PAID'
assert payment_gateway_mock.was_called_with(amount=100)
# Проверяем, что заказ действительно сохранён в БД
order_in_db = db_session.get(Order, new_order.id)
assert order_in_db is not None
Ключевые аспекты для QA:
- Расположение в пирамиде тестирования: Следует после модульного тестирования и перед системным (end-to-end).
- Подходы: «Снизу вверх» (от низкоуровневых модулей к UI), «сверху вниз» (от UI к низкоуровневым) или «большой взрыв» (всё сразу).
- Основные объекты проверки: Передача данных, обработка ошибок, корректность ответов/исключений, состояние общих ресурсов после взаимодействия.
- Инструменты: Часто требуются моки и стабы для изоляции тестируемого контура от внешних нестабильных или медленных зависимостей.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶