Нагрузочное тестирование с JMeter
Apache JMeter — это инструмент для проведения нагрузочного тестирования, представляющий собой десктопное приложение с открытым исходным кодом на базе Java. JMeter позволяет определить, может ли тестируемое веб-приложение удовлетворять требованиям высокой нагрузки или нет. Он также помогает проанализировать работу всего сервера под высокой нагрузкой.
Тестирование производительности приложения с JMeter
JMeter помогает тестировать как статические, так и динамические ресурсы, помогает обнаружить пользователей, одновременно присутствующих на сайте, и включает визуальные инструменты для предоставления аналитики. Тестирование производительности веб-приложений с JMeter включает в себя нагрузочные тесты и стресс-тесты.
Этот инструмент предлагает следующие преимущества при тестировании производительности:
-
JMeter можно использовать для тестирования производительности как статических ресурсов, таких как JavaScript и HTML, так и динамических ресурсов, таких как JSP, сервлеты и AJAX.
-
С помощью JMeter можно определить максимальное количество пользователей в единицу времени, которое может выдержать тестируемый сайт.
-
JMeter предоставляет разнообразные визуальные отчеты проводимого анализа производительности.
Тестирование производительности с JMeter включает в себя:
-
Нагрузочное тестирование: моделирование ожидаемого использования веб-приложения путем имитации одновременного доступа множества пользователей.
-
Стресс-тестирование: каждый веб-сервер имеет предел максимальной нагрузки. Когда нагрузка превышает предел, веб-сервер начинает отвечать медленно и выдавать ошибки. Цель стресс-тестирования — определить максимальную нагрузку, которую может выдержать веб-сервер.
На рисунке ниже показано, как JMeter во время нагрузочного тестирования имитирует высокую нагрузку:
Создание плана тестирования производительности в JMeter
В этом руководстве мы проводим анализ производительности Google.com для 1000 пользователей с использованием различных инструментов тестирования производительности. Наша цель — убедиться, что сайт может справиться с нагрузкой и обеспечить непрерывный и беспроблемный пользовательский опыт.
Перед тестированием производительности веб-приложения мы должны определить:
-
Нормальную нагрузку: среднее количество пользователей, посещающих сайт.
-
Большую нагрузку: максимальное количество пользователей, посещающих сайт.
-
Цель проводимого тестирования.
Вот дорожная карта этого практического примера
Шаг 1) Добавить Thread Group (группа потоков)
-
Запустите JMeter
-
Выберите Test Plan (План теста)
-
Добавить Thread Group
Щелкните правой кнопкой мыши на «Test Plan» и добавьте новую группу потоков: Add -> Threads (Users) (Потоки (Пользователи)) -> Thread Group
На панели управления Thread Group введите Thread Properties (Свойства потока) следующим образом:
-
Number of Threads (Количество потоков): 100 (Количество пользователей, подключенных к веб-сайту: 100)
-
Loop Count (Количество итераций): 10 (Количество раз выполнения тестирования)
-

Performance Testing using Jmeter Ramp-Up Period указывает JMeter, какую задержку перед запуском следующего пользователя нужно сделать. Например, если у нас 100 пользователей и период Ramp-Up 100 секунд, то задержка между запуском пользователей составит 1 секунду (100 секунд /100 пользователей).
Шаг 2) Добавление элементов JMeter
Теперь мы определяем, какие элементы JMeter будут в этом тесте. Этими элементами являются
-

