Включите исполнение JavaScript в браузере, чтобы запустить приложение.
17 янв 2025

Тестирование API: типы, инструменты, примеры

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

Что такое тестирование API

Сам по себе API (Application programming interface) — это набор правил, по которому две программы либо части одной программы взаимодействуют друг с другом. Его тестирование сводится к проверке корректности выполнения операций внутри API, а также различных аспектов этого взаимодействия: функциональности, производительности, безопасности. Почему API нужно тестировать? Во-первых, часто он — важный компонент системы, который служит связью между другими компонентами. Соответственно, от качества его работы зависит качество всей системы. Во-вторых, API взаимодействует с личными данными, а значит, должен иметь механизмы их защиты. Работу этих механизмов, в свою очередь, нужно тестировать.

Условия, которые нужно соблюдать для написания качественных тестов:

  • на вход следует передавать различные данные — корректные и некорректные, пустые значения, значения разных типов и так далее. Так можно воссоздать максимальное количество возможных сценариев, получить больше сведений о правильности работы. Стоит учитывать и другие сценарии: API может использоваться по-разному, например, в мобильном или веб-приложении. Корректность работы в них тоже нужно проверять;
  • если есть процессы CI/CD, тестирование лучше интегрировать в них, чтобы постоянно отслеживать поведение API, быстро получать информацию об ошибках и ускорить разработку;
  • часто API — цель для атак злоумышленников, поэтому большое внимание уделяется безопасности: проверке методов защиты и шифрования данных, корректности авторизации, аутентификации, обработки токенов.

Кроме того, тестирование можно автоматизировать, в особенности если оно будет повторяться: это сокращает общее время его проведения. У многих инструментов уже есть функции автоматизации.

Типы тестирования API

Рассмотрим основные типы.

  • Тестирование методов. Проверяется корректность работы каждого метода API: правильность обработки входных данных, формата ответа, возвращенного кода статуса, работа методов в разных типах запросов.
  • Тестирование безопасности. API может содержать конфиденциальные данные (личная, платежная информация и так далее), соответственно, доступ к этой информации должен быть ограничен. Чтобы не допустить проблем с безопасностью, тестировщики ищут уязвимости, которые способны поставить информацию о пользователях под угрозу.
  • Тестирование взаимодействий. В одной системе API может работать с другими ее компонентами, сервисами, базами данных и так далее. В связи с этим необходимо проверять корректность взаимодействия: правильность отправки, обработки, получения ответа. Здесь могут создаваться сложные сценарии. Протестировав их, можно говорить о стабильной, согласованной работе всей программы.
  • Тестирование обработки ошибок. Этот тип подразумевает проверку работы в ситуациях, когда на вход переданы некорректные данные. Рассматриваются правильность обработки исключений, возвращаемые коды ошибок, сопутствующие им сообщения.
  • Тестирование производительности: продолжительность задержек, пропускная способность, изменение этих показателей при резком повышении нагрузки и так далее.
  • Тестирование авторизации и аутентификации. Проверяется корректность работы механизмов, уровней доступа (каким пользователям доступны те или иные функции/информация), блокировка доступа по истечении времени сессии.  

Таким образом, разные типы тестирования решают разные задачи — например, обеспечение корректной работы или безопасности.

Инструменты тестирования API

Обычно тестировщики используют специализированные инструменты, которые облегчают создание тестов и анализ их результатов:

  • Postman — один из самых известных инструментов с удобным интерфейсом. Позволяет создавать автоматизированные тесты, HTTP-запросы, отправлять их и проверять результаты (в том числе с визуализацией), а также интегрироваться с CI/CD. Еще две функции Postman — возможность работать в команде и группировать запросы по коллекциям, если их нужно будет использовать еще раз;
  • SoapUI — инструмент, подходящий для проверки работы REST и SOAP API. В SoapUI можно реализовать сценарии для разных типов тестирования, например, методов, безопасности, производительности, отправлять запросы, создавать отчеты о результатах, также есть функции для автоматизации;
  • JMeter — инструмент с чуть более сложным интерфейсом, в первую очередь предназначенный для проверки производительности: времени отклика, пропускной способности и тому подобного. Позволяет отправлять запросы, предоставляет отчет о результатах и поддерживает несколько протоколов;
  • REST-assured — относительно простая для использования библиотека для Java, позволяющая тестировать REST API с DSL-синтаксисом. Может интегрироваться с фреймворками, например, с JUnit, имеет инструменты для автоматизации и анализа результатов тестов;
  • Swagger — инструмент, позволяющий создавать документацию для API и тестировать его. Поддерживаются функции отправки запросов, генерации кода на многих языках программирования, интеграции с CI/CD. Swagger лучше использовать для функционального тестирования, а для нагрузочного выбирать другие инструменты.

Примеры тестирования

Представим API, предназначенный для управления пользователями. У него есть следующие методы:

  • GET /users — получить список всех пользователей;
  • GET /users/{id} — получить информацию о пользователе с указанным id;
  • POST /users — создать нового пользователя;
  • PUT /users/{id} — обновить информацию о пользователе с указанным id;
  • DELETE /users/{id} — удалить пользователя.

Далее можно следовать алгоритму, приведенному ниже:

  1. Выяснить из документации, какие поля должны содержать обязательные и необязательные данные о пользователе (имя, фамилия, телефон, электронная почта), каковы форматы этих полей и ожидаемые ответы. Узнать, какие ожидаются коды состояния, например, для GET-запроса — 200 ОК и так далее. 
  2. Затем можно переходить к разработке сценариев. В данном случае это могут быть:
  • отправка GET-запроса на /users с целью проверки корректности возвращаемого списка: его структуры и значений;
  • создание пользователя, получение его идентификатора, отправка GET-запроса на /users/{id}. Так вы проверяете, вернется ли информация о нужном пользователе;
  • отправка GET-запроса на /users/{id} с использованием несуществующего id — проверка, правильно ли API работает с ошибками;
  • отправка POST-запроса на /users для контроля работоспособности механизма создания пользователей;
  • создание пользователя, удаление его с помощью DELETE и попытка GET-запроса на /users/{id}. Должен быть возвращен код 404 Not Found.

Это лишь часть сценариев, применимых в данном случае.

  1. Выбор и установка необходимых инструментов: Postman, Swagger и других.
  2. Выполнение тестов: отправка запросов с помощью выбранного инструмента. На этом же шаге могут создаваться автоматизированные тесты.
  3. Проверка ответов: возвращаемых форматов данных, правильность структуры и кодов состояния.
  4. Далее можно провести нагрузочное тестирование (отправка большого количества запросов одновременно, увеличение объемов данных) с использованием, например, JMeter. На этом шаге оценивается скорость работы, иногда выявляются ошибки. Кроме того, проводятся тесты на безопасность.
  5. Проверка обработки ошибок: отправка запросов с некорректными данными или их форматами, пустых запросов и так далее.
  6. Анализ результатов, создание отчетов. У большинства инструментов для этого есть встроенные функции. Некоторые способны визуализировать результаты. Ошибки исправляются при необходимости, тесты запускаются повторно (если нужно).
  7. Интеграция с CI/CD для автоматизации тестов при внесении изменений.

Главное

  • Тестирование API — важный и обязательный этап разработки большинства современных систем. Проверяется как правильность выполнения внутренних операций, так и взаимодействие с другими компонентами.
  • Существует несколько типов тестирования, каждый из них направлен на решение конкретной задачи.
  • Основные инструменты — Postman, SoapUI, JMeter, REST-assured, Swagger.