Pull to refresh

Comments 3

Статья хорошая. Для целей отслеживания деградаций я бы порекомендовал заменить подход с нагрузкой в пользователях/потоках без пауз: startVUs: 100, target: 1000 на профиль с фиксированной нагрузкой. Так можно будет оценивать время ответа.

Если этого не сделать, то вот приложение обрабатывало запросы от 100 потоков пусть за 100 мсек и мы получали 1000 rps. Вот оно стало оптимальнее, и готово обрабатывать запросы за 50 мсек, но в него приходит нагрузка в 2000 rps и мы получаем все равно тормоза и те же 100 мсек - не видим разницы.

В подходе с пулом подключений основная метрика не http_req_duration а

http_reqs......................: 10908 1081.901504/s

Если стало ниже, чем вчера - стало хуже.

А вот если подавать постоянную нагрузку, пусть в 150 rps, например, как на продуктиве или близко, вот так

https://k6.io/docs/using-k6/scenarios/executors/constant-arrival-rate

то будет тест для регрессионного тестирования, в котором можно замерять время ответа.

Спасибо за статью по k6.
У вас есть пример скрипта для k6, как тестировать приложение c подзапросами, где есть первичный http.get('http://testserver:5000'), который вызывает еще несколько rest/graphql get чтоб их ответы отобразить на странице? Ведь скорость загрузки страницы — это совокупность всех запросов. В данном случае k6 измерит только статичный начальный Get?
Например в JMeter во время записи, рекордер позволяет сгруппировать все подзапросы для страницы и измерить скорость для всей группы запросов как нагрузку для одной страницы.

Или для этого и необходим batch, но придется все анализировать и кодить вручную? Спасибо.

Можно собрать k6 с дополнительным модулем xk6-browser (задача непростая) или скачать собранный. Использовать функцию setup, чтобы один раз открыть страницу и получить ее ресурсы используя Routehttps://try.playwright.tech/?e=intercept-requests.

  // Log and continue all network requests
  page.route('**', (route, request) => {
  if(request.method() == 'GET' &&
    request.url().toString().indexOf('testserver:5000/')>0) {
      console.log(request.url()); // тут копирование в список
    }
    route.continue();
  });

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

Это сложный способ описал. Простой может кто-то еще подскажет

Sign up to leave a comment.