Перейти к основному содержимому

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

· 4 мин. чтения

1. Обзор

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

В этой статье мы будем использовать инструмент стресса Gatling для измерения производительности промежуточной среды этого веб-сайта.

2. Тестовый сценарий

Давайте сначала настроим наш основной сценарий использования — тот, который близок к типичному пользователю, который может просматривать сайт:

  1. Перейти на главную страницу
  2. Открытие статьи с домашней страницы
  3. Перейти к Руководствам/ОТДЫХУ
  4. Перейти в категорию ОТДЫХ
  5. Перейти к полному архиву
  6. Открыть статью из архива

3. Запишите сценарий

Теперь мы запишем наш сценарий с помощью регистратора Гатлинга следующим образом:

$GATLING_HOME/bin/recorder.sh

И для пользователей Windows:

%GATLING_HOME%\bin\recorder.bat

Примечание: GATLING_HOME — это ваш каталог установки Gatling.

Существует два режима Gatling Recorder : HTTP Proxy и HAR Converter.

Мы подробно обсуждали режим прокси-сервера HTTP в предыдущем руководстве , поэтому давайте теперь рассмотрим параметр HAR Converter.

3.1. HAR-конвертер

HAR — это сокращение от HTTP Archive — это формат, который в основном записывает полную информацию о сеансе просмотра .

Мы можем получить файлы HAR из браузера, а затем использовать Gatling Recorder, чтобы преобразовать их в симуляцию.

Мы создадим наш файл HAR с помощью инструментов разработчика Chrome:

  • Меню -> Дополнительные инструменты -> Инструменты разработчика
  • Перейти на вкладку « Сеть »
  • Убедитесь, что установлен флажок « Сохранить журнал» .
  • После того, как вы закончите навигацию по веб-сайту, щелкните правой кнопкой мыши запросы, которые вы хотите экспортировать.
  • Затем выберите «Копировать все как HAR».
  • Вставьте их в файл, а затем импортируйте из регистратора Gatling.

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

Обратите внимание, что выходная папка по умолчанию — GATLING_HOME/user-files-simulations .

4. Моделирование

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

class RestSimulation extends Simulation {

val httpProtocol = http.baseURL("http://staging.foreach.com")

val scn = scenario("RestSimulation")
.exec(http("home").get("/"))
.pause(23)
.exec(http("article_1").get("/spring-rest-api-metrics"))
.pause(39)
.exec(http("rest_series").get("/rest-with-spring-series"))
.pause(60)
.exec(http("rest_category").get("/category/rest/"))
.pause(26)
.exec(http("archive").get("/full_archive"))
.pause(70)
.exec(http("article_2").get("/spring-data-rest-intro"))

setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}

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

5. Запустите нагрузочный тест

Теперь мы можем запустить нашу симуляцию следующим образом:

$GATLING_HOME/bin/gatling.sh

И для пользователей Windows:

%GATLING_HOME%\bin\gatling.bat

Инструмент Gatling просканирует GATLING_HOME/user-files-simulations и выведет список всех найденных симуляций, чтобы мы могли их выбрать.

После запуска симуляции вот как выглядят результаты:

Для одного пользователя:

> request count                                304 (OK=304    KO=0)
> min response time 75 (OK=75 KO=-)
> max response time 13745 (OK=13745 KO=-)
> mean response time 1102 (OK=1102 KO=-)
> std deviation 1728 (OK=1728 KO=-)
> response time 50th percentile 660 (OK=660 KO=-)
> response time 75th percentile 1006 (OK=1006 KO=-)
> mean requests/sec 0.53 (OK=0.53 KO=-)
---- Response Time Distribution ------------------------------------
> t < 800 ms 183 ( 60%)
> 800 ms < t < 1200 ms 54 ( 18%)
> t > 1200 ms 67 ( 22%)
> failed 0 ( 0%)

Для 5 одновременных пользователей:

> request count                               1520 (OK=1520   KO=0)
> min response time 70 (OK=70 KO=-)
> max response time 30289 (OK=30289 KO=-)
> mean response time 1248 (OK=1248 KO=-)
> std deviation 2079 (OK=2079 KO=-)
> response time 50th percentile 504 (OK=504 KO=-)
> response time 75th percentile 1440 (OK=1440 KO=-)
> mean requests/sec 2.411 (OK=2.411 KO=-)
---- Response Time Distribution ------------------------------------
> t < 800 ms 943 ( 62%)
> 800 ms < t < 1200 ms 138 ( 9%)
> t > 1200 ms 439 ( 29%)
> failed 0 ( 0%)

Для 10 одновременных пользователей:

> request count                               3058 (OK=3018   KO=40)
> min response time 0 (OK=69 KO=0)
> max response time 44916 (OK=44916 KO=30094)
> mean response time 2193 (OK=2063 KO=11996)
> std deviation 4185 (OK=3953 KO=7888)
> response time 50th percentile 506 (OK=494 KO=13670)
> response time 75th percentile 2035 (OK=1976 KO=15835)
> mean requests/sec 3.208 (OK=3.166 KO=0.042)
---- Response Time Distribution ----------------------------------------
> t < 800 ms 1752 ( 57%)
> 800 ms < t < 1200 ms 220 ( 7%)
> t > 1200 ms 1046 ( 34%)
> failed 40 ( 1%)

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

6. Заключение

В этой быстрой статье мы изучили вариант HAR для записи тестовых сценариев в Gatling, а также провели простой начальный тест foreach.com.