2015-12-02 3 views
0

Я пытаюсь создать симулятор, который имитирует сотни пользователей в веб-приложении.Тестирование нагрузки Веб-приложения, использующие AJAX

Обычно я использую симулятор загрузки Microsoft и веб-тесты. Если веб-страница имеет некоторую сложность, я использую плагины WebTest для ее правильной настройки.

Теперь у меня есть веб-страница, которая обрабатывает тонны запросов ajax на каждый URL, который я посещаю, запросы ajax основаны на сложных вычислениях, выполненных в браузере. Если я просто просмотрю URL-адрес и запишу весь трафик, даже после того, как я сделаю некоторые динамические параметры, я все равно не смогу имитировать его правильно, так как могут быть разные запросы, которые могут быть отправлены на сервере предыдущие ответы.

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

Я думал об использовании селена, но если я его использую, мне понадобится слишком много аппаратных ресурсов для запуска сотен пользователей.

я придумал идею использования обезглавленный браузера, например PhantomJs, SimpleBrowser, HtmlUnit и т.д. Оба SimpleBrowser и HtmlUnit не поддерживает выполняющийся JavaScript/AJAX, что делает их бесполезными для меня.

Я попытался использовать PhantomJs, но у меня возникла проблема с запуском нескольких пользователей параллельно, поскольку localStorage одинаково для всех, поэтому он поддерживает один и тот же сеанс для всех, поэтому я не могу имитировать разных пользователей параллельно.

Есть ли у кого-нибудь опыт работы с сложными веб-приложениями ajax с загрузкой?

Я буду любить вас вечно, если вы поможете мне в этом вопросе.

P.S Я обычно кодирую на C#, но я открыт для новых языков \ технологий.

+0

(1) HtmlUnit поддерживает JavaScript, только не все. (2) PhantomJS имеет один кеш на процесс. Вы говорите, что используете симуляцию для нескольких пользователей в одном экземпляре PhantomJS? (У меня нет опыта тестирования нагрузки.) –

+0

Да, я знаю, что он поддерживает JS, поэтому добавил «/ AJAX», потому что он не поддерживает ajax, и это более важно. О PhantomJS, даже когда я завершаю процесс, это все еще сохраняется. Я использовал selenium для автоматизации моего сайта с помощью ChromeDriver, и он отлично работает, а также работает несколько пользователей параллельно, но когда я переключился на PhantomJs, кажется, что он все еще сохранен (он хранит меня на сайте и т. Д.). .) – Pro

+0

Это странно. Только localStorage сохраняется между несколькими процессами PhantomJS, но кеш обычно является приватным для одного процесса. Это изменится, так как PhantomJS запускается с опцией командной строки '--disk-cache = true'. –

ответ

0

Использование Selenium для тестирования производительности не является логичным. Я рекомендую вам использовать Locust для реального тестирования производительности. Для получения и использования динамических данных вы можете проверить это answer. Вам нужно написать простой скрипт Python для имитации пользователей.

+1

Решение, которое вы предложили «Locust», похоже на аналогичный инструмент для инструмента, который я наложил (Microsoft Load Simulator - в визуальной студии). Его похоже, потому что они оба используют HTTP-запросы. Но мне нужно выполнить javascript для запуска логики моего клиента, чтобы я выиграл 't должен подставлять мой клиентский код http-запроса логическому коду на симулятор нагрузки каждый раз. – Pro

+0

@Pro Это ваши слова «PS Я обычно кодирую на C#, но я открыт для новых языков \ технологий» –

+0

Извините, когда я нажимаю «вводить» вместо того, чтобы создавать новую строку, это отсылает сообщение. У меня уже есть тесты на селен для моего сайта, поэтому загрузить их было бы легко, проблема в том, сколько ресурсов необходимо для этого. Вот почему я искал безгласный браузер, такой как PhantomJs, но похоже, что ни один из них не может корректно поддерживать js-исполнение и параллельных пользователей ..:/ Да, я открыт для новых технологий, но я не вижу, как Locust отличается от загрузки VisualStudio и тест производительности. . Моя проблема заключается в том, что мне придется обновлять логику HTTP-запросов с новой версией клиентской стороны. – Pro

0

Я изучаю www.loadbooster.com, который может импортировать скрипт Selenium и запускать безгласный борсор с PhantomJS для запуска сценария в качестве теста нагрузки. Это все еще работает для меня, поэтому я не могу прокомментировать, насколько это хорошо, но вы можете исследовать его.

Смежные вопросы