Вконтакте Facebook Twitter Лента RSS

Тестирование производительности: последовательность тестов, измеряемые показатели, правила подачи нагрузки. Нагрузочное тестирование Тестирование сервера на нагрузку windows

Если вы задумались о нагрузочном тестировании сайта , то значит это кому-нибудь нужно. Возможно, вашим пользователям, страдающим от медленной скорости загрузки страниц, а, возможно, и вашей компании, ежедневно теряющей на недопродажах N-сумму денег.

Посмотрите на график. Всего три поля - доступность сайта, время его простоя и денежные потери. Как говорится, без комментариев.
Во избежание самых пессимистичных сценариев мы собрали для вас подборку из инструментов для проведения нагрузочного тестирования сайта. Пользуйтесь и помните:

100 ms задержка – на 1% падают продажи Amazon

400 ms задержка – 5-9% уменьшение трафика (Yahoo!)

500 ms задержка – 20% уменьшение трафика (Google)

Выбираем сервис для нагрузочного тестирования веб-сайта

Предположим, когда вы создавали первую версию своего интернет-магазина, вы и не задумывались о том, что через полтора года его ежедневная посещаемость вырастет до 10 тыс.человек, а вам придётся столкнуться с термином «нагрузочное тестирование».

Со временем сайт начал тормозить, время загрузки страниц начало исчисляться секундами – в общем, пользователи не покупали. Куда бежать и что делать? Лучшее в такой ситуации – отдать проект на аудит , но что, если время не терпит? Тогда самое время обратиться к специальным сервисам и инструментам.

1. JMeter . Один из самых популярных среди разработчиков сервисов для проведения нагрузочного тестирования. С помощью этого инструмента можно проводить нагрузочные тесты для наиболее популярных типов соединений: FTP, HTTP, POP3, IMAP и др.

Минимум ограничений, максимум возможностей. Из последних в программе:

Большое количество пользовательских запросов, которые можно создать при помощи нескольких компьютеров

Сервис поддерживает сторонние плагины

Бесплатность


2. Loaddy.com . Ещё один инструмент для проведения нагрузочного тестирования вашего сайта. Регистрируемся в сервисе, создаём «Новый тест» и запускаем. По сравнению с JMeter функционал Loaddy более простой и понятный, не требующий глубочайших познаний в области программирования или тестирования сайтов.

Вам лишь нужно указать адрес тестируемого сайта, время проверки (от 1 до 30 минут), количество посетителей, тип загрузки, а также сканируемые страницы.

Кстати, несколько слов о типах нагрузок и количестве посетителей в сервисе. Поскольку сервис полубесплатный, то большая функционала в free-версии урезана. Например, количество посетителей, которых сервис готов одновременно направить на ваш URL – от 50 до 100.

Типы нагрузок :

Равномерная нагрузка – фиксированное количество пользователей переходят на сайт за определённый промежуток времени

Возрастающая нагрузка – количество посетителей увеличивается с заданным интервалом на указанном промежутке

Из минусов сервиса – медленная скорость анализа результатов тестирования. Вместо обещанной одной минуты нам пришлось ждать более пяти. По крайней мере, в бесплатной версии.

3. Loadimpact.com . Если для вас не принципиально количество ботов при тестировании нагрузки на сайт, то Loadimpact неплохо справится с возложенными на него задачами: анализ производительности сайта, трафик с сайта и др.

Из возможностей :

Выбор определённого количества пользователей, их географии

Выбор сценария работы

Привязка IP-адресов


4. Loadstorm . Один из самых функциональных инструментов для нагрузочного тестирования. Правда, снова полубесплатный. Чтобы проверить малую долю тех возможностей, которые предоставляет сервис, достаточно ввести адрес «испытуемого» и подождать несколько минут.

В итоге получаем данные по количеству запросов к серверу, онлайн-пользователей, ошибок и др.параметрам. Доступна выгрузка информации в CSV или PDF.


5. BlazeMeter . PaaS-сервис для тестирования сайтов, мобильных приложений, баз данных и др.

Из плюсов :

Расширяемость с помощью плагинов

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

Возможность выбрать своё местоположение

Проверка в облаке занимает 2-4 минуты

Экспорт графиков и данных в PNG, JPEG, PDF, SVG

Из минусов :

В бесплатной версии сервис направит на ваш сайт максимум 50 пользователей


6. Nouvola . Программа не из «бесплатных», поэтому в свободной версии жёсткое ограничение – 600 пользователей в месяц. Жирный плюс сервису за возможность детальной настройки нагрузочных тестов:

Продолжительность теста

Трафик

Выбор страниц для тестирования

Время отклика

Регион и др.


7. Loadbooster . Программа для нагрузочного тестирования Loadbooster вобрала в себя стандартный «джентельменский» набор инструментов. Из сильных сторон:

Мощная система отчётности. Всего 13 отчётов

Графики с результатами тестирования строятся в режиме реального времени


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


Особенности бесплатной версии программы :

Один нагрузочный тест в день

5-10 минут на тест

В этой статье мы рассмотрим 20-ку лучших инструментов для проведения нагрузочного тестирования. Здесь вы сможете найти информацию как о бесплатных, так и платных инструментах, которые повысят эффективность вашего тестирования.

Бесплатные инструменты для проведения нагрузочного тестирования.

Наш обзор мы начнём с инструментов, которые предоставляются в открытом доступе.

Apache JMeter, наверное, один из наиболее популярных и часто используемых инструментов нагрузочного тестирования. Изначально JMeter был разработан для тестирования web и FTP приложений. В наше время, он также часто используется для функционального тестирования, тестирования серверов баз данных и т.п. Для JMeter не требуется современная инфраструктура для тестирования нагрузки. Он обеспечивает поддержку нескольких инжекторов нагрузки, управляемых одним контроллером.

Давайте рассмотрим как обычно работает JMeter. На рисунке внизу Вы можете увидеть завершённый рабочий процесс JMeter.

Основные функции и преимущества JMeter.

Цена . JMeter – бесплатный инструмент, и кто угодно может использовать его ресурсы в своей разработке и тестировании.

Независимость платформы. Так как JMeter является 100% Java десктопным приложением, он может быть запущен на многих платформах.

Инсталляция. Для работы с JMeter не требуется установка никакого специального программного обеспечения. Всё что вам нужно сделать, это скопировать и запустить исполняемый файл на вашем компьютере.

Дружественный GUI (графический интерфейс пользователя). На данный момент, он может использоваться в 3 режимах: GUI Mode, Server Mode, и Command Line Mode. Для тесного ознакомления с JMeter требуется совсем немного времени.

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

Многопотоковый фреймворк . JMeter обеспечивает параллельную и одновременную выборку различных функций отдельной группой потоков.

Высокий уровень расширяемости. У вас есть возможность писать свои тест кейсы. Кроме того, специальные плагины визуализации используются для поддержки расширяемости вашего тестирования.

Моделирование. JMeter даёт возможность моделировать поведение нескольких пользователей с параллельными потоками и создавать большую нагрузку на тестируемые веб-приложения.

Поддержка большого количества протоколов. Он поддерживает все основные протоколы – HTTP, SOAP, LDAP, JDBC, JMS, и FTP.

Тестирование скриптов. Jmeter интегрируется с Selenium и Bean Shell для проведения автоматического тестирования.

Опции “Record” и “Playback Record”. Активность пользователя в браузере может быть записана и смоделирована в веб-приложении с помощью JMeter.

Интегрированная поддержка в режиме реального времени. Коллекторы Apache Tomcat позволяют осуществлять мониторинг в режиме реального времени.

Лёгкая интеграция с бесплатными библиотеками . JMeter интегрирован с бесплатными библиотеками Jenkins, Maven и Gradle.

У JMeter имеются также некоторые недостатки:

  • Нет возможности для записи HTTPS-связи.
  • Нет возможности для перехвата трафика AJAX.
  • Ограниченные возможности создания отчётов.

