Инструменты для нагрузочного тестирования
Вступление
В наш век высоких скоростей, время самый ценный ресурс, так как в связи с развитием интернета, информации очень много и проанализировать её всю досконально просто невозможно. В связи с этим, особо остро стоит вопрос быстроты загрузки приложений, веб страниц, видео и прочего контента. Так же не мало важную роль играет работоспособность приложений и сайтов как таковых, так как резкий наплыв большого количества пользователей может привести к временному сбою сервисов, а иногда и к полной их остановке. Поэтому в IT компаниях пристальное внимание уделяется нагрузочному тестированию.
И первым помощником в тестировании нагрузки стали различные инструменты, которые помогают тестеру в его повседневной работе. В сегодняшней статье мы рассмотрим с вами основные.
JMeter
На первом месте конечно же многим хорошо известный JMeter. Это один из наиболее популярных и в то же время достаточно простых инструментов. JMeter бесплатный и опен-сорсный инструмент, с большим комьюнити и поддержкой. Он разработан на языке программирования Java и поддерживает тестирование нагрузки как веб приложений, так и различных сервисов бекенда, серверов баз данных и так далее. У JMeter есть своя среда разработки, где вы можете создать свой тест план тестирования нагрузки. Существует возможность взаимодействовать с Jenkins для непрерывной интеграции с разработкой. Вообще, несмотря на то что этот инструмент первоначально проектировался для нагрузочного тестирования, он довольно таки многофункциональный и может использоваться не только для нагрузки, но и для многих других задач, начиная от ручного тестирования и заканчивая средствами управления и мониторинга.
K6
Следующий по популярности идет инструмент K6 от разработчиков Grafana Labs. Здесь уже существует два варианта использования, это оупен-сорс для платформ Linux, MacOS, и Windows и платные варианты тестирования в облаке с возможностью попробовать эту функциональность на пятидесяти бесплатных тестах. Тесты пишутся с использованием языка программирования JavaScript. Тесты можно запускать из 21-й локации по всему миру, тем самым имитирую нагрузку из различных стран. У K6 так же существуют различные интеграции и расширения, что позволяет проводить различные виды тестирования и не ограничивается только нагрузкой.
Locust
Еще один инструмент для тестирования нагрузки это Locust. Все ваши тесты вы пишете на языке программирования Python, при этом не задействуется пользовательский интерфейс и XML. У Locust есть вэб-интерфейс, с помощью которого можно следить за ходом выполнения тестов и менять их по ходу дела. Locust создан в основном для тестирования нагрузки веб-сайтов и сервисов, но возможность расширения его функциональности так же присутствует, в силу его небольшого размера и гибкости.
Gatling
Инструмент для тестирования нагрузки Gatling спроектирован для непрерывного нагрузочного тестирования и интегрируется с CI/CD через Jenkins. У Gatling есть два варианта, бесплатный и различные платные планы для крупных компаний с триал периодами. Они разработали собственный предметно-ориентированный язык (Domain Specific Language, DSL) для того, чтобы можно было при создании тестов использовать любой язык программирования.
Tsung
Tsung - это еще один бесплатный инструмент распределенного нагрузочного тестирования с открытым исходным кодом, поддерживающий множество различных протоколов. Он был написан на языке Erlang, разработанном компанией Ericsson, которая ассоциировалась когда-то с надежностью и отказоустойчивостью. Его можно использовать для нагрузки на серверы HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, MQTT и Jabber/XMPP. Он может быть распределен на несколько клиентских машин и способен одновременно симулировать сотни тысяч виртуальных пользователей. Tsung имеет вэб-интерфейс для просмотра статистики в режиме реального времени во время тестов и командную строку для интеграции в CI/CD.
Fortio
Достаточно молодой, но перспективный инструмент для нагрузочного тестирования Fortio. Он очень маленький, с минимальными зависимостями и не требует много ресурсов (docker имидж занимает всего 4 мегабайта). По сути, это встраиваемая библиотека языка программирования Go, а также инструмент командной строки и серверный процесс. Но он так же имеет не сложный вэб-интерфейс и REST API для запуска и просмотра графического представления результатов.
Заключение
Конечно, рассмотрение всех существующих инструментов нагрузочного тестирования может растянуться на несколько страниц и, честно говоря, это не имеет большого смысла, так как большинство инструментов платные. Безусловно во многих есть пробные версии и режимы, но не экономят на нагрузке в основном только крупные компании и корпорации. Средние и мелкие компании, не говоря уже о стартапах, предпочитают использовать бесплатные решения.
Ну и напоследок хочу пригласить вас на бесплатный урок, где мы изучим типовые ошибки нагрузочного тестирования и обсудим, что делать, чтобы их не совершать.