51  /  97

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

Просмотров: 39459
Дата последнего изменения: 17.01.2024
Сложность урока:
4 уровень - сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
1
2
3
4
5

Зачем нужно тестирование

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

Зачем производится нагрузочное тестирование:

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

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

Apache HTTP server benchmarking tool

Бесплатный

Официальный сайт

Самый часто используемый, т.к входит в состав Apache.

ab  [options]  [http[s]://]hostname[:port]/path

где основные необходимые options:

-c concurrency - количество одновременных запросов к серверу (по умолчанию 1);
-n requests - общее количество запросов (по умолчанию 1).

В результате команды получаем такой отчет:

Concurrency Level:      10
Time taken for tests:   0.984 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      3725507 bytes
HTML transferred:       3664100 bytes
Requests per second:    101.60 [#/sec] (mean)
Time per request:       98.424 [ms] (mean)
Time per request:       9.842 [ms] (mean, across all concurrent requests)
Transfer rate:          3696.43 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1    2   3.6      1      23
Processing:    63   94  21.5     90     173
Waiting:       57   89  21.6     84     166
Total:         64   96  21.5     92     174

Плюсы:

  • Есть везде, где есть Apache;
  • Не требует никакой дополнительной настройки;
  • Очень простой инструмент.

Минусы:

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

Joe Dog Siege

Бесплатный

Официальный сайт.

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

В файле-сценарии задаются URL-ы и запросы тестирования. Если сценарий большой по объему, то можно вынести все запросы в отдельный файл и в команде указать этот файл при тестировании:

# cat urls.txt
# URLS file for siege
# --

http://www.bitrix24.ru/
http://www.bitrix24.ru/support/forum/forum1/topic3469/?PAGEN_1=2
http://www.bitrix24.ru/register/reg.php POST domain=test&login=login
http://www.bitrix24.ru/search/ POST < /home/www/siege_post_data

# siege -f urls.txt -c 10 -r 10 -d 3

В команде указывается количество пользователей , количество повторений -r и задержку между хитами -d.

Результат можно выводить в log-файл или сразу в консоль в режиме реального времени:

HTTP/1.1 200   0.44 secs:   12090 bytes ==> GET  /
HTTP/1.1 200   0.85 secs:   29316 bytes ==> GET  /support/forum/forum1/
HTTP/1.1 200   0.85 secs:   29635 bytes ==> GET  /support/forum/forum1/
HTTP/1.1 200   0.34 secs:   12087 bytes ==> GET  /

[...]

done.

Transactions:                    100 hits
Availability:                 100.00 %
Elapsed time:                  12.66 secs
Data transferred:               1.99 MB
Response time:                  0.64 secs
Transaction rate:               7.90 trans/sec
Throughput:                     0.16 MB/sec
Concurrency:                    5.02
Successful transactions:         100
Failed transactions:               0
Longest transaction:            1.06
Shortest transaction:           0.31

Также можно взять из access-log веб-сервера URL-ы, по которым ходили реальные пользователи и эмулировать нагрузку реальных пользователей.

Плюсы:

  • Многопоточный;
  • Можно задавать как количество запросов, так и продолжительность (время) тестирования - т.е можно эмулировать пользовательскую нагрузку;
  • Поддерживает простейшие сценарии

Минусы:

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

Примечание: Существует похожий инструмент httperf, но автор потерял доступ к исходному коду инструмента.

Apache JMeter

Бесплатный

Официальный сайт

Основные возможности:

  • Написан на Java;
  • HTTP, HTTPS, SOAP, Database via JDBC, LDAP, SMTP(S), POP3(S), IMAP(S);
  • Консоль и GUI;
  • Распределенное тестирование;
  • План тестирования – XML-файл;
  • Может обрабатывать лог веб-сервера как план тестирования;
  • Визуализация результатов в GUI.

Результаты выводятся в графическом виде:

Плюсы:

  • Кроссплатформенный, т.к написан на Java;
  • Очень гибкий, используется много протоколов, не только веб-сервер, но и базы;
  • Управляется через консоль и gui интерфейс;
  • Использование напрямую логов веб-сервера Apache и Nginx в качестве сценария c возможностью варьирования нагрузки по этим профилям;
  • Достаточно удобный и мощный инструмент.

Минусы:

  • Ресурсоемкий;
  • На длительных и тяжелых тестах часто падает по разным причинам;
  • Стабильная работа зависит от окружения и конфигурации сервера.

Tsung

Бесплатный

Официальный сайт

Основные возможности:

  • Написан на Erlang;
  • HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, Jabber/XMPP;
  • Консоль (GUI через сторонний плагин);
  • Распределенное тестирование (миллионы пользователей);
  • Фазы тестирования;
  • План тестирования – XML;
  • Запись плана с помощью Tsung recorder’а;
  • Мониторинг тестируемых серверов (Erlang, munin, SNMP);
  • Инструменты для генерации статистики и графиков из логов работы.

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

  • tsung_stats.pl

  • tsung_stats.pl + Gnuplot:

Плюсы:

  • Т.к на писан на Erlang, то хорошо масштабируется, зависит от выделяемых ресурсов;
  • Может выполнять роль распределенной системы, на большом количестве машин;
  • Большое количество тестируемых систем - не только веб-серверы и БД, но и, к примеру, XMPP-сервер: может отправлять сообщения, тесты с авторизацией;
  • Управление через консоль, но, благодаря поддержке плагинов, можно управлять и с помощью стороннего плагина с gui-интерфейсом;
  • Наличие в комплекте инструмента Tsung Recorder - своего рода, proxy-сервер, через который можно ходить по тестируемому сайту и записывать сразу как профиль нагрузки;
  • Генерация различных графиков тестирования с помощью скриптов.

Минусы:

  • Нет gui-интерфейса;
  • Только *nix системы.

WAPT

Платный

Официальный сайт

Основные возможности:

  • Windows
  • Платный (есть триал на 30 дней / 20 виртуальных пользователей);
  • Запись плана тестирования из десктопных и мобильных браузеров;
  • Зависимости в планах тестирования (последующий URL в зависимости от ответа сервера);
  • Имитации реальных пользователей (задержки между соединениями, ограничение скорости соединений).

Отчет можно вывести как таблицей, так и графиком:

Плюсы:

  • Очень гибкий, большое количество настроек и тестов;
  • Эмуляция медленных каналов соединений пользователей;
  • Подключение модулей;
  • Запись сценариев тестирования прямо из браузера, как с десктопного, так и с мобильного;
  • Генерация различных графиков тестирования с помощью скриптов.

Минусы:

  • Доступен только для Windows;
  • Платный.

Инструменты тестирования в продуктах «1С-Битрикс»

Входит в лицензию продукта

Официальный сайт

Основные возможности:

  • Простой и понятный функционал, доступен сразу из административного интерфейса продукта «1С-Битрикс»;
  • Задается количество потоков, можно изменять количество потоков в процессе теста;
  • Удобен для быстрых сценариев по проверке текущей конфигурации сервера.

Отчет о тестировании выводится в виде таблицы и графиков:

Примечание: Подробнее о работе встроенного в продукт инструмента тестирования см. в уроке Тест производительности.


5
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии