Настройка Нагрузочного Тестирования С Помощью Artillery.io

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

Ранее я писал тесты для К6, поэтому расскажу о преимуществах артиллерии по сравнению с К6, а также напишу пошаговый скрипт настройки проекта с нуля.



Шаг 1: Установка

  
  
  
  
  
  
  
  
  
  
   

npm install -g artillery@latest

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

npm i artillery-plugin-expect



Шаг 2. Создайте конфигурацию



Целевой URL, среда

Файл конфигурации нагрузочного тестирования — это все, что нам нужно сделать для запуска тестов:

config: target: " https://yourapp.com/api "

Если вам нужно использовать в тестах разные окружения, они пишутся сразу после целевого URL:

config: target: " https://bestapp.com/api " environments: dev: target: " https://bestapp.dev.com/api " qa: target: " https://bestapp.qa.com/api "



Этапы тестирования

Артиллерийский инструмент позволяет применять к вашему приложению несколько вариантов последовательной загрузки.

Фаза тестирования состоит из: продолжительности – времени одной фазы; ArrivalRate – количество пользователей, добавляемых каждую секунду; RamptTo – до какого количества пользователей в секунду увеличится нагрузка; name - имя для идентификации ваших фаз.



phases: - duration: 30 arrivalRate: 1 rampTo: 20 name: test1

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



Плагины

Добавьте плагин для ожидаемого результата:

plugins: expect: {}



Авторизация

Инструмент поддерживает базовую аутентификацию с использованием имени пользователя и пароля:

- get: url: "/auth" auth: user: username pass: password

Вы также можете вставить свой собственный заголовок авторизации:

- post: url: "/auth" headers: Authorization: “Basic secretKey”



Шаг 3. Первый тест

Все тесты написаны в разделе сценарии.

Каждый скрипт имеет имя, метод (GET, POST, PUT, DELETE и т. д.), URL для каждой конечной точки, тело в формате json, а также необходимые проверки.

Пример простого теста:

scenarios: - name: "My first test" flow: - post: url: "/endpoint1" json: id: value expect: - statusCode: 200 - contentType: json - equals: - respMessage: "OK"

Equals добавляет все проверки на основе ответа вашего бэкэнда.



Шаг 4. Запустите тесты

Запустить нагрузочные тесты очень просто:

artillery run yourConfig.yml

Эту строку можно добавить в раздел сценариев package.json для быстрого запуска тестов.

-е - запускает тесты для разных сред, --quiet – удаляет все полученные результаты из консоли, -o result.json – добавляет результаты теста в файл отчета.



Создание html-отчета

Отчет создается буквально в одну строку:

artillery report result.json



Сравнение с К6

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

Нет необходимости переписывать тесты в формате, определенном для К6, не нужно писать bat-файл, чтобы запустить несколько тестов и сохранить результаты в отдельной папке.

Достаточно настроить один файл.

Artillery работает с node.js, поэтому скрипт запуска можно вставить в package.json. Вы можете импортировать переменные из файла cvs и брать переменные из полученного результата.

Отчет с графиками и диаграммами добавляется в одну команду и входит в бесплатную версию артиллерии.

Теги: #api #тестирование веб-сервисов #JavaScript #нагрузочное тестирование #артиллерия

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.