Test de performance
Le test de performance est un processus de test logiciel utilisé pour tester la vitesse, le temps de réponse, la stabilité, la fiabilité, l'évolutivité et l'utilisation des ressources d'une application logicielle sous une charge de travail particulière. L'objectif principal des tests de performance est d'identifier et d'éliminer les goulots d'étranglement de performance dans l'application logicielle. Il s'agit d'un sous-ensemble de l'ingénierie des performances et également connu sous le nom de «tests de performance».
L'objectif des tests de performance est de vérifier un programme logiciel
- Vitesse - Détermine si l'application répond rapidement
- Évolutivité - Détermine la charge utilisateur maximale que l'application logicielle peut gérer.
- Stabilité - Détermine si l'application est stable sous des charges variables
Dans ce didacticiel, vous apprendrez-
- Qu'est-ce que le test de performance?
- Pourquoi faire des tests de performance?
- Types de tests de performance
- Problèmes de performances courants
- Processus de test de performance
- Mesures de test de performance: paramètres surveillés
- Exemples de cas de test de performance
- Outils de test de performance
- FAQ
Pourquoi faire des tests de performance?
Les fonctionnalités et fonctionnalités prises en charge par un système logiciel ne sont pas la seule préoccupation. Les performances d'une application logicielle telles que son temps de réponse, sa fiabilité, son utilisation des ressources et son évolutivité sont importantes. Le but des tests de performances n'est pas de trouver des bogues mais d'éliminer les goulots d'étranglement des performances.
Les tests de performances sont effectués pour fournir aux parties prenantes des informations sur leur application concernant la vitesse, la stabilité et l'évolutivité. Plus important encore, les tests de performance révèlent ce qui doit être amélioré avant que le produit ne soit commercialisé. Sans les tests de performances, les logiciels risquent de souffrir de problèmes tels que: fonctionnement lent alors que plusieurs utilisateurs l'utilisent simultanément, incohérences entre les différents systèmes d'exploitation et mauvaise utilisabilité.
Les tests de performance détermineront si leur logiciel répond aux exigences de vitesse, d'évolutivité et de stabilité dans les charges de travail attendues. Les applications envoyées sur le marché avec des indicateurs de performances médiocres en raison de tests de performances inexistants ou médiocres sont susceptibles d'acquérir une mauvaise réputation et de ne pas atteindre les objectifs de vente attendus.
En outre, les applications critiques comme les programmes de lancement spatial ou les équipements médicaux de sauvetage doivent être testées pour garantir qu'elles fonctionnent pendant une longue période sans écarts.
Selon Dunn & Bradstreet, 59% des entreprises du classement Fortune 500 subissent environ 1,6 heure d'indisponibilité chaque semaine. Étant donné que l'entreprise Fortune 500 moyenne avec un minimum de 10 000 employés paie 56 $ l'heure, la partie main-d'œuvre des coûts des temps d'arrêt pour une telle organisation serait de 896 000 $ par semaine, soit plus de 46 millions de dollars par an.
On estime qu'un temps d'arrêt de seulement 5 minutes de Google.com (19 août 2013) coûterait au géant de la recherche jusqu'à 545 000 $.
On estime que les entreprises ont perdu des ventes d'une valeur de 1100 USD par seconde en raison d'une récente panne du service Web d'Amazon.
Par conséquent, les tests de performance sont importants.
Types de tests de performance
- Test de charge - vérifie la capacité de l'application à fonctionner sous les charges utilisateur prévues. L'objectif est d'identifier les goulots d'étranglement des performances avant la mise en service de l'application logicielle.
- Test de stress - consiste à tester une application sous des charges de travail extrêmes pour voir comment elle gère un trafic élevé ou le traitement des données. L'objectif est d'identifier le point de rupture d'une application.
- Test d'endurance - est effectué pour s'assurer que le logiciel peut gérer la charge attendue sur une longue période de temps.
- Spike testing - teste la réaction du logiciel aux pics soudains et importants de la charge générée par les utilisateurs.
- Test de volume - Test de volume sous grand pas. de. Les données sont renseignées dans une base de données et le comportement global du système logiciel est surveillé. L'objectif est de vérifier les performances de l'application logicielle sous différents volumes de base de données.
- Test d'évolutivité - L'objectif des tests d'évolutivité est de déterminer l'efficacité de l'application logicielle dans la «mise à l'échelle» pour prendre en charge une augmentation de la charge utilisateur. Il aide à planifier l'ajout de capacité à votre système logiciel.
Problèmes de performances courants
La plupart des problèmes de performances sont liés à la vitesse, au temps de réponse, au temps de chargement et à une mauvaise évolutivité. La vitesse est souvent l'un des attributs les plus importants d'une application. Une application à exécution lente perdra des utilisateurs potentiels. Les tests de performances sont effectués pour s'assurer qu'une application s'exécute suffisamment rapidement pour retenir l'attention et l'intérêt d'un utilisateur. Jetez un œil à la liste suivante des problèmes de performances courants et notez à quel point la vitesse est un facteur commun dans beaucoup d'entre eux:
- Temps de chargement long - Le temps de chargement est normalement le temps initial nécessaire à une application pour démarrer. Cela devrait généralement être réduit au minimum. Alors que certaines applications sont impossibles à charger en moins d'une minute, le temps de chargement doit être maintenu en dessous de quelques secondes si possible.
- Temps de réponse médiocre - Le temps de réponse est le temps qu'il faut entre le moment où un utilisateur entre des données dans l'application et celui où l'application envoie une réponse à cette entrée. En général, cela devrait être très rapide. Encore une fois, si un utilisateur doit attendre trop longtemps, il perd tout intérêt.
- Mauvaise évolutivité - Un produit logiciel souffre d'une mauvaise évolutivité lorsqu'il ne peut pas gérer le nombre attendu d'utilisateurs ou lorsqu'il ne prend pas en charge une gamme d'utilisateurs suffisamment large. Le test de charge doit être effectué pour être certain que l'application peut gérer le nombre prévu d'utilisateurs.
- Goulot d'étranglement - Les goulots d'étranglement sont des obstacles dans un système qui dégradent les performances globales du système. Les goulots d'étranglement surviennent lorsque des erreurs de codage ou des problèmes matériels entraînent une diminution du débit sous certaines charges. Les goulots d'étranglement sont souvent causés par une section de code défectueuse. La clé pour résoudre un problème de goulot d'étranglement est de trouver la section de code qui cause le ralentissement et d'essayer de le résoudre à cet endroit. Les goulots d'étranglement sont généralement corrigés en corrigeant les mauvais processus en cours d'exécution ou en ajoutant du matériel supplémentaire. Certains goulots d'étranglement courants des performances sont
- Utilisation du processeur
- Utilisation de la mémoire
- L'utilisation du réseau
- Limitations du système d'exploitation
- Utilisation du disque
Processus de test de performance
La méthodologie adoptée pour les tests de performance peut varier considérablement, mais l'objectif des tests de performance reste le même. Cela peut aider à démontrer que votre système logiciel répond à certains critères de performance prédéfinis. Ou cela peut aider à comparer les performances de deux systèmes logiciels. Il peut également aider à identifier les parties de votre système logiciel qui dégradent ses performances.
Vous trouverez ci-dessous un processus générique sur la façon d'effectuer des tests de performance
- Identifiez votre environnement de test - Connaissez votre environnement de test physique, votre environnement de production et les outils de test disponibles. Comprenez les détails des configurations matérielles, logicielles et réseau utilisées pendant les tests avant de commencer le processus de test. Cela aidera les testeurs à créer des tests plus efficaces. Cela aidera également à identifier les défis potentiels que les testeurs peuvent rencontrer au cours des procédures de test de performance.
- Identifier les critères d'acceptation des performances - Cela inclut les objectifs et les contraintes de débit, de temps de réponse et d'allocation des ressources. Il est également nécessaire d'identifier les critères de réussite du projet en dehors de ces objectifs et contraintes. Les testeurs doivent être habilités à fixer des critères de performance et des objectifs car souvent les spécifications du projet n'incluent pas une assez grande variété de références de performance. Parfois, il n'y en a pas du tout. Lorsque cela est possible, trouver une application similaire à laquelle comparer est un bon moyen de définir des objectifs de performance.
- Planifier et concevoir des tests de performances - Déterminez comment l'utilisation est susceptible de varier parmi les utilisateurs finaux et identifiez les scénarios clés à tester pour tous les cas d'utilisation possibles. Il est nécessaire de simuler une variété d'utilisateurs finaux, de planifier les données de test de performance et de décrire les mesures qui seront collectées.
- Configuration de l'environnement de test - Préparez l'environnement de test avant son exécution. Organisez également des outils et d'autres ressources.
- Mettre en œuvre la conception de test - Créez les tests de performance en fonction de votre conception de test.
- Exécutez les tests - Exécutez et surveillez les tests.
- Analysez, ajustez et retestez - Consolidez, analysez et partagez les résultats des tests. Ensuite, ajustez et testez à nouveau pour voir s'il y a une amélioration ou une diminution des performances. Étant donné que les améliorations diminuent généralement à chaque nouveau test, arrêtez-vous lorsque le goulot d'étranglement est causé par le processeur. Ensuite, vous pouvez envisager d'augmenter la puissance du processeur.
Mesures de test de performance: paramètres surveillés
Les paramètres de base surveillés pendant les tests de performance comprennent:
- Utilisation du processeur - une quantité de temps que le processeur passe à exécuter des threads non inactifs.
- Utilisation de la mémoire - quantité de mémoire physique disponible pour les processus sur un ordinateur.
- Durée du disque - durée pendant laquelle le disque est occupé à exécuter une demande de lecture ou d'écriture.
- Bande passante - affiche les bits par seconde utilisés par une interface réseau.
- Octets privés - nombre d'octets alloués par un processus qui ne peuvent pas être partagés entre d'autres processus. Ceux-ci sont utilisés pour mesurer les fuites de mémoire et l'utilisation.
- Mémoire engagée - quantité de mémoire virtuelle utilisée.
- Pages mémoire / seconde - nombre de pages écrites ou lues sur le disque afin de résoudre les défauts de page matérielle. Les erreurs de page matérielles surviennent lorsque du code n'appartenant pas à l'ensemble de travail actuel est appelé ailleurs et récupéré à partir d'un disque.
- Défauts de page / seconde - le taux global de traitement des pages de défauts par le processeur. Cela se produit à nouveau lorsqu'un processus requiert du code en dehors de son ensemble de travail.
- Interruptions du processeur par seconde - est la moyenne. nombre d'interruptions matérielles qu'un processeur reçoit et traite chaque seconde.
- Longueur de la file d'attente du disque - est la moyenne. non. des demandes de lecture et d'écriture mises en file d'attente pour le disque sélectionné pendant un intervalle d'échantillonnage.
- Longueur de la file d'attente de sortie réseau - longueur de la file d'attente des paquets de sortie en paquets. Tout plus de deux signifie qu'un retard et un goulot d'étranglement doivent être stoppés.
- Nombre total d'octets réseau par seconde - débit des octets envoyés et reçus sur l'interface, y compris les caractères de trame.
- Temps de réponse - temps entre le moment où un utilisateur entre une demande et la réception du premier caractère de la réponse.
- Débit - débit qu'un ordinateur ou un réseau reçoit des demandes par seconde.
- Quantité de regroupement de connexions - le nombre de demandes des utilisateurs satisfaites par les connexions mises en pool. Plus il y a de demandes satisfaites par les connexions dans le pool, meilleures seront les performances.
- Nombre maximum de sessions actives - le nombre maximum de sessions pouvant être actives simultanément.
- Taux de réussite - Cela a à voir avec le nombre d'instructions SQL gérées par les données mises en cache au lieu d'opérations d'E / S coûteuses. C'est un bon point de départ pour résoudre les problèmes de goulot d'étranglement.
- Hits par seconde - le non. de hits sur un serveur Web pendant chaque seconde d'un test de charge.
- Segment de restauration - la quantité de données pouvant être restaurée à tout moment.
- Verrous de base de données - le verrouillage des tables et des bases de données doit être surveillé et soigneusement réglé.
- Principales attentes - sont surveillées pour déterminer les temps d'attente qui peuvent être réduits lors du traitement de la vitesse à laquelle les données sont extraites de la mémoire
- Nombre de threads - L'intégrité d' une application peut être mesurée par le no. des threads en cours d'exécution et actuellement actifs.
- Garbage collection - Il s'agit de renvoyer la mémoire inutilisée au système. Le ramassage des ordures doit être surveillé pour plus d'efficacité.
Exemples de cas de test de performance
- Vérifiez que le temps de réponse n'est pas supérieur à 4 secondes lorsque 1000 utilisateurs accèdent au site Web simultanément.
- Vérifiez que le temps de réponse de l'application sous charge se situe dans une plage acceptable lorsque la connectivité réseau est lente
- Vérifiez le nombre maximum d'utilisateurs que l'application peut gérer avant qu'elle ne plante.
- Vérifiez le temps d'exécution de la base de données lorsque 500 enregistrements sont lus / écrits simultanément.
- Vérifiez l'utilisation du processeur et de la mémoire de l'application et du serveur de base de données dans des conditions de charge maximale
- Vérifiez le temps de réponse de l'application dans des conditions de charge faible, normale, modérée et élevée.
Au cours de l'exécution réelle du test de performance, des termes vagues tels que plage acceptable, charge lourde, etc. sont remplacés par des nombres concrets. Les ingénieurs de performance définissent ces chiffres en fonction des besoins de l'entreprise et du paysage technique de l'application.
Outils de test de performance
Il existe une grande variété d'outils de test de performance disponibles sur le marché. L'outil que vous choisissez pour les tests dépendra de nombreux facteurs tels que les types de protocoles pris en charge, le coût de la licence, les exigences matérielles, la prise en charge de la plate-forme, etc.
- LoadNinja - révolutionne la façon dont nous testons de charge. Cet outil de test de charge basé sur le cloud permet aux équipes d'enregistrer et de lire instantanément des tests de charge complets, sans corrélation dynamique complexe et d'exécuter ces tests de charge dans de vrais navigateurs à grande échelle. Les équipes peuvent augmenter la couverture des tests. & réduire le temps de test de charge de plus de 60%.
- NeoLoad - est la plate-forme de test des performances conçue pour DevOps qui s'intègre parfaitement dans votre pipeline de livraison continue existant. Avec NeoLoad, les équipes testent 10 fois plus vite qu'avec les outils traditionnels pour répondre au nouveau niveau d'exigences tout au long du cycle de vie de développement logiciel Agile - des tests de charge des composants aux tests de charge complets à l'échelle du système.
- HP LoadRunner - est les outils de test de performance les plus populaires sur le marché aujourd'hui. Cet outil est capable de simuler des centaines de milliers d'utilisateurs, plaçant les applications sous des charges réelles pour déterminer leur comportement sous les charges attendues. Loadrunner dispose d'un générateur d'utilisateurs virtuels qui simule les actions d'utilisateurs humains en direct.
- Jmeter - l' un des principaux outils utilisés pour les tests de charge des serveurs Web et d'applications.
FAQ
Quelles applications devons-nous tester les performances?
Les tests de performances sont toujours effectués pour les systèmes client-serveur uniquement. Cela signifie que toute application qui n'est pas une architecture client-serveur ne doit pas nécessiter de test de performance.
Par exemple, Microsoft Calculator n'est ni basé sur le client-serveur ni exécute plusieurs utilisateurs; par conséquent, ce n'est pas un candidat pour les tests de performance.
Quelle est la différence entre les tests de performance et l'ingénierie des performances
Il est important de comprendre la différence entre les tests de performance et l'ingénierie des performances. Une compréhension est partagée ci-dessous:
Les tests de performance sont une discipline qui consiste à tester et à signaler les performances actuelles d'une application logicielle sous divers paramètres.
L'ingénierie des performances est le processus par lequel le logiciel est testé et réglé dans le but de réaliser les performances requises. Ce processus vise à optimiser le trait de performance d'application le plus important, à savoir l'expérience utilisateur.
Historiquement, les tests et les réglages ont été des domaines distinctement distincts et souvent concurrents. Au cours des dernières années, cependant, plusieurs poches de testeurs et de développeurs ont collaboré indépendamment pour créer des équipes de réglage. Parce que ces équipes ont rencontré un succès significatif, le concept de couplage des tests de performance avec le réglage des performances a fait son chemin, et maintenant nous l'appelons l'ingénierie des performances.
Conclusion
En génie logiciel, des tests de performance sont nécessaires avant de commercialiser un produit logiciel. Il garantit la satisfaction du client et protège l'investissement d'un investisseur contre la défaillance du produit. Les coûts des tests de performance sont généralement plus que compensés par une amélioration de la satisfaction, de la fidélité et de la fidélisation des clients.