Стратегия тестирования REST API

REST API – технология, которая позволяет эффективно взаимодействовать серверным и клиентским приложениям. Говоря совсем просто, REST API –  это когда серверное приложение предоставляет по определённому URL доступ к своим данным. На сегодняшний день данная технология является самым лёгким способом, позволяющим создавать, считывать, обновлять и удалять различные данные между программами через протокол HTTP.

Где используется REST API

Везде. Хоть REST API не единственное, решение для организации обмена данными через интернет между самыми разными программами, оно одно из самых популярных. Объясняется это тем, что протокол HTTP реализован во всех ОС и во всех языках программирования.

Чаще всего технологию REST API используют:

  • Для связи приложений с мобильных устройств с серверными приложениями;
  • Для создания микросервисных приложений. Это когда большие приложения состоят из множества маленьких;
  • Для организации доступа к приложениям от сторонних разработчиков. В частности, STRIPE API, позволяет включать в свои приложения обработку платежей.

Из вышесказанного ясно, насколько важен REST API для бизнеса. Он активно используется в интернет магазинах, программах бухучёта, множестве специализированных программ для конкретных сфер бизнес-деятельности.

При неправильной и некорректной работе REST API могут возникнуть проблемы, чреватые очень серьёзными убытками. Поэтому очень большую важность обрело тестирование REST API.

Стратегия тестирования API

Можно пользоваться ручным или автоматическим тестированием, взять специальные тестовые среды, библиотеки, инструменты или Фреймворки, однако если у вас нет общего плана, как всё делать, с чего начинать и какие конкретно задачи решать, то всё равно ничего не получится. Вы не сможете даже подступиться к проблеме.

Главные задачи функционального тестирования API следующие:

  • Убедиться, что реализация API работает, как ожидалось, т. е. без ошибок;
  • Гарантировать, что реализация API работает точно в соответствии со спецификацией требований;
  • Не допустить регрессий между кодом и релизом.

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

Проверка спецификации

Перед тем как начать тестирование REST API, убедитесь в том, что:

  • Имена эндпоинтов не имеют ошибок;
  • Ресурсы и их типы отражают объектную модель, как того требует задача;
  • В функциональности нет дублей, а все нужное точно на месте;
  • Отношение между ресурсами в API отражено правильно.

Что тестировать

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

Об этапах тестирования API

Каждый из тестов является последовательностью отдельных атомарных действий, которые выполняются при абсолютно каждом потоке тестирования API. Для каждого из запросов API тест должен осуществить проверку:

  • Корректности кода состояния HTTP;
  • Полезной нагрузки ответа;
  • Заголовка ответа;
  • Правильности состояния приложения;
  • Базовой работоспособности.

Категории тестовых сценариев

Они следующие:

  • Базовое тестирование. Это проход успешного сценария по умолчанию. Проверка базовой функциональности и критериев приёмки API;
  • Расширенное тестирование. Это проход успешного сценария с дополнительными параметрами;API
  • Негативное тестирование с допустимыми входящими данными. Это проверка того, как приложение станет обрабатывать различные проблемные сценарии с допустимым вводом пользователя;
  • Негативное тестирование с невалидными  входящими данными. Это проверка обработки проблемного сценария с недопустимым вводом;
  • Деструктивное тестирование. Это когда пользователь пробует сломать API намеренно;
  • Тестирование доступности, авторизации, безопасности. Обсуждение этого вопроса выходит за рамки нашей статьи.

О тестовых потоках

Можно обозначить три разновидности потоков тестирования:

  • Изолированное тестирование каждого запроса. Отправляется один запрос и проверяется, какой получен ответ;
  • Тестирование серии зависимых запросов. Как правило, обычные действия пользователя состоят не из одного, а сразу из нескольких запросов. Причём одни из них могут быть зависимыми от других;
  • Комбинированное тестирование API и веб-интерфейса. Его основной целью является обеспечение целостности данных и слаженная работа пользовательского интерфейса и API.

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