The Grinder ещё один популярный фреймворк для нагрузочного тестирования, написанный на Java. По умолчанию основным языком для написания скриптов в The Grinder является Jython, специальная реализация Java в Python. Тестовые сценарии также могут быть написаны на языке Clojure.

Основные составные части The Grinder:

  • The Grinder Console – это базовая интерактивная среда разработки (IDE), которая используется для создания и редактирования тест наборов. Она осуществляет мониторинг результатов в режиме реального времени, а также контролирует различные агенты The Grinder.
  • The Grinder Agents – специальные бесголовочные генераторы нагрузки. Они могут иметь несколько рабочих элементов (Workers ) для создания.

На рисунку внизу изображена система, находящаяся в процессе нагрузочного тестирования в The Grinder.

Ключевые характеристики The Grinder :

  • The Grinder – кроссплатформенный инструмент. Его можно запускать где угодно, где запускается виртуальную машину Java (Java Virtual Machine).
  • Подержка большого количества протоколов.
  • Быстрая и мощная разработка сценариев
  • Простые графики производительности для всех транзакций в одной вкладке.
  • Пользователь может писать собственные плагины для документированного интерфейса.
  • Гибкая настройка параметров.
  • У пользователя есть возможность загрузки Java API в качестве тест кейса из сервера HTTP, SOAP и REST сервисов.
  • The Grinder обеспечивает большая гибкость при загрузке и выполнении сторонних библиотек.
  • Интеграция с .

Недостатки The Grinder:

  • Случаются сбои памяти в сценариях загрузки больших файлов.
  • Консоль Grinder не может динамически регулировать уровни нагрузки, создаваемой агентами.
  • Отстутсвуюют специальные инструменты дополнительного анализа.
  • Требуются специальные знания языков Jython или Clojure.

Gatling – мощное оружие для проведения нагрузочного тестирования, написанное на языке Scala. Существуют два исполняемых файла в Gatling: один для записи тест кейсов, а другой для их выполнения. Структурно можно выделить четыре части Gatling:

  • HTTP protocol configuration помогает определить базовый URL, с которым вы будете запускать свои тесты. Кроме того, могут быть определены такие параметры: пользовательский агент, языковой заголовок и соединение.
  • Headers definition предоставляет заголовки для отправляемого на сервер запроса.
  • Scenario definition определяет набор действий, выполняемых для имитации взаимодействия пользователя с вашим приложением.
  • Simulation definition предназначен для определения количества пользователей, которые будут одновременно выполнять сценарий загрузки в течение определенного периода времени.

Основные преимущества Gatling:

  • Он работает с любой операционной системой и любым браузером.
  • Gatling поддерживает красочные и информативные графические отчеты, содержащие ценную информацию для анализа.
  • Он может выполнять свои сценарии в разных облаках для тестирования.
  • Gatling легко интегрируется с Jenkins через Jenkins-plugin, а также запускает ваши тесты через Gradle и Maven с помощью плагинов Maven и Gradle.
  • Gatling использует небольшой объем памяти.
  • Он сокращает время отладки тест кейсов.
  • Gatling позволяет легко обнаружить ошибки и недостатки в начале цикла разработки.

Недостатки Gatling:

  • API изменялась радикальным образом. Поэтому, могут возникнуть проблемы с запуском тест кейсов из старых версий.
  • Gatling не позволяет равномерно распределить нагрузку между разными машинами.
  • Отсутствует возможность горизонтального масштабирования.

Locust – свободно распространяемый набор тестовых инструментов для нагрузочного тестирования, управляемый кодом на Python. Он часто используется для тестирования веб сайтов (или других систем), показывая, сколько пользователей одновременно может обрабатывать система в условиях нагрузки.

Locust основывается на оригинальной идее. Согласно этой идее, полчища саранчи атакуют ваш сайт во время теста. Вы можете смоделировать поведение каждой особи саранчи (пользователя). Такая атака отслеживается через веб-интерфейс в режиме реального времени и помогает определить слабые места вашего кода.

Основные преимущества

  • Любая система может быть протестирована с помощью Locust
  • Это кроссплатформенный инструмент с легко расширяющимися возможностями.
  • Код Locust удобен для многократного использования.
  • Высокий уровень кастомизации. Существует возможность объединять несколько запросов в один сценарий, группируя запросы с определенными кастомными параметрами.

Недостатки

  • Потери статистических данных. Locust собирает и отображает статистику до тех пор, пока не будет достигнуто требуемое количество пользователей. После этого все статистические данные сбрасываются, и начинается сбор новых.
  • Тестирование на Locust нельзя остановить. Невозможно определить, сколько активных действий должен имитировать каждый пользователь.
  • Отсутствует доступ ко всем ресурсам. Например, Locust не будет запрашивать URL-адрес, если вы не дадите ему явные указания сделать это.

ApacheBench, наверное, один из самых простых инструментов нагрузочного тестирования. Первоначально она разрабатывалась как программа для тестирования Apache HTTP Server с помощью командной строки. На самом деле, ApacheBench может быть эффективным для тестирования любого веб-сервера.

Если вы пользователь macOS или Linux, ApacheBench уже установлен на вашем компьютере. Если же вашей операционной системой является Windows, просто инсталлируйте Apache и вы увидите ab . exe в папке apache / bin .

Основные преимущества ApacheBench:

  • Он лёгок в использовании и изучении.
  • Не требуется установка никакого дополнительного ПО.
  • ApacheBench – инструмент, который экономит ваше время и деньги.
  • В ApacheBench существует возможность установить общее количество запросов, количество параллельно выполняемых запросов и ограничение по времени для всех запросов.

Недостатки

  • Ограниченное число функций.
  • Отсутствует возможность полноценной и всесторонней оценки производительности приложения.
  • Нет поддержки HTPS протокола.

Siege – специальная утилита для нагрузочного тестирования HTPP и HTPS протоколов. Он также может использоваться в качестве инструмента для тестирования веб-серверов. Siege является GNU/Linux-инструментом, но сейчас он был успешно перенесен в AIX, Solaris, HP-UX и BSD.

Ключевые характеристики Siege:

  • Поддержка HTTP, HTTPS, FTP протоколов, кукис, а также простых проверок подлинности.
  • Он легко компилируется с операционными системами, созданными на базе Unix.
  • Siege – многопотоковый инструмент
  • Существует возможность эмуляции пользователей.
  • Он может запускаться с несколькими IP-адресами с одного компьютера.
  • Поддерживается выполнение простых тестовых сценариев.

Некоторые недостатки Siege:

  • Он не может быть запущен на Windows. Хотя, вы можете решить эту проблему с помощью Cygwin .
  • Siege – ресурсоёмкий инструмент.
  • Он не подходит для серьезных и масштабных испытаний с сотнями тысяч потоков.

Taurus – открытая для использования, мультифункциональная платформа, разработанная BlazeMeter. Taurus расшифровывается как T est Au tomation Ru nning S moothly (Автоматизация тестов запускается гладко). Одной из основных идей создания Taurus, было усиление возможностей таких бесплатных инструментов как JMeter, Selenium, Grinder, и Gatling.

Преимущества

  • У Taurus простая настройка и обновления.
  • YAML или JSON упрощают управление версиями тестовых сценариев
  • Taurus легко совмещается с JMeter, Selenium, Grinder, и Gathling, существенно расширяя их производительность.
  • Отчёты в режиме реального времени доступны во время исполнения тест кейсов.
  • Уже существующие сценарии могут быть повторно использованы в Taurus.
  • Тесная интеграция с BlazeMeter.
  • Простой способ определения гибких критериев прохождения / отказа.
  • Taurus запускается всюду, где можно запустить Python и Java
  • Taurus интегрирован с CI инструментами, такими как Jenkins.

Некоторые недостатки

  • Taurus поглощает много ресурсов.
  • Изменение конфигурации оборудования выходит за пределы его возможностей.
  • Не поддерживаются долговременные тесты на выносливость.

Коммерческие инструменты нагрузочного тестирования, которые имеют бесплатные версии.

