На что обращаете внимание при тестировании API Gateway?

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

Ответ

API Gateway — это единая точка входа для клиентских запросов, поэтому его тестирование фокусируется на корректности маршрутизации, безопасности и управлении трафиком.

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

  1. Маршрутизация и проксирование:

    • Запрос GET /api/v1/orders корректно перенаправляется на сервис заказов (order-service).
    • Проверка rewrite-правил (например, изменение пути).
    • Обработка версионирования API (/v1/, /v2/).
  2. Аутентификация и авторизация (часто реализуется в Gateway):

    • Запросы без токена отклоняются с 401 Unauthorized.
    • Запросы с невалидным/просроченным токеном отклоняются с 403 Forbidden.
    • Проверка прав доступа (ролей/скопов) к конкретным эндпоинтам.
  3. Политики ограничения трафика (Rate Limiting & Throttling):

    • При превышении лимита запросов в секунду (RPS) возвращается 429 Too Many Requests.
    • Проверка разных лимитов для разных API-ключей или пользовательских групп.
  4. Трансформация запросов и ответов:

    • Добавление/удаление HTTP-заголовков (например, X-User-ID).
    • Модификация тела запроса (aggregation, форматирование).
    • Корректная обработка и маппинг кодов ошибок от бэкенд-сервисов.
  5. Кеширование:

    • Ответы на GET-запросы кешируются согласно заголовкам (Cache-Control).
    • Инвалидация кеша при вызове POST/PUT/DELETE.
  6. Обработка ошибок и отказоустойчивость:

    • Gateway возвращает стандартизированную ошибку (5xx), если бэкенд-сервис недоступен.
    • Проверка работы circuit breaker'а.

Пример теста маршрутизации и аутентификации с помощью curl:

# 1. Тест: Неавторизованный доступ должен быть отклонен
curl -X GET https://api.company.com/v1/orders
# Ожидаемый ответ: 401 Unauthorized

# 2. Тест: Успешный запрос с валидным токеном
curl -X GET https://api.company.com/v1/orders 
     -H "Authorization: Bearer eyJhbGciOiJ..."
# Ожидаемый ответ: 200 OK с JSON-списком заказов от order-service

# 3. Тест: Превышение rate limit
# Выполнить быструю серию запросов (например, через скрипт)
for i in {1..100}; do
  curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $TOKEN" https://api.company.com/v1/orders
  echo
  sleep 0.05
done
# Ожидаем появление ответов 429 после превышения порога

Инструменты: Postman/Newman (для коллекций), Apache JMeter/Gatling (для нагрузочного тестирования и проверки лимитов), специализированные тесты в коде (на Python/Go).