Accueil🇫🇷Chercher

Test de performance

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

Comparaison de performance entre différents types d'ordinateurs.

L'acception la plus courante de ce terme est celle dans laquelle ces tests logiciels vont avoir pour objectif de mesurer les temps de réponse d'un système applicatif en fonction de sa sollicitation. Cette définition est donc 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. Seuls les tests de charge permettent de valider correctement une application ou un système avant déploiement, tant en qualité de service qu'en consommation de ressources.

Types de tests

Ces tests peuvent ĂŞtre de plusieurs types, notamment :

  • Test de charge : il s'agit d'un test au cours duquel on va simuler un nombre d'utilisateurs virtuels prĂ©dĂ©finis, afin de valider l'application pour une charge attendue d'utilisateurs. Ce type de test permet de mettre en Ă©vidence les points sensibles et critiques de l’architecture technique. Il permet en outre de mesurer le dimensionnement des serveurs, de la bande passante nĂ©cessaire sur le rĂ©seau, etc. ;
  • Test de performance : proche du Test de charge, il s'agit d'un test au cours duquel on va mesurer les performances de l'application soumise Ă  une charge d'utilisateurs. Les informations recueillies concernent les temps de rĂ©ponse utilisateurs, les temps de rĂ©ponse rĂ©seau et les temps de traitement d’une requĂŞte sur le(s) serveur(s). La nuance avec le type prĂ©cĂ©dent rĂ©side dans le fait qu'on ne cherche pas ici Ă  valider les performances pour la charge attendue en production, mais plutĂ´t vĂ©rifier les performances intrinsèques Ă  diffĂ©rents niveaux de charge d'utilisateurs ;
  • Test de dĂ©gradations des transactions : il s'agit d'un test technique primordial au cours duquel on ne va simuler que l'activitĂ© transactionnelle d'un seul scĂ©nario fonctionnel parmi tous les scĂ©narios du pĂ©rimètre des tests, de manière Ă  dĂ©terminer quelle charge le système est capable de supporter pour chaque scĂ©nario fonctionnel et d'isoler Ă©ventuellement les transactions qui dĂ©gradent le plus l'ensemble du système. Ce test peut tenir compte ou non de la cadence des itĂ©rations, la reprĂ©sentativitĂ© en termes d'utilisateurs simultanĂ©s vs. sessions simultanĂ©es n'Ă©tant pas ici un objectif obligatoire, s'agissant ici plutĂ´t de dĂ©terminer les points de contention gĂ©nĂ©rĂ©s par chaque scĂ©nario fonctionnel. La dĂ©marche utilisĂ©e est d'effectuer une montĂ©e en charge linĂ©aire jusqu'au premier point de blocage ou d'inflexion. Pour dĂ©passer celui-ci, il faut paramĂ©trer mĂ©thodiquement les composants systèmes ou applicatifs afin d'identifier les paramètres pertinents, ce jusqu'Ă  obtention des rĂ©sultats satisfaisants. MĂ©thodologiquement, ce test est effectuĂ© avant les autres types de tests tels que performance, robustesse, etc. oĂą tous les scĂ©narios fonctionnels sont impliquĂ©s ;
  • Test de stress : il s'agit d'un test au cours duquel on va simuler l'activitĂ© maximale attendue tous scĂ©narios fonctionnels confondus en heure de pointe de l'application, pour voir comment le système rĂ©agit au maximum de l'activitĂ© attendue des utilisateurs. La durĂ©e du palier en pleine charge, en gĂ©nĂ©ral de 2 heures, doit tenir compte du remplissage des diffĂ©rents caches applicatifs et clients, ainsi que de la stabilisation de la plateforme de test suite Ă  l'Ă©ventuel effet de pic-rebond consĂ©cutif Ă  la montĂ©e en charge. Dans le cadre de ces tests, il est possible de pousser le stress jusqu'Ă  simuler des dĂ©faillances systèmes ou applicatives afin d'effectuer des tests de rĂ©cupĂ©ration sur incident (Fail-over) ou pour vĂ©rifier le niveau de service en cas de dĂ©faillance ;
  • Test de robustesse, d'endurance, de fiabilitĂ© : il s'agit de tests au cours desquels 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. Le rĂ©sultat est satisfaisant lorsque l'application a supportĂ© une charge supĂ©rieure Ă  la moitiĂ© de la capacitĂ© maximale du système, ou lorsque l'application a supportĂ© l'activitĂ© d'une journĂ©e ou plusieurs jours/mois/annĂ©es, pendant 8 Ă  10 heures, sans dĂ©gradation de performance (temps, erreurs), ni perte de ressources systèmes ;
  • Test de capacitĂ©, test de montĂ©e en charge : il s'agit d'un test au cours duquel on va simuler un nombre d'utilisateurs sans cesse croissant de manière Ă  dĂ©terminer quelle charge limite le système est capable de supporter. Éventuellement, des paramĂ©trages peuvent ĂŞtre effectuĂ©s, dans la mĂŞme logique que lors des tests de dĂ©gradation, l'objectif du test Ă©tant nĂ©anmoins ici de dĂ©terminer la capacitĂ© maximale de l'ensemble système-applicatif dans une optique prĂ©visionnelle (cf. capacity planning, gestion de la capacitĂ© en français) ;
  • Test aux limites : il s'agit d'un test au cours duquel on va simuler en gĂ©nĂ©ral 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. Proche du test de capacitĂ©, il ne recouvre pas seulement l'augmentation d'un nombre d'utilisateurs simultanĂ©s qui se limite ici Ă  un pourcentage en principe prĂ©dĂ©fini, mais aussi les possibilitĂ©s d'augmentation du nombre de processus mĂ©tier rĂ©alisĂ©s dans une plage de temps ou en simultanĂ©, en jouant sur les cadences d'exĂ©cutions, les temps d'attente, mais aussi les configurations de la plateforme de test dans le cadre d'architectures redondĂ©es (Crash Tests) ;
  • Test de rĂ©silience : il s'agit d'un test au cours duquel on va simuler une activitĂ© rĂ©elle tout en simulant des pannes en environnement rĂ©el et de vĂ©rifier que le système informatique continue Ă  fonctionner. Proche du test de robustesse, il permet de s'assurer de la rĂ©silience des applications et de l'infrastructure sous-jacente. Pour provoquer les pannes pendant le test, on peut utiliser des chaos monkey qui mettent alĂ©atoirement hors service des instances dans l’environnement de test.
  • Il existe d'autres 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 des performances,
    • Tests de Composants,
    • Tests de VolumĂ©trie des donnĂ©es,
    • Tests de Fonctionnement, etc.

