Нагрузочное и стресс-тестирование с 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
См. документацию.