web-dev-qa-db-fra.com

Comment tester les performances d'une application Web AngularJS?

J'avais l'habitude de faire des tests de performances sur des sites Web principalement avec des scripts JMeter.

Cependant, de plus en plus de projets sont construits avec des MVC frontaux, comme AngularJS et un projet en cours charge tout son contenu via angular view files, REST calls etc. Malheureusement, JMeter n'exécute aucun javascript donc mon test de chargement me renvoie la page d'accueil en seulement (400 ms). En réalité, cela prend en fait plusieurs secondes pour se charger dans un navigateur. Lorsque je vérifie les données de réponse, elles ne contiennent pas aucune donnée encore due à Angular.

Au lieu d'étudier le trafic réseau et de charger individuellement chaque composant (par exemple profile.html, notification.html, REST appels, etc.). Existe-t-il un produit sur le marché ou le meilleur des cas que je pourrais suivre qui est similaire à l'exécution de scripts JMeter, mais compte tenu de l'exécution javascript et du chargement de ressources externes en raison de javascript?

(Je ne prévois pas de profiler les temps d'exécution javascript. Il s'agit toujours de tester si l'infrastructure derrière est capable de servir des utilisateurs simultanés xyz)

14
jens

Bien que JMeter ne soit pas capable d'exécuter JavaScript côté client, il peut enregistrer les requêtes pertinentes via HTTP (S) Test Script Recorder . Une fois enregistré, vous devriez pouvoir combiner toutes les demandes autonomes en un seul "agrégat" en utilisant JMeter Transaction Controller

Si cette approche facile ne fonctionne pas pour certaines raisons, consultez Comment charger les sites compatibles AJAX/XHR avec JMeter pour plus d'options et d'indices.

6
Dmitri T

J'utilise Chrome dev tools pour faire ce genre de tests de performance dans les applications web. Je vous suggère de lire les Chrome Profiling docs ( https: //developer.chrome.com/devtools/docs/javascript-memory-profiling ). Toute la section Performances et profilage dans la documentation de goolge est vraiment bonne!

4
farolfo

Vous pouvez essayer https://github.com/kidk/felt il est construit dans ce but spécifique.

Il utilise PhantomJS/SlimerJS pour générer une charge sur un site Web, vous obtenez donc tous les appels API/JS/CSS et images que vous obtiendriez dans un navigateur normal. C'est encore un projet jeune, mais c'est peut-être la solution que vous recherchez.

(Ceci est mon projet personnel)

2
kidk

Vous pouvez essayer d'utiliser l'option "Utiliser comme moniteur" pour les demandes que vous lancez à partir de votre test.

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

Ce sont des tueurs de performance, cependant. Une autre option consiste à utiliser l'écouteur "Enregistrer les réponses à un fichier" pour voir si le code HTML final est fourni. Cela ne devrait pas vous donner le résultat idéal, mais cela pourrait aider.

Si vous souhaitez suivre les performances des XHR pour un seul utilisateur, vous pouvez essayer de jouer avec Selenium et BrowserMob Proxy, mais ce n'est pas sous le test de stress, mais les tests fonctionnels.

2
Neill Lima