mercredi 27 juin 2007

Test de performance IHM Web

Dans la série outils de test, je découvre un nouvel outil Open Source de "Web Load Testing" : WEBLOAD. Cet outil est passé en open source récemment, peut-être pour lui redonner un second souffle ...
En outil équivalent commercial, il y a l'incontournable LoadRunner (de Mercury) qui est très puissant mais également très cher ...

Phase 1 : le scénario

L'objectif de ce genre d'outil est d'enregistrer un scénario de navigation d'un utilisateur à l'aide d'un browser Web classisque. Ce scénario peut alors être customisé pour mettre un peu d'aléa, simuler plusieurs utilisateurs avec plusieurs profils, ... Bref, tenter de rendre le scénario crédible par rapport à une utilisation réelle de production.

Phase 2 : les tirs de bench

Une fois le scénario obtenu, vous pouvez simuler un grand nombre d'utilisateur et l'outil enregistre le comportement de la plate-forme. Vous analysez ensuite les résultats pour voir si votre application supporte la charge voulue ...

Phase 3 : l'analyse

C'est à ce moment que vient une phase qui peut-être longue d'analyse, de tuning système, applicatif, ... pour mieux exploiter les ressources de votre machine. Il n'est pas rare de voir les temps de réponse augmenter alors que le CPU du serveur plafonne à 5 ou 10 % ! La solution dans ce cas n'est certainement pas d'augmenter la puissance du serveur ...

Ensuite on répète les phases 2 et 3 pour vérifier que les modifications apportées suite à l'analyse ont un effet bénéfique ...
Si vous êtes pas trop bon, le nombre d'itération peut être important ... C'est un métier le bench !

WebLoad


Pour revenir au nouvel outil énoncé au début du billet, vous pouvez le téléchargez sur sourceforge.
Le site de webload montre des demos (en flash) et des screenshots de son outil.

En Open Source, les outils concurrents que j'ai eu l'occasion d'utiliser sont :
  • OpenSTA : Gros inconvénient d'être uniquement disponible sous Windows (je suis sous Ubuntu ...). Il est assez performant en injection et riche en fonctionnalité mais il est parfois instable. Il n'a pas évolué depuis 2 ans ...
  • L'incontournable JMeter : Fait en Java, il est portable sur n'importe quelle plate-forme et dispose d'un grand nombre d'utilisateur. Il a l'avantage de pouvoir s'intégrer facilement dans une chaine d'intégration continue, permettant ainsi de suivre les évolutions des performances en même temps que j'ajout de fonctionnalités.
  • L'inconnu Tsung (anciennement IDX-Tsunami) : Développé à l'origine par Idealx, cet outil m'a impressionné par sa puissance d'injection. Il n'est pas très "user friendly" car il faut aimé la ligne de commande et édité des fichiers XML mais sur mon portable (Dell Latitude D505, 1.7 GhZ), j'ai réussi à dépasser les 1000 requêtes par seconde ...
  • The Grinder : Outil que je connais mal mais dont on m'a dit du bien. Il semble très riche en fonctionnalité. BEA ne semble pas très loin derrière ...
  • Le Microsoft web application stress tool que j'ai utilisé il y a longtemps maintenant. Bien sûr, cet ouil ne fonctionne que sous environnement Microsoft ...
  • En bien d'autres qui ne me viennent pas à l'esprit !
Dès que j'ai un peu de temps, je teste ce nouveau venu ... Peut-être l'occasion d'un nouveau billet !

2 commentaires:

Praline a dit…

Il y a TPTP, un plugin Eclipse et donc multi plateformes. Mais il est buggé et n'est pas assez robuste pour injecter rapidement. Donc c'est bien de savoir qu'il existe mais je vous conseil de passer votre chemin.

Laurent a dit…

Praline,

Le plugin Eclipse TPTP n'est à mon sens pas fait pour des tests de bench, au sens injection de charge. La notion de performance adressée par ce plugin correspond au "profiling". Le lien ci-dessous donne une idée de ce que fait ce plugin :
http://www.eclipsetotale.com/articles/TPTP.html