Ответ на вопрос
JMeter
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). Он позволяет записывать сессии работы с веб-приложениями через браузер: запросы перехватываются прокси-рекордером и автоматически добавляются в структуру сценария с возможностью повторной проигровки. Это существенно ускоряет подготовку сценариев нагрузочного тестирования.
Примечания
- ↑ https://projects.apache.org/json/projects/jmeter.json
- ↑ ТОП инструментов для нагрузочного тестирования. ibs-qa.ru. Дата обращения: 31 марта 2026.
- ↑ Apache JMeter - Market Share, Competitor Insights in Performance And Load Testing (неопр.). 6sense. Дата обращения: 31 марта 2026.
- ↑ Jmeter vs Loadrunner: Which Tool Is Better for Load Testing Services (амер. англ.). pflb.us. PFLB (21 февраля 2020). Дата обращения: 26 июня 2024. Архивировано 17 мая 2025 года.
Литература
- Master JMeter from Load Testing to DevOps, Antonio Gomes Rodrigues, Bruno Demion (Milamber) и Philippe Mouawad, октябрь 2018
- Maîtriser JMeter : Du Test de charge à Devops, Антонио Гомес Родригес, Бруно Демиан (Milamber) и Филипп Муавад, ноябрь 2015 (фр.)
- JMeter Cookbook, Баё Эринле, октябрь 2014
- Performance Testing with JMeter, Баё Эринле, июль 2013
- Apache JMeter, Эмили Х. Халили, июнь 2008