Нагрузочное тестирование Baeldung с Гатлингом

Пример нагрузочного тестирования с Gatling

1. обзор

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

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

2. Сценарий тестирования

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

  1. Перейти на домашнюю страницу

  2. Открыть статью с домашней страницы

  3. Перейти в путеводители / ОТДЫХ

  4. Перейти в категорию отдыха

  5. Перейти в полный архив

  6. Открыть статью из архива

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

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

$GATLING_HOME/bin/recorder.sh

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

%GATLING_HOME%\bin\recorder.bat

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

Естьtwo modes for Gatling Recorder: HTTP Proxy и HAR Converter.

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

3.1. Конвертер HAR

HAR - это сокращение от HTTP Archive - это формат, в основномrecords the full information about a browsing session.

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

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

  • Меню → Дополнительные инструменты → Инструменты разработчика

  • Перейти на вкладкуNetwork

  • Убедитесь, чтоPreserve log отмечен

  • После того, как вы закончите навигацию по сайту, щелкните правой кнопкой мыши на запросах, которые вы хотите экспортировать

  • Затем выберите Копировать все как HAR

  • Вставьте их в файл, затем импортируйте его из регистратора Гатлинга

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

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

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

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

class RestSimulation extends Simulation {

    val httpProtocol = http.baseURL("http://staging.example.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)
}

Здесь важно отметить, что полный файл моделирования намного больше; здесьwe didn’t include static resources для простоты.

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, а также провели простой начальный тест example.com.