Performance Testing Best Practices: What You Should Know?

Aujourd’hui, la fonctionnalité d’un produit est sans aucun doute un élément important et indissociable du processus de test. Mais le temps de réponse, la fiabilité, l’utilisation des ressources et l’évolutivité comptent également. Les tests de performance constituent un type de test à part qui permet de s’assurer que les applications logicielles fonctionneront sans problème sous la charge de travail prévue.

Avec le développement des tests automatisés, il existe une variété d’outils prêts à l’emploi qui permettent de générer des charges, d’enregistrer des scripts et de les exécuter selon un calendrier. Mais avant de vous lancer, vous devez connaître les concepts de base de la performance, les paramètres clés ainsi que la manière de les influencer. Au final, cela rendra le processus d’automatisation des charges plus objectif et vous permettra d’utiliser les bonnes données, de concevoir des scénarios utiles et d’analyser les résultats avec compétence.

Aujourd’hui, nous allons donc aborder les points suivants :

  • que devons-nous tester
  • les exigences techniques et leurs types
  • la liste des outils de tests de performance
  • les objectifs des tests de performance
  • les tests de performance
  • les modèles de charge
  • les indicateurs de performance
  • les sources des problèmes

Que devons-nous tester ?

Définitions des tests de performance

Efficience : ensemble d’attributs liés au rapport entre le niveau de qualité du fonctionnement du logiciel et la quantité de ressources utilisées dans des conditions données.

Caractéristiques de l’efficience :

  • comportement temporel : attributs du logiciel relatifs aux temps de réponse et de traitement, ainsi qu’à la vitesse d’exécution de ses fonctions.
  • comportement vis-à-vis des ressources : attributs du logiciel relatifs à la quantité de ressources utilisées et à la durée de cette utilisation lors de l’exécution d’une fonction.

Ce sont les 2 caractéristiques que nous cherchons à vérifier lors des tests de performance — que la nature du changement dans le temps et dans la consommation de ressources réponde aux exigences.

En se rappelant les fondamentaux du test design, nous savons que les erreurs les plus intéressantes surviennent aux limites des valeurs. Le comportement le plus intéressant du système commence donc lorsque les ressources commencent à s’épuiser : CPU, mémoire, réseau, disque, etc. Et lorsque nous atteignons les valeurs limites des ressources, le serveur commence à rencontrer des problèmes de performance, ainsi que des problèmes fonctionnels.

Par conséquent, lorsque nous menons des tests de performance, nous prêtons attention d’une part à l’efficience (à la consommation des ressources) et, d’autre part, aux défauts fonctionnels qui apparaissent lorsque les limites des ressources serveur disponibles sont atteintes.

Fiabilité : ensemble d’attributs liés à la capacité du logiciel à maintenir son niveau de performance dans les conditions données pendant une période spécifiée.

Caractéristiques de la fiabilité :

  • stabilité (maturité) : attributs du logiciel relatifs au taux de défaillance en cas d’erreurs logicielles.
  • tolérance aux pannes : attributs du logiciel relatifs à sa capacité à maintenir un certain niveau de performance en cas d’erreurs logicielles ou de manquements.
  • récupérabilité : attributs du logiciel relatifs à sa capacité à restaurer le niveau de performance et à récupérer les données directement endommagées en cas de défaillance, ainsi qu’au temps et aux efforts nécessaires pour le faire.

Ces trois caractéristiques doivent être incluses dans les tests de performance. Autrement dit, les tests de performance, c’est tester la fiabilité + tester l’efficience, en utilisant les mêmes outils et les mêmes approches d’analyse de données.

Exigences techniques

Les exigences en matière d’exhaustivité de la présentation peuvent être divisées en exigences détaillées et informelles.

Les exigences détaillées ne sont pas toujours bonnes, contrairement à ce que l’on pourrait penser, car elles peuvent endormir le testeur. Les exigences informelles, au contraire, offrent davantage de liberté pour la créativité. L’option la plus adaptée est celle d’exigences décrites de manière incomplète. Et il est rare que vous voyiez des exigences strictement respectées.

Trois composantes de base des exigences techniques :

  • génération de la charge : la charge doit être générée pour les tests de charge ;
  • surveillance des caractéristiques de performance : la charge sur le serveur étant élevée, il est nécessaire de relever un nombre suffisant d’indicateurs ; et si vous souhaitez les utiliser pour l’analyse, vous devez d’abord les collecter ;
  • analyse des résultats : atteinte des valeurs moyennes de divers paramètres, ainsi qu’analyse des écarts importants (anomalies).

Outils de tests de performance

Outils de génération de charge

Les outils de génération de charge sont utilisés pour générer un grand nombre de requêtes, écrire les scripts et enregistrer/rejouer ces derniers. Vous trouverez ci-dessous une liste de quelques outils parmi les plus populaires.

Outils de surveillance

Ce type d’outils vous permet de mesurer la principale caractéristique — le temps de réponse — côté client, et non côté serveur.

  • outils intégrés
  • outils du système d’exploitation
  • moyens des serveurs et SGBD
  • outils spécialisés
  • Zabbix, Nagios, Hyper

Outils d’analyse des résultats

