Sobes.tech
Назад к вопросам
Junior
157
questionbank

Расскажите о тестировании API.

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Тестирование API проверяет, что сервис корректно принимает запросы, возвращает ожидаемые ответы и соблюдает контракт. Важно показать понимание уровней проверки: функциональность, валидация данных, коды ответов, ошибки, авторизация и стабильность интеграции. Также ожидают знание отличий API-тестов от UI-тестов: они быстрее, дешевле и чаще ловят ошибки на уровне логики.

Определение:

Тестирование API — это проверка программного интерфейса приложения без участия пользовательского интерфейса. Цель — убедиться, что методы/эндпоинты работают по спецификации: принимают корректные данные, корректно обрабатывают некорректные, возвращают нужный статус, структуру ответа и данные.

Обычно API тестируют на уровне интеграции и функциональности. Для REST это запросы к ресурсам по HTTP, для SOAP — к XML-сообщениям, для GraphQL — к query/mutation и структуре ответа.

Пример использования:

Например, есть эндпоинт создания пользователя POST /users. Проверяется, что при корректном JSON сервер возвращает 201 Created, в ответе есть id, name, email, а при передаче пустого email приходит ошибка валидации.

POST /users
Content-Type: application/json

{
  "name": "Ivan",
  "email": "ivan@example.com"
}

Ожидаемый ответ:

201 Created
Content-Type: application/json

{
  "id": 123,
  "name": "Ivan",
  "email": "ivan@example.com"
}

Если отправить:

POST /users
Content-Type: application/json

{
  "name": "Ivan",
  "email": ""
}

то ожидается ошибка, например 400 Bad Request, с сообщением о некорректных данных.

Пояснение кода:

Код не требуется, потому что здесь важнее логика проверки, чем конкретная реализация. Пример выше можно разложить так: сначала отправляется запрос с валидными данными, затем проверяется код ответа, структура JSON и значения полей. После этого отправляется запрос с невалидными данными и проверяется, что сервис возвращает предсказуемую ошибку, а не 500 или некорректный ответ.

Ключевые моменты:

  • Проверяются не только статусы HTTP, но и тело ответа, заголовки, схема данных и бизнес-правила.
  • Важны позитивные и негативные сценарии: корректные данные, ошибки валидации, отсутствие авторизации, неверные параметры.
  • API-тесты обычно быстрее UI-тестов и лучше подходят для проверки логики и интеграций.
  • Для REST, SOAP и GraphQL подход похожий, но отличаются формат запросов и структура ответа.
  • Хорошая практика — проверять контракт API: обязательные поля, типы, коды ошибок, стабильность формата.
  • Часто используют автоматизацию, чтобы запускать API-тесты в CI/CD и быстро ловить регрессии.