Test de performance

Un article de Wikipédia, l'encyclopédie libre.

Un test de performance ou benchmark est un test dont l'objectif est de déterminer la performance d'un système informatique.

L'acception la plus courante de ce terme est celle dans laquelle ces tests vont avoir pour objectif de mesurer les temps de réponse d'un système en fonction de sa sollicitation. Cette définition est très proche de celle de test de charge où l'on mesure le comportement d'un système en fonction de la charge d'utilisateurs simultanés.

Sommaire

[modifier] Types de Tests

Ces tests peuvent être de plusieurs types, notamment :

  • Test de tenue en charge : il s'agit d'un test au cours duquel on va simuler une charge importante d'utilisateurs sur une durée relativement longue, pour voir si le système testé est capable de supporter une activité intense sur une longue période sans dégradations des performances et des ressources applicatives ou système. Des synonymes courants sont test d'endurance, de robustesse, de fiabilité.
  • Test de capacité : il s'agit d'un test au cours duquel on va simuler un nombre d'utilisateurs sans cesse croissant (par paliers) de manière à déterminer quelle charge limite le système est capable de supporter.
  • Test en stress : il s'agit d'un test au cours duquel on va simuler l'activité maximale attendue en heures de pointe de l'application, pour voir comment le système réagit au maximum de l'activité des utilisateurs.
  • Test aux limites : il s'agit d'un test au cours duquel on va simuler une activité bien supérieure à l'activité normale, pour voir comment le système réagit aux limites du modèle d'usage de l'application.
  • Test d'endurance : il s'agit d'un test qui établit la linéarité du fonctionnement de l'application sur une durée égale à une journée type d'utilisation (10h voire 24h), cela permet de mesurer une dérive des performances due à des fuites mémoires ou des saturations disques de l'application
  • Il existe d'autre types de tests, plus ciblés et fonction des objectifs à atteindre dans la campagne de tests : Test de Benchmark (comparaisons de logiciel, matériels, architectures,...), Tests de non-régression, Tests de Composants, Tests de Volumétrie des données, etc...

Si l'application est déjà en production, ou en phase pilote, on peut aussi, afin de connaître les performances du système, réaliser une métrologie, qualifié souvent de "métrologie de suivi de site"[réf. nécessaire], qui permettra d'observer dans le détail le fonctionnement du système sur la base d'actions réelles des utilisateurs. Les résultats d'une telle campagne de métrologie permettant de connaître les fonctionnalités réellement utilisées, et leur fréquence d'utilisation, il peuvent ensuite servir de base pour orienter les tests à réaliser dans des simulations futures.

[modifier] Définition du plan de tests

Il est l'expression du besoin de la campagne de tests. On y trouve la présentation du projet (résumé, architecture technique et logicielle), les objectifs, le modèle de charge, le type de tests à réaliser, les scénarios fonctionnels (ou cas d'utilisation) à tester accompagnés des jeux de données nécessaires et un planning d'exécution des tests.

Les jeux de données vont permettre de simuler au plus juste la réalité. Un jeu de données peut par exemple consister en n logins et n mots de passe, permettant ainsi de simuler des utilisateurs différents se connectant à l'application.

[modifier] Méthodologie

Les tests de performance doivent être implémentés et réalisés tout au long du cycle de développement, et le plus tôt possible. Un résultat plus ou moins précis maintenant vaut mieux qu’un résultat très précis plus tard.

  • Testez de façon large, puis de façon approfondie
  • Testez dans un environnement contrôlé
  • L'environnement de test doit être si possible identique à l’environnement de production

Etape 1 : Analyse de Référence (l’analyse préliminaire consiste en l’enregistrement d’un ou de plusieurs scénarii pour mieux comprendre l’application et l’étendue du test).

  • Définir le système à tester
  • Définir les scénarii
  • Caractériser les données pour chaque scénarii
  • Enregistrer les scénarii
  • Collecter les données de chaque scénarii

Etape 2 : Tests Préliminaires

  • Mettre en œuvre des moyens
  • Exécuter les tests de charge (préliminaires)
  • Analyser les résultats

Etape 3 : Test de Charge à Grande Echelle

  • Exécuter les tests de charge
  • Analyser les résultats
  • Optimiser le système

[modifier] Outillage Nécessaire

Comme il s'agit de simuler un nombre d'utilisateurs en général important, il est évidemment nécessaire d'automatiser ces tests. L'automatisation de test, que ce soit pour des tests de performance ou non, nécessite de répondre à deux problèmes :

  • être capable d'enchaîner des actions sur le système selon des scenarii qui ont du sens pour les objectifs de test
  • valoriser ces actions sur des données qui sont pertinentes à la fois vis à vis des scénarii et de l'état du système au moment où on exécute ces tests.

Prenons par exemple le cas du test de performance d'un portail eCommerce dans lequel on va adresser plus particulièrement la fonction de constitution d'un panier d'achat. Il faut disposer d'un mécanisme d'automatisation des actions de sélection d'article, de validation de commande, etc. Mais il faut également valoriser ces actions en donnant les articles qui seront effectivement commandés par les utilisateurs virtuels dans le cadre du test de performance. Or, la nature et le nombre de ces articles peuvent varier en fonction du contenu de la base de données d'articles de l'application, du profil de consommateur de l'utilisateur simulé ou encore de la période de l'année que l'on simule dans le test.

Une plate-forme de test de performances va généralement comporter :

  • Un injecteur/Moteur de charge : logiciel qui va être capable de simuler les actions des utilisateurs et de générer la charge. Ces actions sont définies dans des scripts automatisant des scénarii et valorisés sur un lot de données particulier.
  • Des sondes : placées au niveau du système cible, elles permettent de remonter des mesures dont l'objet est de savoir comment réagissent individuellement des composantes du système. Les éléments sur lesquels on va en général placer des sondes sont l'utilisation de la mémoire, processeur, disque et réseau.

Les solutions de tests de performances Web vont permettre de simplifier et d'automatiser les tests : création plus ou moins automatisée des scénarii de tests, configuration des scénarii avec ou sans script, simulation d'utilisateurs virtuels avec collecte des mesures (et génération automatique de rapports), etc.

[modifier] Acteurs du Marché

[modifier] Liens Externes

  • Zonebench Base de donnée de 20 logiciels de benchmark qui fonctionnent sous Windows