с инструментами и примерами

Замечательно, если вы знаете о REST API и его методах, JavaScript, диспетчере пакетов npm, CI / CD, BDD / TDD и знакомы с тестированием API. Если нет - пора почитать об этом)

Сегодня я хочу рассказать вам, как выполнить REST тестирование API с использованием JS, поэтому давайте начнем с определения из Википедии:

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

Из определения ясно, почему тестирование API важно и почему мы должны писать тесты API.

А пока это все, что нам нужно - так что вперед!

Необходимые инструменты

Для настройки функции тестирования API нам понадобятся:

  • Request.js - отличный HTTP-клиент, покрывающий 99,9% потребностей тестирования API. Легко использовать, быстро и очень функционально
  • Мокко - простой и увлекательный фреймворк для тестирования :)
  • Chai - BDD / TDD библиотека утверждений

Все эти инструменты бесплатны и имеют открытый исходный код! Все они могут быть установлены с помощью npm.

Пример набора тестов конечной точки

Как вы, возможно, знаете, к каждой конечной точке REST API могут применяться разные методы.

Давайте проверим базовый пример тестовой конечной точки/api/v1/users, которая дает нам возможность работать с пользователями.

Предположим, конечная точка поддерживает методы:

  • POST - для создания нового пользователя
  • GET - для получения списка созданных пользователей

и дополнительные методы на /api/v1/users/:id:

  • GET - для получения пользователя с указанным id
  • PUT - для редактирования пользователя
  • DELETE - для удаления пользователя

Все эти методы можно протестировать в одном наборе тестов (потому что все они работают с одним UserData интерфейсом), а структура набора может выглядеть примерно так:

Коротко и понятно, как структура папок, не так ли? :)

Пример тестов конечной точки

Каждый тест API всегда легко реализовать, потому что в большинстве случаев это всего лишь 3 операции:

  1. Подготовить данные запроса (при необходимости)
  2. Сделать запрос
  3. Проверить ответ

Посмотрим, как это может выглядеть:

Хотя эти тесты очень просты, они могут дать общее представление о том, насколько легко это можно сделать и как они могут выглядеть.

Следующим шагом является запуск тестов и обработка результатов тестовых прогонов.

Отчеты о тестовых прогонах и интеграция CI / CD

Интеграция CI максимально проста :)

Сначала запустите тесты с помощью команды mochaCLI.

Он имеет множество параметров и конфигураций, а также возможность записывать все конфигурации в файл, но я не буду их здесь описывать. Вы можете проверить документацию по мокко и выбрать необходимые параметры для собственной реализации. (Мне нравится параметрgrep, вам обязательно стоит его проверить)

Когда все тесты будут завершены, репортер мокко сгенерирует отчет о тестовом запуске.

Есть много репортеров, которых поддерживает мокко. Они генерируют отчеты с разным форматированием и стилем. Вы можете выбрать то, что вам нравится.

Что касается меня, я обычно использую spec reporter для локальной среды (у него лучший результат для отладки) и XUNITreporter для среды разработки (поскольку отчеты xUnit применимы для инструментов CI).

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

  • Если все тесты пройдены, команда QA получает уведомление о том, что сборка прошла успешно и можно выполнить дальнейшие задачи тестирования / выпуска.
  • Если некоторые тесты не проходят, команда разработчиков получает уведомление со всей необходимой информацией (среда, журналы, результаты тестирования и т. Д.)

Резюме

В этой статье я показал вам пример того, как можно выполнить тестирование REST API с помощью JS и его бесплатных инструментов.

Такие тесты API короткие, простые, быстрые, а также легко поддерживаются и интегрируются в ваши конвейеры CI / CD. Более того, у них есть история изменений (если она хранится в репозитории).

Если возникнут вопросы - смело пишите мне или оставляйте комментарий под этой статьей!)

Удачи с тестами! ^^