Test de performance : comment vérifier la résilience de votre système informatique

Les tests de performance valident la stabilité d’une application 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é commerciale des logiciels ou de tester la résilience des systèmes existants. Les tests de performance consistent à déterminer la capacité d’un système informatique à fournir une prestation maximum avant que les performances ne diminuent considérablement et que le service proposé ne puisse plus être fourni dans son intégralité. 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 simultané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 performance de la meilleure façon possible et ne sera pas endommagé en cas de sollicitation excessive.

Quel est le but poursuivi avec un test de performance ?

Les tests de performance peuvent répondre à diverses finalités. Les tests de performance sont une composante de l’assurance qualité, notamment dans le domaine du développement logiciel agile. Avant le lancement d’un nouveau logiciel sur le marché, il convient de valider le comportement du programme en fonction de certaines exigences et de cerner les limites de ses performances. 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 inattendue, à partir de quel moment des restrictions se produisent et le délai de réaction face aux erreurs.

Il est également possible de vérifier des systèmes opérationnels par le biais des tests de performance. Cela s’applique, par exemple, aux sites Web. Si les exploitants s’attendent à une ruée des utilisateurs 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 fonctionner correctement malgré la montée en charge. Le lancement d’un nouveau produit, la programmation d’un événement spécial, ou la mise du site Web sous les projecteurs au travers de la publicité sont autant d’événements susceptibles de provoquer une telle ruée. L’objectif des tests de performance est de jauger la résilience d’un système et sa réponse, afin d’en améliorer les performances de manière anticipée si nécessaire.

Quels tests de performance existe-t-il ?

Tous les tests de charge ne sont pas équivalents. Différentes approches existent afin de répondre à différentes utilisations. Les différences ne sont pas toujours manifestes et les produits de certains fournisseurs permettent également de conduire différents types de tests de performance. On peut discerner en gros quatre catégories différentes.

Le test de performance

Le test de performance peut également être considéré comme un test de charge classique et constitue certainement la forme la plus simple de ces options de test. Les exigences imposées à un système sont ici relativement 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 performances reste la même. Ce type de tests de performance convient par exemple aux applications Web qui sont censées pouvoir gérer un certain nombre d’accès simultanés. Le test de charge simule ces accès et vérifie que les temps de réponse correspondent aux attentes.

Le test de capacité

Ce type de test de performance 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 conséquent, il convient ici d’augmenter la charge progressivement plutôt que de simuler un assaut des utilisateurs tel qu’attendu. Pour ce faire, il est nécessaire de déterminer à l’avance les exigences précises auxquelles le système doit satisfaire. En termes de temps de réponse par exemple, on doit s’interroger sur la vitesse à laquelle le système doit réagir. Le test de charge commence ensuite en suivant une élévation progressive des exigences. Ceci se prolonge jusqu’à ce que le système atteigne ses limites.

Le test de stress

Le test de stress consiste à renouveler 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 dimensionnement du système pour s’arrêter au seuil maximal, le test de stress consiste à dépasser délibérément ce seuil. Il ne s’agit pas ici de quantifier la capacité d’exploitation du système, mais d’évaluer sa réaction en cas de sursollicitation. Au cours de ce type de test de charge, on soumet donc le système à une tâche impossible à 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éroulement de la panne. Ceci permet de se préparer aux coups durs en situation opérationnelle.

Le test d’endurance

Les tests de performance 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 procédures ne fournissent aucune information 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éterminer si le système reste stable pendant le fonctionnement continu, quelles ressources sont consommées et si des erreurs inattendues se produisent. La plupart des systèmes doivent toujours rester accessibles. Le test d’endurance permet de s’assurer que les systèmes sont à la hauteur de cette exigence.

Quels sont les points à considérer avant de conduire un test de charge ?