Étant entendu qu'en principe un type de test correspond à un type d'objectif, et que dans une matrice de couverture des tests les résultats se recoupent obligatoirement, il est rare (et coûteux) de réaliser l’ensemble de ces tests pour une application donnée.

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ée de surveillance de la production, 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, ils peuvent ensuite servir de base pour orienter les tests à réaliser dans des simulations futures, ou servir de base à une solution de supervision de la production.

DĂ©finition du plan de tests

Le plan de tests est l'expression du besoin de la campagne de tests, et c'est le premier livrable du processus des 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 de ces tests. Ce document reprend des éléments des entrées au processus des tests, notamment le cahier des charges des tests établi par le « client » (en général, une MOE) auquel est joint le Document d'Architecture Technique. Bien évidemment, la réussite du processus est directement liée à la précision et la complétude des informations fournies en entrée.

Les jeux de données permettent 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.

Le modèle de charge consiste, à partir d'un modèle d'usage de l'application (nombre d'utilisateurs simultanés, nombre de processus métier réalisés, périodes d'utilisation, heures de pointe…) à modéliser la charge qui devra être simulée et qui se devra d'être représentative de l'activité réelle ou attendue de l'application en pic, en général lors d'un test de stress, en tenant compte de l'environnement des tests. Cette modélisation contient donc un nombre d'utilisateurs à simuler, leur répartition sur les différents scripts (scénarios fonctionnels), leurs rythmes d'exécution respectifs. Accessoirement, le modèle peut tenir compte des profils de montée ou descente de charge des groupes d'utilisateurs, si cela revêt une importance très particulière (par exemple lorsque l'on veut simuler des « rafales » de transactions), sachant que par principe les performances en charge cible doivent être indépendantes de la montée en charge (après stabilisation).

