Нагрузочное тестирование

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

Нагрузочное тестирование — это дисциплина нефункционального тестирования, оценивающая скорость, масштабируемость и стабильность приложения в различных условиях нагрузки до попадания в продакшен. QA-инженеры используют нагрузочное тестирование для проверки того, что времена ответа, пропускная способность (RPS) и потребление ресурсов остаются в рамках определённых SLA в сценариях нагрузочного, стрессового, нагрузочного endurance и спайк-тестирования. Отраслевые инструменты нагрузочного тестирования — Apache JMeter, k6, Locust и Gatling — каждый способен генерировать тысячи виртуальных пользователей и в реальном времени сообщать о перцентильных задержках, процентах ошибок и использовании CPU/памяти. Нагрузочное тестирование органично интегрируется в CI/CD-пайплайны через Jenkins или GitHub Actions, позволяя автоматически проверять регрессии при каждом развёртывании, чтобы команды выявляли проблемы ёмкости раньше пользователей.

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

Нагрузочное тестирование валидирует поведение системы под нагрузкой. Инструменты: 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-тесты их верифицируют.

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

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

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

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

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

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