Нагрузочное тестирование — разновидность тестирования производительности, при которой система проверяется под ожидаемой пользовательской нагрузкой. Цель — убедиться, что приложение выдерживает заданное число одновременных пользователей с требуемым временем отклика и допустимым процентом ошибок.
Статья посвящена нагрузочному тестированию программного обеспечения и веб-сервисов. Разберём: что такое НТ простыми словами, какие существуют виды, как выбрать инструмент — Apache JMeter, k6 или Locust, — по каким метрикам оценивать результаты, что требуют стандарты ГОСТ Р 51901 и ISO 25010 и как строится карьерный путь специалиста.
Сделайте следующий шаг в карьере
Подберите обучение, которое поможет освоить новые компетенции
Нагрузочное тестирование относится к классу нефункциональных тестов. Оно не проверяет, правильно ли работают функции, — оно измеряет, как система справляется с нагрузкой при реальных условиях эксплуатации.
Простыми словами: тысяча виртуальных ботов одновременно штурмует сайт — открывают страницы, добавляют товары в корзину, оформляют заказы. Что произойдёт? Страницы начнут тормозить? Сервер упадёт? Сколько запросов завершится ошибкой?
Ключевые понятия:
Нагрузочное тестирование вручную оправдано только до 10 одновременных пользователей — например, когда команда открывает сайт с нескольких устройств и засекает время. При нагрузке от 10+ VU уже нужен инструмент автоматизации: вручную воспроизвести поведение сотен пользователей физически невозможно.
В Чёрную пятницу интернет-магазин получает в 10–20 раз больше трафика, чем в обычный день. Если нагрузочное тестирование перед пиком не проводилось, вероятен сценарий: серверы не справляются, сайт падает, пользователи уходят к конкурентам — бизнес теряет выручку и репутацию за несколько часов.

Четыре причины проводить нагрузочное тестирование:
Нагрузочное тестирование даёт конкретные ответы: какова максимальная ёмкость системы, какая конфигурация серверов оптимальна, где именно узкое место — в медленном запросе к базе данных или в нехватке памяти на веб-сервере.
Термин «нагрузочное тестирование» нередко используют как обобщающий для целой группы тестов производительности. На практике каждый вид решает свою задачу. Более широкую картину даёт обзор видов тестирования программного обеспечения.
| Вид |
Что делаем |
Цель |
Пример |
|---|---|---|---|
| Нагрузочное (load) | Нагрузка = ожидаемый пик | Убедиться, что система выдерживает норму | 5 000 VU в период акции |
| Стресс (stress) | Нагрузка выше ожидаемой до точки отказа | Найти, где сломается | 20 000 VU — система падает при 12 000 |
| Выносливость (soak testing) | Нормальная нагрузка, долгий прогон | Выявить деградацию во времени | 1 000 VU непрерывно 48 часов |
| Масштабируемость | Нагрузка растёт, ресурсы тоже | Проверить линейность прироста | +1 сервер → пропускная способность ×2? |
Стресс-тестирование — намеренная перегрузка системы. Нагрузку поднимают выше ожидаемых значений, пока не будет достигнута точка отказа. Главный вопрос: не «выдержит ли система норму», а «где она сломается и как восстановится».
Стресс-тестирование отличается от нагрузочного одним ключевым атрибутом: оно измеряет время восстановления — сколько секунд нужно системе после снятия перегрузки, чтобы метрики вернулись к норме. Также фиксируют характер отказа: возвращает 503, зависает или деградирует постепенно.
Тестирование на выносливость проводится при нормальной нагрузке, но в течение многих часов или суток. Задача — обнаружить проблемы, невидимые за 30 минут: утечки памяти (когда потребление RAM постепенно растёт), деградацию времени отклика из-за накопления незакрытых соединений или нестабильность кэша при длительной работе.
Тестирование масштабируемости отвечает на вопрос: если добавить ещё один сервер, производительность вырастет пропорционально? Линейный прирост — хороший знак; нелинейный сигнализирует об архитектурных ограничениях.
Смежные виды: тесты объёма (как система справляется с большим объёмом данных в БД), тестирование отказоустойчивости (поведение при падении одного из узлов), тесты потенциальных возможностей (максимальная пропускная способность при идеальных условиях).
Среда, в которой проводится нагрузочное тестирование, должна быть идентична production — по числу серверов, конфигурациям, сетевым правилам и балансировщикам нагрузки.

