Кратко о нагрузочном тестировании и его инструментах

Кратко о нагрузочном тестировании и его инструментах

load

Вступление

Любой перспективный веб-сайт, в теории, является продуктом для массового потребления. Отсюда возникает необходимость проведения нагрузочного тестирования для проверки на корректную и стабильную работоспособность при различных нагрузках. Далее вкратце будет рассказано о нагрузочном тестировании, инструментах и будет описан простой пример нагрузочного теста с помощью JMeter.
 

Нагрузочное тестирование, виды

Нагрузочное тестирование представляет собой автоматизированное тестирование при котором имитируется деятельность определенного числа пользователей на проверяемой системе. Выделяются следующие виды нагрузочного тестирования:

  • Тестирование производительности, при котором в целом проверяется эффективность работы тестируемого сайта под нагрузкой

  • Тестирование стабильности - это проверка работоспособности системы при длительных нагрузках

  • Стресс-тестирование задача которого проверить жизнеспособность приложения при пиковых нагрузках
     

Инструменты нагрузочного тестирования

Существует множество различных инструментов для проведения нагрузочного тестирования. Для быстрых, простых проверок вполне подойдут такие онлайн сервисы как Load Impact, LoadStorm. Достаточно добавить url сайта и запустить проверку.

Load Impact - Облачный сервис нагрузочного тестирования. Предоставляет доступ к распределенной сети нагрузочных узлов, позволяет моделировать нагрузку из 10 разных локаций одновременно. Возможна запись пользовательских сценариев, используя расширение для Chrome или прокси-рекордер. Для тестирования мобильных приложений, можно создать нагрузочные тесты, моделирующие различные условия/скорости мобильной сети и легко записывать пользовательские сценарии с помощью прокси-рекордера. Можно собирать информацию серверной части, такую как использование процессора, использование памяти, дискового ввода-вывода, сетевого ввода/вывода, плюс нужные пользовательские метрики доступны через Nagios плагины, используя LoadImpact's Server Metric Agents установленные на ваших серверах. Можно использовать сервис как бесплатно, так и по платной подписке. В бесплатной версии доступны низкоуровневые нагрузочные тесты до 100 пользователей.

LoadStorm - веб-утилита для нагрузочного тестирования от CustomerCentrix, представляет из себя распределенное приложение, которое использует веб-службы Amazon для масштабирования вычислительной мощности и пропускной способности по мере необходимости. Тесты для веб и мобильных платформ могут быть построены с помощью инструмента таким образом, чтобы имитировать большое количество различных пользователей с уникальными логинами и разными задачами.

В случае если нужна быстрая проверка, то отлично подойдет утилита ApacheBench. Как правило входит во многие сборки Apache, позволяет производить запросы из командной строки. К примеру команда  ab -n 100 -c 10   http://www.example.com/ выполнит 100 HTTP GET запросов, обработка до 10 запросов одновременно, по указанному адресу.

Есть также различные платные и бесплатные утилиты среди которых хочется выделить Apache JMeter.

Apache JMeter - java-приложение от Apache Software Foundation предназначенное для нагрузочного тестирования функциональной среды и измерения производительности. Изначально разрабатывался для тестирования веб-приложений, но с тех пор расширился и на другие тестовые функции. Может быть использован для тестирования производительности как статических, так и динамических ресурсов. Также можно использовать для имитации тяжелой нагрузки на сервера, сети для проверки  прочности или для анализа общей производительности при различных видах нагрузки.

JMeter представляет из себя хорошую альтернативу таким проприетарным решениям как LoadRunner и Silk Performer.

LoadRunner - утилита HP (ранее Mercury) для нагрузочного/стресс-тестирования веб и других приложений. Поддерживает широкого спектр платформ и баз данных. Большой набор мониторов сети/приложения/сервера для оценки работы каждого компонента и отслеживание узких мест.

Silk Performer - инструмент корпоративного класса для тестирования нагрузки от Microfocus  (ранее Borland, ранее Segue). Может имитировать тысячи пользователей, с поддержкой множества протоколов и сред. Позволяет прогнозировать поведение e-business среды до развертывания, независимо от размера и сложности.

JMeter имеет модульную структуру, может расширяться за счет плагинов. Основные преимущества:

  • Удобный GUI

  • Кроссплатформенность, может работать на любой системе с Java

  • Поддержка многих протоколов из коробки: HTTP, SMTP, POP3, LDAP, JDBC, FTP, JMS, SOAP, TCP

  • Множество способов визуализации отчетов по тестированию

  • Возможность встраивания в систему непрерывной интеграции
     

Простой пример нагрузочного теста в JMeter

Т.к. JMeter представляет из себя java-приложение, для начала нужно установить последнюю версию Java SE Development Kit, а также сам JMeter.

После запуска мы увидим пустой тест план (рис. 1).

914b9abc0a.jpg

рис.1

Для рабочего тест плана нужно добавить как минимум одну Thread Group и один Sampler (пкм по тест плану). Thread Group - это группа в которой мы указываем количество пользователей для заданного сценария нагрузки (рис. 2),

4d3d8e4d86.jpg

рис.2

а с помощью сэмплера мы можем добавить http-запрос (рис. 3).

15972278eb.jpg

рис.3

1) Добавляем Thread Group, настройки оставляем по умолчанию, 1 пользователь/1 выполнение тестового сценария

2) При добавлении сэмплера выбираем HTTP request. Добавляем адрес сайта в поле Server Name or IP и путь к странице (рис.4)

0c6f5c6413.jpg

рис.4

3) Для отображения результатов теста добавляем Listener > View Results Tree (рис. 5)

daa9841641.jpg

рис. 5

Запускаем тест (будет предложено сохранить сценарий, что и делаем) и смотрим результат в View Results Tree.

Если все было выполнено правильно, то в колонке Статус будет зеленая отметка.

В заключение

Выпуск проекта в продакшн рано или поздно повлечет за собой увеличение нагрузки, проблемы могут возникнуть и на начальной стадии, при неправильно подобранной конфигурации. Чтобы минимизировать риски связанные с недостаточной производительностью, важно включать нагрузочное тестирование в общий стек проверок. Это позволит заранее определить такие показатели как:

- плановая и предельная производительность

- устойчивость при длительных нагрузках

- оптимальная конфигурация системы

0 комментариев

Restricted HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.