Как выполнить тестирование веб-приложения AngularJS?

Я использовал тестирование производительности на веб-сайтах в основном с помощью сценариев JMeter.

Тем не менее, все больше и больше проектов создаются с помощью внешних MVC, таких как AngularJS, и текущий проект загружает весь контент через файлы просмотра angular, вызовы REST и т.д. К сожалению, JMeter не выполняет javascript, поэтому мой нагрузочный тест вернет мне главную страницу всего за 400 мс. В реальности для загрузки в браузере требуется несколько секунд. Когда я проверяю данные ответа, он еще не содержит данных из-за Angular.

Вместо того, чтобы исследовать сетевой трафик и индивидуально загружать каждый компонент (например, profile.html, notification.html, REST-вызовы и т.д.). Есть ли продукт на рынке или какой-нибудь лучший случай, который я мог бы выполнить, который похож на выполнение сценариев JMeter, но учитывая выполнение javascript и загрузку внешних ресурсов из-за javascript?

(Я не планирую обрабатывать время выполнения javascript. Это еще нужно проверить, поддерживает ли инфраструктура, обслуживающая одновременных пользователей xyz)

Ответ 1

Хотя JMeter не способен выполнять JavaScript на стороне клиента, он может записывать соответствующие запросы через HTTP (S) Test Script Recorder. После записи вы сможете объединить все автономные запросы в один "агрегат", используя JMeter "Контроллер транзакций"

Если этот простой подход по каким-либо причинам не играет за вас, посмотрите Как загрузить тестовые сайты AJAX/XHR с поддержкой JMeter для более варианты и подсказки.

Ответ 2

Я использую инструменты Chrome dev для выполнения таких тестов производительности в веб-приложениях. Я предлагаю вам прочитать документы Chrome Profiling (https://developer.chrome.com/devtools/docs/javascript-memory-profiling). Весь раздел производительности и профилирования в документации goolge действительно хорош!

Ответ 3

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

http://jmeter.apache.org/usermanual/build-monitor-test-plan.html

Однако это убийцы производительности. Другой вариант - использовать прослушиватель "Сохранить ответы в файл", чтобы узнать, доставлен ли конечный HTML. Он не должен давать вам идеальный результат, но он может помочь.

Если вы хотите отслеживать производительность XHR для одного пользователя, вы можете попробовать играть с Selenium и BrowserMob Proxy, но это не под напряжением, а с функциональным тестированием.

Ответ 4

Вы можете попробовать https://github.com/kidk/felt, который построен для этой конкретной цели.

Он использует PhantomJS/SlimerJS для генерации загрузки на веб-сайт, поэтому вы получаете все API/JS/CSS и образы изображений, которые вы получили бы в обычном браузере. Это еще молодой проект, но это может быть решение, которое вы ищете.

(Это мой личный проект)