Ответ
API Gateway — это единая точка входа для клиентских запросов, поэтому его тестирование фокусируется на корректности маршрутизации, безопасности и управлении трафиком.
Ключевые направления тестирования:
-
Маршрутизация и проксирование:
- Запрос
GET /api/v1/ordersкорректно перенаправляется на сервис заказов (order-service). - Проверка rewrite-правил (например, изменение пути).
- Обработка версионирования API (
/v1/,/v2/).
- Запрос
-
Аутентификация и авторизация (часто реализуется в Gateway):
- Запросы без токена отклоняются с
401 Unauthorized. - Запросы с невалидным/просроченным токеном отклоняются с
403 Forbidden. - Проверка прав доступа (ролей/скопов) к конкретным эндпоинтам.
- Запросы без токена отклоняются с
-
Политики ограничения трафика (Rate Limiting & Throttling):
- При превышении лимита запросов в секунду (RPS) возвращается
429 Too Many Requests. - Проверка разных лимитов для разных API-ключей или пользовательских групп.
- При превышении лимита запросов в секунду (RPS) возвращается
-
Трансформация запросов и ответов:
- Добавление/удаление HTTP-заголовков (например,
X-User-ID). - Модификация тела запроса (aggregation, форматирование).
- Корректная обработка и маппинг кодов ошибок от бэкенд-сервисов.
- Добавление/удаление HTTP-заголовков (например,
-
Кеширование:
- Ответы на
GET-запросы кешируются согласно заголовкам (Cache-Control). - Инвалидация кеша при вызове
POST/PUT/DELETE.
- Ответы на
-
Обработка ошибок и отказоустойчивость:
- Gateway возвращает стандартизированную ошибку (
5xx), если бэкенд-сервис недоступен. - Проверка работы circuit breaker'а.
- Gateway возвращает стандартизированную ошибку (
Пример теста маршрутизации и аутентификации с помощью 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).