Что такое REST API?

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

Ответ

REST API (Representational State Transfer Application Programming Interface) — это архитектурный стиль для построения веб-сервисов, основанный на стандартах HTTP. В контексте тестирования это основной объект проверки для API-тестировщика.

Ключевые принципы, которые мы проверяем:

  • Единообразие интерфейса (Uniform Interface): Ресурсы идентифицируются URI (например, /api/v1/users), а манипуляции с ними выполняются через стандартные HTTP-методы.
  • Отсутствие состояния (Stateless): Каждый запрос от клиента должен содержать всю информацию, необходимую для его обработки. Сервер не хранит состояние сессии между запросами. Это критически важно для тестирования на воспроизводимость и масштабируемость.
  • Кэшируемость (Cacheable): Ответы должны явно или неявно определять, можно ли их кэшировать. Тестировщик проверяет корректность заголовков кэширования (например, Cache-Control).
Основные HTTP-методы и их семантика для тестирования: Метод Операция Идемпотентность* Безопасность*
GET Получение ресурса Да Да
POST Создание ресурса Нет Нет
PUT Полное обновление ресурса Да Нет
DELETE Удаление ресурса Да Нет
PATCH Частичное обновление Нет Нет

*Идемпотентность — многократный вызов дает тот же результат, что и однократный. Безопасность — метод не изменяет состояние ресурса на сервере.

Пример тестового сценария (валидация GET-запроса):

// Пример на JavaScript (часто используется в Postman/Newman)
pm.test("GET /users возвращает статус 200 и корректную структуру", function () {
    pm.response.to.have.status(200);
    pm.response.to.have.jsonSchema({
        "type": "object",
        "properties": {
            "data": {
                "type": "array",
                "items": {
                    "type": "object",
                    "properties": {
                        "id": {"type": "number"},
                        "name": {"type": "string"}
                    },
                    "required": ["id", "name"]
                }
            }
        },
        "required": ["data"]
    });
});

Что проверяет QA-инженер в REST API:

  1. Функциональность: Корректность CRUD-операций, бизнес-логика.
  2. Надежность: Обработка ошибок (4xx, 5xx), идемпотентность, согласованность данных.
  3. Производительность: Время отклика, нагрузочное тестирование.
  4. Безопасность: Аутентификация (OAuth, JWT), авторизация, валидация входных данных, защита от инъекций.
  5. Совместимость: Форматы данных (JSON/XML), обратная совместимость версий API.

Видео-ответы