Инструмент командной строки для легкого нагрузочного тестирования

Оглавление

  1. Предпосылки
  2. Обзор
  3. Почему мы должны использовать Artillery.io?
  4. Нагрузочное тестирование демо-проекта
  5. Сильные стороны и ограничения
  6. Рекомендации

Предпосылки

Я предполагаю, что читатели этой статьи имеют общее представление о тестировании программного обеспечения и API-интерфейсов с использованием таких инструментов, как Postman. Чтобы следовать демонстрации в этой статье, вам понадобится компьютер с Linux, на котором установлены последние версии npm, python и git.

Обзор

Современный мир разработки программного обеспечения полагается на использование API для большинства своих сервисов, и при таком изобилии API крайне важно, чтобы они тестировались на уровне, который точно отражает реальный мировой трафик.
Тестирование API — это сложная задача, требующая кропотливой работы, чтобы убедиться, что каждая конечная точка работает должным образом. К счастью, такие инструменты, как Postman, упрощают тестирование API с помощью интуитивно понятного графического интерфейса. Однако, если мы хотим выполнить производительность или нагрузочное тестирование наших API, мы должны использовать JMeter, который выполняет свою работу, но, судя по моему опыту, не подходит для начинающих.

Почему мы должны использовать Artillery.io?

Почему мы должны использовать Artillery.io? Ну, чтобы ответить на это одним простым словом: Простота.

Artillery — очень интуитивно понятный, легкий и простой в использовании инструмент. Это современное программное обеспечение для тестирования производительности, написанное на Javascript и поддерживающее тестирование API HTTP, Socket и Websocket. Процесс написания тестов быстрый и простой благодаря формату YAML, и он может генерировать выходные отчеты в различных форматах, таких как JSON и HTML, для упрощения анализа. Больше всего на свете Artillery может похвастаться простой и подробной официальной документацией, которая позволяет довольно легко выполнять такие задачи, как интеграция ее с действиями GitHub.

Загрузка демонстрационного проекта

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

Установить артиллерию

Мы можем легко установить Artillery, используя следующую команду

sudo npm install -g artillery

Клонировать репозиторий GitHub

Клонируйте репозиторий GitHub https://github.com/ankitssh/Load-Test-Movie-Recommendation-API-With-Artillery.git на свой локальный компьютер с помощью следующей команды.

git clone https://github.com/ankitssh/Load-Test-Movie-Recommendation-API-With-Artillery.git

Изменить каталог

Измените текущий каталог на репозиторий клонов.

cd Load-Test-Movie-Recommendation-API-With-Artillery

Настройка среды

Теперь мы создаем виртуальную среду Python для установки всех наших зависимостей, необходимых для запуска API.

python -m venv env
source env/bin/activate
pip install -r requirements.txt

Запустите API

Теперь мы запустим API на порту 8081 на локальном хосте.

cd recommendation-service
python run.py

API должен быть запущен по адресу http://localhost:8081/recommend/‹userID›.

Управляйте артиллерией

В другом терминале в том же каталоге введите команду для запуска артиллерийского скрипта load-testing.yaml

artillery run load-testing.yaml

Вот результат, который мы получаем:

Но формат вывода не самый лучший, и я думаю, что он выглядел бы лучше в формате HTML. Итак, давайте сделаем это.

artillery run load-testing.yaml --output movie.json
artillery report movie.json

Вуаля! Мы получаем HTML-отчет с графиками!

Сильные стороны и ограничения

Давайте посмотрим на некоторые сильные стороны и ограничения.

Сильные стороны

  • Легкий и простой в установке
  • Простой в использовании, но достаточно мощный
  • Скрипты YAML для упрощения написания тестов
  • Может легко интегрироваться с конвейером CI

Ограничения

  • Нет графического интерфейса в бесплатной версии
  • Ориентирован на простые тесты
  • Нет возможности контролировать время выполнения

Рекомендации

Код для демонстрации можно найти здесь: https://github.com/ankitssh/Load-Test-Movie-Recommendation-API-With-Artillery