с инструментами и примерами
Замечательно, если вы знаете о 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
- для получения пользователя с указанным idPUT
- для редактирования пользователяDELETE
- для удаления пользователя
Все эти методы можно протестировать в одном наборе тестов (потому что все они работают с одним UserData
интерфейсом), а структура набора может выглядеть примерно так:
Коротко и понятно, как структура папок, не так ли? :)
Пример тестов конечной точки
Каждый тест API всегда легко реализовать, потому что в большинстве случаев это всего лишь 3 операции:
- Подготовить данные запроса (при необходимости)
- Сделать запрос
- Проверить ответ
Посмотрим, как это может выглядеть:
Хотя эти тесты очень просты, они могут дать общее представление о том, насколько легко это можно сделать и как они могут выглядеть.
Следующим шагом является запуск тестов и обработка результатов тестовых прогонов.
Отчеты о тестовых прогонах и интеграция CI / CD
Интеграция CI максимально проста :)
Сначала запустите тесты с помощью команды mocha
CLI.
Он имеет множество параметров и конфигураций, а также возможность записывать все конфигурации в файл, но я не буду их здесь описывать. Вы можете проверить документацию по мокко и выбрать необходимые параметры для собственной реализации. (Мне нравится параметрgrep
, вам обязательно стоит его проверить)
Когда все тесты будут завершены, репортер мокко сгенерирует отчет о тестовом запуске.
Есть много репортеров, которых поддерживает мокко. Они генерируют отчеты с разным форматированием и стилем. Вы можете выбрать то, что вам нравится.
Что касается меня, я обычно использую spec
reporter для локальной среды (у него лучший результат для отладки) и XUNIT
reporter для среды разработки (поскольку отчеты xUnit применимы для инструментов CI).
После создания отчета о тестовом запуске его можно обработать с помощью инструмента непрерывной интеграции, который проверяет отчет, показывает результаты и выполняет некоторые действия после тестирования. Например:
- Если все тесты пройдены, команда QA получает уведомление о том, что сборка прошла успешно и можно выполнить дальнейшие задачи тестирования / выпуска.
- Если некоторые тесты не проходят, команда разработчиков получает уведомление со всей необходимой информацией (среда, журналы, результаты тестирования и т. Д.)
Резюме
В этой статье я показал вам пример того, как можно выполнить тестирование REST API с помощью JS и его бесплатных инструментов.
Такие тесты API короткие, простые, быстрые, а также легко поддерживаются и интегрируются в ваши конвейеры CI / CD. Более того, у них есть история изменений (если она хранится в репозитории).
Если возникнут вопросы - смело пишите мне или оставляйте комментарий под этой статьей!)
Удачи с тестами! ^^