Cette article va vous présenter différentes solutions libres pour réaliser des tests de montée en charge, dit benchmark.
Cette idée m’est venu d’un commentaire que j’ai laissé sur le blog de Nicolargo concernant un article sur curl-loader
Mon commentaire énumérait différentes applications libres permettant de réaliser ces benchmarks et le suivi de la montée en charge.
J’ai donc décidé d’en faire un billet complet, j’avais déjà fait des billets sur Siège et Tsung
Les Applications libres de benchmarking :
Siege :
Donc pour rappel, Siege permet de faire des tests de montée en charge de vos appliactions web en simulant un grand nombre de connexions simultanées sur une ou plusieurs URLs données.
Siege rapporte le nombre totale de hits enregistrés, de bytes transférés, le temps de réponse, les accès concurrents et retourne le statut du serveur.
Siege supporte les protocoles HTTP/1.0 et 1.1, les méthodes GET & POST, les cookies, les transaction log, et l’authentification basique.
Tsung :
Tsung est un outils de test de performances permettant de réaliser des benchmark massif. Il est Multi-protocoles utilisant un système de plugin (HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, SSL et XMPP/Jabber)
Et chose très importante, il permet de faire des scénarios. Les scénarios permette de simuler de la montée en charge mais non sur une seul url, mais via une succession d’action, par exemple, j’arrive sur la page d’accueil, je clique sur la catégorie « Administration », je choisi l’article « Test de montée en charge avec des logiciels libres ». L’activité de l’utilisateur et le taux d’arrivée peut être aléatoire en utilisant une notion de probabilité….
Ce qui est plus proche de la vie de ton application web qu’un nombre de requêtes simultanées sur une url.
JMeter :
Jmeter permet de simuler le comportement de plusieurs utilisateurs agissant de manière simultanée initialement sur une application Web.
Il est multi-protocole et peut désormais faire ses tests sur HTTP, HTTPS, SOAP, Database via JDBC, LDAP, JMS, POP3(S) and IMAP(S)
JMeter permet de faire des tests de performances, de robustesse, de charge et réalise des statistiques avec graphes à l’appui.
Très bonne ressource pour l’utilisation de JMeter
AB – Apache Benchmark :
Très simpliste, il permet de simuler x utilisateur sur une url donnée
Curl-Loader :
Permet de simuler x connections simultanées sur plusieurs urls en même temps.
Il supporte les protocole HTTP et FTP.
OpenSTA :
OpenSTA permet de faire des tests de montée en charge sur les protocole HTTP et HTTPS
Il a de gros inconvénients, d’abord il n’est disponible que pour la plate-forme Windows et est vraiment difficile à prendre en main.
CLIF Load Injection Framework :
Clif permet de faire des tests de performances d’applications web distribuées
Plusieurs injecteurs réparties (permet de simuler d’énormes charges) vont simuler des connections simultanées en mesurant les temps de réponse, des erreurs…
Des sondes déployées sur les serveurs hébergeant les applications à tester vont mesurer l’activité RAM, CPU, Disque…
Clif gère les scénarios et fonctionne en multi-protocole (TCP, UDP, TCP, DNS, HTTP(S), JDBC, JMS, DHCP, LDAP, SIP)
Voici un schema expliquant le fonctionnement de CLIF :
Selenium :
Selenium est une suite d’outils pour tester des applications Web.
Selenium dispose d’un Add-on pour Firefox qui va vous permettre de créer vos scénarios simplement en navigant sur l’application à tester, il y a un recorder qui enregistre votre navigation et il vous suffira de la rejouer x fois pour simuler une activité utilisateur réel.
C’est assez bluffant, on peut créer ses propres scénarios très facilement sans avoir à apprendre les commandes de l’application.
Selenium peut simuler via Selenium Remote Control (RC) différents navigateurs, plateformes et même language.
Selenium Grid va permettre de mettre en place une architecture distribuées pour réaliser des tests en parallèle.
Voici un schéma expliquant son fonctionnement :
Funkload :
Funkload permet également des faire des tests de performances
Il gère également les scénarios grace à TCPWatch
Funkload génére des rapports HTML/PDF avec graphes.
TestMaker :
TestMaker offrant une version opensource et une version entreprise, il permet également de faire des tests de montée en charge.
Je le donne pour information, mais je ne détaillerais pas ici ces fonctionnalités.
Httperf :
Httperf est également un outils pour mesurer les performances de vos applications HTTP(S)
Il peut être utilisé avec AutoBench et OpenLoad
Pour trouver une liste des solutions de tests opensource allez voir ce site :
La supervision de la charge des applications web :
Il est intéressant également de pouvoir jauger sur le long terme les temps de réponses de ses applications web via l’utilisation de scénarios également.
Il existe bien sur des solutions sur les solutions de supervision libres.
Cucumber-Nagios :
Cucumber-Nagios est un plugin Nagios qui permet de réaliser des scénarios de façon assez surprenant d’ailleurs.
Ceux-ci seront ensuite joués comme n’importe quel check Nagios et permettrons de suivre par exemple le temps de réponse.
Nagios-FR en parle, je vous laisse découvrir la façon de générer les scénarios avec Cucumber-Nagios
Site Officiel de Cucumber-Nagios
Zabbix :
La solution de supervision libre Zabbix comprennant gestion d’incident et de performance intégre par défaut une application permettant de réaliser des scénarios afin de tester des applications web et ainsi garder un historique des performances
Cette approche est très intéressante car combiné aux informations provenant de la supervision de base (charge CPU, RAM…) on pourra facilement identifié les sources de ralentissements.
Et vous vous utilisez quoi pour faire vos tests de montée en charge ?
18 février 2010
Très intéressant, merci 🙂
18 février 2010
De rien 😉
18 février 2010
Non, pas d’accord. SeleniumHQ est un site web qui regroupe les projets selenium IDE, RC, grid, etc… mais ce n’est pas un produit en lui même.
18 février 2010
Merci pour ton retour Erwan.
C’est une compilation d’outils, mais ça permet bien de tester les performances de ses applications web donc où est le problème ?
Merci encore et d’avance 😉
18 février 2010
le problème, c’est le titre du paragraphe, ce serait plutôt Selenium tout court. Ensuite, si tu regardes l’historique du projet, à l’origine, c’était juste pour de l’automatisation de tests d’interfaces. Ce n’est qu’après que l’IDE et le grid ont été rajoutés. Parler de compilation d’outils me choque un peu, et le test de perf d’applications webs n’est pas le but premier de selenium. C’est vraiment du test d’interface, et on peut le détourner de son but premier en faisant du test de performance.
18 février 2010
C’est modifié, merci beaucoup pour ton retour très complet 😉
22 février 2010
Bon billet! Attention avec Apache Benchmark à ne pas effectuer de test de charge en local mais depuis l’extérieur pour éviter de tomber le serveur 😉 (et surtout pour que le test soit parlant et réalisé dans les même conditions que lors d’une forte affluence)
26 février 2010
Bien le bonjoru @Mr Xhark
Ça sent le vécu 😉 Mais tu as tout à fait raison de le préciser 😉
Merci beaucoup
24 octobre 2010
Avis, après avoir essayé Grid pour faire des tests de montée en charge.
Grid permet de lancer des tests en parallèle mais ralentit les tests quand on passe trop de connexion au hub.
Il faut savoir qu’un Remote Control peut lui aussi piloter plusieurs navigateurs sur plusieurs ports mais seulement sur une même machine.
Le seul avantage de Grid c’est de pouvoir piloter plusieurs Remote Control (ne pilotant cette fois qu’un seul navigateur) distribué sur plusieurs machines.
Le pilotage de scenarios avec Selenium étant lourd on ne peut utiliser qu’une seule application pour piloter plus d’une dizaine de scenarios (sur un quad coeur 8GO de ram) avec Grid qui ralentit encore plus l’execution des scenarios, Grid ne sert pas à grand chose en matière de tests de performance.
Une solution est de distribuer sur plusieurs machine une même application pilotant un même Remote Control qui pilote plusieurs navigateurs -> sans Grrrrrid. L’inconvénient est de synchroniser le lancement de ses applications.
A titre indicatif, mes tests consistaient à lancer 50 scenarios assez complexes simultanément sur un site de ecommerce.
Respect et Robustesse
29 octobre 2010
@Bob Morane
Bien le bonjour et un grand merci pour ton commentaire très constructif 🙂
7 février 2011
Selenium sans doute, est la meilleur choses qu’on as dans notre boîte à outils. Vraiment super:!
7 février 2011
@Martin Smith Merci pour ton commentaire, mais tu comprendras que j’ai retiré ta signature car ce site n’est pas un lieu pour améliorer son référencement.
Notes néanmoins, que j’ai laissé le lien vers ton site sur ton nom 😉
Bonne journée
23 février 2011
Aucun souci, et merci de la geste!
23 janvier 2012
Salut PYD,
Fort intéressant billet, une fois de plus !
Il reste des liens localhost sur les images de CLIF et Selenium. Pas grava mais génant pour voir l’image non retaillée.
15 février 2012
Merci pour ce billet, il vient de m’économiser un long travail de recherche…
11 mai 2012
Bonjour,
Sauf toutes ces applis sont des outils de test de charges WEB. Existe t’il l’équivalent pour des applis « client lourd » ?
28 avril 2016
Bonjour,
je suis à la recherche d’une application qui permette de tester justement des applications clients lourds. Avez-vous réussi à trouver une réponse?
22 juillet 2014
Il y a aussi Gatling un outil de test de charge très facile a utilisé , permet d’écrire des scénarios et génère des beaux graphes