Apache JMeter

Apache JMeter — кроссплатформенное приложение с открытым исходным кодом для нагрузочного и функционального тестирования, изначально разработанное для оценки производительности веб-приложений, а сегодня поддерживающее широкий набор протоколов и сервисов. Проект, первый выпуск которого состоялся 15 декабря 1998 года[1], поддерживается Apache Software Foundation, а его первоначальный автор — Стефано Маццокки[2]. Написанный целиком на языке Java, JMeter запускается на любой операционной системе, для которой доступна совместимая реализация JVM[3]. Программа распространяется по лицензии Apache License 2.0 и бесплатна для коммерческого и некоммерческого использования[4]. Проект находится в стадии активной разработки[5]; последняя стабильная версия — 5.6.3 (выпущена 9 января 2024 года)[6], а исходный код размещён в репозитории на GitHub[7].

Общие сведения
Apache JMeter
Тип инструмент нагрузочного тестирования
Автор Стефано Маццокки
Разработчик Apache Software Foundation
Написана на Java
Интерфейс графический интерфейс, командная строка
Операционные системы Windows, Linux, macOS и другие ОС с поддержкой JVM
Языки интерфейса многоязычный
Первый выпуск 15 декабря 1998
Последняя версия 5.6.3 (9 января 2024)
Тестовая версия Ночные сборки
Репозиторий github.com/apache/jmeter
Состояние активно разрабатывается и обновляется
Лицензия Apache License 2.0 — бесплатное программное обеспечение с открытым исходным кодом
Сайт jmeter.apache.org

История

Первый выпуск JMeter состоялся 15 декабря 1998 года. Изначально инструмент был разработан для тестирования производительности Apache JServ, предшественника Tomcat[8]. Со временем проект был переработан, получил улучшенный графический интерфейс и возможности для функционального тестирования[8]. В ноябре 2011 года JMeter стал проектом верхнего уровня в Apache Software Foundation[8].

Проект находится в состоянии активной разработки и поддерживается фондом и сообществом[9]. Модель разработки включает несколько типов публичных сборок. Помимо стабильных релизов, перед выпуском новой версии сообществу для финального тестирования предлагаются кандидаты в релизы (Release Candidates), которые являются ближайшим аналогом бета-версий[10]. Также существуют «ночные сборки» (nightly builds) — нестабильные, автоматически создаваемые версии из последней кодовой базы[11]. Они не имеют официальной поддержки и предназначены для разработчиков и энтузиастов, желающих протестировать новейшие функции и помочь в поиске ошибок до их включения в стабильный релиз[11].

Функции

Apache JMeter предоставляет широкий набор возможностей для тестирования производительности, а также анализа функционального поведения сервисов:

  • поддержка множества протоколов: HTTP/S, SOAP, REST, JDBC, LDAP, JMS, SMTP, POP3, IMAP, FTP, TCP, а также MongoDB (через встроенный MongoDB Sampler либо посредством JSR223 Sampler с MongoDB Java Driver);
  • модульная архитектура, ядром которой является совокупность компонентов плана тестирования (Test Plan). Элементы, такие как Thread Groups (группы потоков), Samplers (сэмплеры), Logic Controllers (логические контроллеры) и Listeners (слушатели), формируют «движок» выполнения теста[12][13];
  • распределённое тестирование по схеме «мастер — несколько слейвов», что позволяет генерировать нагрузку с нескольких удалённых узлов и масштабировать число виртуальных пользователей;
  • несколько режимов работы: графический интерфейс (GUI Mode) для создания и отладки сценариев, режим командной строки (CLI Mode) для запуска нагрузочных тестов с минимальным потреблением ресурсов, а также серверный режим (Server Mode) для распределённого тестирования[14][15];
  • чтение и запись файлов различных форматов. JMeter использует JMX (XML) для сохранения планов тестирования. Для параметризации тестов могут считываться данные из CSV и текстовых файлов[16]. Результаты тестов сохраняются в файлы JTL (в формате CSV или XML), на основе которых могут генерироваться детализированные HTML-отчёты[17]. Также поддерживается работа с JSON и XML в телах запросов и ответов[18];
  • визуализация результатов в реальном времени при помощи слушателей («Summary Report», «Aggregate Report», «View Results Tree» и др.)[19].

Системные требования и платформы

Apache JMeter является кроссплатформенным программным обеспечением, поскольку полностью написан на языке Java и может работать на любой операционной системе и, соответственно, на любой аппаратной платформе, для которой существует совместимая реализация JVM[20]. Основным требованием для работы актуальных версий JMeter является наличие установленной Java 8 или выше[21]. Программа успешно функционирует на различных ОС, включая Linux, Windows и macOS[22]. Таким образом, JMeter не имеет прямых требований к конкретной архитектуре процессора (например, x86, ARM) — если на аппаратной платформе можно запустить совместимую версию Java, то на ней будет работать и JMeter.

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

  • Процессор (CPU): Рекомендуются многоядерные процессоры, так как JMeter активно использует многопоточность для симуляции пользователей[22].
  • Оперативная память (RAM): Объём памяти является критическим параметром. По умолчанию JMeter запускается с ограничением heap-памяти в 1 ГБ, чего может быть недостаточно для серьёзных тестов[21]. Для симуляции нагрузки в несколько тысяч пользователей может потребоваться значительно больший объём ОЗУ[22].
  • Жёсткий диск (Disk): JMeter не создаёт высокой нагрузки на диск, однако использование SSD-накопителя может ускорить запуск и работу программы[22].
  • Сеть (Network): Для генерации высокой нагрузки рекомендуется использовать сетевое подключение с высокой пропускной способностью, например, 1 Гбит/с[22].