Performance Testing using Jmeter В панели управления HTTP Request Defaults введите адрес тестируемого веб-сайта (http://www.google.com).
Performance Testing using Jmeter -
HTTP Request (HTTP-запрос)
Щелкните правой кнопкой мыши на Thread Group и выберите: Add -> Sampler (

Performance Testing using Jmeter В панели управления HTTP-запросами (HTTP Request) поле Path указывает, какой URL-запрос (URL request) вы хотите отправить на сервер Google.
Performance Testing using Jmeter Например, если вы введете «calendar» в поле Path, JMeter создаст URL-запрос http://www.google.com/calendar к серверу Google.
Performance Testing using Jmeter Если оставить поле Path пустым, JMeter создаст URL-запрос http://www.google.com на сервер Google.
В этом тесте оставляем поле Path пустым, чтобы JMeter создал URL-запрос http://www.google.com на сервер Google.
Шаг 3) Добавление Graph Result (Графические результаты)
JMeter может показать результат теста в формате графика. Щелкните правой кнопкой мыши на Test Plan (План тестирования), Add (Добавить) -> Listener (Слушатель) -> Graph Results
Performance Testing using Jmeter Шаг 4) Запустите тест и получите результат тестирования
Нажмите кнопку Run (Ctrl + R) на панели инструментов, чтобы запустить процесс тестирования. Результат тестирования будет показан на графике в режиме реального времени. На рисунке ниже представлен график плана тестирования, в котором мы смоделировали 100 пользователей, зашедших на сайт www.google.com.
Performance Testing using Jmeter В нижней части рисунка приведена следующая статистика, представленная в цветах:
-
Черный: Общее текущее количество отправленных сэмплов.
-
Синий: Текущее среднее значение всех отправленных сэмплов.
-
Красный: Текущее стандартное отклонение (Deviation).
-
Зеленый: Пропускная способность (Throughput), которая представляет собой количество запросов в минуту, обработанных сервером.
Проанализируем производительность сервера Google на рисунке ниже.
Performance Testing using Jmeter Чтобы проанализировать производительность тестируемого веб-сервера, необходимо сосредоточиться на 2 параметрах:
-
Пропускная способность (Throughput)
-
Отклонение/погрешность (Deviation)
Пропускная способность является наиболее важным параметром. Она отражает способность сервера справляться с большой нагрузкой. Чем выше пропускная способность, тем выше производительность сервера.
В данном тесте пропускная способность сервера Google составляет 1 491,193 в минуту. Это означает, что сервер Google может обрабатывать 1 491,193 запросов в минуту. Это довольно высокое значение, поэтому можно сделать вывод, что у сервера Google хорошая производительность.
Отклонение показано красным цветом — оно указывает на отклонение от среднего значения. Чем меньше, тем лучше.
Давайте сравним производительность сервера Google с другими веб-серверами. Вот результат тестирования производительности сайта http://www.yahoo.com/ (вы можете выбрать другие сайты)
Performance Testing using Jmeter Пропускная способность тестируемого сайта http://www.yahoo.com составляет 867,326 в минуту. Это означает, что данный сервер обрабатывает 867,326 запросов в минуту, что ниже, чем у Google.
Отклонение составляет 2689, что намного больше, чем у Google (577). Таким образом, мы можем определить, что производительность этого сайта меньше, чем у сервера Google.
Примечание: Приведенные выше значения зависят от нескольких факторов, таких как текущая загрузка сервера Google, скорость интернета, мощность процессора и т.д. Следовательно, очень маловероятно, что вы получите те же результаты, что и выше. Поэтому не паникуйте! Если вы хотите понять, как нагрузка на сервер влияет на производительность и как ее проверить, вам может быть полезно это руководство по нагрузочному тестированию.
Устранение ошибок:
Если вы столкнулись с проблемой при выполнении вышеописанного сценария, сделайте следующее:
-
Проверьте, подключены ли вы к интернету через прокси-сервер. Если да, удалите прокси.
-
Откройте новый экземпляр Jmeter.
-
Откройте PerformanceTestPlan.jmx в Jmeter
-
Дважды щелкните на Thread Group -> Graph Result
-
Запустите тест
Материал подготовлен в рамках курса «Нагрузочное тестирование».
-
-
ссылка на оригинал статьи https://habr.com/ru/companies/otus/articles/746504/



Добавить комментарий