En principe, les tests de performance sont un bon moyen de mettre un système au banc d’essai, de l’améliorer si nécessaire 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 fondamentaux 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éellement capable ? Voulez-vous vous préparer à affronter les pires cas de figure et à solliciter le programme à l’excès ? Ou est-il question ici avant tout de réaliser des performances sur une période plus longue ? Un test de charge différent est préconisé selon chaque attente.

Une fois les objectifs de base identifié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 acceptables et à partir de quel moment dois-je améliorer les performances ? Quelles sont les charges maximales auxquelles je peux m’attendre ? Si vous répondez à ces questions avant d’exécuter le test de performance, 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 calendrier

Ce point doit également être considéré sur deux plans. Tout d’abord, vous devez identifier le moment opportun pour mener le test de performance au sein du processus de développement. Par exemple, si votre application n’est pas encore parvenue à maturité, le test de charge ne retournera pas de résultats concluants. En revanche, s’il est mené trop tardivement, les résultats pourraient ne pas être intégrés dans le développement. D’autre part, il convient de se demander quand le test de charge aura le moins d’impact négatif sur les opérations commerciales régulières en présence d’un système existant. Identifier le moment opportun joue un rôle important, en particulier lorsque vous voulez effectuer un test d’endurance.

Déterminer les efforts à consentir

Nous présentons ci-dessous différents outils recommandés pour effectuer un test de performance. On s’aperçoit rapidement que les coûts attendus diffèrent considérablement ici. Des solutions open source sont recommandées, mais il peut également s’avérer utile d’opter pour une variante propriétaire, en particulier dans le cas d’une utilisation récurrente. Par conséquent, il est impératif de déterminer à l’avance combien vous voulez investir dans un test de charge. La question de la proximité de l’environnement de test par rapport à l’environnement de production est également cruciale et doit être clarifiée à l’avance. Si vous souhaitez exécuter plusieurs tests de performance, ceux-ci doivent être coordonnés et l’évaluation 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 performance. Il convient de protéger le système et de l’accompagner de la meilleure façon possible à chacune des étapes. Les approches suivantes sont recommandées à cette fin :

  • Mesures de sécurité : avant d’exécuter le test de charge, créez une sauvegarde de toutes les données du système. En cas de problème, vous pouvez ainsi revenir rapidement à 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 auparavant ce dont votre système est capable, surtout si vous souhaitez le confronter à une sursollicitation avec un test de charge.
  • La solution logicielle adéquate : naturellement, le choix de la solution logicielle appropriée et opportune joue également un rôle majeur. Vous ne pourrez obtenir des résultats concluants et en tirer des informations précieuses que si le test de charge correspondant est calqué sur vos exigences.

Quels sont les outils de tests de performance disponibles ?

De nombreux outils sont spécialisés dans les tests de performance et peuvent vous aider concrètement à valider votre système. Les programmes suivants sont particulièrement recommandés :

JMeter

JMeter est une solution open source qui séduit par une vaste communauté engagée. Cet outil vous permet d’effectuer des tests de performance sur un large éventail d’applications et de serveurs, et de créer des rapports simples. Un des inconvénients de cette solution est sa période d’initiation relativement longue. Cependant, si vous êtes prêt à vous familiariser avec le programme, vous aurez de bonnes cartes en main avec cette excellente alternative aux tests de performance onéreux.

IBM Rational Performance Tester

IBM Rational Performance Tester se présente comme une solide option en matière de tests de performance et de capacité. Il vous permet également d’écrire des scripts de test en Java, de générer des statistiques et de tester votre Cloud. Le test de charge est relativement facile à réaliser et ne nécessite pas de longue initiation. Plusieurs modèles de tarification sont proposés en plus de la version d’essai gratuite.

LoadRunner

LoadRunner est un outil incontournable dans le domaine des tests de performance. Disponible dans une version communautaire gratuite et une version propriétaire, le programme prend en charge un large éventail de technologies. LoadRunner vous offre de nombreuses possibilités pour effectuer des tests de charge en fonction de vos besoins précis, et séduit par son aisance de manipulation.