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