Как стать автором
Обновить
549.55
OTUS
Цифровые навыки от ведущих экспертов

Тестируем API с помощью Keploy

Время на прочтение5 мин
Количество просмотров3.2K

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

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

Будучи инструментом с открытым кодом, Keploy можно использовать бесплатно; также его функционал может быть расширен для удовлетворения специфических потребностей команд разработчиков. Пользователи могут вносить свой вклад в развитие инструмента или создавать собственные плагины для расширения его функциональности.

Преимущества Keploy

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

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

Keploy автоматически генерирует утверждения на основе записанного трафика, гарантируя, что фактические ответы API соответствуют ожидаемым результатам. Эта функция обеспечивает надёжные механизмы проверки, помогающие разработчикам выявить любые отклонения или ошибки в поведении API.

Также автоматическое построение тестов позволяет выполнить полное покрытие тестами, в результате чего снижается вероятность того, что какой‑то функционал приложения не будет покрыт.

С помощью Keploy можно выполнять API mocking, то есть имитацию поведения внешних API, которые могут быть недоступны или труднодоступны во время тестирования. Эта функция Keploy позволяет разработчикам запускать тесты без необходимости доступа к реальным API, улучшая покрытие тестов и снижая зависимость от сторонних сервисов.

Keploy легко интегрируется в существующие конвейеры CI/CD, позволяя командам автоматизировать тестирование API в рамках рабочих процессов разработки и развёртывания. Это гарантирует, что тесты будут выполняться непрерывно и что любые изменения будут отслежены до того, как они попадут в производство.

После того как Keploy перехватит трафик и сгенерирует тестовые примеры, эти тесты можно повторно использовать и воспроизводить в различных средах (например, в средах разработки, постановки и производства). Это позволяет командам проверять поведение API в сценариях развёртывания, обеспечивая согласованность и надёжность.

Keploy не зависит от используемых языков и фреймворков. Поскольку он предназначен для работы с различными языками программирования и фреймворками, это делает его гибким инструментом для команд, работающих с различными технологическими стеками. Независимо от того, построен ли API на Node.js, Python, Java или любом другом языке, Keploy можно легко интегрировать в процесс тестирования.

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

Работа с Keploy

Keploy поддерживает ОС Windows, MacOS и, естественно, Linux. Процесс установки утилиты Keploy достаточно прост:

curl --silent -O -L https://keploy.io/install.sh && source install.sh

Впрочем, для желающих использовать Docker можно развернуть контейнер. Для этого сначала создадим сеть:

docker network create keploy-network

А затем создадим алиас, который будет заменять довольно тяжелый многострочник:

alias keploy="docker run --name keploy-v2 -p 16789:16789 --network keploy-network --privileged --pid=host -v $(pwd):$(pwd) -w $(pwd) -v /sys/fs/cgroup:/sys/fs/cgroup -v /sys/kernel/debug:/sys/kernel/debug -v /sys/fs/bpf:/sys/fs/bpf -v /var/run/docker.sock:/var/run/docker.sock --rm ghcr.io/keploy/keploy"

Так или иначе, в итоге мы увидим примерно следующее:

Далее мы сначала выполним несколько запросов к тестовому API, а затем запустим сгенерированные Keploy тесты.

Тестируем NodeJS

Keploy может работать с различными приложениями. Мы в качестве примера рассмотрим тестирование одного из примеров — API NodeJS. Для начала нужно подготовить тестовую среду. Сделаем это с помощью следующих команд:

git clone https://github.com/keploy/samples-typescript && cd samples-typescript/crud-Node-mongo
npm install

В случае если установка завершится ошибкой из‑за самоподписанного сертификата, используйте следующую команду перед запуском установки:

npm set strict-ssl false

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

keploy record -c "npm start"

После этого выполним запросы, на основе которых Keploy затем создаст свои тесты. Так как у нас API, то мы будем выполнять запросы POST, GET, PUT DELETE с помощью curl.

Начнём с POST-запроса. В случае с нашим NodeJS он будет иметь следующий вид. Для тестирования своего приложения вам нужно будет указать свой адрес порт и параметры, передаваемые API.

curl --request POST \

  --url http://IP_сервера:порт/api/products \
  --header 'content-type: application/json' \
  --data '{
    "name" : "airpods",
    "quantity": 4,
    "price": 20000
}'

Так должен выглядеть корректный ответ от сервера:

{
  "name": "airpods",
  "quantity": 4,
  "price": 20000,
  "_id": "6629499175a4795410ee4012",
  "createdAt": "2024-04-24T18:04:01.499Z",
  "updatedAt": "2024-04-24T18:04:01.499Z",
  "__v": 0
}

Здесь мы должны быть уверены в том, что получили корректный результат, так как в дальнейшем именно эти данные будут использоваться для тестирования.

Далее выполним аналогичный запрос для GET:

curl --location --request GET 'http://IP_сервера:порт/api/products/:id'

Запрос для метода PUT:

curl --location --request PUT 'http://IP_сервера:порт/api/products/:id' \

  --header 'Content-Type: application/json' \
  --data '{
    "name": "airpods",
    "quantity": 4,
    "price": 20000
    }'

И запрос для метода DELETE:

curl --location --request DELETE 'http://IP_сервера:порт/potions/:id'

В результате наших тестов в каталоге приложения был создан файл test-1.yml с перехваченными запросами, аналогичный приведённому ниже.

Теперь мы можем использовать сгенерированные Keploy тесты на основе этих запросов.

Для запуска этих тестов достаточно выполнить команду:

keploy test -c "npm run" --delay 10

После этого мы можем использовать сгенерированные тесты к новым версиям нашего приложения. Также проверки Keploy можно без труда встроить в конвейер CI/CD, что позволит ускорить и автоматизировать процесс разработки программного обеспечения.

Заключение

В этой статье мы рассмотрели один из инструментов, предназначенный для автоматизации тестирования API. Конечно, функционал Keploy не ограничивается рассмотренными возможностями, и этот инструмент можно использовать и для других видов тестирования.


В завершение всем тестировщикам рекомендую к посещению открытый урок в Otus «API тестирование на Java Playwright». Записаться можно бесплатно на странице курса "Java QA Engineer. Professional".

Полный список тем открытых уроков по тестированию и не только смотрите в календаре мероприятий.

Теги:
Хабы:
Всего голосов 9: ↑8 и ↓1+12
Комментарии0

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS