Нагрузочное тестирование. Основы нагрузочного тестирования Нагрузочное тестирование по

В этой статье мы рассмотрим 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:

  • Для установки WAPT необходима операционная система Windows.
  • Отсутствует возможность создание сценариев.

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 сервера.
  • Невозможно запланировать запуск тестов на более позднюю дату.
  • Активы, отличные от скриптов, не могут быть присоединены.

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

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

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

Нагрузочное тестирование или тестирование производительности

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

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

Рассмотрим основные виды нагрузочного тестирования, также задачи стоящие перед ними.

Тестирование производительности (Performance testing )

Задачей тестирования производительности является определение масштабируемости приложения под нагрузкой, при этом происходит:

  • определение количества пользователей, одновременно работающих с приложением
  • определение границ приемлемой производительности при увеличении нагрузки (при увеличении интенсивности выполнения этих операций)
  • исследование производительности на высоких, предельных, стрессовых нагрузках
Стрессовое тестирование (Stress Testing )

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

Объемное тестирование (Volume Testing )

Задачей объемного тестирования является получение оценки производительности при увеличении объемов данных в базе данных приложения, при этом происходит:

  • измерение времени выполнения выбранных операций при определенных интенсивностях выполнения этих операций
  • может производиться определение количества пользователей, одновременно работающих с приложением
Тестирование стабильности или надежности (Stability / Reliability Testing )

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

Load vs Performance Testing

В англоязычной терминологии вы можете так же найти еще один вид тестирования - Load Testing - тестирование реакции системы на изменение нагрузки (в пределе допустимого). Нам показалось, что Load и Performance преследуют все же одну и ту же цель: проверка производительности (времени отклика) на разных нагрузках. Собственно поэтому мы и не стали разделять их. В то же время кто то может разделить. Главное все таки понимать цели того или иного вида тестирования и постараться их достигнуть.

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

Нагрузочное тестирование (англ. Load Testing ) - определение или сбор показателей производительности и времени отклика программно-технической системы или устройства в ответ на внешний запрос с целью установления соответствия требованиям, предъявляемым к данной системе (устройству).

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

Нагрузочное тестирование программного обеспечения

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

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

Пример 1:

Веб-сервис с функциональностью корзины покупателя рассчитан на 100 одновременно работающих пользователей, которые следуют некоторому определённому сценарию (заданные действия в указанных пропорциях):

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

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

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

Одним из оптимальных подходов в использовании нагрузочного тестирования для измерений производительности системы является тестирование на стадии ранней разработки. Нагрузочное тестирование на первых стадиях готовности архитектурного решения с целью определить его состоятельность называется "Proof-of-Concept" тестированием.

Основные принципы нагрузочного тестирования

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

1. Уникальность запросов

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

Иллюстрация различной дисперсии распределений для времени выполнения запросов X и Y.

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

2. Время отклика системы

В общем случае время отклика системы подчиняется функции нормального распределения .

В частности это означает, что имея достаточное количество измерений, можно определить вероятность с которой отклик системы на запрос попадёт в тот или иной интервал времени.

3. Зависимость времени отклика системы от степени распределённости этой системы.

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

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

4. Разброс времени отклика системы

Из утверждений 1, 2 и 3 можно также заключить, что при достаточно большом количестве измерений величины времени обработки запроса в любой системе всегда найдутся запросы, время обработки которых превышает определённые в требованиях максимумы; причем, чем больше суммарное время проведения эксперимента тем выше окажутся новые максимумы.

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

5. Точность воспроизведения профилей нагрузки

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

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

Инструментарий для тестирования производительности

Следует отметить, что для большинства видов тестирования производительности используется один и тот же инструментарий, умеющий выполнять типовые задачи.

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

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

  • Приложение,
  • База данных,
  • Сеть,
  • Обработка на клиентской стороне,
  • Балансировка нагрузки.

Также следует отметить появление сетевых Business-to-business (B2B) приложений, использующих соглашение об уровне услуг (или SLA, Service Level Agreement). Нарастающая популярность B2B-приложений привела к тому, что всё больше приложений переходят на сервис-ориентированную архитектуру , в случае которой обмен информацией происходит без участия веб-браузеров. Примером такого взаимодействия может служить бюро туристических услуг, запрашивающее информацию об определённом авиарейсе между Санкт-Петербургом и Омском, в то время как авиакомпания обязана предоставить ответ в течение 5 секунд. Часто нарушение договора об SLA грозит крупным штрафом.

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