Следующая группа инструментов тестирования нагрузки, которую мы будем рассматривать, это коммерческие инструменты, которые имеют бесплатные версии. Конечно, у большинства коммерческих инструментов для тестирования нагрузки есть бесплатный пробный период. Но в этой части мы поговорим об инструментах с постоянными бесплатными версиями.

Как правило, существуют разные виды ограничений использования этих инструментов. Например, количество пользователей, количество исполненных тест кейсов в месяц, время тестирования и т. п.

WebLOAD инструмент для нагрузочного тестирования и анализа приложений, распространяемый RadView Software. Этот мощный инструмент с одинаковой эффективностью может применяться как для тестирований веб-приложений, так и для мобильного тестирования. Тестовые сценарии генерируются в JavaScript и могут быть расширены и отредактированы с использованием различных инструментов в среде IDE.

WebLOAD распространяется на бесплатной и коммерческой основе. Следует упомянуть, что WebLOAD Free Edition (бесплатная версия) включает в себя почти все характеристики коммерческой версии. Ограничения касаются максимального количества виртуальных пользователей (максимум 50 человек), некоторых исключений из Oracle Forms, Flex/AMF, а также потоковых и мультимедиа характеристик.

То есть, и небольшие команды могут использовать преимущества WebLOAD. Вот некоторые из них:

  • Поддержка основных веб-технологий.
  • У пользователя есть возможность генерировать нагрузку в заданном месте или в облаке.
  • Мастер интерфейса помогает улучшить скрипт.
  • Аналитические панели WebLOAD предоставляют более 80 настраиваемых шаблонов отчетов.
  • Пользователь может автоматически распространять результаты тест кейсов между членами своей команды.
  • WebLOAD легко интегрируется с такими популярными инструментами: Selenium, Jenkins, Perfecto Mobile, New Relic, Dynatrace и т.д.
  • Автоматическое определение потенциально уязвимых мест.
  • Широкий набор средств для мобильного тестирования
  • Комбинация локальной и виртуальной пользовательской нагрузки.
  • Высокоуровневая пользовательская поддержка.
  • Мощный корреляционный механизм.

Недостатки

  • Отсутствует поддержка Citrix.
  • WebLOAD в большей степени сфокусирован на разработчиках, а не на специалистах по QA. Поэтому для его конфигурации требуются специальные технические навыки.
  • Обновление не позволяет использовать предыдущие сценарии.
  • Не поддерживается SAP GUI.

LoadRunner, продукт компании Hewlett Packard Enterprise, один из самых широкого используемых инструментов для проведения нагрузочного тестирования.

Компоненты

  • Virtual User Generator (VuGen ) предназначен для записи тестовых сценариев. Позволяет разрабатывать сценарии поведения виртуальных пользователей (Vuser) для различных типов приложений и протоколов.
  • Controller является основным компонентом для управления имитацией нагрузки.
  • Agents Machines (Load Generators или Load Injectors ) – виртуальные машины, через которые происходит распределение виртуальных пользователей.
  • Analysis and Monitoring обеспечивает детальный анализ результатов исполнения тест кейсов.
  • Books Online полноценная подборка материалов для изучения HP LoadRunner.

Основные этапы процесса тестирования с LoadRuner:

  • Планирование нагрузочного теста
  • Создание скрипта для виртуального пользователя
  • Определение сценария
  • Запуск сценария
  • Анализ результатов

Преимущества LoadRunner:

  • Интерактивное моделирование активности пользователя.
  • Широкий набор инструментов поддержки приложения.
  • Мощный инструментарий для проведения мобильного нагрузочного тестирования.
  • Сокращает системные требования и минимизирует вмешательство человека.
  • LoadRunner предоставляет возможность записи, воспроизведения или создания сценариев.
  • Эффективный инструмент для отслеживания использования.
  • Возможность использования из одного пункта
  • Оптимальное использование генератора нагрузки.
  • LoadRunner быстро и точно определяет основную причину проблем производительности приложений.

Некоторые недостатки

  • Невозможно запустить несколько сценариев из командной строки.
  • Необходима постоянная техническая поддержка во время исполнения тест кейсов.
  • Для установки LoadRunner требуется немало места на жёстком диске.
  • The Controller и VUGen работают только в Windows

BlazeMeter – популярная платформа для проведения нагрузочного тестирования. Предлагается бесплатная, а также различные платные версии. В бесплатной версии можно проводить запуск не более 10 тест кейсов с максимальным количеством не более 50 пользователей для каждого случая. Также в бесплатной версии предлагается только один нагрузочный генератор.

Ключевые характеристики

  • Blazemeter на 100% совместима с Apache JMeter.
  • Легко интегрируется с другими популярными бесплатными инструментами: Selenium, Locust, и Gatling.
  • Возможность запускать тест кейсы с количеством виртуальных пользователей до одного миллиона.
  • Прямой Интернет доступ к Blazemeter.
  • Blazemeter может моделировать трафик с мобильных устройств с различными уровнями сигнала и различными сетями.
  • Масштабируемое тестирование из любого места.
  • Есть возможность загрузки результатов тестирования для использования их офлайн.
  • Поддержка Sandbox тестов для проверки подлинности сценариев для ограниченного числа пользователей в течение ограниченного времени.
  • В Blazemeter имеются высоко кастомизированные и хорошо иллюстрированные отчёты, которые легко распространяются между членами команды.

Недостатки :

  • Отсутствует возможность изменения пользовательской нагрузки во время исполнения тест кейса.
  • Blazemeter нельзя использовать с Flex, Silverlight или Multimedia протоколами.
  • Не поддерживаются тест кейсы на выносливость с временем исполнения более 3 часов.

Rational Performance Tester (RPT) – инструмент тестирования производительности и нагрузки, разработанный IBM Corporation. Его можно использовать для тестирования веб и серверных приложений, где присутствует процесс ввода и вывода. RPT создает демонстрацию исходного процесса взаимодействия между пользователем и веб-службой.

Ключевые характеристики Rational Performance Tester:

  • Поддержка большого количества приложений: HTTP, SAP, Siebel, SIP, TCP Socket и Citrix.
  • Не требуется никаких специальных знаний в программировании.
  • Поддерживает диагностику серверов Websphere и Weblogic приложений.
  • Возможность запуска тест кейсов с огромным количеством пользователей.
  • Генерирует отчёты в режиме реального времени для немедленной идентификации проблемы производительности.
  • Гибкий графический планировщик тестов, в котором нагрузка может быть пропорционально распределена между группами пользователей.
  • Поддержка различных платформ и среды тестирования
  • Широкий набор инструментов для анализа первичных причин возникновения ошибок.

Некоторые недостатки Rational Performance Tester:

  • Отсутствует возможность уменьшение или наращивания ресурсов.
  • Не поддерживает тестирование приложений на Java Applet.
  • Отсутствует возможность планирования.

NeoLoad – популярный инструмент для анализа производительности веб-сайта или приложения под большой нагрузкой. Он работает с высокой эффективностью как при тестировании десктопных, так и мобильных приложений. NeoLoad написан на языке Java. Выполнение тест кейсов с количеством виртуальных юзеров не более 50, является бесплатным.

Ключевые характеристики и преимущества NeoLoad:

  • Поддержка самых современных мобильных и веб технологий.
  • Кросcплатформенные возможности NeoLoad позволяют генерировать нагрузку на различных платформах – Unix, Windows, Linux.
  • NeoLoad получает резюме выполнения тест кейса, а затем изучает его детали, используя графики и статистические таблицы. Статистика поступает с ваших серверов, процессора, памяти и т.п.
  • Реалистические тестовые сценарии помогают быстрее выявить проблемы с производительностью.
  • Облачная интеграция, мониторинг в режиме реального времени, интеграция с реальными устройствами поддерживаются не только на Android или iOS, но также на Windows Phone и Blackberry.
  • Эргономичный графический интерфейс, сокращающий время выполнения теста.
  • Существует возможность моделировать поведение виртуального пользователя и устанавливать параметры сценария, такие как политика загрузки (постоянная, нарастающая, максимальная или пользовательская) или число виртуальных пользователей, которые будут смоделированы в тест кейсе.
  • Поддерживает преобразование скриптов Selenium
  • Мониторы производительности (процессор, память, использование диска и т. д.) настроены для ваших серверов.
  • Содержимое страницы проверяется под нагрузкой.
  • Предоставляет возможность записывать любое мобильное приложение непосредственно с любого мобильного устройства с использованием режима прокси или туннеля DNS.
  • Осуществляется запись HTTP траффика между браузером и сервером.