Примеры использования

Наиболее типовой сценарий работы с Apache JMeter — нагрузочное тестирование веб-приложения. Ниже приведён упрощённый рабочий процесс, основанный на официальной документации и практических руководствах: 1. Создание тестового плана. Пользователь формирует структуру Test Plan, добавляя к нему Thread Group, HTTP Request Defaults и другие элементы конфигурации[23]. 2. Настройка Thread Group. Параметры Number of Threads, Ramp-up Period и Loop Count задают количество виртуальных пользователей, скорость их запуска и число проходов сценария соответственно[23]. 3. Добавление HTTP Request Sampler’ов. Для каждой операции приложения указывается метод (GET, POST и др.), URL, заголовки и параметры запроса[24]. 4. Применение таймеров (например, Constant Timer либо Uniform Random Timer) для эмуляции реального «think time» пользователя[25]. 5. Запуск теста в CLI-режиме и последующая генерация интерактивного HTML-отчёта, содержащего сводную статистику, графики производительности и анализ ошибок[4]. Для автоматической записи пользовательских сценариев JMeter предоставляет HTTP(S) Test Script Recorder, работающий как прокси-сервер. Инструмент перехватывает HTTP/HTTPS-трафик, выполняемый в браузере, и создаёт соответствующие Sampler’ы в контроллере Recording[26]. После окончания записи лишние запросы (сторонние ресурсы, служебные файлы) можно удалить.

Примечания

  1. History of Previous Releases. Apache JMeter. Дата обращения: 4 ноября 2025. Архивировано 9 ноября 2011 года.
  2. Apache JMeter — Overview (англ.). PerfMatrix. Дата обращения: 4 ноября 2025. Архивировано 15 июня 2025 года.
  3. JMeter and Operating Systems Tested (англ.). Apache Wiki. Дата обращения: 4 ноября 2025. Архивировано 15 июля 2025 года.
  4. 1 2 Introduction to JMeter. Guru99. Дата обращения: 4 ноября 2025. Архивировано из оригинала 23 июня 2025 года.
  5. Changes. Apache JMeter. Дата обращения: 4 ноября 2025. Архивировано 10 ноября 2011 года.
  6. Releases · apache/jmeter. GitHub. Дата обращения: 4 ноября 2025. Архивировано 12 июня 2025 года.
  7. apache/jmeter. GitHub. Дата обращения: 4 ноября 2025. Архивировано 8 октября 2025 года.
  8. 1 2 3 History and Future. Apache JMeter. Дата обращения: 4 ноября 2025. Архивировано 26 февраля 2024 года.
  9. JMeter Load Testing: The Ultimate Guide for 2025. Devzery. Дата обращения: 4 ноября 2025. Архивировано 7 сентября 2025 года.
  10. Apache JMeter - Mailing Lists. Apache JMeter. Дата обращения: 4 ноября 2025. Архивировано 9 июля 2025 года.
  11. 1 2 Nightly Builds. Apache JMeter. Дата обращения: 4 ноября 2025. Архивировано 10 ноября 2011 года.
  12. Основы JMeter: компоненты тест-плана. Perflib. Дата обращения: 4 ноября 2025.
  13. JMeter: архитектура и ключевые компоненты. Habr. Дата обращения: 4 ноября 2025.
  14. How to Run JMeter from Command Line (CLI) (англ.). BrowserStack. Дата обращения: 4 ноября 2025. Архивировано 18 июня 2025 года.
  15. JMeter Launching Modes (англ.). PerfMatrix. Дата обращения: 4 ноября 2025. Архивировано 7 августа 2025 года.
  16. JMeter's CSV Data Set Config: The Complete Guide (англ.). BlazeMeter. Дата обращения: 17 января 2026. Архивировано из оригинала 9 августа 2025 года.
  17. Generating HTML Report (англ.). Apache JMeter. Дата обращения: 4 ноября 2025. Архивировано 8 октября 2025 года.
  18. How to Use the JSON Plugin in JMeter (англ.). DZone. Дата обращения: 4 ноября 2025. Архивировано 26 апреля 2025 года.
  19. Building a Web Test Plan (англ.). Apache JMeter Documentation. Дата обращения: 4 ноября 2025. Архивировано 1 сентября 2025 года.
  20. Apache JMeter - Apache JMeter™. jmeter.apache.org. Дата обращения: 4 ноября 2025.
  21. 1 2 Getting Started. Apache JMeter. Дата обращения: 4 ноября 2025. Архивировано 8 октября 2025 года.
  22. 1 2 3 4 5 6 JMeter Tutorial For Beginners. OctoPerf. Дата обращения: 4 ноября 2025. Архивировано 7 августа 2024 года.
  23. 1 2 Creating Your First Test Plan in JMeter (англ.). AutomateNow. Дата обращения: 20 июня 2025. Архивировано 26 сентября 2023 года.
  24. HTTP Request Sampler in JMeter (англ.). CodeKru. Дата обращения: 20 июня 2025. Архивировано 6 сентября 2025 года.
  25. JMeter Timers — A Comprehensive Guide (англ.). AutomateNow. Дата обращения: 20 июня 2025. Архивировано 24 мая 2024 года.
  26. Using HTTP(S) Test Script Recorder in JMeter (англ.). Medium. Дата обращения: 20 июня 2025.