JMeter

Pause

JMeter — программное обеспечение с открытым исходным кодом для проведения нагрузочного и функционального тестирования приложений и серверов по различным протоколам[2][3]. Разрабатывается фондом Apache Software Foundation.

JMeter написан на Java (а также частично на Kotlin с версии 5.5), благодаря чему может использоваться на любой платформе c поддержкой JVM. Программа позволяет моделировать поведение множества одновременных пользователей при работе с веб-приложениями. Со временем JMeter получил поддержку других типов приложений: FTP-серверов, веб-сервисов, баз данных по JDBC, TCP/IP-серверов, LDAP и других.

JMeter измеряет время отклика для каждой операции и формирует статистику.

Общие сведения
JMeter
Разработчик Apache Software Foundation
Написана на Java, Kotlin (с версии 5.5)
Интерфейс графический, командная строка
Операционные системы кроссплатформенный (любой системы, поддерживающей JVM)
Первый выпуск 17 февраля 2006[1]
Аппаратная платформа Java Virtual Machine
Последняя версия 5.6.3 (7 января 2024)
Репозиторий github.com/apache/jmeter
Лицензия Apache License 2.0
Сайт jmeter.apache.org

Возможности

JMeter предоставляет базовые функции для инструментов такого класса, включая:

  • использование внешних наборов данных (CSV-файлов);
  • запись и воспроизведение веб-сценариев;
  • создание «динамических» сценариев, учитывающих ответы серверов;
  • обнаружение ошибок;
  • расширяемость;
  • управление cookie и перезаписью URL;
  • запуск тестов на нескольких инстанциях JMeter;
  • с версии 2.4 поддерживает IP-спуфинг (эмуляция нескольких IP-адресов посредством HTTPClient API версии 4 и выше).

Доступны предусловные и постусловные процессоры, позволяющие динамически модифицировать запросы либо извлекать данные из результатов теста. Результаты можно анализировать различными способами, а также сохранять в формате XML или CSV.

JMeter также поддерживает функциональное тестирование, что даёт возможность автоматизированной проверки бизнес-логики приложений.

Основные возможности

Инструмент охватывает широкий спектр нагрузочного тестирования: возможно тестирование SQL-скриптов, HTTP/SOAP/REST/EJB-запросов, вызовов Java-классов и других сценариев. Графический интерфейс JMeter поддерживает многопоточность, создание циклов и настраиваемых контроллеров.

К числу основных функций относятся:

  • нагрузочное тестирование;
  • тестирование на надёжность (имитация различной интенсивности трафика);
  • тесты «на разрыв»;
  • построение статистических графиков и текстовых отчётов.

JMeter является универсальным инструментом тестирования[4] и не ограничен единственным видом тестов — разработчик сценария определяет их структуру и типы. Возможно также сочетание различных протоколов в одном тесте (например, http и ftp). Функциональность JMeter расширяется через плагины, которые позволяют добавлять новые типы запросов и обработчиков результатов.

Базовые компоненты Apache JMeter

  • План теста — место для определения общего сценария тестирования.
  • Группа потоков — настройка параметров моделирования нагрузки:
  • Число потоков — количество симулируемых пользователей.
    • Время разгона — промежуток подключения пользователей.
    • Количество итераций — число повторений, которое выполнит каждый поток.
      • Вариант «бесконечно» — зацикливание до ручной остановки или в течение заданного периода.
  • Менеджер SSL — управление ключами для аутентификации по сертификату SSL.

В состав JMeter входят:

  • Семплеры — запросы, отправляемые на сервер/приложение для тестирования производительности. Поддерживаются: FTP, HTTP, JDBC, JMS, Java-объекты, LDAP, SOAP/XML-RPC/REST-JSON и WebService (SOAP).
  • Контроллеры — настройка параметров теста и сценария:
    • Interleave/Random контроллеры — отправка запросов в случайном порядке.
    • Loop Controller — повтор многократных запросов к серверу.
    • Once Only Controller — выполнение операций ровно один раз вне зависимости от числа итераций.
    • Transaction Controller — агрегирование результатов (времени отклика) из группы запросов.
    • Записывающий контроллер — запись перехваченных HTTP-запросов через прокси-компонент.

JMeter поддерживает управление параметрами веб-сайтов и серверов (cookie, защищённые подключения). Для этого используются специальные компоненты:

  • HTTP, FTP, LDAP, JDBC и Java Request Defaults — определение параметров по умолчанию для всех запросов.
  • HTTP Authorization Manager — хранение учётных данных для защищённых сайтов.
  • HTTP Cookie Manager — сохранение, отправка и управление cookie.
  • HTTP Header Manager — добавление и изменение HTTP-заголовков в запросах.

Для задания паузы между запросами существуют таймеры:

  • Fixed Timer — постоянный интервал между запросами.
  • Gaussian Random Timer — случайная задержка в соответствии с гауссовским распределением.
  • Constant Throughput Timer — поддержание определённой частоты выполнения запросов.
  • Synchronizing Timer — ожидание определённого числа потоков для одновременного выполнения следующего шага.

Для анализа ответов серверов реализованы различные типы утверждений (assertions):

  • Response Assertion — проверка наличия текста или строки в ответе.
  • Duration Assertion — проверка, получено ли сообщение за заданное время.
  • Size Assertion — сравнение размера ответа (в байтах) с пороговым.
  • XML Assertion — валидация ответа как документа XML.
  • MD5 Assertion — сверка контрольной суммы MD5 ответа с эталонным значением.
  • JSON Assertion — проверка соответствия JSON-пути определённому значению.
  • XPath Assertion — проверка данных по заданному выражению XPath.

Для сбора и визуализации результатов в JMeter предусмотрены различные обработчики:

  • График результатов — визуализация времени отклика, средней, медианы, стандартного отклонения.
  • Монитор кривой (сплайн) — график времени отклика по сплайнам.
  • Assertion Results — текстовое представление статусов утверждений по всем запросам.
  • Почтовый визуализатор — автоматическая отправка писем администратору при массовых сбоях.
  • Дерево результатов — перечень совершённых запросов с их типом и форматированными/неформатированными ответами (XML, JSON, HTML, текст). Позволяет также выполнять быстрые проверки извлечения данных по JSON Path, регулярным выражениям, CSS Path или границам.
  • Таблица результатов — сводная таблица с описанием каждого запроса, времени отклика и статусов.
  • Сводный отчёт — агрегированная статистика по тестам.
  • Простой лисенер — экспорт результата в заданный файл.

В JMeter имеется отдельный компонент, не участвующий непосредственно в прогоне тестов, — HTTP(S) Test Script Recorder (прежнее название — HTTP Proxy Server). Он позволяет записывать сессии работы с веб-приложениями через браузер: запросы перехватываются прокси-рекордером и автоматически добавляются в структуру сценария с возможностью повторной проигровки. Это существенно ускоряет подготовку сценариев нагрузочного тестирования.

Примечания

  1. ↑ https://projects.apache.org/json/projects/jmeter.json
  2. ↑ ТОП инструментов для нагрузочного тестирования. ibs-qa.ru. Дата обращения: 31 марта 2026.
  3. ↑ Apache JMeter - Market Share, Competitor Insights in Performance And Load Testing (неопр.). 6sense. Дата обращения: 31 марта 2026.
  4. ↑ Jmeter vs Loadrunner: Which Tool Is Better for Load Testing Services (амер. англ.). pflb.us. PFLB (21 февраля 2020). Дата обращения: 26 июня 2024. Архивировано 17 мая 2025 года.
Pause