Présentation des résultats et Bilan des Tests

Le Bilan des Tests, livrable obligatoire et essentiel du processus de test, donne les résultats obtenus lors des tests effectués, éventuellement un avis de mise en production, mais aussi des préconisations applicatives ou systèmes pour résoudre les problèmes de performance.

Corrélé au Plan de Test, il permet de valider que les résultats obtenus sont conformes aux objectifs attendus, dans un contexte technique précis (production, préproduction, dédié, modélisé…), éventuellement optimisé, avec des hypothèses de charge clairement identifiées et définies par les MOA, et/ou MOE, et/ou Production.

À ce titre, il restitue des résultats selon trois vues :

  • Vue MĂ©tier : nombre de clients de l'application connectĂ©s, nombre de processus mĂ©tier rĂ©alisĂ©s ;
  • Vue Utilisateur : temps de rĂ©ponse des transactions, taux d'erreur ;
  • Vue Technique : consommations des ressources systèmes (CPU, MĂ©moire, I/O), consommations applicatives (mĂ©triques applicatives telles que sessions, attentes dans les pools threads/connexions, etc.).

L'ensemble des données restituées dans le bilan donne donc un niveau de qualité de service de l'application, en charge, qui est à rapprocher des attendus prédéfinis dans le Plan de Test. Il doit permettre aux équipes de production d'anticiper les ressources à mettre à disposition, ainsi que les paramétrages à mettre en œuvre.

MĂ©thodologie

Les tests de performance doivent être implémentés et réalisés tout au long du cycle de développement, et ce 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.

  • Tester de façon large, puis de façon approfondie.
  • Tester dans un environnement contrĂ´lĂ©.
  • L'environnement de test doit ĂŞtre dans la mesure du possible identique Ă  l’environnement de production, Ă  dĂ©faut Ă  une Ă©chelle Ă©talonnĂ©e reconnue fiable permettant d'Ă©tablir des abaques.

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

  • DĂ©finir le système Ă  tester, les processus mĂ©tier, et les objectifs (mĂ©tiers, techniques, Ă©conomiques).
  • DĂ©finir les scĂ©narios, par rapport Ă  une analyse complète des risques mĂ©tiers et techniques.
  • DĂ©finir le modèle de charge, par rapport au modèle d'usage de l'application.
  • CaractĂ©riser les donnĂ©es pour chaque scĂ©nario.
  • Enregistrer les scĂ©narios.

Étape 2 : Tests Préliminaires.

  • Mettre en Ĺ“uvre des moyens et dĂ©finir la plate-forme de test.
  • ExĂ©cuter les tests de charge (prĂ©liminaires).
  • Analyser les rĂ©sultats.

Étape 3 : Test de Charge à Grande Échelle

  • Mettre en Ĺ“uvre des moyens et dĂ©finir la plate-forme de test.
  • ExĂ©cuter les tests de charge.
  • Analyser les rĂ©sultats.
  • Optimiser le système.

Outillage nécessaire

