Содержание
При упоминании нагрузочного тестирования веб-сайтов/сервисов и баз данных, первым приходящим в голову инструментарием является JMeter. Его авторитетность не подвергается сомнению. JMeter — один из известнейших и старейших инструментов. Грубо говоря, его можно назвать стандартом в сфере нагрузочного тестирования, на который следует ориентироваться разработчикам.
На заметку
JMeter выступает в качестве базиса для такого инструмента, как Яндекс.Танк. Однако его сложно назвать лучшим выбором для функционального тестирования веб-интерфейсов. JMeter хорош в другом. В частности, основными направлениями использования этого инструмента является нагрузочное и стресс-тестирование. При этом JMeter может работать с HTTP, HTTPS, SOAP, FTP, SMTP, POP3, IMAP, LDAP и базами данных.
В настоящее время выбор инструментов для нагрузочного тестирования достаточно широк. Вы можете использовать, как “опенсорсные”, так и “проприетарные” проекты. В этой связи во главу угла ставится правило выбора инструмента под конкретную задачу. Мы предлагаем рассмотреть основные преимущества JMeter.
Преимущества инструмента…
- JMeter является кроссплатформенным инструментом. Для его работы необходимо лишь наличие Java (JRE) на хосте. Таким образом, вы можете работать, как с локальным экземпляром, так и с экземпляром, установленным на сервере. Далеко не каждый инструмент может этим похвастаться.
- JMeter — это проект с открытым кодом. Его развивает активное сообщество пользователей. Отмечаем: отсутствие ограничений в плане модификации и создания новых плагинов.
- JMeter распространяется под Apache License 2.0, что позволяет использовать инструмент практически в любых целях.
- Простота разворачивания и удобство в использовании. Для того чтобы развернуть JMeter локально, достаточно скачать и распаковать архив, расположенный на официальном сайте. Если же у вас установлена Java (JRE), остается лишь запустить jmeter.jar. Удобство в использовании, прежде всего, заключается в интуитивно понятном интерфейсе. Инструмент прост и одновременно эффективен. Разнообразные варианты использования JMeter подробно описывают многочисленные материалы на официальном сайте продукта и в интернете в целом. Также нельзя не отметить, что инструмент позволяет создавать тестовые сценарии с самописным кодом (Java, BSF, JSR223) или без использования кода, обходясь набором готовых компонентов.
- Возможность работать, как с UI, так и без него. Выполнение тестовых сценариев в командной строке позволяет полноценно интегрировать их в сценарии CI инструментов.
- Широкий выбор готовых компонентов. В JMeter есть все. Во всяком случае — практически все, что нужно для тестирования. В противном случае под конкретную задачу всегда можно написать новый компонент.
- Отдельным пунктом следует отметить инструментарий сбора и отображения результатов — так называемые отчеты. Они весьма разнообразны и позволяют получить максимально подробную и разностороннюю информацию.Собранные результаты можно сохранять в различных форматах, например: CSV, XML, HTML.
- JMeter умеет кластеризоваться, т.е. вы можете создать ферму нагрузочных машин, управляемых как единое целое.
- JMeter позволяет записывать пользовательские сценарии и последовательность посещаемых страниц. В результате на их базе строится тестовый план.
- Инструмент поддерживает переопределение базового Java семплера (речь идет об интерфейсе org.apache.jmeter.protocol.java.sampler.JavaSamplerClient). Как правило, это используется для собственной реализации интерфейса, что позволяет применять JMeter для увеличения или уменьшения количества потоков, а также изменения входного контроля параметров и сбора данных.
- Поддержка регулярных выражений.
- Работа со структурой страниц. JMeter поддерживает JQuery селекторы и XPath язык запросов.
- Тестовые скрипты. Исходный код JMeter очень удобно хранить в репозитории, управляя его изменениями.
- Возможность нагрузочного тестирования для почтовых серверов.
- Возможность нагрузочного тестирования баз данных, включая базы данных NoSQL (например MongoDB).
…и недостатки
Справедливости ради, стоит отметить и недостатки. Их немного, но они все-таки имеют место:
- Java среда. Утечки памяти и некоторая прожорливость в этом плане дают первый минус.
- Недостатком имитации поведения пользователей в JMeter является отсутствие поддержки случайных интервалов времени между запросами и независимых интервалов ожидания (think time) для различных URL.
- Некоторые пользователи отмечают проблемы с официальной документацией. Однако по нашему мнению этот момент заслуживает дополнительных комментариев.
Будем рады услышать ваше мнение по поводу преимуществ и недостатков JMeter в комментариях. Следите за нашим блогом.