Настраиваем нагрузочное тестирование с Artillery.io

от автора

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

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

npm install g artillery@latest

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

npm i artillery-plugin-expect

Шаг 2. Создаем config

Target url, environment

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

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

Если вам нужно использовать разные environment в ваших тестах, они прописываются сразу после target url:

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

Фазы тестирования

Инструмент artillery позволяет использовать несколько вариантов последовательных нагрузок на ваше приложение. Фаза тестирования состоит из: duration – время одной фазы; arrivalRate – количество пользователей, добавляемых каждую секунду; ramptTo – до какого количества пользователей в секунду будет нарастать нагрузка; name — имя для обозначения ваших фаз.

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

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

Плагины

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

plugins:     expect: {}

Авторизация

Инструмент поддерживает базовую авторизацию с помощью username и password:

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

Также можно вставить свой авторизационный header:

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

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

Все тесты пишутся в разделе scenarios. Каждый сценарий имеет название, метод (GET, POST, PUT, DELETE и др.), url для каждого endpoint, body в формате 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

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

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

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

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

artillery report result.json

Сравнение с K6

Главное преимущество artillery – это очень легкая настройка первого запуска тестов. Не надо переписывать тесты в формате, определяемом для K6, не надо писать bat-файл для того, чтобы запускать несколько тестов и сохранять результаты в отдельную папку. Достаточно сконфигурировать один файл.

Artillery работает с node.js, поэтому скрипт для запуска можно вставить в package.json.

Можно импортировать переменные из cvs-файла, брать переменные из полученного результата.

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

ссылка на оригинал статьи https://habr.com/ru/post/559974/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *