Les tests de per­for­mance valident la stabilité d’une ap­pli­ca­tion ou en explorent les limites. Il existe de nombreux outils de test de charge gratuits et payants sur le marché.

Qu’est-ce qu’un test de charge ?

Le test de charge (dérivé de l’anglais Load testing) est un moyen de tester la viabilité com­mer­ciale des logiciels ou de tester la ré­si­lience des systèmes existants. Les tests de per­for­mance con­sis­tent à dé­ter­mi­ner la capacité d’un système in­for­ma­tique à fournir une pres­ta­tion maximum avant que les per­for­mances ne diminuent con­si­dé­ra­ble­ment et que le service proposé ne puisse plus être fourni dans son in­té­gra­lité. Des charges sont simulées à cet effet, qui mettent le système au défi et le poussent jusqu’à ses limites à un moment donné. De nombreux accès si­mul­ta­nés sont simulés ou certaines actions sont répétées dans une séquence rapide. Le système répond à ces tests de per­for­mance de la meilleure façon possible et ne sera pas endommagé en cas de sol­li­ci­ta­tion excessive.

Quel est le but poursuivi avec un test de per­for­mance ?

Les tests de per­for­mance peuvent répondre à diverses finalités. Les tests de per­for­mance sont une com­po­sante de l’assurance qualité, notamment dans le domaine du dé­ve­lop­pe­ment logiciel agile. Avant le lancement d’un nouveau logiciel sur le marché, il convient de valider le com­por­te­ment du programme en fonction de certaines exigences et de cerner les limites de ses per­for­mances. Un test de charge permet de dévoiler aussi les erreurs qui n’ont pas été détectées lors des étapes de travail pré­cé­dentes. On évalue ainsi la réponse d’un système face à une montée en charge inat­ten­due, à partir de quel moment des res­tric­tions se pro­dui­sent et le délai de réaction face aux erreurs.

Il est également possible de vérifier des systèmes opé­ra­tion­nels par le biais des tests de per­for­mance. Cela s’applique, par exemple, aux sites Web. Si les ex­ploi­tants s’attendent à une ruée des uti­li­sa­teurs non planifiée, ils peuvent déjà simuler la surcharge à venir au moyen d’un test de charge et s’assurer ainsi que leur propre système peut fonc­tion­ner cor­rec­te­ment malgré la montée en charge. Le lancement d’un nouveau produit, la pro­gram­ma­tion d’un événement spécial, ou la mise du site Web sous les pro­jec­teurs au travers de la publicité sont autant d’évé­ne­ments sus­cep­tibles de provoquer une telle ruée. L’objectif des tests de per­for­mance est de jauger la ré­si­lience d’un système et sa réponse, afin d’en améliorer les per­for­mances de manière anticipée si né­ces­saire.

Quels tests de per­for­mance existe-t-il ?

Tous les tests de charge ne sont pas équi­va­lents. Dif­fé­rentes approches existent afin de répondre à dif­fé­rentes uti­li­sa­tions. Les dif­fé­rences ne sont pas toujours ma­ni­festes et les produits de certains four­nis­seurs per­met­tent également de conduire dif­fé­rents types de tests de per­for­mance. On peut discerner en gros quatre ca­té­go­ries dif­fé­rentes.

Le test de per­for­mance

Le test de per­for­mance peut également être considéré comme un test de charge classique et constitue cer­tai­ne­ment la forme la plus simple de ces options de test. Les exigences imposées à un système sont ici re­la­ti­ve­ment faibles. Il s’agit de vérifier si un système neuf ou existant est en mesure de supporter les charges attendues et si la qualité des per­for­mances reste la même. Ce type de tests de per­for­mance convient par exemple aux ap­pli­ca­tions Web qui sont censées pouvoir gérer un certain nombre d’accès si­mul­ta­nés. Le test de charge simule ces accès et vérifie que les temps de réponse cor­res­pon­dent aux attentes.

Le test de capacité

Ce type de test de per­for­mance va plus loin. Au lieu de se demander si « un système peut faire ce qu’il doit faire », on cherche plutôt à savoir ici ce que « peut faire mon système en fait ? ». Par con­sé­quent, il convient ici d’augmenter la charge pro­gres­si­ve­ment plutôt que de simuler un assaut des uti­li­sa­teurs tel qu’attendu. Pour ce faire, il est né­ces­saire de dé­ter­mi­ner à l’avance les exigences précises aux­quelles le système doit sa­tis­faire. En termes de temps de réponse par exemple, on doit s’in­ter­ro­ger sur la vitesse à laquelle le système doit réagir. Le test de charge commence ensuite en suivant une élévation pro­gres­sive des exigences. Ceci se prolonge jusqu’à ce que le système atteigne ses limites.

