[JavaScript, API, Тестирование веб-сервисов] Настраиваем нагрузочное тестирование с Artillery.io
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Не так давно я начала писать тесты для нагрузочного тестирования с помощью инструмента 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.
===========
Источник:
habr.com
===========
Похожие новости:
- [Firefox, Google Chrome, API, Расширения для браузеров, Браузеры] Mozilla примет Manifest v3 для дополнений Firefox, но без мер против блокировщиков рекламы
- [Разработка веб-сайтов, Python, JavaScript, Программирование] Как создавать предметы генеративного искусства с помощью L-систем на языке Python (перевод)
- [Assembler] Туториал по FASM (Windows x32 API/Win32API), «Hello world!»
- [Информационная безопасность, Open source, API] ФБР начнет делиться скомпрометированными паролями с Have I Been Pwned
- [JavaScript, Программирование] Функции: эта ошибка дороже, чем «null» (перевод)
- [Java, Scala, API, Apache, Natural Language Processing] Язык определения интентов NlpCraft IDL
- [Python, MongoDB, API, Apache] Продолжаем знакомство с APIM Gravitee
- [Информационная безопасность, Разработка мобильных приложений, Разработка под Android, Google API] Обновляемся на новую версию API Android по наставлению Google
- [JavaScript, Программирование, ReactJS] 7 лучших библиотек для создания молниеносно быстрых приложений ReactJS (перевод)
- [JavaScript, Google API] Google документы станут полновесными с 1 июня. Пишем скрипт для обхода этого ограничения
Теги для поиска: #_javascript, #_api, #_testirovanie_vebservisov (Тестирование веб-сервисов), #_nagruzochnoe_testirovanie (нагрузочное тестирование), #_artillery, #_javascript, #_javascript, #_api, #_testirovanie_vebservisov (
Тестирование веб-сервисов
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:50
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Не так давно я начала писать тесты для нагрузочного тестирования с помощью инструмента artillery. Раньше писала тесты для K6, поэтому расскажу о преимуществах artillery по сравнению с К6, а также напишу пошаговый сценарий для настройки проекта с нуля.Шаг 1. Установка npm install g artillery@latest
npm i artillery-plugin-expect
config:
target: "https://yourapp.com/api" config:
target: "https://bestapp.com/api" environments: dev: target: "https://bestapp.dev.com/api" qa: target: "https://bestapp.qa.com/api" phases:
- duration: 30 arrivalRate: 1 rampTo: 20 name: test1 plugins:
expect: {} - get:
url: "/auth" auth: user: username pass: password - post:
url: "/auth" headers: Authorization: “Basic secretKey” scenarios:
- name: "My first test" flow: - post: url: "/endpoint1" json: id: value expect: - statusCode: 200 - contentType: json - equals: - respMessage: "OK" artillery run yourConfig.yml
--quiet – убирает все полученные результаты из консоли, -o result.json – добавляет результаты тестирования в файл отчета.Создание html отчетаОтчет создается буквально в одну строку: artillery report result.json
=========== Источник: habr.com =========== Похожие новости:
Тестирование веб-сервисов ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:50
Часовой пояс: UTC + 5