Типичная цепочка обработки запроса выглядит так:
Виртуальные пользователи → Firewall → Балансировщик нагрузки → Веб-серверы → Серверы приложений → База данных
Каждый элемент цепочки может стать узким местом:
Почему нельзя тестировать в QA-среде? QA: 1 сервер приложений + 1 БД. Производственная среда: 3 сервера приложений + 2 БД + балансировщик. Результаты нагрузочного тестирования в QA будут нерепрезентативными — узкие места окажутся в других компонентах или вовсе скроются.
Для внешних сервисов (платёжный шлюз, SMS-провайдер) используют заглушки (stubs): они возвращают предсказуемые ответы и не нагружают реального поставщика.
Нагрузочное тестирование — итеративный процесс. Один цикл включает семь этапов: анализ требований → подготовка МНТ → создание среды → разработка тест-сценариев → прогон → анализ результатов → отчёт. По итогам анализа вносятся доработки — и запускается следующий цикл.

МНТ — документ, который составляют до начала тестирования и согласовывают с заказчиком. Он фиксирует:
МНТ формализует отношения между командой тестирования и заказчиком. Без него критерии успеха остаются размытыми, и итоговая оценка результатов становится субъективной.
Think time — пауза между действиями виртуального пользователя, имитирующая реальное поведение: открыл страницу → прочитал → кликнул. Типичный диапазон: 1–10 секунд. Значение рассчитывают по логам production-сервера.

Если установить think time = 0, инструмент отправляет запросы без пауз — нагрузка становится нереалистично высокой, близкой к DDoS-атаке. Результаты такого теста вводят в заблуждение: система падёт раньше, чем при реальном трафике, а выявленные узкие места окажутся артефактом теста, а не реальной проблемой.
Стандартный паттерн нагрузки:
Оценочная формула пропускной способности: Транзакций/час = VU × (3600 / время_цикла). Для интернет-магазина: 500 VU, цикл 120 сек → 15 000 транзакций в час.
Выбор инструмента зависит от трёх факторов: бюджета, технологического стека команды и сложности сценариев. Открытый исходный код — для большинства задач; коммерческие решения — для enterprise-масштаба.
| Инструмент |
Язык |
Тип |
GUI |
CI/CD |
Порог входа |
Лучший сценарий |
|---|---|---|---|---|---|---|
| Apache JMeter | Java/XML | Open-source | ✓ Desktop | Есть | Средний | Мультипротокольные тесты |
| k6 | JavaScript (ES6+) | Open-source/Cloud | — | Нативный | Низкий | API, микросервисы, DevOps |
| Gatling | Scala/Java/Kotlin | Open-source | — | Есть | Высокий | Высокопроизводительные тесты |
| Locust | Python | Open-source | Web-UI | Есть | Низкий | Быстрое прототипирование |
| LoadRunner | VU-скрипты | Коммерческий | ✓ | Есть | Высокий | Enterprise, миллионы VU |
| Tsung | Erlang/XML | Open-source | — | Ограничено | Высокий | Распределённые протоколы |
Apache JMeter распространяется под лицензией Apache 2.0, написан на Java. Поддерживает широкий спектр протоколов: HTTP/HTTPS, FTP, JDBC (тестирование баз данных), SOAP, LDAP.

Сильные стороны: графический интерфейс рабочего стола для создания тест-планов без написания кода, огромная экосистема плагинов, крупное сообщество. Интегрируется с Jenkins и Grafana; для облачного масштабирования подключают BlazeMeter.
Ограничение: при генерации нагрузки свыше 500 VU на одной машине JMeter начинает потреблять значительный объём RAM и CPU самого генератора нагрузки. Решение — распределённый режим (несколько машин-агентов) или запуск в облаке.
k6 разработан Grafana Labs, сценарии пишутся на JavaScript (ES6+). Ключевое преимущество — нативная интеграция с пайплайнами непрерывной интеграции (CI/CD): Jenkins, GitLab CI, GitHub Actions. После каждого коммита автоматически запускается базовый нагрузочный тест; если время отклика выросло на 20% — сборка помечается как нестабильная.

