JMeter – это Java-приложение с открытым исходным кодом, предназначенное для проведения нагрузочного тестирования и измерения производительности программного обеспечения. Это независимый инструмент, который может проводить нагрузочное тестирование и тестирование производительности для разных типов серверов.
Тестирование производительности имеет решающее значение для определения того, будет ли тестируемое веб-приложение удовлетворять предъявляемым требованиям. С его помощью можно проанализировать общую производительность сервера при высокой нагрузке. JMeter может не только определить максимальное количество одновременных пользователей, с которыми может работать веб-сайт, но и предоставить различные графические анализы отчетов о производительности.
JMeter – один из самых популярных инструментов на рынке, используемых для тестирования производительности и нагрузки.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Установка:
Предварительные требования: Убедитесь, что Java Development Kit уже установлен. JMeter совместим с Java 8 или выше.
Скачайте JMeter: https://jmeter.apache.org/download_jmeter.cgi.
Запустите из папки /bin
с помощью терминала:
Для Mac: sh jmeter.sh
Для Windows: просто нажмите на файл jmeter.bat.
Как записать тест
Чтобы использовать рекордер, мы можем:
- Настроить параметры порта для браузера Firefox (Open/Network settings: Выберите ручную конфигурацию прокси и укажите номер порта, который вы указали в JMeter)
- Или напрямую использовать очень полезное расширение Blazemeter Chrome.
Существуют также другие сторонние инструменты, например Badboy Software(только для Windows), которые можно загрузить и использовать для записи. Рассмотрим краткую демонстрацию его использования.
Для того чтобы начать запись, нам нужно просто войти в систему.
После выполнения записи на веб-сайте ее необходимо сохранить в виде файла в формате .jmx, чтобы мы могли использовать его в JMeter.
Затем нам просто нужно открыть его с помощью JMeter, после чего нам будут показаны все элементы записи, такие как посещенные веб-страницы, все запросы и ответы. Нам не нужно вводить что-то вручную, группа потоков будет создана автоматически. Необходимо только задать количество потоков и слушателей (Listeners), чтобы увидеть и проанализировать результат.
Основная терминология в JMeter :
План тестирования описывает серию шагов, которые JMeter выполнит при запуске. Полный план тестирования состоит из одной или нескольких групп потоков, контроллеров логики, контроллеров генерации примеров, слушателей (Listeners), таймеров, утверждений и элементов конфигурации.
Группа потоков – это набор потоков, выполняющих один и тот же сценарий. Количество итераций задается в конфигурации.
Количество потоков (пользователей): количество пользователей, с которыми будет проводиться тестирование.
Период нарастания определяет количество времени, за которое все пользователи будут инициализированы, например, за 100 пользователей за 10 мс.
Счетчик циклов определяет, сколько раз будет выполняться группа потоков.
Сэмплеры указывают нам, какой тип запроса должен быть отправлен, например HTTP, HTTPS и т.д.
Период нарастания указывает JMeter, сколько времени нужно подождать перед запуском следующего пользователя. Например, если у нас 50 пользователей и период нарастания составляет 5 секунд, то задержка между запусками пользователей будет равна 0,1 секунды (5 секунд /50 пользователей). Другими словами, 50 пользователей будут запущены за 5 секунд. Если бы мы определили период нарастания, например, в 50 секунд, то интервал между пользователями составил бы 1 секунду.
Мы можем либо выбрать опцию “Счетчик циклов” как бесконечную и указать длительность (например, 30 секунд), либо задать число (например, 5 секунд) в качестве номера цикла, что означает, что процесс будет повторяться с заданным интервалом.
Как использовать утверждения в JMeter
В JMeter доступно множество утверждений, таких как утверждение сравнения, утверждение продолжительности, утверждение HTML, утверждение XML или утверждение размера. Как следует из названия, с их помощью мы можем выполнять базовые проверки ответа.
Чаще всего используется утверждение ответа. Мы можем утверждать заголовок ответа, заголовок запроса, URL и т.д. Например, мы можем проверить, равен ли код ответа 200.
Добавив результаты утверждений в качестве слушателя (Listener), мы можем легко отслеживать результаты.
Если произошел сбой утверждения, отобразится уведомление о том, что тест не пройден, с подробным объяснением.
Другим распространенным типом утверждений является утверждение размера. В примере ниже мы проверяем, может ли сервер обработать ответ размером не менее 3000 байт.
Таким же образом утверждение продолжительности показывает нам, равно ли время ответа для каждой конечной точки заданным миллисекундам. Утверждения HTML или XML также показывают нам, есть ли у нас корректный HTML или XML-ответ. Исходя из наших потребностей, мы можем использовать эти утверждения отдельно или вместе в одном запросе.
Listener в JMeter
Наиболее часто используемый вариант — «Просмотреть результаты в таблице», так что мы можем видеть весь результат и анализировать ответ.
Задержка – время получения первой части информации, т.е. первого байта данных.
Время подключения – время, необходимое для установления соединения с сервером.
Время выборки – время, необходимое для получения всех данных.
Образец – последовательность номеров образцов.
Байты – размер полученных данных.
Другой наиболее распространенный вариант — «Просмотр дерева результатов». Этот слушатель (Listener) не следует использовать, если мы планируем установить большую нагрузку при тестировании производительности, поскольку он занимает много памяти. Лучше использовать его в начале нашего нагрузочного теста, чтобы проверить, все ли работает нормально. Он показывает все детали, включая данные запроса и ответа.
Мы можем использовать сводный отчет, если хотим увидеть весь результат в виде одной строки для всех доступных образцов. В примере ниже представлены 3 образца, и мы можем увидеть общее накопление.
В столбце Average отображено среднее значение всех запросов (миллисекунды). В столбце Median мы видим, что половина запросов заняла больше этой миллисекунды (878 мс в примере выше для первого запроса). Точно так же 90%, 95%, 99% запросов заняли больше этой миллисекунды. В большинстве случаев 99 процентов будут равны максимальному значению, поскольку оно покрывает 99 % запроса. Количество запросов в секунду будет отображаться как Пропускная способность (столбец Throughput). Другими словами, во втором примере наш сервер способен обрабатывать 2,5 запроса в секунду.
Мы также можем увидеть вышеописанные детали в виде графика, используя Listener «Результаты графика».
Показатель пропускной способности, как объяснялось выше, отражает способность сервера справляться с большой нагрузкой. Чем больше пропускная способность, тем лучше производительность сервера. Красным цветом показано отклонение – оно указывает на отклонение от среднего значения. Чем этот показатель меньше, тем лучше. Как мы можем наблюдать, в начале теста пропускная способность и среднее значение имеют схожие значения – с течением времени среднее значение становится меньше, так как мы многократно попадаем на один и тот же запрос, а кэш развивается.
Как создать простой тест в JMeter
В целом, процесс очень прост. Поскольку на данный момент мы знаем основы, мы можем выполнять наши тесты, делать утверждения и с помощью слушателей (Listeners) анализировать ответы. Для создания теста необходимо выполнить несколько определенных шагов:
- Запустите JMeter.
- Создайте план тестирования.
- Создайте группу потоков.
- Добавьте сэмплер (Https).
- Добавьте Listeners.
- Запустите тест и проанализируйте результат.
После заполнения всех обязательных полей выше, все, что нам нужно сделать, это выполнить тесты и увидеть результаты.
Заключение
Как видно, это короткое руководство предназначено только для тех, кто только начал использовать JMeter в качестве инструмента тестирования производительности и/или нагрузочного тестирования. Благодаря вышеупомянутым основам вы действительно сможете справиться с большинством поставленных задач.
Удачного тестирования!
Перевод статьи «JMeter — Performance and Load Testing: Beginner’s Guide | Part I».
Пингбэк: Тест-кейсы для тестирования API