API-тестирование: что это и как его проводят

API-тестирование: что это и как его проводят

Очередная статейка о чём-то сложном

Ксения Дубко
Ксения Дубко
Редактор
career

(сейчас будем переводить с программисткого на обывательский)

  1. Набрали целую корзину добра на маркетплейсе
  2. Нажали «Оплатить». 
  3. Приложение маркетплейса связалось с приложением банка, и у вас откусили кругленькую сумму.

Вы только что увидели, как работает API (Application Programming Interface) — это когда одно приложение делает что-то по просьбе другого приложения. 

Чтобы связи нормально работали, API нужно тестировать. Для этого придумали тестировщиков. Рассказываем, что именно они делают.

Содержание

API-тестирование — это… 

Чем API-тестирование отличается от тестирования интерфейса 

Почему тестируют не только кнопки в интерфейсе 

Что именно проверяют в API 

Как тестировать API на простом примере 

Какие инструменты используют для API-тестирования 

Типичные ошибки начинающих 

FAQ: коротко о главном

Зацените: только до 17 сентября скидка 16% на любую профессию в Яндекс Практикуме. Если не сейчас, то когда?

API-тестирование — это…

API (Application Programming Interface) — это набор правил, по которым одна программа общается с другой.

HTTP — правила, по которым браузер и сервер обмениваются сообщениями. 

Endpoint — конкретный адрес API, например /posts/1.

Headers — служебные данные запроса: например, тип передаваемых данных или токен доступа.

Token — ключ, по которому API понимает, кто делает запрос.

JSON — текстовый формат, в котором API часто передаёт данные.

Очень примитивный пример: вы (клиент) делаете заказ в ресторане, официант (API) передаёт его на кухню (сервер), а потом приносит вам готовое блюдо (ответ). Благодаря этому вам не приходится готовить самостоятельно.

API-тестирование помогает убедиться, что официант (API) работает правильно, не путает заказы, не пускает посторонних людей на кухню.

Вы (клиент) делаете заказ в ресторане, официант (API) передаёт его на кухню (сервер), а потом приносит вам готовое блюдо (ответ)

Тестировщик проверяет, что:

  • ушёл правильный запрос;
  • сервер ответил так, как надо;
  • данные в ответе корректные;
  • ошибки обрабатываются правильно;
  • лишняя информация никуда не утечёт.

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

Чем API-тестирование отличается от тестирования интерфейса

Интерфейс — это красивая картинка, её видит пользователь. API — это то, что под капотом, через него можно проверить, как работает сервис, даже если интерфейс ещё не зафиналили.

Что проверяет UI-тестированиеЧто проверяет API-тестирование
Как выглядит кнопкаЧто происходит при нажатии кнопки
Отображаются ли данные на экранеПравильные ли данные пришли с сервера
Работает ли навигацияКорректно ли сервер обрабатывает запросы
Всё ли видно пользователюНе утекают ли данные куда не надо

Почему тестируют не только кнопки в интерфейсе

Современные продукты — это целая экосистема с сайтом, мобильным приложением, базой данных, платёжным шлюзом, системой уведомлений, авторизацией через соцсети. Все они обмениваются данными через API.

Например, кнопка «Оплатить» запускает целую цепочку:

  1. Фронтенд отправляет запрос в API.
  2. API передаёт данные в платёжный сервис.
  3. Платёжный сервис проверяет карту и возвращается со статусом.
  4. API обновляет статус заказа в базе.
  5. API отправляет уведомление в службу доставки.
  6. Пользователю приходит ответ.

Если на любом из этих шагов что-то пойдёт не так, пользователь увидит одну и ту же ошибку. А причина может быть где угодно.

API-тестирование позволяет проверить всю эту цепочку и понять, где именно произошёл сбой.

Где API-тесты экономят время

  • Можно тестировать логику, пока дизайнеры ещё рисуют экраны.
  • Не нужно вручную прокликивать сотни сценариев через интерфейс: автоматические API-тесты прогонят всё за минуту.
  • Получится проверить сценарии, которые сложно воспроизвести вручную через интерфейс — например, отправить запрос с неверным типом данных.
  • API-тесты помогут быстро найти ошибку, если не знаете, где именно проблема.

API-тесты не заменяют UI-тестирование. Они просто проверяют другой слой. 

Что именно проверяют в API

Что именно проверяют в API
Что проверяемЧто хотим понятьЗачем
HTTP-методGET получает данные, POST создаёт, PUT/PATCH обновляет, DELETE удаляетЧтобы система выполняла нужное действие
Адрес и параметрыТот ли адрес вызвали, верно ли передали id, фильтры или номер страницыЧтобы запрос не ушёл не туда и не вернул чужое
Тело запросаЕсть ли обязательные поля, правильные ли у них тип и форматЧтобы API не принимал мусор и не падал
Заголовки и токенПередали ли авторизацию и нужные служебные данныеЧтобы сервер понял запрос и не открыл лишнего
Код ответаСоответствует ли статус сценарию из спецификацииЧтобы ошибка не притворялась успехом
Тело ответа и JSONЕсть ли нужные поля, верны ли их типы и значенияЧтобы фронтенд получил данные, с которыми умеет работать
ОшибкиЧто вернётся без токена, с неверным id или пустым обязательным полемЧтобы пользователь увидел понятный ответ, а не внутренности сервера

Как проверять позитивные и негативные сценарии

Порядок такой:

  1. Сначала убеждаемся, что всё работает как надо и API выполняет свою функцию.
  2. Только после этого наваливаем негатива — вводим неверные данные, нарушаем порядок действий, пытаемся отправить форму, не заполнив обязательные поля, много раз щёлкаем на кнопку «Оплатить», отключаем интернет во время отправки платежа. В общем, устраиваем системе свистопляску и смотрим, что будет. 

