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