Lorsque l’on parle de l’analyse des résultats dans les tests de performance, il s’agit avant tout de la capacité à construire divers graphiques. Les outils suivants peuvent être utilisés :

  • outils intégrés.
  • tableurs.
  • logiciels de traitement statistique des données.

Objectifs des tests de performance

En termes simples, l’objectif des tests de performance est « d’obtenir des informations sur la performance et de les fournir aux parties prenantes afin qu’elles puissent les utiliser pour prendre certaines décisions ». Comment ces informations peuvent-elles être utilisées par la suite ?

  1. Pour vérifier la conformité aux exigences.
  2. Pour comparer différentes versions ou configurations du système.
  3. Pour identifier les goulots d’étranglement.

Modèles de charge

Selon le type de tests de performance, vous devez connaître et utiliser l’un des modèles de charge standards.

Modèle de charge : nombre d’impacts à exercer sur le système à un moment précis.

1. Charge constante

Mise en place de tests de performance sur un projet

Cela signifie que nous envoyons à peu près le même nombre de requêtes pendant une longue période. Et nous observons le temps de réponse, qui doit rester à peu près constant, inchangé pendant toute la durée de la charge. L’objectif principal de la charge constante est l’observation du temps de réponse — il doit rester inchangé pendant toute cette durée.

2. Charge en augmentation continue

Modèle de charge en augmentation continue

Contrairement au modèle précédent, où il ne devrait y avoir aucun problème avec une charge uniforme, ici, à mesure que la charge augmente, nous nous attendons à rencontrer des problèmes. L’objectif principal de ce modèle est de trouver un point de saturation après lequel surviennent de sérieux problèmes dans le système — des écarts par rapport au comportement attendu (défaillances).

3. Charge constante, proche de la limite

Modèle de charge constante, proche de la limite

Après avoir augmenté la charge en continu, nous devons vérifier la stabilité du système dans des états proches du critique. Pour cela, il faut prendre une valeur égale aux deux tiers de la valeur critique et vérifier que le système fonctionnera de manière stable sous de telles charges. Puis nous devons effectuer le même test pour une valeur inférieure de 10 % à la valeur critique. Cette dernière permet de détecter les fuites de ressources. Ce type de charge permet donc de réaliser le test de stabilité du système sous des charges proches des limites.

Indicateurs des tests de charge

Un indicateur (métrique) est un standard de mesure d’une ressource informatique. Les indicateurs peuvent désigner soit une ressource et ses unités de mesure, soit les données collectées sur cette ressource.

Les indicateurs de tests de charge décrits sont des indicateurs clés de performance pour votre application web ou site web. Les indicateurs de réponse mesurent la performance du point de vue de l’utilisateur, tandis que les indicateurs de volume reflètent le trafic généré par l’outil de test de charge contre l’application web cible. Les indicateurs de performance les plus courants sont listés ci-dessous :

  • temps de réponse : l’indicateur le plus basique ; un temps de réponse long — qu’il s’agisse de la moyenne ou des anomalies et écarts individuels qui entraînent des retards.
  • nombre de défaillances : pannes sur le serveur dues à la charge.
  • consommation de ressources : quantité de ressources consommées par le serveur.

Il existe d’autres indicateurs de performance que vous pouvez mesurer en fonction de votre projet, de votre serveur, de vos exigences et des problèmes rencontrés. Mais les indicateurs décrits ci-dessus sont les principaux.

Sources des problèmes

Les principales raisons connues qui peuvent constituer des points sensibles sont les suivantes.

  1. Manque de ressources : temps CPU, RAM, bande passante réseau, temps de fonctionnement du sous-système disque
  2. Algorithmes non optimaux : l’ordinateur calcule lentement, utilise des algorithmes qui entraînent un long temps de calcul
  3. Mauvaise répartition de charge : un serveur est surchargé tandis que l’autre est sous-chargé
  4. Mise en cache incorrecte des ressources : par exemple, les données fréquemment utilisées consomment autant de ressources que si nous les sollicitions pour la première fois.
  5. Mauvaise gestion des files d’attente : davantage de ressources sont allouées à une requête qu’à une autre.
  6. Défauts fonctionnels : des bugs dans le produit peuvent entraîner des problèmes de performance

Synthèse

Les tests de performance protègent les investissements contre l’échec d’un produit. Le coût des tests de performance est généralement plus que compensé par l’amélioration de la satisfaction et de la fidélisation des clients.

Et, dans cet article, nous avons abordé les aspects les plus importants à connaître pour mettre en place des tests de performance automatisés sur votre produit. Les tests de performance ne sont pas intrinsèquement difficiles. En les démarrant, gardez à l’esprit les fondamentaux des tests de performance, évaluez également les comportements des utilisateurs, les flux de travail, et préparez-vous à des scénarios du monde réel.

À propos de QAwerk

QAwerk est une entreprise ukrainienne qui fournit des services de test à la demande. L’expertise de l’équipe couvre toutes les étapes et méthodes de test, qui permettent de surveiller la stabilité d’unités séparées et du système dans son ensemble, d’offrir des possibilités d’intégration et de garantir des retours positifs de vos clients. Ainsi, QAwerk fait office de guichet unique pour l’assurance qualité de votre projet.