Главное правило: плохой запрос должен возвращать понятный и безопасный ответ. Без внутренних ошибок сервера и без раскрытия чувствительной информации.

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

Как тестировать API на простом примере

Возьмём тестовый API для управления постами — что-то вроде блога. У него есть несколько методов:

  • GET /posts — получить список всех постов
  • GET /posts/{id} — получить конкретный пост по ID
  • POST /posts — создать новый пост
  • PUT /posts/{id} — обновить пост
  • DELETE /posts/{id} — удалить пост

Пошагово:

Шаг 1. Изучить спецификацию

Спецификация (или документация API) — это подробное руководство, которое описывает, как именно должна работать система: назначение, функции, возможности и ограничения продукта. 

Тестировщик первым делом сверяет фактическое поведение сервиса с тем, что написано в документации.

Шаг 2. Выбрать метод и подготовить запрос

Берём GET /posts/1 — запрос на получение поста с ID=1.

Запрос:

GET /posts/1

Ожидаем:

200 OK

{

  "id": 1,

  "title": "Как не потерять данные",

  "authorId": 42

}

Тестировщик сверяет не только 200 OK, но и то, что в ответе есть нужные поля, у id число, а не строка, и данные принадлежат именно первому посту

Шаг 3. Отправить запрос

Через Postman, cURL или любой другой инструмент.

Шаг 4. Проверить ответ

Смотрим на:

  • Код ответа: он должен быть 200 OK.

Но бывают ещё
201 Created — если мы создавали ресурс (POST),
204 No Content — если обновление прошло, но тело пустое,
400 Bad Request — ошибка в запросе (например, неверный формат),
404 Not Found — ресурс не существует,
500 Internal Server Error — проблемы на сервере.

  • Тело ответа: должно содержать JSON с данными поста.

Тело ответа — это место в HTTP-пакете, куда сервер кладет передаваемые данные.

JSON — это текстовый формат обмена данными.

  • Структуру: правильные ли поля, типы, значения.

Шаг 5. Проверить ошибки

Отправляем GET /posts/999999 — несуществующий ID. Должен вернуться 404 Not Found с понятным сообщением.

Шаг 6. Проверить изменение данных

Отправляем POST /posts с данными нового поста. Проверяем, что пост создался (код 201 Created) и что его можно получить по GET /posts/{new_id}.

Шаг 7. Проверить авторизацию

Пытаемся удалить пост без токена авторизации. Без токена API обычно возвращает 401 Unauthorized. Если токен есть, но у пользователя нет прав на действие, — 403 Forbidden.

Какие инструменты используют для API-тестирования

Инструментов много, вот например:

PostmanСамый популярный. Отправлять запросы, смотреть ответы, создавать коллекции тестов, прогонять автотесты. Удобный интерфейс, не требует кода.
Swagger Документация API с возможностью отправлять тестовые запросы прямо из браузера.
InsomniaМожно создавать HTTP-запросы, анализировать ответы, оптимизировать тесты и генерировать код.
SoapUIПомогает отлаживать протоколы SOAP и REST API. Можно работать с запросами, автоматизировать тестирование, создавать отчёты, мониторить производительность.
JMeterДля нагрузочного тестирования — проверяет, как API выдерживает много запросов одновременно.
REST AssuredБиблиотека для автоматизации тестирования REST API на Java.

Для старта Postman удобен: в нём можно отправлять запросы, смотреть ответы, сохранять их в коллекции и запускать проверки без написания полноценного приложения.

Типичные ошибки начинающих

Ошибка 1. Проверили только статус 200.
Увидели 200 OK — и успокоились. Но иногда такой результат — и есть ошибка в системе.

Ошибка 2. Начинать с негативных сценариев.
На самом деле нужно сначала проверить положительные, чтобы убедиться, что API выполняет свою функцию.

Ошибка 3. Тестировать только позитивные сценарии.
Про негативные нельзя забывать, даже если всё работает правильно.

Ошибка 4. Верить документации и не проверять реальный код.
Что-то из спецификации может оказаться чьей-то фантазией.

Ошибка 5. Игнорировать спецификацию.
В угадайку лучше не играть — смотрим в документацию.

Ошибка 6. Думать, что API-тесты заменят UI-тесты.
Это разные слои. Всегда проверяйте и то, и другое.

FAQ: коротко о главном

Что такое API?

Набор правил и инструментов, с помощью которых программы взаимодействуют. Чтобы убедиться, что всё работает хорошо и кнопка «Оплатить» действительно приведёт пользователя к покупке, существует API-тестирование.

Нужно ли уметь программировать для API-тестирования?

Для ручного тестирования — нет. Postman позволяет отправлять запросы без кода. Для автоматизации — да, понадобится знание JavaScript или Python/Java.

Что такое Postman?

Это инструмент, в котором можно собрать и отправить API-запрос: указать адрес, метод, параметры, заголовки и тело, а потом посмотреть ответ сервера.

Можно ли тестировать API без документации?

Можно, но это сложно и долго. Придётся набивать шишки самостоятельно. А зачем это нужно, если всё уже прописано?

Что такое автотесты API?

Это проверки, которые запускаются по заранее написанному сценарию: например, создают пост, запрашивают его и сверяют ответ с ожидаемым. Для них обычно нужны код или скрипты.

А можно просто провести UI-тестирование и не заморачиваться?

Нет, это разные сущности. Вот проверите вы кнопку, получите ошибку. А где именно ошибка — непонятно, процессов внутри много. Так что лезть под капот просто обязательно.

arrow-scrollTop arrow-scrollTop

Автор:
Ксения Дубко

Еще по теме:
Exit mobile version
Top.Mail.Ru