Недостатки

  • Не функционирует в Mac OSX.
  • Нет страницы доступа DOM
  • Нет средств для создания начальных и конечных действий, чтобы фиксировать время отклика.

LoadUI – известный инструмент, использующийся преимущественно для нагрузочного тестирования web сервисов. Существует бесплатная, а также платные версии. Если вы хотите использовать LoadUI с большей эффективностью, скомбинируйте его с другим бесплатным продуктом компании SmartBear – SoapUI.

Основные преимущества LoadUI:

  • Большое количество стратегий исполнения тест кейсов.
  • Интерактивный интерфейс.
  • Поддержка API.
  • Параллельное и обособленное исполнение тест кейсов.
  • Фидбек по результам исполнения тест кейсов в режиме реального времени.
  • Возможность добавлять новые данные даже при тестировании приложения.
  • Автоматически обновляемый интерфейс.
  • Функционирует во всех основных операционных системах.
  • Визуальные отчеты LoadUI представлены в графическом формате, очень удобном для понимания.
  • Возможность создавать, настраивать и изменять тест кейсы во время выполнения.

Некоторые недостатки LoadUI:

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

CloudTest – это полноценный инструмент для проведения нагрузочного тестирования, а также тестирования производительности веб и мобильных приложений. Он может размещаться на одном или нескольких физических серверах, а также в облаке. Такие поставщики облачных сервисов как Amazon Web Services и Rackspace используются CloudTest для иммитации трафика.

CloudTest Lite – бесплатная версия. Конечно, в этой версии есть много ограничений:

  • Отстуствует круглосуточная поддержка
  • Отсутствует глобальная облачная генерация нагрузки.
  • Максимальное количество виртуальных пользователей – 100 человек.
  • Может использоваться только один генератор нагрузки.

Основные преимущества CloudTest:

  • Обеспечивает завершённое тестирование производительности мобильных устройств.
  • Аналитика в режиме реального времени.
  • Тест кейсы быстро создаются, редактируются, выполняются и анализируются.
  • CloudTest легко интегрируется с JMeter и другими часто используемыми инструментами автоматического тестирования.
  • Высокая точность моделирования сетевого и мобильного пользовательского трафика.
  • Полноценные отчёты о поведении пользователей.
  • Возможность добавлять или удалять пользователей во время выполнения тест кейса.

Недостатки CloudTest:

  • Бесплатная версия довольно таки ограничена.
  • SLA конфигурация недоступна в CloudTest.
  • Нет контроля за изменениями возможностей оборудования.
  • Отсутствует возможность использовать CloudTest для приложений Flex, Multimedia или Silver light.

LoadStorm – это простой в использовании, экономичный инструмент, который может быть использован для нагрузочного тестирования мобильных и веб-приложений. Существует открытая и платные версии этого продукта. Вы можете бесплатно запускать тест кейсы с не более чем 50-ью виртуальными пользователями.

Основные преимущества LoadStorm:

  • Не требуется специальная установка.
  • Для записи сценария требуется всего несколько минут.
  • Распространённая по всему миру, облачная платформа для запуска тест кейсов.
  • Хорошо настраиваемые отчёты.
  • Формирование аналитических отчётов в режиме реального времени.
  • Анализ производительности во время использования тест кейсов.
  • Постоянная он-лайн поддержка.
  • Обеспечивает географическое распределение трафика.

Недостатки LoadStorm:

  • С помощью LoadStorm можно тестировать только веб-приложения, доступные из облака Amazon.
  • Обязательно наличие OS Windows для его использования.

Smart Meter имеет очень мощную бесплатную версию, хотя это коммерческий инструмент для тестирования нагрузки и производительности. В отличие от других коммерческих инструментов из нашего списка, у вас есть возможность запускать тестовые примеры с 50 виртуальными пользователями бесплатно.

Также у вас есть 2 генератора нагрузки для тестирования.

Основные преимущества SmartMeter:

  • Отчёты о тестировании формируются автоматически, и содержат всю необходимую информацию о результатах исполнения тест кейсов.
  • Многофункциональный регистратор сценариев тестирования.
  • Возможность проведения нагрузочного тестирования из различных локаций.
  • Легко интегрируется с Jenkins, Bamboo, и Maven.
  • Несколько мониторов отображают результаты выполнения тест кейсов в режиме реального времени.
  • Возможность комбинирования тест кейсов с Selenium.
  • Постоянный мониторинг среды тестирования.

Недостатки SmartMeter:

  • Сложный в изучении инструмент.
  • Максимальное время исполнения тест кейса в бесплатной версии ограничено 15 минутами.

Полностью коммерческие инструменты

Наконец, мы рассмотрим коммерческие инструменты, которые имеют только платные версии. Естественно, все они имеют некоторый короткий период для бесплатного пробного использования. Но это не может быть определено как бесплатные версии.

Silk Performer (ранее известный как Borland) является мощным инструментом для тестирования нагрузки веб-приложений, мобильных и корпоративных приложений.Он помогает выявить уязвимые места приложения под пиковой пользовательской нагрузкой, используя встроенные средства диагностики и трендовые отчеты.

Ключевые характеристики Silk Performer:

  • Поддерживает все основные сетевые среды: HTML5, AJAX, Responsive Web Design, Adobe Flash/Flex, и Microsoft Silverlight.
  • Широкий спектр инструментов тестирования мобильных, нативных и веб-приложений.
  • Для моделирования поведения виртуальных пользователей требуются минимальные технические ресурсы.
  • Он генерирует хорошо настроенные отчеты с таблицами и графиками.
  • Silk Performer имеет удобную корреляцию и параметризацию.
  • Поддержка мониторинга интегрированных серверов.
  • Визуальный анализ первичных причин ошибок помогает выявить уязвимые места.
  • Неограниченная облачная масштабируемость.
  • Возможность тестировать ваши приложения на различных мобильных платформах и стандартах связи: iOS, Android, BlackBerry, GPRS, HSPA+, EDGE, и LTE.

Некоторые ограничения Silk Performer:

  • Недостаточная интеграция с инструментами глубокой диагностики для полноценного мониторинга производительности.
  • Разработан только для Windows.
  • Для тестирования нагрузки с Silk Performer требуется много памяти.
  • Возможны, проблемы с настройкой паттерна замедления.

WAPT – популярный инструмент, который одинаково эффективен для нагрузочного тестирования веб сервисов, мобильных приложений, а также всех типов веб сайтов, от интернет-магазинов до корпоративных ERP и CRM систем.

Вы можете создавать и выполнять тест кейсы с тысячами виртуальных пользователей, сделав всего несколько кликов. WAPT позволяет вам контролировать кастомизацию этих виртуальных пользователей.

Основные преимущества WAPT:

  • Простая установка.
  • Быстрая запись тест кейсов и дизайн.
  • WAPT поддерживает RIA технологии и тестирование мобильных приложений.
  • Расширенные сообщения об ошибках на основе разных индикаторов: ошибки сетевого уровня, коды ответа HTTP, тайм-ауты, задержки на сервере и проверка ответа по содержимому страницы.
  • Тестирование безопасности сайта.
  • Возможность включать выполнение кода JavaScript в виртуальные профили пользователей.
  • Хорошо иллюстрированные и подробные отчеты доступны даже во время исполнения тест кейсов.
  • Встроенное средство просмра журналов позволяет вам поэтапно просматривать каждую выполненную сессию.

Недостатки WAPT:

