Какой у вас опыт тестирования интеграций между системами?

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

Ответ

Опыт включает тестирование взаимодействия различных систем через API, веб-хуки и общие базы данных.

Ключевые аспекты интеграционного тестирования:

  1. Корректность обмена данными:
    • Проверка форматов (JSON, XML) и схем данных.
    • Валидация преобразования данных между системами (маппинг полей).
  2. Обработка ошибок и пограничные случаи:
    • Тестирование таймаутов, недоступности сервиса.
    • Проверка обработки невалидных данных, дублирующихся запросов.
  3. Согласованность состояния (data consistency):
    • Гарантия, что данные синхронизированы во всех системах после операции.
    • Проверка идемпотентности операций.

Пример сценария тестирования создания пользователя в двух связанных системах:

import requests

def test_user_creation_integration():
    # 1. Создание пользователя в основной системе (User Service)
    create_response = requests.post(
        "https://api.users.example.com/v1/users",
        json={"name": "Alice", "email": "alice@example.com"}
    )
    assert create_response.status_code == 201
    user_id = create_response.json()["id"]

    # 2. Проверка, что профиль создан в связанной системе (Profile Service)
    # Может потребоваться ожидание из-за асинхронной обработки
    import time
    time.sleep(2)  # Краткая пауза для синхронизации

    profile_response = requests.get(f"https://api.profiles.example.com/profiles/{user_id}")
    assert profile_response.status_code == 200
    profile_data = profile_response.json()

    # 3. Валидация данных в профиле
    assert profile_data["userId"] == user_id
    assert profile_data["name"] == "Alice"

    # 4. (Опционально) Проверка отката транзакции при ошибке в одной из систем

Инструменты: Postman (для ручных проверок и мониторинга), Python + requests/pytest (для автоматизации), Jenkins (запуск в CI/CD).