Нагрузочное и стресс-тестирование с 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

См. документацию.