#testing #jmeter #performance-testing #stress-testing #jmeter-3.2
#тестирование #jmeter #тестирование производительности #стресс-тестирование #jmeter-3.2
Вопрос:
Мне было интересно, есть ли способ протестировать следующий сценарий в jmeter:
Сайт: на сайте есть 2 страницы, одна из которых (назовем ее heavy-page) после завершения загрузки потребляет много системных ресурсов (cpu), а другая — нет (назовем ее light-page).
- Имитируйте загрузку 1000 пользователей (потоков) и пребывание на тяжелой странице.
- Пока эти 1000 пользователей все еще находятся на тяжелой странице, попросите другую группу из 1000 пользователей загрузить легкую страницу.
Ключевые вопросы будут заключаться в следующем: как сделать так, чтобы первый набор потоков имитировал пребывание пользователей на странице после завершения загрузки, в то время как другой набор пользователей загружает легкую страницу?
В настоящее время у меня есть что-то вроде этого:
Group1 (1000 threads, loop count 1):
- Runtime controller (set to 5min, so each thread runs for 5 minutes):
- heavy-page
Group2: (1000 threads, loop count 1, and a startup delay set to 2 minutes, so it starts after all threads in Group1 are running)
- light-page
Это делает почти все, что я хотел, за исключением того, что я вижу, что heavy-page отправил намного больше запросов, чем я ожидал (более 1000), как будто он не распознал количество циклов, установленное на единицу в G1. Я не уверен, что причина этого в том, что, поскольку сэмплер / поток находится внутри контроллера среды выполнения, он просто зацикливается навсегда в течение времени, установленного контроллером, что означало бы (я думаю), что пользователь не просто остается на странице в течение 5 минут, но отправляет сообщениезапрашивайте один за другим после загрузки страницы, что мне не нужно для тестирования
Ответ №1:
-
В вашей настройке пользователи не «остаются» на «тяжелой странице», они открывают ее снова и снова. Контроллер времени выполнения не учитывает количество циклов, он запускает своих дочерних элементов в течение указанного времени.
-
Согласно главной странице проекта JMeter:
JMeter — это не браузер, он работает на уровне протокола. Что касается веб-сервисов и удаленных служб, JMeter выглядит как браузер (или, скорее, несколько браузеров); однако JMeter не выполняет все действия, поддерживаемые браузерами. В частности, JMeter не выполняет Javascript, найденный на HTML-страницах. Он также не отображает HTML-страницы так, как это делает браузер (можно просмотреть ответ как HTML и т. Д., Но тайминги не включаются ни в какие образцы, И одновременно отображается только один образец в одном потоке).
-
Сэмплеры HTTP-запросов JMeter не «остаются» на странице, они выполняют запрос, получают ответ, измеряют затраченное время, и если больше нет сэмплеров для выполнения и циклов для итерации, поток завершается. Если на «тяжелой» странице происходят фоновые события, такие как запросы AJAX или запросы WebSocket, вам необходимо смоделировать их с помощью параллельного контроллера или сэмплеров WebSocket