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

Publié le 18 février 2010 par Pydubreucq

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 :

SeleniumHQ :

SeleniumHQ est une suite d’outils pour tester des applications Web.

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

SeleniumHQ 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 SeleniumHQ

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 ?