Test de montée en charge (benchmark) avec des logiciels libres

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.

Site officiel de Siege

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.

Site Officiel de Tsung

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.

JMeter sur Wikipedia

Très bonne ressource pour l’utilisation de JMeter

Site Officiel 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.

Curl-Loader sur Nicolargo

Site Officiel de Curl-Loader

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.

Site Officiel de OpenSTA

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)

Site Officiel de CLIF

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 :

Site Officiel de Selenium

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.

Site Officiel de Funkload

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.

Site Officiel de TestMaker

Httperf :

Httperf est également un outils pour mesurer les performances de vos applications HTTP(S)

Il peut être utilisé avec AutoBench et OpenLoad

Site officiel de httperf

Pour trouver une liste des solutions de tests opensource allez voir ce site :

OpenSource Testing Tools

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.

Site Officiel de Zabbix

Et vous vous utilisez quoi pour faire vos tests de montée en charge ?

Author: Pierre-Yves Dubreucq

Passioné par les logiciels libres depuis 2001, je suis VP Bare Metal (Dedibox) chez Scaleway. Je tiens ce blog depuis 13 ans avec beaucoup moins d'assiduité malheureusement qu'à ses débuts, mais bon, le temps est une denrée rare.

Share This Post On

18 Comments

  1. 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.

    Post a Reply
  2. 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 😉

    Post a Reply
  3. 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.

    Post a Reply
  4. 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)

    Post a Reply
  5. Bien le bonjoru @Mr Xhark
    Ça sent le vécu 😉 Mais tu as tout à fait raison de le préciser 😉
    Merci beaucoup

    Post a Reply
  6. 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

    Post a Reply
  7. Selenium sans doute, est la meilleur choses qu’on as dans notre boîte à outils. Vraiment super:!

    Post a Reply
  8. @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

    Post a Reply
    • Aucun souci, et merci de la geste!

      Post a Reply
  9. 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.

    Post a Reply
  10. Merci pour ce billet, il vient de m’économiser un long travail de recherche…

    Post a Reply
  11. Bonjour,
    Sauf toutes ces applis sont des outils de test de charges WEB. Existe t’il l’équivalent pour des applis « client lourd » ?

    Post a Reply
    • 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?

      Post a Reply
  12. 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

    Post a Reply

Trackbacks/Pingbacks

  1. Batteries increvables / Sauver vos données / cuisine et programmation / MeeGo par Intel et Nokia / Avatar enfin – Philippe Scoffoni - [...] Test de montée en charge (benchmark) avec des logiciels libres [...]
  2. Quelques news de février | les Korrigans libres - [...] nationale une loi inquiétante, je n’ai pas envie de m’étendre dessus. - tester la montée en charge de votre…
  3. Beta eCommerce - Débat peut-on ouvrir une boutique ecommerce en Beta - Parle de Com - [...] il existe des outils Open sources comme Sage, Tsung ou JMeter, voir liste détaillée de admin-linux.org, permettant de simuler…

Submit a Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *