[Перевод] Выполнение реалистичных нагрузочных тестов

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

Введение

Нагрузочное тестирование — это своего рода искусство. Написание тестовых сценариев — это только половина дела.

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

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

  • Имитировать действия пользователей из различных географических точек.

  • Имитировать сеть, из которой подключаются пользователи.

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

Генерирование большой нагрузки

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

Инструмент для тестирования подключается к контроллеру нагрузки (Load Controller). Затем контроллер нагрузки подключается к одному или нескольким генераторам нагрузки (Load Generator). Генераторы нагрузки размещаются на отдельных серверах и отвечают за выполнение сценариев. Если вы имитируете 3 000 пользователей и имеете 3 генератора нагрузки, то каждый генератор нагрузки будет имитировать 1 000 пользователей.

Некоторые инструменты, такие как JMeter, не отделяют генератор нагрузки от UI:

Здесь терминология немного различается:

  • JMeter Master: машина, на которой запущен графический интерфейс JMeter.

  • JMeter Slave: запущенный jmeter-сервер, на котором выполняются сценарии.

Географическое местоположение

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

В таблице ниже показана задержка между двумя конечными точками:

© 2018 WonderNetwork

Как видите, это не так уж и мало. Именно поэтому были разработаны новые протоколы, такие как SPDY от Google или HTTP/2, чтобы частично решить проблемы с задержкой.

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

Виртуализация сети

Доступ к веб-странице с мобильного телефона или с компьютера в офисе не дает одинаковой производительности. С одной стороны, можно использовать медленное соединение (GPRS, 3G), а с другой стороны, выделенную линию с очень низкой задержкой.

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

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

Для имитации сетей можно использовать либо сетевое устройство, такое как iTrinigy Network Emulator, либо программное обеспечение. Очевидно, что устройство будет более реалистично воспроизводить поведение реальной сети.

Мониторинг

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

Заключение

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

Завтра вечером пройдет открытый урок, на котором рассмотрим инструменты shift left performance testing и сравним два наиболее популярных из них: Gatling и k6.

Записаться на урок можно на странице курса «Нагрузочное тестирование».

© Habrahabr.ru