Le test de stress

Le test de stress consiste à re­nou­ve­ler la montée en charge. Cette approche commence en principe là où le test de capacité prend fin. Tandis que ce dernier consiste à évaluer le di­men­sion­ne­ment du système pour s’arrêter au seuil maximal, le test de stress consiste à dépasser dé­li­bé­ré­ment ce seuil. Il ne s’agit pas ici de quan­ti­fier la capacité d’ex­ploi­ta­tion du système, mais d’évaluer sa réaction en cas de sur­sol­li­ci­ta­tion. Au cours de ce type de test de charge, on soumet donc le système à une tâche im­pos­sible à résoudre et on mesure ensuite les temps de réponse afin d’observer le moment où le système défaille et le dé­rou­le­ment de la panne. Ceci permet de se préparer aux coups durs en situation opé­ra­tion­nelle.

Le test d’endurance

Les tests de per­for­mance présentés jusqu’ici sont limités à une courte période. Le système est testé, le test est terminé et l’on vérifie les résultats. Mais ces pro­cé­dures ne four­nis­sent aucune in­for­ma­tion quant à savoir si le système est également capable de faire face à une charge à long terme. Il suffit de réaliser un test d’endurance pour le savoir. Ce test est exécuté pendant plusieurs heures, voire plusieurs jours, afin de dé­ter­mi­ner si le système reste stable pendant le fonc­tion­ne­ment continu, quelles res­sources sont con­som­mées et si des erreurs inat­ten­dues se pro­dui­sent. La plupart des systèmes doivent toujours rester ac­ces­sibles. Le test d’endurance permet de s’assurer que les systèmes sont à la hauteur de cette exigence.

Quels sont les points à con­si­dé­rer avant de conduire un test de charge ?

En principe, les tests de per­for­mance sont un bon moyen de mettre un système au banc d’essai, de l’améliorer si né­ces­saire et de mieux évaluer les risques possibles à l’avance. Cependant, il convient d’entamer une réflexion avant d’exécuter un test de charge.

Définir les attentes

La première question à se poser concerne les buts que l’on souhaite atteindre avec le test de charge. Cela recouvre en tout premier lieu les objectifs et les questions fon­da­men­taux auxquels un tel test doit apporter des réponses. S’agit-il de réaliser un test final avant le lancement sur le marché ? Voulez-vous vérifier ce dont votre système est réel­le­ment capable ? Voulez-vous vous préparer à affronter les pires cas de figure et à sol­li­ci­ter le programme à l’excès ? Ou est-il question ici avant tout de réaliser des per­for­mances sur une période plus longue ? Un test de charge différent est préconisé selon chaque attente.

Une fois les objectifs de base iden­ti­fiés, vous devez les spécifier. Quel temps de réponse dois-je atteindre ? De quoi mon système doit-il être capable ? Quels sont les seuils ac­cep­tables et à partir de quel moment dois-je améliorer les per­for­mances ? Quelles sont les charges maximales aux­quelles je peux m’attendre ? Si vous répondez à ces questions avant d’exécuter le test de per­for­mance, vous pouvez l’aborder de manière beaucoup plus efficace et plus ciblée. Cela vous donnera les meilleurs résultats et vous permettra de conduire le test de charge de manière optimale.

Fixer un ca­len­drier

Ce point doit également être considéré sur deux plans. Tout d’abord, vous devez iden­ti­fier le moment opportun pour mener le test de per­for­mance au sein du processus de dé­ve­lop­pe­ment. Par exemple, si votre ap­pli­ca­tion n’est pas encore parvenue à maturité, le test de charge ne re­tour­nera pas de résultats con­cluants. En revanche, s’il est mené trop tar­di­ve­ment, les résultats pour­raient ne pas être intégrés dans le dé­ve­lop­pe­ment. D’autre part, il convient de se demander quand le test de charge aura le moins d’impact négatif sur les opé­ra­tions com­mer­ciales ré­gu­lières en présence d’un système existant. Iden­ti­fier le moment opportun joue un rôle important, en par­ti­cu­lier lorsque vous voulez effectuer un test d’endurance.