ПО Наименование производителя Комментарии
OpenSTA "Open System Testing Architecture" Свободно распространяемое программное обеспечение для нагрузочного/стресс тестирования, лицензированное GNU GPL. Использует распределённую архитектуру приложений, основанную на CORBA . Доступна версия под Windows, хотя имеются проблемы с совместимостью с Windows Vista. Поддержка прекращена в 2007 году.
IBM Rational Performance Tester IBM Основанное на среде разработки Eclipse ПО, позволяющее создавать нагрузку больших объёмов и измерять время отклика для приложений с клиент-серверной архитектурой. Требует лицензирования.
JMeter Открытый проект Apache Jakarta Project Основанный на Java кроссплатформенный инструментарий, позволяющий производить нагрузочные тесты с использованием JDBC / FTP / LDAP / SOAP / JMS / POP3 / HTTP / TCP соединений. Даёт возможность создавать большое количество запросов с разных компьютеров и контролировать процесс с одного из них.
HP LoadRunner HP Инструмент для нагрузочного тестирования, изначально разработанный для эмуляции работы большого количества параллельно работающих пользователей. Также может быть использован для unit- или интеграционного тестирования .
SilkPerformer Micro Focus
Visual Studio Load Test Microsoft Visual Studio предоставляет инструмент для тестирования производительности включая load / unit testing
LoadComplete SmartBear

Основные показатели (метрики) производительности

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

1. Потребление ресурсов центрального процессора (CPU, %)

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

2. Потребление оперативной памяти (Memory usage, Mb)

Метрика, показывающая количество памяти, использованной приложением. Использованная память может делиться на три категории:

  • Virtual - объём виртуального адресного пространства, которое использует процессор. Этот объём не обязательно подразумевает, использование соответствующего дискового пространства или оперативной памяти. Виртуальное пространство конечно и процесс может быть ограничен в возможности загружать необходимые библиотеки.
  • Private - объём адресного пространства, занятого процессором и не разделяемого с другими процессами.
  • Working Set - набор страниц памяти, недавно использованных процессом. В случае, когда свободной памяти достаточно, страницы остаются в наборе, даже если они не используются. В случае, когда свободной памяти остаётся мало, использованные страницы удаляются.

При работе приложения память заполняется ссылками на объекты, которые, в случае неиспользования, могут быть очищены специальным автоматическим процессом, называемым «сборщиком мусора» (англ. Garbage Collector ). Время затрачиваемое процессором на очистку памяти таким способом может быть значительным, в случае, когда процесс занял всю доступную память (в Java - так называемый «постоянный Full GC») или когда процессу выделены большие объёмы памяти, нуждающиеся в очистке. На время, требующееся для очистки памяти, доступ процесса к страницам выделенной памяти может быть заблокирован, что может повлиять на конечное время обработки этим процессом данных.

3. Потребление сетевых ресурсов

Эта метрика не связана непосредственно с производительностью приложения, однако её показатели могут указывать на пределы производительности системы в целом.

Пример 3:

Серверное приложение обрабатывая запрос пользователя, возвращает ему видео-поток, используя сетевой канал в 2 мегабит. Требование гласит, что сервер должен обрабатывать 5 запросов пользователей одновременно.

Нагрузочное тестирование показало, что эффективно сервер может предоставлять данные только 4 пользователям одновременно, так как мультимедиа-поток имеет битрейт в 500 килобит. Очевидно, что предоставление этого потока 5 пользователям одновременно невозможно в силу превышения пропускной способности сетевого канала, а значит, система не удовлетворяет заданным требованиям производительности, хотя при этом потребление ей ресурсов процессора и памяти может быть невысоким.

4. Работа с дисковой подсистемой (I/O Wait)

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

5. Время выполнения запроса (request response time, ms)

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

См. также

Ссылки

  • Площадка услуг по тестированию сайтов и программного обеспечения (рус.)
  • Портал специалистов по тестированию и обеспечению качества ПО (рус.) - Проект посвящён вопросам тестирования и повышения качества программного обеспечения.
  • База знаний тестировщика (рус.) - Багтрекеры, автоматизированное тестирование, нагрузочное тестирование, юзабилити тестирование, сообщества, печатные издания, книги
  • Автоматизация нагрузочного тестирования (рус.)
  • Заметки по нагрузочному тестированию (рус.)

Литература

  • Лайза Криспин, Джанет Грегори Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд = Agile Testing: A Practical Guide for Testers and Agile Teams. - М .: «Вильямс», 2010. - 464 с. - (Addison-Wesley Signature Series). - 1000 экз. - ISBN 978-5-8459-1625-9

Wikimedia Foundation . 2010 .

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

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

  • Если это сервис - для серьезной нагрузки цена слишком высока
  • Если это утилита - результат зависит от скорости канала компьютера/сервера с которого проводился тест
  • Повторяющиеся запросы не отражают реальной скорости, так как кэширование есть на самых разных уровнях начиная от CPU и заканчивая базой данных