Экспорт метрик: Grafana, InfluxDB, Prometheus, Datadog. Лучший сценарий: API-тестирование, микросервисная архитектура, DevOps-команды с культурой автоматизации.
Пора сменить профессию? Начните с понятного плана
Подберите программу под ваш опыт, цели и желаемый формат занятости
Locust — open-source инструмент, сценарии пишутся на Python. Веб-интерфейс позволяет управлять тестом в реальном времени: запускать, останавливать, менять число пользователей без перезапуска процесса.

Низкий порог входа: Python знаком большинству разработчиков и специалистов по анализу данных. Идеален для команд без выделенной QA-экспертизы и для быстрого прототипирования сценариев нагрузки.
Gatling написан на Scala, поддерживает также Java и Kotlin. Использует асинхронную архитектуру (Akka), что позволяет генерировать высокую нагрузку при низком потреблении ресурсов. Формирует детальные HTML-отчёты с графиками по каждому запросу. Порог входа — высокий: нужен опыт работы со Scala или Java.
LoadRunner от Micro Focus — коммерческое решение корпоративного класса. Поддерживает эмуляцию миллионов виртуальных пользователей, широкий набор протоколов и интеграцию с корпоративными системами мониторинга. Стоимость лицензии ориентирована на крупные организации.
Нагрузочное тестирование применимо к любому типу систем — у каждой есть своя специфика инструментов, протоколов и ключевых метрик.
Веб-приложения работают по HTTP/HTTPS, используют сессии, Cookie и нередко JavaScript-рендеринг на клиенте. Ключевые сценарии для нагрузочного тестирования сайта: главная → каталог → карточка товара → корзина → страница оплаты.
Для быстрого старта без локальной установки подойдут облачные платформы: k6 Cloud предоставляет бесплатный уровень (free tier), BlazeMeter также имеет бесплатный тир. Оба позволяют запустить нагрузочное тестирование сайта онлайн за несколько минут прямо из браузера.
Специфика 1С: COM-соединения, бизнес-транзакции платформы, работа через СУБД (PostgreSQL или MS SQL Server). Типичные узкие места — блокировки базы данных при параллельных операциях проведения документов и медленные регламентные задачи (закрытие периода, формирование сводных отчётов).
Инструменты: Apache JMeter с JDBC-сэмплером для прямой работы с СУБД, специализированные скрипты тестирования на уровне платформы 1С.
При нагрузочном тестировании PostgreSQL используют: JDBC-драйвер для подключения из JMeter, встроенную утилиту pgbench, расширения k6 для работы с SQL.
Ключевые метрики: дисковые операции (I/O), время выполнения запросов, число активных соединений, размер connection pool (пула соединений). Узкое место нередко обнаруживается именно в некорректно настроенном пуле — когда приложение исчерпывает лимит и новые запросы встают в очередь.
Метрики делятся на две группы: клиентские — то, что ощущает пользователь, и серверные — то, что происходит внутри инфраструктуры.

Клиентские метрики:
Серверные метрики:
Percentile-метрики (p90/p95/p99) точнее среднего: среднее скрывает выбросы — медленные запросы, которые получает каждый двадцатый или каждый сотый пользователь. p95 < 2000 мс означает: 95 из 100 пользователей получат ответ быстрее двух секунд.
Базовый тест (baseline) — первый прогон с номинальной нагрузкой, результаты которого становятся точкой отсчёта. Все последующие тесты сравниваются с ним: выросло ли время отклика после последнего деплоя? Без baseline невозможно отделить деградацию от нормы.
Для ускорения поиска корневой причины применяют APM-инструменты (Application Performance Monitoring — мониторинг производительности приложений): DynaTrace, AppDynamics показывают, какой именно метод или запрос к базе данных является источником замедления.
Нагрузочное тестирование связано с двумя ключевыми стандартами, которые задают рамку нефункциональных требований к ПО.
ISO 25010 (серия SQuaRE — Software Quality Requirements and Evaluation, система оценки качества программного обеспечения) определяет восемь характеристик качества. Одна из них — Performance Efficiency (эффективность производительности): временны́е характеристики, использование ресурсов, ёмкость системы. Именно эти атрибуты проверяет нагрузочное тестирование.
ГОСТ Р 51901 — российский стандарт управления надёжностью систем и продуктов. Устанавливает требования к анализу и обеспечению надёжности, что напрямую связано с методикой нагрузочного тестирования и критериями приёмки в МНТ.
Применимость: государственные информационные системы, enterprise-проекты с формальной сертификацией. Логика простая: стандарты задают требования к качеству — нагрузочное тестирование проверяет, выполнены ли они.
Специалист по нагрузочному тестированию уровня middle+ — это одновременно архитектор, аналитик и программист. Роль требует широкого технического кругозора и умения мыслить системно.