Dé­ter­mi­ner les efforts à consentir

Nous pré­sen­tons ci-dessous dif­fé­rents outils re­com­man­dés pour effectuer un test de per­for­mance. On s’aperçoit ra­pi­de­ment que les coûts attendus diffèrent con­si­dé­ra­ble­ment ici. Des solutions open source sont re­com­man­dées, mais il peut également s’avérer utile d’opter pour une variante pro­prié­taire, en par­ti­cu­lier dans le cas d’une uti­li­sa­tion ré­cur­rente. Par con­sé­quent, il est impératif de dé­ter­mi­ner à l’avance combien vous voulez investir dans un test de charge. La question de la proximité de l’en­vi­ron­ne­ment de test par rapport à l’en­vi­ron­ne­ment de pro­duc­tion est également cruciale et doit être clarifiée à l’avance. Si vous souhaitez exécuter plusieurs tests de per­for­mance, ceux-ci doivent être coor­don­nés et l’éva­lua­tion des résultats des tests doit également être organisée avant de commencer.

Comment un test de charge est-il exécuté ?

Comme toujours, la sécurité doit être la priorité nº 1 lors de l’exécution d’un test de per­for­mance. Il convient de protéger le système et de l’ac­com­pag­ner de la meilleure façon possible à chacune des étapes. Les approches suivantes sont re­com­man­dées à cette fin :

  • Mesures de sécurité : avant d’exécuter le test de charge, créez une sau­ve­garde de toutes les données du système. En cas de problème, vous pouvez ainsi revenir ra­pi­de­ment à l’état précédent. Vérifiez également quels systèmes externes sont connectés et assurez-vous qu’ils ne peuvent pas être affectés par le test de charge.
  • Procéder pas à pas : même si vous voulez tester votre système à grande échelle, il est pré­fé­rable de commencer dans une faible ampleur, d’explorer lentement les limites, puis de monter en puissance. Il convient de vérifier au­pa­ra­vant ce dont votre système est capable, surtout si vous souhaitez le con­fron­ter à une sur­sol­li­ci­ta­tion avec un test de charge.
  • La solution lo­gi­cielle adéquate : na­tu­rel­le­ment, le choix de la solution lo­gi­cielle ap­pro­priée et opportune joue également un rôle majeur. Vous ne pourrez obtenir des résultats con­cluants et en tirer des in­for­ma­tions pré­cieuses que si le test de charge cor­res­pon­dant est calqué sur vos exigences.

Quels sont les outils de tests de per­for­mance dis­po­nibles ?

De nombreux outils sont spé­cia­li­sés dans les tests de per­for­mance et peuvent vous aider con­crè­te­ment à valider votre système. Les pro­grammes suivants sont par­ti­cu­liè­re­ment re­com­man­dés :

JMeter

JMeter est une solution open source qui séduit par une vaste com­mu­nauté engagée. Cet outil vous permet d’effectuer des tests de per­for­mance sur un large éventail d’ap­pli­ca­tions et de serveurs, et de créer des rapports simples. Un des in­con­vé­nients de cette solution est sa période d’ini­tia­tion re­la­ti­ve­ment longue. Cependant, si vous êtes prêt à vous fa­mi­lia­ri­ser avec le programme, vous aurez de bonnes cartes en main avec cette ex­cel­lente al­ter­na­tive aux tests de per­for­mance onéreux.

IBM Rational Per­for­mance Tester

IBM Rational Per­for­mance Tester se présente comme une solide option en matière de tests de per­for­mance et de capacité. Il vous permet également d’écrire des scripts de test en Java, de générer des sta­tis­tiques et de tester votre Cloud. Le test de charge est re­la­ti­ve­ment facile à réaliser et ne nécessite pas de longue ini­tia­tion. Plusieurs modèles de ta­ri­fi­ca­tion sont proposés en plus de la version d’essai gratuite.

Loa­dRun­ner

Loa­dRun­ner est un outil in­con­tour­nable dans le domaine des tests de per­for­mance. Dis­po­nible dans une version com­mu­nau­taire gratuite et une version pro­prié­taire, le programme prend en charge un large éventail de tech­no­lo­gies. Loa­dRun­ner vous offre de nom­breuses pos­si­bi­li­tés pour effectuer des tests de charge en fonction de vos besoins précis, et séduit par son aisance de ma­ni­pu­la­tion.

Aller au menu principal