Надеюсь, «велосипед» будет интересен и другим - сначала я опишу что уже работает, потом можно будет обсудить дальнейшие фичи.

Что уже сделано?

  • Можно тестировать задания из списка url, до 20 штук
  • Каждая url может содержать один или несколько случайных параметров, задаваемых с помощью функции $RND
  • Тест запускается с множества серверов, на каждом из которых работает только 8 потоков
  • Тестирование можно проводить из 5 регионов AWS - Дублин, Франкфурт, Восток/Запад США, Токио
  • Тесты до 200 потоков мы готовы предоставлять бесплатно
Для теста открываем форму , где указываем email, заполняем URL, выбираем количество потоков тестирования, регион и начинаем тест.

*** UPDATE ***
Я вижу много смелых хабравчан ставит задание на 200 потоков. Если предположить, что 1 страница выдается за 1 секунду то это соответствует посещаемости >100К посетителей в час. Обычные проекты, в том числе наши, умирают от таких тестов.

Через минуту будет готов ваш результат (для примера посмотрите отличный результат - тестирование example.net). Как видим, 200 потоков позволяет генерировать более 1000 запросов в секунду - все зависит от скорости связи с тестируемым сервисом, и. собственно, скорости ответа.

Если вы готовы похвастаться вашим результатом на нашем сайте - можете нажать кнопку Public result. Для того, чтобы показать его своим коллегам достаточно отправить ссылку.

Что тестировать?
Статические ресурсы, картинки, скрипты должны отдаваться с CDN. Тестировать их скорость отдачи имхо не имеет смысла, нужно тестировать только общую скорость загрузки страницы, к примеру с помощью старого доброго http://tools.pingdom.com/fpt/

Loadme сосредотачивается на тестировании кода страниц / методов api и т.п… Тестировать nginx отдающий 1x1.gif с помощью этого инструмента конечно можно, но практической пользы нет, и nginx от этого даже не согреется.

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

Как работают редиректы?
Редиректы выполняются; мы их активно используем это для тестирования одного из наших сайтов wikiart.org, реализовав на нем функцию «перейти на случайную картину».

Почему важно тестировать несколько url?
Для тестирования взаимного влияния популярных быстрых страниц и медленных (к примеру, поиска)

Зачем нужен $RND?
Синтаксис - $RND(from,to).
К примеру, http://someshop.com/search?from=$RND(0,1000)&to=$RND(1000,10000) будет генерировать произвольные запросы по поиску товаров по цене начиная от 0 до 1000 и заканчивая от 1000 до 10000. Это дает возможность оценить реальную мощность поиска.
К примеру, популярный украинский магазин Rozetka тратит в среднем 5 секунд на поиск смартфонов по случайной цене:
http://loadme.socialtalents.com/Result/ViewById/56108a645b5f1700481cc21d , что является весьма далеким от идеала результатом.
Амазон справляется с этой задачей принципиально лучше - значительное количество ошибок в результате, скорее всего, является защитой от ddos

Дальнейшие планы

Post, put, delete запросы
Нужная штука, однозначно, есть в планах.

Авторизация
Достаточно ли будет поддержки куки, с тем чтобы первый запрос логинил тест под случайным пользователем (для чего понадобится поддержка со стороны сервера), и дальнейшая работа пойдет от имени этого пользователя?

Ступенчатые тесты
Скажем, провести серию тестов: 25%, 50%, 75% и 100%, и увидеть разницу в скорости.


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

Регулярный тест по расписанию
Повторять тест каждый день / неделю и высылать отчет на email.
Также можно предоставиьт какой-нибудь webhook для иницирования существующего теста из кода (к примеру, после обновления)

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

Подтверждение собственности домена
Ограничение не более 200 агентов на 1 домен существует ровно для того чтобы никто не поверг в ddos чужой сайт. Для своего сайта вы можете создать еще один поддомен и протестировать его еще раз.
В будущем, однако, нужно будет сделать подтверждение доменов с помощью CNAME записи или файла с определённым именем.

Существующие конкуренты
Loadimpact.com - для нормального нагрузочного теста, хотя бы 100 запросов в секунду, потребуется 1500 так называемых «виртуальных юзеров» - каждый из них загружает страницу 1 раз в 15 секунд. Стоит такой пакет на данный момент $299 в месяц.

Loader.io - отличный сервис, платный пакет всего $99 в месяц. Очень гибкие настройки URL - можно завать методы, куки, хедеры, но нам не хватило рандомизации теста.