Нагрузочное и стресс-тестирование с Bombard
Что если вам необходимо быстро проверить поведение вашего приложения под нагрузкой, но не хочется тратить время на создание тестов в тяжеловесном jmeter или подобных инструментах?
Вам может понравится Bombard - простейший инструмент для описания и запуска параллельных запросов.
Установка
pip install bombard
Опишите простейший сценарий в файле bombard.yaml
ammo:
postsList:
url: "https://jsonplaceholder.typicode.com/posts"
Запускаем
bombard
На экране отчет:
По умолчанию запросы идут из 10 параллельных потоков, но это можно изменить
параметром --parallel
(полный список параметров выдается по --help
).
Чтобы у нас получился сценарий давайте напишем подготовительные шаги в секции prepare
.
И добавим код на Python (см. script
).
Этот код вызывает запросы ammo.getPost
описаные ниже в секции ammo
.
supply: # все переменные можно изменить из командной строки (--supply host=http://localhost/)
host: https://jsonplaceholder.typicode.com/
prepare: # Получаем идентификаторы запросов posts
postsList:
url: "{host}posts" # используем переменную {host} из supply
script: |
for post in resp[:3]: # берем идентификаторы из первых трех ответов
reload(ammo.getPost, id=post['id'])
ammo:
getPost:
url: "{host}posts/{id}" # используем id который нам передал Python код
headers: json
Запоминать все эти названия секций и переменных не нужно. В программу включены примеры список которых можно получить так
bombard --examples
Чтобы запустить заинтересовавший вас пример
bombard --example easy
Или же вы можете создать локальный файл bombard.yaml
на основании выбранного примера
bombard --init --example easy
Отредактировав его можно запустить
bombard
См. документацию.