Что касается многопоточности Chrome и FF (Process), как выполнить нагрузочное тестирование по веб-протоколу?
Интересно, решил ли кто-нибудь проблему многопоточности браузера с помощью скрипта ответа на запрос для нагрузочного теста?
2 ответа
Имитация параллелизма веб-браузера - это то, что большинство инструментов нагрузочного тестирования делают очень плохо, если вообще делают. Мы попытались сделать это в k6, позволив каждому VU (виртуальному пользователю) использовать несколько одновременных TCP-соединений для параллельной выборки. Существует специальная функция API - http.batch (), которая включает эту функцию. http.batch() принимает несколько URL-адресов в качестве входных параметров и выбирает как можно больше параллельно.
Как пишет Дмитрий, у Jmeter есть плагин, который обеспечивает параллелизм. Однако на самом деле (если я не дезинформирован) он распределяет запросы по нескольким VU. Каждый VU по-прежнему будет использовать только одно одновременное соединение, что означает, что если вы, например, хотите имитировать 100 реальных пользователей браузера, вам может потребоваться запустить 1000 VU, чтобы сделать это реалистично. На мой взгляд, это не очень отличается от того, что вы получили бы с помощью любого другого инструмента нагрузочного тестирования: все они позволяют вам запускать больше виртуальных единиц для создания большего количества параллелизма и большего трафика.
Я бы сказал, что кроме k6 и, может быть, одного или двух других инструментов (и Jmeter не является одним из них), ваш единственный вариант, если вы хотите действительно имитировать поведение браузеров, - это использовать Selenium Grid или что-то похожее на fire большое количество реальных, реальных браузеров, чтобы выполнить нагрузочное тестирование. Недостатком является то, что настоящие браузеры очень дороги в запуске: им требуется много процессора и памяти. Но они обеспечивают безусловно лучшую браузерную "симуляцию".
Если вы собираетесь использовать настоящие браузеры Chrome и FF для нагрузочного тестирования, вы можете рассмотреть следующие варианты:
Selenium-Grid позволяет вам параллельно запускать тесты на разных компьютерах для разных браузеров. То есть запуск нескольких тестов одновременно на разных машинах с разными браузерами и операционными системами. По сути, Selenium-Grid поддерживает выполнение распределенных тестов. Это позволяет запускать ваши тесты в распределенной среде выполнения тестов.
Apache JMeter с плагином WebDriver Sampler. Таким образом, вы сможете контролировать параллелизм и получать показатели производительности в виде HTML-панели отчетности.