2009-02-19 6 views
5

J'ai travaillé sur un site qui utilise beaucoup AJAX et JavaScript dynamique sur le frontal et il est temps de commencer le test de stress. Mais comment tester correctement quelque chose qui nécessite de cliquer sur plusieurs liens sur le front-end? L'une des façons dont j'ai pu facilement et rapidement toucher chaque page du site était de pointer un Google Mini. Mais cela ne va pas cliquer sur les liens, puis naviguer dans les fenêtres Modal et des choses comme ça. Editer - Je tiens à souligner que le site est fait en PHP5 et que la bibliothèque JavaScript utilisée est jQuery. Je ne sais pas si cela ferait une différence, mais je pense qu'il serait utile de savoir.Test de charge de l'interface utilisateur

Répondre

2

JMeter est excellent pour ça. Vous pouvez enregistrer vos sessions et les modifier à votre guise.

Ce que l'on appelle le «test de charge ajax» est un sujet récurrent sur ce site et est souvent confus. Alors allons-y bien: il n'y a vraiment aucune différence entre le test de charge d'une page web normale et le test de charge avec ajax. Tout se résume à des demandes discrètes; ils n'arrivent pas à rafraîchir la page entière.

Une chose à garder à l'esprit il y a une nette différence entre la charge test du serveur de traitement des demandes (un test de charge) et les performances à l'écran des composants de l'interface utilisateur étant mis à jour (comment votre javascript exécute.)

exemple de test de charge simple:

  1. première page charge
  2. connexion
  3. navigate?
  4. 5-10 demandes 'ajax' (ou tout ce qui peut correspondre à votre modèle d'utilisation de l'application)
de fermeture de session
1

Qu'est-ce que vous voulez vraiment est assujettie à un test est la capacité du serveur pour gérer les demandes ajax. Utilisez un outil de chargement qui examine les demandes tout en «enregistrant» le test, puis accordez selon les besoins. Je n'ai utilisé que l'édition de test vs, donc je ne peux pas vous indiquer un coût faible.

1

Je suis en désaccord avec Nathan et Freddy à un certain degré. Ils ont raison de dire que "AJAX testing" n'est vraiment pas différent en ce sens que les requêtes HTTP sont faites. Mais ce n'est pas si simple. Voir mon article sur Ajaxian.com sur Why Load Testing Ajax is Hard. JMeter, Pylot, et The Grinder sont tous d'excellents outils pour générer des requêtes HTTP (je recommande personnellement Pylot). Mais à la base, ils n'agissent pas comme un navigateur et traitent le JavaScript, ce qui signifie qu'ils ne rejouent que le trafic qu'ils ont vu en un temps record. Si ces requêtes AJAX étaient uniques à cette session, elles peuvent ne pas convenir/être correctes pour être rejouées en gros volumes. Le fait est que plus la logique est poussée vers le navigateur, plus il devient difficile (sinon impossible) de simuler correctement le trafic en utilisant des outils de test de charge traditionnels.

Dans mon article, je donne un exemple simple de la difficulté à tester quelque chose comme la page d'accueil de Google lorsque vous souhaitez interroger 1000 de différents termes de recherche (un objectif important lors des tests de charge).Pour le faire avec JMeter/Pylot/Grinder, vous finissez par réécrire des parties du code AJAX (dans votre cas w/jQuery) dans la langue maternelle de l'outil.

Cela devient encore plus complexe si votre objectif est de mesurer le temps de réponse tel que perçu par l'utilisateur (ce qui est sans doute la chose la plus importante à la fin de la journée). Pour les applications vraiment complexes qui utilisent Comet/"Reverse Ajax" (une technique qui maintient les sockets ouvertes pendant de longues périodes), les outils de chargement traditionnels ne fonctionnent pas du tout.

Mon entreprise, BrowserMob, fournit un load testing service qui utilise les navigateurs Firefox, alimentés par Selenium, pour conduire des centaines ou des milliers de navigateurs réels, vous permettant de mesurer et de temps la performance des éléments visuels comme on le voit dans le navigateur. Nous prenons également en charge les utilisateurs virtuels traditionnels (trafic HTTP invisible) et un navigateur simulé (via HtmlUnit). Tout ce qui est dit, généralement un mélange d'un service comme BrowserMob et le test de charge traditionnel est la bonne approche. C'est-à-dire que les vrais navigateurs sont parfaits pour un test de charge en toute fidélité, mais ils ne seront jamais aussi économiques que les "utilisateurs virtuels", puisqu'ils nécessitent 10 à 100 fois plus de RAM et de CPU. Voir mon blog récent sur la question de savoir si simulate or not to simulate virtual users.

Espérons que ça aide!

0

Vous pouvez utiliser quelque chose comme openSTA.

Cela permet d'enregistrer une session avec un site Web, puis de la lire via un langage de script relativement simple.

Vous pouvez également tester facilement les services Web et écrire vos propres scripts.

Il vous permet de rassembler les scripts dans un test comme vous le souhaitez et de configurer le nombre d'itérations, le nombre d'utilisateurs dans chaque itération, le temps d'introduction de chaque nouvel utilisateur et le délai entre chaque itération. Des tests peuvent également être planifiés dans le futur.

Il est open source et gratuit.

Il génère un certain nombre de rapports qui peuvent être enregistrés dans une feuille de calcul. Nous utilisons ensuite un tableau croisé dynamique pour analyser et représenter graphiquement les résultats.

Questions connexes