Testing Anywhere соредоточена на нагрузочном тестировании веб сайтов, элементов управления и контроля, GUI.

Существует 5 методов создания тест кейса в Testing Anywhere:

  • Веб-запись
  • Запись объектов
  • Распознавание образов
  • Интеллектуальная запись
  • Редактирование

Ключевые особенности Testing Anywhere:

  • Не требуется знание программирования для работы с Testing Anywhere.
  • Тест кейсы легко создаются и редактируются.
  • Возможность проведения миграционного тестирования
  • Автоматизация визуальных тестов
  • Автоматическая идентификация языка программирования. Testing Anywhere работает с Java, Net, WPF, Silverlight, HTML, Flash, и Flex.
  • Testing Anywhere предлагает единую платформу для тестирования.

Недостатки Testing Anywhere:

  • Поддерживает только Windows
  • Могут возникнуть проблемы с тестированием iOS приложений.
  • Тестируемая платформа не предоставляется для приложений, написанных на старых языках.

StormRunner Load – это самый новый из инструментов для тестирования нагрузки среди продуктов, предлагаемых Hewlett Packard Enterprise. Его можно использовать как для для мобильного, так и для веб тестирования. StormRunner – сервис, основанный на облачных SaaS технологиях, что делает его простым и доступным в использовании.

Преимущества :

  • Легок и прост в использовании.
  • Поддержка HTTP/HTML (как веб, так и мобильного), SAP Web, Java, Flex, TruClient Web, TruClient Native Mobile и TruClient Mobile Web протоколов.
  • Минималистичный и отзывчивый интерфейс.
  • Высокая масштабируемость. Существует возможность запускать тест кейсы с более чем миллион, географически распределенных, веб-и мобильных пользователей.
  • Возможность добавления/удаления виртуальных пользователей во время исполнения тест кейсов
  • Автоматическое развёртывание инфраструктуры тестирования.
  • Легко интегрируется с Jenkins, Dynatrace, Gatling, Docker, AWS Code Pipeline и New Relic.
  • Возможность моделирование выведения серверов из строя.
  • Предлагает генераторы нагрузки, расположенные в нескольких разных географических точках.
  • Быстрое обнаружение проблемы.
  • Настраиваемый аналитический отчет с помощью Network Virtualization.

Недостатки

  • Нет возможности использовать сетевую аналитику в сценариях JMeter.
  • Отсутствует возможность объёмной нагрузки FTP сервера.
  • Невозможно запланировать запуск тестов на более позднюю дату.
  • Активы, отличные от скриптов, не могут быть присоединены.

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

Согласны ли Вы с нашим списком лучших инструментов? Возможно, Вам известны инструменты, которые в большей степени заслуживают быть названными в числе лучших. Поделитесь Вашим мнением в комментариях к этой статье.

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

Все идет по плану

Прежде чем бросаться в бой, вначале следует разобраться, что мы хотим
получить в результате тестирования. Ведь проверка, как и любая другая работа,
требует предварительной подготовки. При неправильно сформулированной задаче
могут получиться результаты, которые будут не полностью отражать реальное
положение дел. Исходя из предполагаемой нагрузки веб-сервера, необходимо
определиться с критериями испытания. Установить, что будет считаться как успех,
а что как неприемлемая работа сервиса (например, время ответа, загрузка
сервера). Различают три варианта теста:

  • Нагрузочный (Load-testing) – определяется работоспособность системы
    при некоторой строго заданной заранее (планируемой, рабочей) нагрузке.
  • Устойчивости (Stress) – применяется для проверки параметров системы
    в анормальных и экстремальных условиях, основная задача во время этого теста -
    попытаться нарушить работу системы. Позволяет определить минимально
    необходимые величины системных ресурсов для работы приложения, оценить
    предельные возможности системы и факторы, ограничивающие эти возможности.
    Также определяется способность системы к сохранению целостности данных при
    возникновении внештатных аварийных ситуаций.
  • Производительности (Performance) – комплексная проверка, включающая
    предыдущие два теста, предназначена для оценки всех показателей системы.

Результат теста - максимальное число пользователей , которые могут
одновременно получить доступ к веб-узлу, число запросов, обрабатываемых
приложением, или время ответа сервера. Основываясь на полученном результате,
веб-мастер и сетевой администратор (в работе сервера участвуют и другие
компоненты сети, маршрутизаторы, брандмауэр, кэширующий и прокси-сервер, база
данных и пр.) смогут заранее выявить узкие места, возникающие из-за
несбалансированной работы компонентов, и исправить ситуацию, перед тем как
включать систему в реальную работу.

Во время тестирования имитируется одновременная работа нескольких сотен
или тысяч посетителей
. Для большей правдивости каждый из виртуальных
пользователей может «ходить» по сайту по индивидуальному сценарию и иметь личные
параметры. Также в процессе тестирования можно имитировать кратковременные пики
нагрузки, когда количество посетителей скачкообразно увеличивается, что очень
актуально для сайтов с неравномерной аудиторией. Итак, чтобы полноценно провести
тестирование, необходимо знать:

  • сколько посетителей планируется принимать в среднем, в пиковой нагрузке,
    время пиковой нагрузки;
  • могут ли несколько пользователей иметь один и тот же IP-адрес и/или
    логин/пароль;
  • среднее количество страниц, просматриваемых одним пользователем, есть ли
    различия в поведении между зарегистрированными и анонимными пользователями,
    количественное соотношение между такими пользователями, посещаемые страницы и
    время нахождения пользователя на узле;
  • наличие динамических страниц и страниц, изменяемых в течение определенного
    периода, и как часто это происходит;
  • задействуется ли электронная почта, например, для подтверждения полномочий
    пользователя;
  • какая еще дополнительная информация используется для проверки статуса
    пользователя (cookies);
  • требуется ли подтверждение полномочий пользователя сторонней организацией
    или удаленным сервером (например, номер кредитной карточки), и будет ли
    представлена информация для тестирования;
  • доступная пропускная способность канала, средняя его ширина для одного
    пользователя;
  • может ли работа нескольких пользователей вызывать коллизию;
  • используется ли защищенное HTTPS-соединение;
  • используется ли Java-апплеты, потоковое медиа, специальные плагины, что
    требуется с клиентской стороны для их поддержки;
  • используется ли кэширование страниц;
  • плановые технические мероприятия, которые могут повлиять на работу
    сервера, и время их проведения (синхронизация, архивирование и пр.).

Любой из этих параметров может повлиять на конечный результат. Необязательно
все проверки включать в один тест, можно разбить сначала задачу на подзадачи.
Например, проверка базовой системы (серверы: веб, приложений, базы данных) и
проверка отдельных модулей (сервлеты, скрипты и пр., например, проверка
аутентификации при большом количестве пользователей). В результате при
тестировании выдаются графики трех видов: линейный, нелинейный и насыщение. В
первом случае при возрастании нагрузки время отклика (т.е. обработки) остается
постоянным. При дальнейшем увеличении нагрузки время отклика также увеличивается
(почти линейно), и, наконец, наступает ситуация, подобная DOS-атаке, когда время
отклика бесконечно увеличивается. Теперь, когда план действий готов, переходим к
краткому обзору утилит, которые помогут его воплотить. Начнем с бесплатных.

Open Systems Testing Architecture

OpenSTA (www.opensta.org)
- больше чем приложение для тестов, это открытая архитектура, проектируемая
вокруг открытых стандартов. Проект создан в 2001 году группой компаний CYRANO ,
которая поддерживала коммерческую версию продукта, но CYRANO распался, и сейчас
OpenSTA распространяется как приложение с открытым кодом под лицензией
GNU GPL, работает в Windows NT 4.0SP5/2000/XP. Для работы требует Microsoft Data
Access Components (MDAC), который можно скачать сайта корпорации.

