Locust

Тема дорожной карты · QA-инженер

Locust — это инструмент нагрузочного тестирования с открытым исходным кодом на Python, позволяющий QA-инженерам описывать поведение пользователей в виде кода и имитировать тысячи одновременных пользователей, нагружающих веб-приложение. В отличие от JMeter или k6, нагрузочное тестирование с Locust использует обычные Python-скрипты, где каждый класс User моделирует рабочий процесс виртуального пользователя, что делает тесты простыми в версионировании вместе с кодом приложения в CI/CD-пайплайнах. Locust предоставляет веб-UI в реальном времени и REST API, позволяя командам отслеживать RPS, времена ответа и процент сбоев во время прогона, и органично интегрируется с Docker и Jenkins для автоматизированного выполнения нагрузочных тестов. Нагрузочное тестирование с Locust масштабируется горизонтально, порождая несколько рабочих узлов, управляемых единым мастером, реализуя крупномасштабные сценарии стресс- и спайк-тестирования, раскрывающие пределы ёмкости до производственных развёртываний.

Как это работает

Locust валидирует поведение системы под нагрузкой. Инструменты: k6 (современный, на JavaScript, рекомендуется), JMeter (legacy, Java, GUI), Locust (Python, скриптуемый), Gatling (Scala, code-first), Artillery (Node). Типы: load (ожидаемый трафик, sustained), stress (за пределами ожидаемого — точка слома), spike (внезапный всплеск), soak (многочасовая выдержка — ловит утечки), capacity (максимум sustainable). Метрики: throughput (req/s), latency (p50, p95, p99), error rate.

Когда применять

Гоняйте perf-тесты до запуска (find capacity), до major-релизов (regression), после изменений архитектуры. Тестируйте против production-shaped среды — не "ноут с моками". Всегда меряйте p95/p99 latency, не только average (average прячут outliers). Распределённую load-generation — если трафик > одной машины. SLO сначала; perf-тесты их верифицируют.

Типичные ошибки

Ловушки Locust: load-тестируете свой ноут вместо целевой среды (результаты бесполезны); не прогрели систему до замеров (cold-cache цифры неверны); load генерируется из той же сети, что и target (меряете локальную сеть, не систему); не тестируете think-time (реальные юзеры не долбят refresh постоянно).

Связанные понятия

Полезные ресурсы

Проверить знания (1)

Загрузка вопросов…