Карьерный путь: функциональное тестирование (ФТ) → автоматизированное тестирование (АФТ) → нагрузочное тестирование. Каждый этап добавляет новый уровень технических компетенций.
Ключевые навыки специалиста:
Вакансии для специалистов по нагрузочному тестированию регулярно появляются в финтехе, маркетплейсах, телекоме — там, где стабильность под нагрузкой напрямую влияет на выручку. Оценить, сколько зарабатывает тестировщик на разных уровнях, можно по отдельному обзору.
Программа «Тестировщик программного обеспечения» в ProfiFuture рассчитана на ~7 недель и стоит 29 900 ₽ с господдержкой. За это время вы разберёте виды тестирования, научитесь работать с инструментами и соберёте портфолио — стартовую точку для специализации в нагрузочном направлении.
Нагрузочное тестирование проверяет систему при ожидаемой нагрузке: 5 000 пользователей в будний день — всё работает? Стресс-тестирование намеренно превышает этот уровень, чтобы найти точку отказа. Дополнительная цель стресс-теста — оценить время восстановления системы после снятия перегрузки. Коротко: нагрузочное тестирование = «выдержит ли норму», стресс = «где сломается».
Обязательно: до производственного запуска нового продукта, перед пиковыми событиями (Чёрная пятница, рекламная кампания), после архитектурных изменений, перед подписанием SLA. Нагрузочное тестирование вручную оправдано только до 10 пользователей; при большей нагрузке необходима автоматизация через JMeter, k6 или Locust.
Think time — пауза между действиями виртуального пользователя (обычно 1–10 секунд), имитирующая чтение страницы перед кликом. Если think time = 0, инструмент генерирует запросы без передышки — нагрузка становится нереалистично высокой, близкой к DDoS. Реалистичные значения рассчитываются по логам production-сервера.
Клиентские: время отклика (p90/p95/p99), RPS, процент ошибок. Серверные: CPU utilization, RAM, дисковые I/O, сетевой трафик. Типовой SLA для веб-сервисов: p95 < 2000 мс, ошибки < 2%, CPU < 80%. APM-инструменты (DynaTrace, AppDynamics) ускоряют поиск корневой причины проблемы.
Да — это современный стандарт DevOps-команд. k6 нативно интегрируется с Jenkins, GitLab CI, GitHub Actions. После каждого коммита автоматически запускается базовый нагрузочный тест: если время отклика выросло на 20% — сборка помечается как нестабильная. Это регрессионное тестирование производительности на уровне пайплайна непрерывной интеграции.
QA-среда: 1 сервер приложений + 1 БД. Production: 3 сервера приложений + 2 БД + балансировщик нагрузки. Результаты нагрузочного тестирования в QA будут нерепрезентативными — узкие места окажутся в других компонентах или скроются. Среда для тестирования должна быть идентична production по числу серверов и их конфигурации.
МНТ — документ, формализующий все аспекты проверки: цели, ограничения, бизнес-сценарии, правила моделирования нагрузки, характеристики тестового стенда, критерии приёмки и требования к отчёту. МНТ составляется до начала тестирования и согласовывается с заказчиком. Частично регулируется ГОСТ Р 51901 и внутренними стандартами организации.
Baseline — первый прогон с номинальной нагрузкой, результаты которого становятся точкой отсчёта. Все последующие тесты сравниваются с ним: выросло ли время отклика после изменения кода? Уменьшилась ли пропускная способность после обновления БД? Без baseline невозможно понять — произошла деградация или, напротив, улучшение.
Хотите разобраться в тестировании программного обеспечения и двигаться в сторону нагрузочного направления? В ProfiFuture можно пройти обучение за ~7 недель с господдержкой — 75% стоимости компенсируется образовательной квотой. Смотрите программу «Тестировщик программного обеспечения».
Превратите интерес к теме в новую профессию
Оставьте заявку — поможем выбрать программу и расскажем об условиях обучения
Оставить заявку