Блог

Нагрузочное тестирование с использованием JMeter

Технологии
А вы проводите нагрузочное тестирование? Как часто? В большинстве случаев проблема в том, что клиент не понимает, для чего нужно нагрузочное тестирование, каких проблем оно позволяет избежать и как дальше использовать его результаты в пользу развития бизнеса.

Зачем нужно нагрузочное тестирование?

Оно позволяет:
  1. Оценить скорость работы системы
  2. Определить критерии стабильности
  3. Оценить пути и возможности масштабирования

Нагрузочное тестирование дает прогнозы, а не только описывает текущий уровень. 

Если быть точными в терминологии, то общим понятием будет тестирование производительности. А уже оно делится на следующие виды, которые мы используем в своей работе:
  • Нагрузочное тестирование. Обычно это пиковая нагрузка согласно логам либо статистике посещения с сайта. Так же часто практикой является выбор нагрузки 70-80% от максимально значения выявленного после стресс-тестирования.
  • Стресс-тестирование. Для данного вида нагрузка увеличивается в десятки, в сотни и тысячи раз. Основная задача - определение максимально возможного значения нагрузки. Оно показывает, насколько изменятся показатели при том же самом паттерне поведения.
  • Тестирование отказоустойчивости. Такое тестирование показывает то, что часто не видно при нагрузочном тестировании. Производительность системы проверяется под нагрузкой в течение длительного периода времени. Примером подавания нагрузки является обычный нагрузочный тест, длительностью 8 часов + пиковые нагрузки, выше или равные стресс-тестированию. Проверяется, как сайт поведет себя при кратковременном увеличении нагрузки:


  • Тестирование стабильности. Дает понимание того, достаточно ли надежно работает система в длительном интервале времени. Тест на стабильность длится несколько суток (обычно 5-7 дней), нагрузка при этом выбирается как и для нагрузочных тестов.
  • Объемное тестирование. Здесь тестировщики определяют как система поведет себя при нагрузках максимального объема. Используются максимально большие выборки, максимально долгие сессии. В основном кейс используется следующим образом, при объеме данных 1*x проводится нагрузочный и стресс-тесты, далее объем увеличивается, например, n*x и проводится как минимум один стресс-тест. На основе данных мы получаем соотношение как объем данных повлиял на производительность и во сколько раз.
  • Тестирование масштабируемости. Оно похоже на нагрузочное тестирование, но производительность увеличивается за счет добавления новых элементов. Добавление элементов бывает горизонтальное и вертикальное. В основном кейс используется так: при мощностях серверов 1*x проводится нагрузочный и стресс-тесты, далее масштабируется производительность n*x и проводится как минимум стресс-тест. Далее мы получаем соотношение как увеличение элементов повлияло на производительность и во сколько раз.

Из множества инструментов нагрузочного тестирования команда Лансофт отдает предпочтение JMeter. 

А теперь усаживайтесь поудобнее и мы разберемся “почему”?

APACHE JMETER достаточно распространенный бесплатный инструмент для тестов нагрузки. Можно так настроить данное приложение, чтобы оно симулировало N-ое количество пользователей и потоков, тем самым измеряя производительность. Более того, можно получить усредненный результат, задав несколько повторов с циклами. Результаты тестирования отображаются как в графическом, так и в статистическом виде. 

Из плюсов можно выделить:
  1. Поддержка HTTP, SOAP, LDAP, JDBC, JMS, и FTP
  2. Активируется в разных браузерах, поскольку принадлежит к Java продуктам
  3. Можно писать свои тест-кейсы
  4. Интегрируется с Selenium и Bean Shell для выполнения авто-тестов
  5. Логически простой интерфейс


Сами результаты можно парсить либо встроенными плагинами JMeter, либо использовать сторонние ресурсы, например Grafana. 

Плагины JMeter


Grafana 


Также можно использовать мониторы от blazemeter


Без минусов JMeter тоже никуда:
  1. Не поддерживается функция записи HTTPS-связи
  2. В процессе написания отчетов отсутствуют расширенные возможности
  3. Не перехватывается AJAX

В заключение можно сказать, что нет ничего невозможного в проведение нагрузочного тестирования для улучшения качества разработки и ведения бизнеса. А JMeter может быть ценным помощником в улучшении настройки и повышении производительности ПО.

Грамотно организованное нагрузочное тестирование нужно проводить всегда, в ином случае риск попадания в крупные неприятности при эксплуатации увеличивается в разы. А устранять такие неприятности придется в лучшем случае несколько суток.