Comme il s'agit en général de simuler un nombre d'utilisateurs important, il s'avère nécessaire d'automatiser ces tests. L'automatisation des tests, 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 scĂ©narios 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Ă©narios et de l'Ă©tat du système au moment oĂą l'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 (simulés) 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 de charge (appelĂ© aussi gĂ©nĂ©rateur ou moteur de charge) : logiciel qui va ĂŞtre capable de simuler les actions des utilisateurs et de ce fait gĂ©nĂ©rer la charge sur l'application. Ces actions sont dĂ©finies dans des scripts automatisant des scĂ©narios et valorisĂ©s sur un lot de donnĂ©es particulier. On peut donc distinguer deux catĂ©gories d'outils :
    • les simulateurs d'utilisateurs qui, grosso modo, instancient les scripts de test sur un grand nombre d'utilisateurs (virtuels),
    • les gĂ©nĂ©rateurs de donnĂ©es qui vont permettre de valoriser les scripts utilisĂ©s et ainsi assurer que chaque utilisateur virtuel n'effectue pas exactement la mĂŞme opĂ©ration ce qui n'aurait pas beaucoup de sens du point de vue des performances mesurĂ©es ensuite ;
  • 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. Il est Ă©videmment prĂ©fĂ©rable d'utiliser des sondes qui ne perturbent pas le système, en privilĂ©giant au maximum les API disponibles en natif au sein des composants techniques, et en Ă©vitant l'utilisation d'agents.

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énarios de tests, configuration des scénarios avec ou sans script, simulation d'utilisateurs virtuels avec collecte des mesures (et génération automatique de rapports), etc.

Il est utile de se souvenir que les outils de test de performance peuvent générer des effets de sonde, et qu'il faut donc les utiliser ou les configurer de manière que ce risque soit réduit.

Acteurs et outils du marché

Plusieurs outils permettent de réaliser des tests de performances ; ce qui les différencie, ce sont notamment :

  • La technologie employĂ©e (mode graphique, mode protocolaire, scripting, monitoring, reporting) ;
  • Le type d'application testĂ©e (web, SAP, Oracle, RDP, Citrix, Mainframe, Windows Sockets…) ;
  • Le prix des licences ;
  • Le coĂ»t de la mise en Ĺ“uvre (en dehors des licences) ;
  • La maturitĂ© et l'efficacitĂ© du produit ;
  • Le support.

Selon plusieurs cabinets d'analyse tels IDC[1] ou Gartner Group, des leaders se démarquent sur le marché, mais il existe aussi quantité de produits Open Source ou à prix réduits, surtout pour les applications Web. Les solutions les plus représentatives du secteur sont :

Gestion des données de test

On distingue dans la gestion des données de test deux principaux types d'acteurs. Il y a ceux qui s'appuient sur les données de production et proposent des outils d'extraction et de transformation des données de production et ceux qui s'appuient sur des mécanismes de génération pour produire à partir de rien (ou presque) les jeux de données de test.

Les outils basés sur l'extraction sont particulièrement pertinents pour construire des bases de test de référence comme des catalogues de produits. D'ailleurs, n'importe quel outil d'extraction de base de données doit pouvoir faire l'affaire. Toutefois, IBM avec Optim et Micro Focus (ex-Compuware) avec FileAid se sont positionnés sur ce marché avec des outils qui, à l'origine, servent à faire de la duplication de base de données (pour traiter des problématiques d'archivage des données anciennes, par exemple).

Une solution basée sur la génération automatique est quasiment incontournable pour produire les différentes transactions (constitution d'un panier d'achat par exemple) qui vont servir à valoriser les scripts de test. Si la variabilité du comportement des utilisateurs virtuels est un critère de pertinence pour la campagne de test alors chacune des transactions injectées dans une campagne de test doit être originale et globalement l'ensemble des transactions doivent avoir une cohérence vis-à-vis des objectifs de tests. Sur le marché des outils de génération de données on trouve moins d'acteurs, mais on peut noter Grid-Tools, une société anglaise qui édite DataMaker et GenieLog qui édite l'atelier de production de jeux de données GEDIS Studio.

Organismes du secteur

  • Le TPC (Transaction Processing Performance Council) est un organisme indĂ©pendant des constructeurs qui dĂ©finit des protocoles de test et publie des classements, suivant plusieurs critères[12]. Le plus connu est le TPC-C pour le transactionnel, mais il existe des classements pour les systèmes dĂ©cisionnels (TPC-H). Les classements ne sont pas faits seulement suivant la puissance, mais aussi suivant le rapport coĂ»t/performance[13].
  • Le Standard Performance Evaluation Corporation (SPEC) est un organisme indĂ©pendant sans but lucratif qui Ă©tablit et publie des tests de performance de systèmes, en particulier un test de mesure de puissance CPU[14].

Notes et références

Voir aussi

Articles connexes

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.