Текущий инструментарий позволяет провести нагрузочное испытание HTTP/HTTPS
сервисов, хотя его архитектура способна на большее. OpenSTA позволяет
создавать тестовые сценарии на специализированном языке SCL (Script Control
Language). Для упрощения создания и редактирования сценариев используется
специальный инструмент Script Modeler. Выбираем Tools – Canonicalize URL,
запустится веб-браузер. Просто ходим по сайту, собирая ссылки, которые будут
сохранены в скрипт. Все параметры запроса поддаются редактированию, возможна
подстановка переменных. Структура теста и заголовки будут выводиться во вкладках
в панели слева. Тесты удобно объединять в наборы. Настройки прокси задаются в
самом скрипте, поэтому можно указать несколько серверов. Реализована возможность
организации распределенного тестирования, что повышает реалистичность, или когда
с одного компьютера не получается нагрузить мощный сервер. Каждая из машин такой
системы может выполнять свою группу заданий, а repository host осуществляет сбор
и хранение результатов. После установки на каждой тестирующей системе
запускается сервер имен, работа которого обязательна. Поддерживается
аутентификация пользователей на веб-ресурсе и установление соединений по
протоколу SSL. Параметры работы нагружаемой системы можно контролировать с
помощью SNMP и средств Windows NT. Результаты тестирования, включающие время
откликов, количество переданных байт в секунду, коды ответа для каждого запроса
и количество ошибок выводятся в виде таблиц и графиков. Использование большого
числа фильтров позволяет отобрать необходимые результаты. Результат можно
экспортировать в CSV-файл. Возможности по выводу отчетов несколько ограничены,
но по ссылкам на сайте можно найти скрипты и плагины, упрощающие, в том числе,
анализ полученной информации.

Apache JMeter

Apache JMeter (jakarta.apache.org/jmeter)
является Java-приложением с открытым кодом, предназначен для нагрузочного
тестирования не только веб-приложений и их отдельных компонентов (скрипты,
сервлеты, Java объекты и др.), но также FTP-серверов, баз данных (с
использованием JDBC) и сети. Функциональность расширяется с помощью плагинов.
Поддерживается SSL (через Java Secure Sockets Extension). Возможно проведение
тестов как с использованием графического интерфейса, так и из командной строки.
Использование Java подразумевает кроссплатформенность, поэтому JMeter
уверенно работает в различных *nix-системах, в Windows от 98 и некоторых других
ОС. Распространяется под Apache License.

В JMeter предусмотрены механизмы авторизации виртуальных
пользователей, поддерживаются пользовательские сеансы, шаблоны, кэширование и
последующий offline анализ результатов теста, функции позволяют сформировать
следующий запрос, основываясь на ответе сервера на предыдущий. Есть возможность
проводить распределенные тесты. В этом случае один из компьютеров является
сервером (bin/jmeter-server.bat), который управляет клиентами и собирает
итоговую информацию.

Для работы достаточно запустить ApacheJMeter.jar или в консоли jmeter.bat
(Windows) или jmeter.sh (*nix).

JMeter имеет встроенный прокси-сервер, который предназначен для записи
сессий, но можно использовать и внешний. Перед началом тестирования необходимо
составить тестовый план, описывающий серию заданий, которые необходимо выполнить
JMeter . Он должен содержать одну или несколько групп потоков (Thread
Groups) и другие элементы:

  • Логические контроллеры (Logic controllers);
  • Типовые контроллеры (Sample generating controllers);
  • Слушатели (Listeners);
  • Таймеры (Timers);
  • Соответствия (Assertions);
  • Конфигурационные элементы (Configuration elements).

Первым делом добавляем группу потоков (Edit - Add - Thread Group). В ее
настройках указываем название, количество запускаемых потоков, то есть
виртуальных пользователей (Number of threads), время задержки между запуском
потоков (Ramp-Up Period), количество циклов выполнения задания (Loop Count),
здесь же можно определить выполнение задания по расписанию (Sheduler). Далее,
щелкая в созданную группу, необходимо добавить образец запроса (Sampler), выбрав
его из списка. Для нагрузочного тестирования или проверки работоспособности
сервера достаточно выбрать HTTP Request (Add -Sampler - HTTP Request). Здесь
указываем название, IP-адрес и порт веб-сервера, протокол, метод передачи данных
(GET, POST), параметры переадресации, передачу файлов на сервер. Настраиваем и
жмем на Run. Вывод результата осуществляется с помощью Listeners, каждый
по-своему выводит результат. Например, Aggregate Graph выводит суммарные
результаты теста в виде таблицы и графика.

Бесплатные продукты, увы, закончились, теперь парочка коммерческих решений.

WAPT – Web Application Testing

WAPT (www.loadtestingtool.com)
позволяет испытать устойчивость веб-сайта и других приложений, использующих
веб-интерфейс, к реальным нагрузкам. Разрабатывается новосибирской компанией
SoftLogica LLC. Это одна из самых простых в использовании программ обзора. Для
проведения простого теста даже не нужно заглядывать в документацию, интерфейс
прост, но не локализован. Работает под управлением Windows от 98, поддерживается
и Vista. Для проверки WAPT может создавать множество виртуальных
пользователей, каждый с индивидуальными параметрами. Поддерживается несколько
видов аутентификации и куки. Сценарий позволяет изменять задержки между
запросами и динамически генерировать некоторые испытательные параметры,
максимально имитируя таким образом поведение реальных пользователей. В запрос
могут быть подставлены различные варианты HTTP-заголовка, в настройках можно
указать кодировку страниц. Параметры User-Agent, X-Forwarded-For, IP указываются
в настройках сценария. Значения параметров запроса могут быть рассчитаны
несколькими способами, в том числе, определены ответом сервера на предыдущий
запрос, используя переменные и функции. Поддерживается работа по защищенному
протоколу HTTPS (и все типы прокси-серверов). Созданные сценарии, сохраняемые в
файле XML-формата, можно использовать повторно. Кроме стандартных Performance и
Stress, в списке присутствуют несколько других тестов, позволяющих определить
максимальное количество пользователей и тестировать сервер под нагрузкой в
течение долгого периода.

Для проведения теста необходимо выбрать New – Scenario, в результате
запустится мастер создания теста. На первом шаге указывается тип теста и далее в
каждом окне заполняются параметры будущего теста. Здесь можно указать
фиксированное количество виртуальных пользователей, либо ступенчатое увеличение
с указанием минимального и максимального числа и временного интервала, выставить
таймер проведения теста. На следующем шаге задается время между кликами (think
time), скорость соединения, указывается диапазон IP-адресов, который будет
использован виртуальными пользователями. Нажатие на IP Adress List позволит
составить список таких адресов. Также выставляется HTTP-параметр User-Agent и
включается эмуляция прокси. Если требуется, чтобы виртуальные пользователи имели
индивидуальные настройки, на следующем шаге мастера для каждого из них
необходимо создать свой профиль, нажав New или загрузив сохраненный. В следующем
окне программы необходимо выставить параметры профилей.

После нажатия на кнопку Готово сценарий сохраняется. Теперь, чтобы указать на
объект тестирования, создаем профиль New – Profile и заполняем все параметры на
вкладках. Здесь же доступны для редактирования некоторые параметры, задаваемые
раннее с помощью мастера. Также указывается загрузка рисунков виртуальным
пользователем, параметры аутентификации, использование Cookies и другие.
На вкладке Recorder указываем адрес сайта, доступность которого можно тут же
проверить, нажав Go. Одновременно последует запрос на запуск Recorder, который
будет отслеживать посещенные страницы и записывать URI (они будут выводиться в
панели слева). Когда вся информация собрана, нажимаем Run Test. Подробные отчеты
в форме графика выводятся по ходу проведения теста, по окончании будет
сформирована HTML-страница. В результате можно получить информацию о времени
ответа сервера с возрастанием нагрузки, по количеству ошибок, переданных и
принятых байт и т.д.

NeoLoad

