Как использовать JMeter для проведения нагрузочного тестирования и производительности вашего веб-приложения

Поскольку приложение JMeter представляет собой Java-приложение, его можно использовать для проведения нагрузочного тестирования любого веб-приложения, включая приложения, написанные на PHP, .NET и т.д.

Изначально это приложение предназначалось для тестирования работы Apache Tomcat, который, по сути, представляет собой веб-сервер.

С течением времени Jmeter постепенно развивался: пользовательский интерфейс совершенствовался, а также были добавлены дополнительные функции, которые превратили Jmeter в эффективный инструмент для проведения тестирования производительности и нагрузочного тестирования корпоративных веб-приложений.

Что такое JMeter?

JMeter является частью проекта Apache Open Source.

Изначально приложение JMeter предназначалось для тестирования производительности веб-серверов, а теперь превратилось в автоматический инструмент для тестирования с тестовыми данными, а также в инструмент для функционального тестирования веб-приложений, файловых серверов, веб-серверов и даже баз данных. В этой статье мы изучим важные характеристики JMeter. Приложение можно конфигурировать так, чтобы оно симулировало N-ое количество пользователей и потоков, посещающих определенный веб-сервер или приложение. Создавая симулированную нагрузку на ваше веб-приложение, Jmeter измеряет его производительность. Более того, вы можете задать несколько повторов с циклами, чтобы получить усредненный результат, реализовать утверждение, а также посмотреть результаты тестирования в графическом и статистическом виде.

На следующем ниже скриншоте представлены разнообразные конфигурации, которые можно задать при составлении плана тестирования. Вы можете создавать множественные потоки, несколько фрагментов тестирования, конфигурировать индивидуальные элементы, задавать время для разных тестирований, настраивать пре- и постпроцессор для выполнения определенных рутинных задач, задавать утверждения и слушивателей для своего плана тестирования.

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

Кликнув правой клавишей мыши на элемент Test Plan (План тестирования), вы увидите развернувшееся меню. В меню наведите курсор на элемент Add (Добавить), и вы увидите базовые параметры тестирования, которые вы можете включить в свой план тестирования.

Заданные параметры тестирования затем выполняются тестировщиком. В зависимости от существующих конфигураций, Jmeter может создавать симулированную нагрузку, тестовые данные, графическую статистику, а также утверждать критерии.

Давайте создадим план тестирования, используя несколько параметров из подменю Add (Добавить), и выполним этот план, чтобы проанализировать производительность веб-приложения. Как вы наверняка знаете, производительность веб-приложения или вебсайта зависит от различных факторов – например, от пропускной способности Интернет-соединения, хостинга, веб-сервера и даже от разработки веб-сайта в плане написания скриптов.

Создание Группы потоков для плана тестирования

Правой клавишей мыши кликните на элемент Add (Добавить) и перейдите по Threads -> Threads group(Потоки -> Группа потоков).

По своей сути, поток представляет собой пользователя, посещающего веб-сервер в режиме реального времени.

Кликните на элемент Thread group (Группа потоков), чтобы создать ее в рамках своего плана тестирования.

Элемент Группа потоков появится под элементом План тестирования на левой панели. Кликните на Группу потоков, чтобы посмотреть различные опции и параметры, которые вы можете задать в зависимости от требований своего нагрузочного тестирования или тестирования производительности (см. скриншот ниже).

Подписи в красных рамках:

  1. Кликнув на новую Группу потоков, вы можете посмотреть ее параметры.
  2. Здесь вы можете задавать различные конфигурации, в зависимости от ваших требований.

Вы можете дать имя Группе потоков, а также создать N-ое количество групп потоков для симулирования различных сценариев.

Например, вы хотите узнать производительность своего веб-приложения с 100 параллельными пользователями, 500 параллельными пользователями и т.д.

Вы можете создать разные группы потоков с разным временем нарастания потоков (ramp-up period) и количеством циклов (loop count). Просто укажите количество потоков пользователей, которое вы хотите создать, в текстовом окне Number of Threads (Количество потоков). В предыдущем скриншоте этот параметр выставлен на 10.

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

Этот параметр следует задать так, чтобы он не превышал максимальную мощность веб-серверов, или же вы можете поэкспериментировать, чтобы найти идеальное время для разных сценариев. На приведенном выше скриншоте видно, что мы также можем выбрать «действие после ошибки выборки» (action to be taken after sample error). То есть то, что нужно делать, если запущенный поток не может успешно выполнить запрос к циклу ответа по какой-либо причине, из-за чего выборка, которую планировалось взять, дает неверные результаты.

Мы можем продолжить брать выборку по несколько раз, задавая количество циклов, или сделать так, чтобы программа брала выборку n количество раз no (т.е. выбрав опцию forever («постоянно»)). Также вы можете сделать так, чтобы созданный поток запускался автоматически в определенное время, выбрав опцию scheduler («Планировщик») (см. скриншот ниже)

Добавление сэмплера запросов для Группы потоков

Правой клавишей мыши кликните на созданную группу потоков на левой панели и, наводя курсор на соответствующие элементы меню, пройдите через Add -> Sampler -> HTTP Request. Кликните на HTTP Request (HTTP-запрос), чтобы добавить сэмплер этого типа/вида.

По такой же схеме вы можете пройтись по большому количеству опций, изучая возможности JMeter по созданию различных запросов/потоков соединений для различных протоколов, предназначенных для разных типов серверов (см. следующий скриншот).

В следующем примере мы создаем сэмплер http-запроса, потому что хотим протестировать вебсайт или, скажем, производительность поддерживающего его веб-сервера.

Подпись в красной рамке: С помощью этого подменю вы можете изучить возможности JMeter. Вы можете создавать запросы с разными протоколами для разных типов серверов.

Теперь под Группой потоков вы видите только что добавленный элемент http request sampler (сэмплер http-запроса). Кликните по этому элементу, чтобы посмотреть панель конфигурации. На следующем скриншоте показано, как в качестве нашего целевого домена мы указываем example.com (в демонстрационных целях).

Добавление слушателя для Группы потоков

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

Чтобы посмотреть итоговый отчет, вам нужно сделать следующее: Правой клавишей мыши кликните по Группе потоков в левой панели и пройдите через Add -> Listener -> Summary Report. Кликните на элемент Summary Report (Итоговый отчет), чтобы добавить его к Группе потоков.

Теперь в левой панели под элементом «Группа потоков» вы видите добавленный элемент “Summary Report” (Итоговый отчет). Кликните на него, если хотите посмотреть пустой отчет, расположенный в области основного содержимого.

Выполнение Группы потоков для проведения нагрузочного тестирования

Выберите соответствующую группу потоков и нажмите комбинацию Ctrl + R или кликните на зеленую клавишу пуска на панели быстрого доступа вверху (см. скриншот ниже). В верхнем правом появится следующие числа: текущее количество запущенных потоков и количество потоков, которые не смогли завершить цикл из-за ошибок.

В итоговой таблице в области основного содержимого мы увидите итоговый отчет.

Подпись в красной рамке: Из этого раскрывающегося подменю можно добавить различные типы отчетов, графических представлений, журналов регистрации, которые демонстрируют результаты выполненного тестирования.

В итоговом отчете показатели Среднего, Минимального и Максимального потраченного времени указываются в миллисекундах.

Когда вы снова будете проводить тестирование, не очистив предварительно этот отчет, он каждый раз будет прибавлять количество выборок к общему итогу. Но если вы хотите начать новое тестирование и не хотите учитывать предыдущие результаты, нажмите на клавишу Clear (Очистить) на панели быстрого доступа.