Руководство по нагрузочному тестированию JMeter
Обзор нагрузочного тестирования JMeter
Каждое веб-приложение имеет максимальную нагрузочную способность, и ее превышение может привести к замедлению, ошибкам или общей неэффективности. Нагрузочное тестирование имеет решающее значение для оценки производительности веб-приложения. Этот тип тестирования является жизненно важным компонентом жизненного цикла разработки программного обеспечения и приложений, особенно при работе с веб-приложениями, сайтами или API, которые, как ожидается, будут обрабатывать значительный пользовательский трафик. Чтобы гарантировать, что ваши приложения могут работать в условиях пиковой или устойчивой высокой нагрузки, важно использовать инструменты тестирования производительности. Apache JMeter является популярным выбором для этой цели, и если вы новичок в тестировании производительности, вы можете спросить себя, что такое JMeter? И как работает JMeter? Мы рассмотрим JMeter и то, как использовать JMeter для тестирования производительности.
Что такое тестирование нагрузки?
Нагрузочное тестирование — это тип тестирования производительности, позволяющий определить, как веб-приложение ведет себя в условиях нормальной и пиковой нагрузки, или даже найти критическую точку. Это практика моделирования реального использования или нагрузки на любое программное обеспечение, веб-сайт, веб-приложение, API или систему для анализа и выявления таких факторов, как скорость реагирования, деградация и масштабируемость.
Инструменты для нагрузочного тестирования
Инструменты нагрузочного тестирования чрезвычайно важны для оптимизации потребностей в нагрузочном тестировании и повышения производительности цифровых технологий. Существует нет конца количеству и разнообразию инструментов и платформ на рынке сегодня, с различными функциями. Существует множество инструментов нагрузочного тестирования, таких как:
-
- LoadView
- Апач JMeter
- Веб-загрузка
- Грузоподъемнаяраннер
- Трисентис NeoLoad
В этом руководстве мы рассмотрим нагрузочное тестирование JMeter. Мы ответим на некоторые вопросы: что такое JMeter, как проводить нагрузочное тестирование JMeter и как использовать JMeter для тестирования производительности API.
Что такое JMeter?
Apache JMeter, также известный как JMeter, является широко используемым программным обеспечением с открытым исходным кодом, разработанным как 100% чистое Java-приложение для проведения нагрузочного тестирования функционального поведения и оценки производительности. Это предпочтительный инструмент среди разработчиков и команд разработчиков программного обеспечения для тестирования производительности благодаря обширной документации, сильной поддержке сообщества и устоявшимся передовым практикам. Более того, бесплатность и открытый исходный код делают его экономически эффективным выбором, но, поскольку это 100% Java, вашей команде может потребоваться дополнительное время и ресурсы для запуска процессов тестирования.
Нагрузочное тестирование JMeter предназначено для проведения нагрузочных тестов функционального поведения и измерения его производительности. JMeter можно использовать для анализа и измерения производительности веб-приложений или служб. Анализируя собранные данные и создавая отчеты, вы можете наблюдать за поведением приложения и выявлять узкие места производительности, предоставляя ценную информацию о областях, в которых требуется улучшение приложения.
Зачем использовать JMeter?
- Открытый исходный код: JMeter полностью бесплатен, и разработчики могут использовать исходный код.
- Независимость от платформы: JMeter работает на 100% и может работать на нескольких платформах.
- Поддержка нескольких протоколов: JMeter поддерживает как тестирование Web-приложений, так и производительность служб баз данных. Он поддерживает все основные протоколы, такие как HTTP, JDBC, LDAP, SOAP, JMS и FTP.
- Запись и воспроизведение: JMeter позволяет записывать действия пользователя в браузере, которые необходимо имитировать, а затем воспроизводить запись.
- Настраиваемая отчетность: Визуализируйте результаты тестов в различных форматах, таких как диаграммы, таблицы или файлы деревьев и журналов.
- Поддержка сообщества: Существует большое сообщество с помощью, руководством и учебными пособиями.
Как выполнить нагрузочное тестирование JMeter
Давайте рассмотрим некоторые шаги, связанные с использованием JMeter для нагрузочного тестирования и настройкой базового нагрузочного теста.
Шаг 1: Проверьте совместимость системы с установкой JMeter
Прежде чем приступить к установке JMeter, важно убедиться, что ваша система соответствует требованиям. JMeter основан на Java, поэтому в вашей системе должна быть установлена Java 8 или более поздняя версия. Убедитесь, что ваша операционная система совместима с JMeter. JMeter предназначен для работы в различных операционных системах, включая Windows, Linux и macOS.
Убедившись, что ваша система соответствует этим основным требованиям, можно приступать к установке JMeter. Это обеспечивает плавную настройку и оптимальную производительность при нагрузочном тестировании.
Шаг 2: Загрузка и установка JMeter для вашей системы
Убедившись, что ваша система соответствует всем необходимым требованиям, перейдите к загрузке последней версии JMeter, выбирая между двоичными файлами или исходными файлами в зависимости от ваших конкретных потребностей. Двоичные файлы, состоящие из предварительно скомпилированных версий JMeter, могут быть запущены немедленно, в то время как исходные файлы обеспечивают гибкость для ручной настройки и компиляции разработчиками или группами. Как правило, двоичные версии предпочтительны из-за простоты установки. Доступны различные типы загрузки файлов, такие как .zip и .tgz.
После того, как вы выбрали предпочитаемую версию, загрузите ее в свою систему. Затем вы можете открыть файл, переместить его в указанное место или создать новую папку для последующего доступа. Начните процесс экстракции, который может занять несколько минут. Обратите внимание, что этапы установки могут отличаться в зависимости от операционной системы, но после установки функциональность JMeter остается неизменной.
Шаг 3: Создание плана нагрузочного тестирования
Пользователи JMeter могут начать создавать свой план тестирования нагрузки с нуля или также выбрать из различных шаблонов тестового плана, расположенных из меню высадки файлов. Шаблоны включают в себя план тестирования веб-службы SOAP, базовый и расширенный план веб-тестирования, план тестирования FTP (протокол передачи файлов), план функционального тестирования и многие другие. Эти шаблоны тестирования будут включать в себя все необходимые определенные элементы, разделы и поля, которые вы будете использовать для создания и построения плана тестирования нагрузки.
Чтобы создать план тестирования, просто перейдите в раздел «Файл» и выберите «Создать» или нажмите кнопку «Создать» на панели инструментов. Важно отметить, что для создания плана тестирования необходимо запустить JMeter в режиме графического интерфейса. ДЛЯ выполнения нагрузочных тестов используется интерфейс CLI, или интерфейс командной строки. Далее мы поговорим об указании количества пользователей для нагрузочного теста, который также известен как группа потоков.
Шаг 4: Добавление и настройка группы потоков в JMeter
Чтобы включить группу потоков, выполните следующие действия: щелкните правой кнопкой мыши План тестирования, наведите курсор на Потоки (пользователи) и выберите Группа потоков.
В открывшемся диалоговом окне “Группа потоков” можно изменить различные свойства потока, такие как “Число потоков (пользователи)”, “Период наращивания” (в секундах) и “Число циклов” (тестовые итерации). Кроме того, укажите такие действия, как задержки, установите время начала и окончания теста, а также определите реакцию на ошибки сэмплера. Свойства резьбы:
-
- Количество потоков (Number of Threads): Представляет количество виртуальных пользователей, подключающихся к серверу.
- Период наращивания: обозначает время, необходимое JMeter для перевода указанного количества потоков в состояние выполнения.
- Количество циклов: показывает, сколько раз каждый поток выполняет задачу.
- Loop Count Infinite: При активации он игнорирует количество циклов, вызывая бесконечный цикл до тех пор, пока не будет остановлен вручную.
- Отложить создание потока до тех пор, пока он не понадобится: Откладывает создание потока до тех пор, пока не будет достигнуто указанное значение (в секундах).
- Планировщик (Scheduler): Включает конфигурации планировщика для планирования тестов в определенное время при активации.
Этот шаг позволяет тщательно настраивать параметры нагрузочного теста, предоставляя пользователям контроль над параллелизмом, продолжительностью и конкретными условиями тестирования.
Шаг 5: Настройка примера в JMeter
В JMeter сэмплеры позволяют JMeter отправлять различные типы запросов. Например, это может быть HTTP-запрос (для веб-сайта, приложения или API), FTP-запрос, SMTP-запрос, TCP-запрос и многие другие. Здесь вы вводите дополнительные сведения, такие как протокол (HTTP/S), имя сервера или IP-адрес, путь (для конкретной веб-страницы) и тип запроса, такой как GET, POST, HEAD, PUT и т. д., который можно использовать для нагрузочного тестирования API.
Шаг 6: Настройка прослушивателей
Для анализа результатов Sampler в JMeter следующим шагом является настройка того, что называется прослушивателями. В окне JMeter Test Plan можно выбрать один из различных прослушивателей, включая Summary Report, Aggregate Graph, View Results Tree, View Results in Table и многие другие, для тщательной проверки и анализа результатов тестирования. Кроме того, у вас есть возможность добавить несколько прослушивателей в план тестирования JMeter. Как только это будет сделано, ваш план тестирования будет готов, и вы сможете приступить к выполнению теста.
Шаг 7: Запись сценариев нагрузочного теста
Если ваша цель состоит в том, чтобы выполнять базовые нагрузочные тесты на уровне HTTP или протокола без сложной настройки, дополнительная настройка не требуется. Однако, если вам требуется тест, который очень похож на действия пользователя, вам нужно будет использовать HTTP(S) Test Script Recorder в JMeter.
В группу потоков необходимо добавить контроллер записи. Этот контроллер позволяет перемещаться по сайту или приложению, записывая ваши действия с помощью запросов HTTP/S. Вы также можете включить несколько контроллеров записи на страницу, и это сэкономит ваше время, так как вам не придется вручную добавлять каждый запрос.
Недостатком этого является то, что ваша запись выполняется с помощью запросов HTTP/S, а не в реальном браузере с точки зрения пользователя. Вы также можете записывать браузеры с помощью прокси-сервера JMeter, но это может быть утомительным и сложным процессом. Если вы ищете более простое и интуитивно понятное решение, вы можете использовать LoadView, в котором есть EveryStep Web Recorder. Рекордер LoadView обеспечивает написание сценариев «укажи и щелкни» с использованием реальных браузеров без сложной и трудоемкой настройки в JMeter.
Шаг 8: Запустите и выполните нагрузочный тест
Настроив все сведения и параметры нагрузочного теста, сохраните план тестирования. Затем вы можете просто нажать кнопку «Выполнить» на панели инструментов, и ваш тест начнется. Не забудьте запустить тест в режиме CLI, чтобы получить лучшие результаты.
Шаг 9: Просмотр результатов нагрузочного теста
Результаты теста вы увидите в таблице, но это может зависеть от вашего слушателя. Результаты будут включать дополнительные метрики, такие как Время (в миллисекундах), Состояние (показывает допустимые ответы и ошибки), Байты и отправленные байты, Задержка и Время подключения. Изучив эти результаты, можно определить места возникновения ошибок или случаев медленной загрузки.
Как выполнить нагрузочное тестирование API с помощью JMeter
Ранее мы рассмотрели пошаговую инструкцию по настройке нагрузочного теста на основе протокола на сайте или в приложении с помощью JMeter. Теперь мы рассмотрим тестирование различных API, таких как SOAP и REST API, с помощью JMeter. Процедуры установки и настройки остаются в соответствии с ранее упомянутыми шагами. Тем не менее, мы сосредоточимся на фундаментальных аспектах тестирования API и обсудим важные соображения при проведении тестирования API с помощью JMeter.
Тестирование REST API с помощью JMeter
RESTful API, сокращение от Representational State Transfer API, играют жизненно важную роль в разработке разнообразных веб-сервисов. В отличие от SOAP API, REST — это не протокол, а архитектурный стиль, основанный на URI (Uniform Resource Identifiers) и протоколе HTTP.
Шаг 1: Создание плана нагрузочного тестирования
Для начала откройте JMeter. Вы увидите, что откроется новое окно План тестирования. Если у вас уже открыт JMeter, вы также можете нажать кнопку New на главной панели инструментов, чтобы создать новый план тестирования.
Шаг 2: Добавление и настройка группы потоков в JMeter
Как и в предыдущем разделе, в окне “Группа потоков” можно добавить количество пользователей (Threads), задать время нарастания и количество итераций теста (Loop Count), а также изменить многие другие свойства.
Шаг 3: Настройка Sampler
Далее, нам нужно добавить Sampler. Вы можете выбрать один из предварительно настроенных Сэмплеров в JMeter или выбрать один из ваших собственных. В этом примере мы будем использовать предварительно настроенную опцию.
Чтобы инициировать этот процесс, щелкните правой кнопкой мыши на Thread Group, после чего откроется раскрывающееся окно. Выберите «Добавить», затем «Сэмплер». Появится список параметров сэмплера. Для тестирования API выберите HTTP-запрос, открыв окно конфигурации, в котором вы можете присвоить имя тесту и настроить параметры для теста REST API. Стоит отметить, что окно HTTP-запроса разделено на разделы Basic и Advanced. В этом тесте мы сконцентрируемся на основных настройках. Для настройки доступны различные поля, включая протокол, имя сервера или IP-адрес, номер порта, HTTP-запрос (GET/POST/HEAD/PUT/DELETE и т. д.), параметры и многое другое.
Для начала введите URL-адрес API в поле Server Name или IP (просто доменное имя) вместе с соответствующим протоколом, а в поле Path добавьте путь к API.
Если это запрос GET, выберите GET из списка HTTP-запросов.
Если у вас есть определенные параметры, такие как определенная страница, вы можете добавить эту часть URL в поле Параметры.
Вы также можете включить его в поле «Путь», однако, добавив его в поле «Параметры», вы получите дополнительные параметры поля, такие как «URL-кодировка?», «Тип контента» и «Включить равно?»
Для некоторых запросов необходимо включать заголовки запросов. Для этого перейдите к HTTP-запросу в окне План тестирования. Щелчок правой кнопкой мыши откроет выпадающее меню; выберите «Добавить», затем «Элемент конфигурации». Это действие открывает доступные опции. В этом случае выберите HTTP Header Manager. Последующее окно HTTP Header Manager позволяет вводить заголовки API. После настройки параметров переходите к следующему шагу.
Шаг 4: Добавьте слушателей
Чтобы включить прослушивателей, просто щелкните правой кнопкой мыши группу потоков, выберите «Добавить», а затем «Прослушиватель». Это действие вызывает раскрывающееся меню, предлагающее более 15 вариантов на выбор. Популярными вариантами являются «Просмотреть дерево результатов» и «Просмотреть результаты в таблице». Важно отметить, что прослушиватели, предлагающие графическое представление, такие как дерево результатов просмотра, могут потреблять больше памяти и ЦП. После добавления прослушивателей сохраните план тестирования.
Шаг 5: Запустите тест и просмотрите результаты
Настроив и сохранив сведения и параметры нагрузочного теста, запустите его, нажав кнопку «Выполнить» на панели инструментов. В окне отобразятся результаты выборки, представляющие различные сведения, данные и метрики, такие как задержка, коды ответов, время подключения и т. д., относящиеся к тесту REST API.
Тестирование SOAP API с помощью JMeter
SOAP (Simple Object Access Protocol) отличается от REST API тем, что работает по собственному протоколу. При нагрузочном тестировании API SOAP возникают определенные соображения, включая безопасность и соответствие требованиям, требования к пропускной способности (API SOAP обычно требуют больше ресурсов) и функциональные аспекты, такие как логика повторных попыток, которая отсутствует в REST API.
Шаг 1: Создание плана нагрузочного тестирования
JMeter предлагает ряд шаблонов планов тестирования, доступных через меню или значок шаблонов на главной панели инструментов. Один из доступных вариантов — «Создание плана тестирования веб-службы SOAP». При выборе этого параметра будет создан и открыт соответствующий план тестирования. Поскольку это шаблон, некоторые поля будут содержать значения-заполнители, которые потребуют ввода соответствующих данных и информации.
Шаг 2: Ввод данных
Аналогично тому, что мы обсуждали в настройке REST API, для тестирования SOAP API необходимо ввести количество пользователей (потоков), период наращивания и циклы (тестовые итерации).
В подгруппе основной группы потоков вы можете получить доступ к настройкам HTTP-запроса, похожим на настройку REST API, которую мы рассматривали ранее. Однако макет этого раздела отличается, по умолчанию отображается тело запроса SOAP API. Этот раздел также включает подразделы для диспетчера заголовков HTTP и утверждений ответов. Как и в случае с конфигурацией REST API, вы можете включить дополнительные элементы конфигурации, такие как диспетчер авторизации HTTP, если необходимо включить определенные сведения об авторизации.
Шаг 3: Добавьте HTTP Request Sampler
Для нагрузочного теста SOAP API необходимо добавить HTTP Request Sampler. В этом окне вам нужно будет ввести соответствующие сведения, включая имя сервера или IP-адрес, путь, HTTP-запрос, номер порта и основные данные запроса SOAP.
Шаг 4: Добавьте слушателей
После настройки плана тестирования необходимо добавить прослушивателей, которые будут отображать результаты теста. Опять же, вы можете добавить столько слушателей, сколько вам нравится, и по мере необходимости для теста нагрузки SOAP API.
Шаг 5: Запустите тест
После настройки конфигурации и параметров плана тестирования можно наконец запустить нагрузочный тест SOAP API и просмотреть результаты после его завершения.
заключение
К этому моменту вы уже должны знать, что такое JMeter, как выполнять нагрузочное тестирование JMeter и как выполнять нагрузочные тесты для API с помощью JMeter. Как видите, настройка нагрузочных тестов с помощью JMeter включает в себя множество различных шагов и параметров конфигурации, что приравнивается к большому количеству времени, затрачиваемого на настройку тестов, а не на их выполнение. Несмотря на то, что JMeter является бесплатным решением с открытым исходным кодом, вам, возможно, придется поискать другие инструменты нагрузочного тестирования, которые предоставляют лучшие функции и соответствуют потребностям вашего бизнеса.
LoadView: лучшая альтернатива JMeter
LoadView выделяется как одно из лучших платных решений для тестирования производительности, доступных на сегодняшний день, предлагая множество функций. К ним относятся регистратор сценариев «укажи и щелкни», доступ к глобальной сети серверов инжекторов нагрузки и возможность настройки различных сценариев кривых нагрузки для повышения гибкости тестирования. В отличие от JMeter, LoadView не требует дополнительной инфраструктуры или соображений, так как все управляется без проблем. В отличие от JMeter, который ограничивается нагрузочными тестами на уровне протокола, LoadView использует реальные браузеры, что позволяет оценить фактическую производительность критически важных сайтов, приложений и API. Кроме того, LoadView предоставляет несколько опций, таких как добавление статических IP-адресов прокси-сервера в белый список или использование локального агента, что позволяет тестировать приложения за брандмауэром и обеспечивает большую гибкость при тестировании производительности.
LoadView предоставляет удобные отчеты о производительности и панели мониторинга, предлагая четкое представление о факторах, способствующих неоптимальной производительности. Кроме того, он включает в себя справочное видео для тестов веб-страниц и веб-приложений, что позволяет напрямую сравнивать их с отчетами для визуализации точки зрения пользователя. LoadView предоставляет гибкие ежемесячные и годовые планы, сопровождаемые поддержкой 24×7 для всех клиентов, независимо от выбранного ими плана, что отличает его от некоторых других инструментов на рынке.
Следующий уровень
Испытать непревзойденные функции с безграничной масштабируемостью. Ни кредитной карты, ни договора.