NeoLoad (www.neotys.com)
- еще одна система, позволяющая провести нагрузочное тестирование
веб-приложений. Написана на Java, работает на компьютерах, работающих под
управлением Windows NT/2000/XP, Linux и Solaris. В отчете можно получить
подробную информацию по каждому загруженному файлу. NeoLoad весьма удобен для
оценки работы отдельных компонентов (AJAX, PHP, ASP, CGI, Flash, апплетов и
пр.). Возможна установка времени задержки между запросами (thinktime) глобально
и индивидуально для каждой страницы. Тестирование проводится как с
использованием весьма удобной графической оболочки, так и с помощью командной
строки (используя заранее подготовленный XML-файл). Поддерживает работу с
протоколом HTTPS, с HTTP и HTTPS прокси, basic веб-аутентификацию и cookies,
автоматически определяя данные во время записи сценария, и затем проигрывает во
время теста. Для работы с различными профилями для регистрации пользователей
могут быть использованы переменные. При проведении теста можно задействовать
дополнительные мониторы (SNMP, WebLogic, WebSphere, RSTAT и Windows, Linux,
Solaris), позволяющие контролировать и параметры системы, на которой работает
веб-сервер.

При помощи NeoLoad можно проводить и распределенные тесты. Один из
компьютеров является контролером, на остальные устанавливаются генераторы
нагрузки (loadGenerator). Контролер распределяет нагрузку между loadGenerator и
собирает статистику.

Очень удобно реализована работа с виртуальными пользователями. Пользователи
имеют индивидуальные настройки, затем они объединяются в Populations (должна
быть создана как минимум одна Populations), в Populations можно задать общее
поведение (например, 40% пользователей популяции посещают динамические ресурсы,
20% читают новости). Виртуальные пользователи могут иметь индивидуальный
IP-адрес, полосу пропускания и свой сценарий теста.

Сценарий будущего теста создать очень просто. Запускаем приложение (при
первом запуске потребуется ввести регистрационный ключ, 30-дневная версия после
регистрации будет отправлена по почте), выбираем New Project, вводим название
проекта. После этого будет показана небольшая подсказка по поводу дальнейших
действий, нажатие Start Recording запустит веб-браузер, все перемещения будут
записаны. По окончании нажимаем Stop Recording или закрываем браузер.
Запускается мастер, который поможет создать виртуальных пользователей и
произведет автоматический поиск динамических параметров в записанных страницах,
выставит среднее значение thinktime. Компоненты страницы (HTML, images, CSS)
сохраняются отдельно. Для получения результата требуется пройти три шага:

  • Design - настройка проекта, здесь три вкладки. В Repository указываются
    веб-страницы и параметры запросов, в Virtual User создаются виртуальные
    пользователи, указываются URL, которые они должны "посетить", и дополнительные
    условия из левой вкладки поля Actions. В Populations – задания каждой из групп
    пользователей. В Actions могут быть выбраны следующие действия: Delay
    (установка задержки), Loop (повтор запроса), While (цикл), If...Then...Else
    (условие), Container и Random Container (групповые действия), Try...Catch
    (обработка ошибок), Stop virtual user (останов работы виртуального
    пользователя).
  • Runtime – указываются параметры теста, проводится тест. Здесь же в
    отдельных вкладках по ходу проведения теста выводится статистика.
  • Results – отвечает за вывод различной статистики в виде таблиц и графиков.

Причем кроме общих значений, с помощью системы фильтров можно отобрать
информацию по любому параметру. При желании проект сохраняется для повторного
использования. Среди представленных продуктов возможность сравнения результатов
теста есть только у NeoLoad .

Используя утилиты нагрузочного тестирования, можно получить информацию о
работе веб-сервиса, принять необходимые меры по устранению выявленных
недостатков и гарантировать требуемую производительность.

Продукты от Microsoft

Корпорация Microsoft предлагает целых два продукта, позволяющих
протестировать веб-сервер под нагрузкой. Это Microsoft Application Stress
Tool
и Web Capacity Analysis Tool . Первый распространяется как
отдельный продукт и имеет графический интерфейс. Второй входит в состав
комплекта инструментов Internet Information Services 6.0 Resource Kit Tools ,
работает из командной строки. MAST более наглядный, в создании теста
поможет простой мастер создания тестов, возможна работа с cookies, регулировка
нагрузки по разным URL. Сценарий тестирования может быть создан вручную или
записан с помощью веб-браузера и при необходимости отредактирован. В WAST
уровень нагрузки (stress level) регулируется путем задания количества нитей,
осуществляющих запросы к серверу, а число виртуальных пользователей
рассчитывается как произведение числа нитей на число сокетов, открытых каждой из
нитей. По окончании теста получаем простой отчет в текстовой форме, в котором
дана информация по числу обрабатываемых запросов в единицу времени, среднему
времени задержки, скорости передачи данных на сервер и с сервера, количеству
ошибок и т.д. Отчет можно экспортировать в CSV-файл. Никаких возможностей по
статистической обработке не предусмотрено, то есть с его помощью можно только
оценить работу при определенных условиях.

Когда веб-приложение (сайт, сервис) еще достаточно молодое, но нацелено на широкую аудиторию, то весьма сложно понять насколько мощное серверное оборудование требуется. Так что лучшим решением будет симуляция потока пользователей при помощи синтетических тестов.

Apache Bench

Наверное, один из самых простых в использовании и популярных тестов для проверки нагрузки на сайт. Утилита подходит как для простого, так и продвинутого тестирования:

Ab -c 50 -n 10000 -f TLS1.2 -H "Accept-Encoding: gzip,deflate" https://somesite.com/

# Проверка максимального количества запросов с TLS

Команда выполнила 10 000 запросов в 50 потоков и, кроме всего прочего, показала скорость и обработанное количество запросов:

