Как выполнить тестирование веб-приложения 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 и образы изображений, которые вы получили бы в обычном браузере. Это еще молодой проект, но это может быть решение, которое вы ищете.
(Это мой личный проект)