Что такое интеграционное тестирование?

«Что такое интеграционное тестирование?» — вопрос из категории Основы тестирования, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Интеграционное тестирование — это уровень тестирования, на котором проверяется взаимодействие и корректность обмена данными между интегрированными модулями, компонентами или системами. Его цель — выявить дефекты на стыках модулей, в интерфейсах, 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 к низкоуровневым) или «большой взрыв» (всё сразу).
  • Основные объекты проверки: Передача данных, обработка ошибок, корректность ответов/исключений, состояние общих ресурсов после взаимодействия.
  • Инструменты: Часто требуются моки и стабы для изоляции тестируемого контура от внешних нестабильных или медленных зависимостей.