Total transferred: 59560000 bytes HTML transferred: 52160000 bytes Requests per second: 816.77 [#/sec] (mean) Time per request: 122.434 (mean) Time per request: 2.449 (mean, across all concurrent requests) Transfer rate: 2375.33 received

# Лог теста выдает намного больше информации

Из этого отчета самыми важными данными будут:

  • Requests per second - количество запросов в секунду. К примеру если страница состоит из 20 частей (CSS, картинки и HTML), то в нашем примере сервер способен обработать около 40 одновременных пользователей в секунду.
  • Time per request (mean) - среднее время на выполнение группы параллельных запросов (в нашем случае 50);
  • Time per request (mean, across all concurrent requests) - среднее время на выполнение одного запроса.

AB пригодится для быстрой и грубой оценки производительности веб-сервера, так что если нужно получить более приближенные к реальности данные, придется воспользоваться дополнительными утилитами.

Httperf

Этот тест с открытым исходным кодом был разработан в HP для измерения производительности веб-сервера. Инструмент не обновлялся несколько лет, но все еще является весьма актуальным.

Утилита, как и ab, проста в использовании и обладает достаточно широким функционалом. Запускается она так же просто, как и ab:

Httperf --hog --server 192.168.122.10 --wsess=100000,5,2 --rate 1000 --timeout 5

# Создание 100 000 сессий (по 5 вызовов через каждые 2 с) со скоростью 1000

А лог будет выглядеть так:

Total: connections 117557 requests 219121 replies 116697 test-duration 111.423 s Connection rate: 1055.0 conn/s (0.9 ms/conn, <=1022 concurrent connections) Connection time : min 0.3 avg 865.9 max 7912.5 median 459.5 stddev 993.1 Connection time : connect 31.1 Connection length : 1.000 Request rate: 1966.6 req/s (0.5 ms/req) Request size [B]: 91.0 Reply rate : min 59.4 avg 1060.3 max 1639.7 stddev 475.2 (22 samples) Reply time : response 56.3 transfer 0.0 Reply size [B]: header 267.0 content 18.0 footer 0.0 (total 285.0) Reply status: 1xx=0 2xx=116697 3xx=0 4xx=0 5xx=0 CPU time [s]: user 9.68 system 101.72 (user 8.7% system 91.3% total 100.0%) Net I/O: 467.5 KB/s (3.8*10^6 bps)

# Кроме всего прочего, производительность показывает величина скорости запросов (Request rate)

В этом отчете стоит сфокусироваться на:

  • Connection rate - реальная скорость создания новых соединений. Она показывает способность сервера обрабатывать соединения, то есть в нашем случае до 1055 соед./с, но не более 1022 одновременных соединений.
  • Connection time - время “жизни” успешных соединений между инициализацией и закрытием. Опять же показывает производительность сервера при обработке большого количества соединений.
  • Request rate - скорость обработки запросов. То есть, количество запросов, которые сервер способен выполнять за секунду, показывает отзывчивость веб-приложения.

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

Tsung

Это мощная, продвинутая, мультизадачная и мультипоточная утилита. Инструмент может использоваться для нагрузки серверов HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP и Jabber/XMPP. Поддерживается SSL, мониторинг ресурсов системы и агенты SNMP, Munin или Erlang на удаленных серверах, симуляция поведения юзеров и расширенные отчеты.

Инструмент написан на Erlang, так что для начала необходимо установить нужные репозитории, а затем скачать и установить Tsung:

Wget http://tsung.erlang-projects.org/dist/tsung-1.6.0.tar.gz tar zxfv tsung-1.6.0.tar.gz cd tsung-1.6.0 ./configure && make && make install

# Распаковка и компиляция утилиты

Все настройки инструмента необходимо прописать в его файле конфигурации:

Cp /usr/share/doc/tsung/examples/http_simple.xml /root/.tsung/tsung.xml

# Копирование шаблона файла конфигурации в директорию Tsung

После чего его нужно отредактировать, задав необходимые параметры:

# Можно указывать дополнительные опции (к примеру браузеры юзеров), множества нодов для симуляции пользователей

Теперь можно запускать tsung:

Tsung -f tsung.xml start Starting Tsung "Log directory is: /root/.tsung/log/20160428-1117"

# Для запуска с множества нодов их нужно предварительно указать в настройках

Когда утилита закончила свою работу, можно просмотреть отчет:

Mkdir report_output cd report_output /usr/lib/tsung/bin/tsung_stats.pl --stats /root/.tsung/log/20160428-1117/tsung.log chromium graph.html

# Указывается предпочтительный браузер

Отчет будет состоять из графиков и важной дополнительной информации. В нем стоит обратить внимание на:

  • Session - общее количество пользователей и количество одновременных сессий в секунду, которые веб-сервер обработал.
  • Request - время отклика веб-сервера, его способность и скорость обработки одновременных запросов. К примеру 200 запросов/с значит, что в среднем 10 пользователей сможет одновременно получить зайти на веб-страницу, состоящую в общем из 20 компонентов (CSS, картинки и HTML). А это более 400 000 посетителей за 12 часов.
  • Connect - время, требуемое на подключение, то есть отзывчивость веб-сервера .

Дополнительные графики позволят оценить нагрузку на веб-сервер за все время тестирования, отследить возникшие ошибки и динамику.

Другие утилиты

Конечно же список инструментов для проверки производительности веб-сервера и тестирования нагрузки на сайт не ограничивается приведенным в этом материале. Таких утилит огромное множество, как платных, так и бесплатных. Существуют сайты для генерации нагрузки, типа LoadImpact, утилиты для запуска из командной строки и полноценные программы с GUI. Одной из самых популярных с пользовательским интерфейсом, кстати, является Apache JMeter — мощная, продвинутая и достаточно сложная.

Самое главное

Apache Bench, Httperf и Tsung отлично подходят для тестирования нагрузки на большие и маленькие сайты. Но только tsung сможет выжать все соки из веб-сервера и показать на что он способен в условиях, приближенных к реальности. Не забывайте, что сначала все тесты нужно провести для одного пользователя, чтобы проследить зависимость и иметь точку отсчета.

Может кому будет интересно как «по-быстрому» провести нагрузочное тестирование своего веб-приложения.
Подробности под катом

Вместо предисловия

На сегодняшнем стендапе Марек (программист из Польши принимающий участие в проекте EmForge) сказал, что общался с рядом друзей, у которых в прошлом был большой опыт работы с Liferay (который мы как раз активно используем) - и опыт оказался очень негативный, в первую очередь из-за проблем со скоростью. Некоторые проекты тупо накрылись из-за того что эти проблемы так и не получилось решить.

Нет - мы конечно собирались проводить нагрузочное тестирование, но не сейчас, чуть попозже, когда будет побольше функционала, и то, чисто что бы убедиться что все ок, или «не ОК» в каких-то определенных местах - и их править.
Но тут вопрос встал ребром - если все так плохо - то какие-то решения надо принимать уже сейчас - пока не стало поздно. Вывод один - нагрузочное тестирование получает более высокий приоритет по сравнению с остальными задачами

Не «по-быстренькому»

Изначально планировалось идти стандартным путем - взять JMeter , написать для начала простенький скрипт обхода основных страниц с основной функциональностью анонимным пользователем - потом усовершенствовать помаленьку, параллельно решая вопросы как грамотно запустить это добро на нескольких клиентский машинах.

Вообщем задача не на один час

А по-быстренькому?

Но тут я вспомнил, что на Хабре была статья (статью к сожалению не нашел - так бы кинул ссылку), где человек сетовал, что люди не прогоняют нагрузочное тестирование на своем сайте, шлют ссылку на хабр, а потом, когда надо снимать «сливки» с хабраэффекта мучительно сайт поднимают (а пользователи не видят ничего кроме сообщений об ошибках).
Так вот там кто-то советовал несколько сервисов, которые проводят такое нагрузочное тестирование.

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

Совсем по-быстренькому?

Если совсем по-быстрому - то это Load Impact - не надо никаких регистраций - заходите - даете URL - и в течении 10-15 минут 50 виртуальных пользователей терроризируют вашу страницу. Тупо, просто - но по крайней мере позволит увидеть что при первом же наплыве ваше приложение не ляжет. Не легло? Идем дальше

Нагрузочное тестирование за 1.5 часа

Мне очень понравился LoadStorm . С ним работа строится следующим образом:
1. регистрируемся
2. Создаем тест - в котором указывает сайт который будем пытать
3. Прежде чем начать пытку- требуется верификация (а вдруг вы хотите положить сайт конкурента????). надо на главную страницу положить определенный текст с кодом - или файл с определенным именем в корень
4. Дальше создаем сценарий - при создании сценария описываем, как пользователь идет по вашему сайту, какие линки нажимает, можно засабмитить формы. Все достаточно интуитивно и понятно
5. потом говорим когда запустить
6. в назначенное время тест запускается, ждем 30 минут пока до 50-ти пользователей бродят по вашему сайту согласно вашим указаниям - и получаем отчет.

Да, 50 одновременных пользователей - это не совсем серьезно - даже на хаброэффект не потянет - но уже что-то. Надо больше - есть платная подписка (да - забыл сказать что все это бесплатно). В моем случае - 50 одновременных пользователей это та нагрузка, о которой я пока и не мечтаю в ближайшие несколько месяцев - так что мне было достаточно.

Вообщем на описание сценария из 15 последовательных страниц, ожидание запуска теста и ожидание самих результатов ушло порядка полутора часов, в результате я получил графики типа

На этом графике показывается как терзалась система - в моем случае максимально было 47 пользователей - и чуть более 3-ех запросов в секунду
Ну и самый интересный


Из которого следует - что если исключить максимальный пик в 5 секунд (в этот момент решил включиться Garbage Collector) - в остальном приложение вело себя хорошо - и не зависимо от количества пользователей - то есть - нагрузка в 50 пользователей сайт не нагружает - есть еще и запас хороший.

Понятно - что такое тестирование не совсем «серьезное» по выдаваемым результатам, да и 50 одновременных пользователей - нельзя назвать серьезной нагрузкой, но, учитывая потраченное время (полтора часа) и деньги (0 руб) - результат вполне адекватный. По крайней мере мы убедились что если с производительностью есть какие-то проблемы - в ближайшие месяцы мы ее все-таки не увидим

Чуть подлинней и подороже

Если хочется чуть более серьезного - можно попробовать
© 2024 Вопросы и ответы