Не так давно я начал писать тесты для нагрузочного тестирования с помощью артиллерийского инструмента.
Ранее я писал тесты для К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 #нагрузочное тестирование #артиллерия
-
Личный Опыт Обучения В Яндекс.практике
19 Oct, 24 -
Снег На Рабочем Столе
19 Oct, 24 -
Opera Mini — 7% На Мобильном Рынке
19 Oct, 24 -
Внедрение И Настройка Eigrp
19 Oct, 24