Я пытаюсь создать симулятор, который имитирует сотни пользователей в веб-приложении.Тестирование нагрузки Веб-приложения, использующие AJAX
Обычно я использую симулятор загрузки Microsoft и веб-тесты. Если веб-страница имеет некоторую сложность, я использую плагины WebTest для ее правильной настройки.
Теперь у меня есть веб-страница, которая обрабатывает тонны запросов ajax на каждый URL, который я посещаю, запросы ajax основаны на сложных вычислениях, выполненных в браузере. Если я просто просмотрю URL-адрес и запишу весь трафик, даже после того, как я сделаю некоторые динамические параметры, я все равно не смогу имитировать его правильно, так как могут быть разные запросы, которые могут быть отправлены на сервере предыдущие ответы.
Если я создам веб-тест, который имитирует его правильно, он потребует много плагинов для веб-сайтов и будет невозможно поддерживать, поскольку сайт, вероятно, изменится каждые несколько недель.
Я думал об использовании селена, но если я его использую, мне понадобится слишком много аппаратных ресурсов для запуска сотен пользователей.
я придумал идею использования обезглавленный браузера, например PhantomJs, SimpleBrowser, HtmlUnit и т.д. Оба SimpleBrowser и HtmlUnit не поддерживает выполняющийся JavaScript/AJAX, что делает их бесполезными для меня.
Я попытался использовать PhantomJs, но у меня возникла проблема с запуском нескольких пользователей параллельно, поскольку localStorage одинаково для всех, поэтому он поддерживает один и тот же сеанс для всех, поэтому я не могу имитировать разных пользователей параллельно.
Есть ли у кого-нибудь опыт работы с сложными веб-приложениями ajax с загрузкой?
Я буду любить вас вечно, если вы поможете мне в этом вопросе.
P.S Я обычно кодирую на C#, но я открыт для новых языков \ технологий.
(1) HtmlUnit поддерживает JavaScript, только не все. (2) PhantomJS имеет один кеш на процесс. Вы говорите, что используете симуляцию для нескольких пользователей в одном экземпляре PhantomJS? (У меня нет опыта тестирования нагрузки.) –
Да, я знаю, что он поддерживает JS, поэтому добавил «/ AJAX», потому что он не поддерживает ajax, и это более важно. О PhantomJS, даже когда я завершаю процесс, это все еще сохраняется. Я использовал selenium для автоматизации моего сайта с помощью ChromeDriver, и он отлично работает, а также работает несколько пользователей параллельно, но когда я переключился на PhantomJs, кажется, что он все еще сохранен (он хранит меня на сайте и т. Д.). .) – Pro
Это странно. Только localStorage сохраняется между несколькими процессами PhantomJS, но кеш обычно является приватным для одного процесса. Это изменится, так как PhantomJS запускается с опцией командной строки '--disk-cache = true'. –