Qu’est-ce que les tests STRESS dans les tests logiciels ?
⚡ Résumé intelligent
Les tests de résistance poussent une application au-delà de ses limites de fonctionnement normales afin de trouver le point de rupture, de confirmer que les défaillances sont gérées correctement et de prouver que le système se rétablit proprement une fois la charge extrême supprimée.
Qu’est-ce que les tests de résistance ?
Test de stress Le test de charge est un type de test logiciel qui vérifie la stabilité et la fiabilité d'une application. Son objectif est d'évaluer la robustesse et la capacité de gestion des erreurs du logiciel sous des charges extrêmement élevées, et de s'assurer qu'il ne plante pas en situation critique. Il consiste à tester délibérément le logiciel au-delà de ses points de fonctionnement normaux et à évaluer son comportement dans des conditions extrêmes.
Lors des tests de charge, l'application testée est soumise à des contraintes importantes pendant une courte période afin d'évaluer sa résistance. L'utilisation principale des tests de charge est de déterminer la limite de défaillance d'un système, d'un logiciel ou d'un matériel. Ils permettent également de vérifier si le système gère efficacement les erreurs une fois cette limite franchie.
In Génie logicielLes tests de résistance sont souvent listés à côté Test d'endurancemais les deux diffèrent : le test de contrainte applique une charge anormalement élevée en une courte période pour trouver le point de rupture, tandis que le test d'endurance (trempage) maintient une charge modérée pendant des heures pour exposer une dégradation progressive.
La capture d'écran ci-dessous montre un bloc important de données copié depuis une page web.
L'application testée est soumise à une forte charge lorsque 5 Go de données sont copiés du site web et collés dans le Bloc-notes. Ce dernier, à son tour surchargé, renvoie un message d'erreur « Ne répond pas », comme le montre la capture d'écran suivante.
Le même principe s'applique directement aux systèmes côté serveur.
Nécessité de tests de résistance
Prenons comme exemples concrets les suivants, où l'utilité des tests de résistance devient évidente :
- Pendant la période des fêtes, une boutique en ligneping Le site peut connaître un pic de trafic, ou lorsqu'il annonce une vente.
- Lorsqu’un blog est mentionné dans un journal de premier plan, il connaît une soudaine augmentation du trafic.
Il est impératif de réaliser des tests de charge pour absorber ces pics de trafic anormaux. Ne pas pouvoir absorber ce trafic soudain peut entraîner une perte de revenus et nuire à la réputation de l'entreprise.
Les tests de résistance sont également extrêmement précieux pour les raisons suivantes :
- Il vérifie si le système fonctionne dans des conditions anormales.
- Cela confirme qu'un message d'erreur approprié s'affiche lorsque le système est soumis à une forte charge.
- Une défaillance du système dans des conditions extrêmes pourrait entraîner d'énormes pertes de revenus.
- Il est préférable de se préparer aux conditions extrêmes en effectuant des tests de résistance au préalable.
La section suivante explique ce qu'un test de résistance réussi doit prouver.
Objectifs des tests de résistance
L'objectif des tests de charge est d'analyser le comportement du système après une panne. Pour qu'un test de charge soit concluant, le système doit afficher un message d'erreur approprié lorsqu'il est soumis à des conditions extrêmes.
Pour réaliser des tests de charge, on utilise parfois d'importants volumes de données, or ces données peuvent être perdues en cas de défaillance du système. Les testeurs doivent s'assurer que ces données sensibles à la sécurité ne soient pas perdues pendant les tests de charge.
L'objectif principal des tests de résistance est de s'assurer que le système se rétablit après une panne, une propriété appelée capacité de récupération. Test de récupération puis vérifie en détail cette procédure de restauration.
Tests de charge vs tests de résistance
Les deux techniques appartiennent à la Test de performance Il s'agit d'une famille, il est donc facile de les confondre. Le diagramme ci-dessous compare les deux profils de charge.
| test de charge | Test de stress |
|---|---|
| test de charge Ce test permet de vérifier le comportement du système dans des conditions de charge de travail normales ; il simule la charge de travail réelle attendue. | Les tests de résistance permettent de tester le comportement du système dans des conditions extrêmes et sont effectués jusqu'à la défaillance du système. |
| Les tests de charge ne mettent pas le système en panne. | Les tests de résistance visent délibérément à mettre le système à l'épreuve en le submergeant de données ou en le privant de ressources. |
Les profils associés incluent Test de pointe (une brève et soudaine explosion), Tests de volume (un grand volume de données plutôt qu'un grand nombre d'utilisateurs) et Tests d'évolutivité (marge de croissance).
Types de tests de résistance
Voici les différents types de tests de résistance, expliqués un par un.
Tests de résistance distribués
Dans les systèmes client-serveur distribués, les tests sont effectués sur tous les clients depuis le serveur. Le rôle du serveur de charge est de distribuer une série de tests de charge à tous les clients de charge et de… tracLe serveur vérifie l'état de chaque client. Lorsqu'un client contacte le serveur, celui-ci ajoute son nom et commence à lui envoyer des données de test. La figure ci-dessous illustre comment le serveur de test de charge atteint certains clients mais pas tous.
Pendant ce temps, les machines clientes envoient un signal, ou battement de cœur, confirmant leur connexion au serveur. Si le serveur ne reçoit aucun signal d'une machine cliente, cette dernière doit faire l'objet d'une investigation plus approfondie à des fins de débogage. Sur la figure, le serveur peut se connecter à deux clients (Client 1 et Client 2), mais il ne peut ni envoyer ni recevoir de signal des clients 3 et 4.
Un test de charge nocturne est la meilleure option pour ces scénarios. Les grandes fermes de serveurs nécessitent une méthode plus efficace pour identifier les ordinateurs ayant subi des défaillances nécessitant une investigation.
Tests de résistance des applications
Ce test vise à détecter les défauts liés au verrouillage et au blocage des données, aux problèmes de réseau et aux goulots d'étranglement des performances dans une seule application.
Tests de résistance transactionnels
Il effectue des tests de résistance sur une ou plusieurs transactions entre deux applications ou plus. Il sert à optimiser et à affiner le système.
Tests de stress systémique
Il s'agit d'un test de charge intégré pouvant être exécuté sur plusieurs systèmes partageant le même serveur. Il sert à détecter les anomalies où une application bloque les données d'une autre.
Tests de résistance exploratoires
Il s'agit du type de test de résistance utilisé pour tester le système avec des paramètres ou des conditions inhabituels, peu susceptibles de se produire en situation réelle. Il permet de détecter les défauts dans des situations inattendues telles que :
- Un grand nombre d'utilisateurs se sont connectés simultanément.
- Un antivirus se lance simultanément sur toutes les machines.
- Une base de données devient inaccessible pendant qu'elle est consultée depuis un site web.
- Un grand volume de données est inséré simultanément dans la base de données.
Quelle que soit la variante applicable, la séquence d'exécution reste la même.
Comment faire des tests de résistance ?
Le processus de test de résistance peut être réalisé en 5 étapes principales :
- Étape 1) Planification du test de résistance : Ici, vous collectez les données système, analysez le système et définissez les objectifs du test de résistance.
- Étape 2) Créez des scripts d'automatisation : Dans cette phase, vous créez les scripts d'automatisation des tests de charge et générez les données de test pour les scénarios de charge.
- Étape 3) Exécution du script : Dans cette étape, vous exécutez les scripts d'automatisation des tests de charge et enregistrez les résultats.
- Étape 4) Analyse des résultats : À cette étape, vous analysez les résultats du test de résistance et identifiez les goulots d'étranglement.
- Étape 5) Ajustements et optimisation : À cette étape, vous affinez le système, modifiez les configurations et optimisez le code dans le but d'atteindre le niveau de performance souhaité.
Enfin, vous relancez le cycle complet pour déterminer si les modifications ont produit les résultats escomptés. Par exemple, il n'est pas rare d'avoir besoin de 3 à 4 cycles du processus de test de charge avant d'atteindre les objectifs de performance ; les scripts sont donc généralement conservés en parallèle. régression suite.
Outils recommandés pour les tests de résistance
Les quatre outils ci-dessous couvrent la plupart des besoins, des suites d'entreprise à une option open source gratuite.
LoadRunner
LoadRunner est un outil de test de charge largement utilisé, désormais vendu par OpenText dans les éditions Professionnelle, Entreprise et Cloud après la migration de HP vers Micro Focus OpenTextLes résultats des tests de charge produits par LoadRunner sont considérés comme une référence.
JMeter
Apache JMeter est un outil de test open source. C'est un pur Java application pour les tests de contrainte et de performance, conçue pour couvrir différents types de tests tels que les tests de charge, fonctionnels et de contrainte. Versions actuelles 5.6.x de Apache JMeter exigent Java 8 ou plus tard, avec Java 17 recommandés.
Testeur d'effort
Cet outil offre une analyse approfondie des performances des applications web, présente les résultats sous forme graphique et est simple d'utilisation. Aucune programmation complexe n'est requise, ce qui permet de maintenir un retour sur investissement rapide.tracUtile pour les petites équipes.
NeoCharge
NeoCharge, fait maintenant partie de la Tricentis portfolio est un outil populaire pour tester les sites web et Applications mobilesIl permet de simuler des milliers d'utilisateurs afin d'évaluer les performances d'une application en charge et d'analyser les temps de réponse. Il prend également en charge les tests de performance, de charge et de stress intégrés au cloud et offre une excellente scalabilité.
D'autres options sont répertoriées dans le guide. outils de test de performances; quel que soit le choix effectué, son résultat n'a de signification qu'au regard des indicateurs ci-dessous.
Paramètres pour les tests de résistance
Les indicateurs permettent d'évaluer les performances d'un système et sont généralement étudiés à la fin du test de charge. Les indicateurs couramment utilisés sont regroupés en trois familles.
Mesure de l'évolutivité et des performances
- Pages par seconde : Mesure le nombre de pages demandées par seconde.
- Débit: Une mesure de base : la taille des données de réponse par seconde.
- Rounds: Le nombre de fois où les scénarios de test ont été planifiés par rapport au nombre de fois où un client les a exécutés.
Réponse de l'application
- Heure de frappe : Temps moyen de récupération d'une image ou d'une page.
- Temps jusqu'au premier octet : Temps nécessaire pour renvoyer le premier octet de données ou d'informations.
- Temps de page : Temps nécessaire pour récupérer toutes les informations d'une page.
Les échecs
- Échecs de connexion : Nombre de connexions refusées par le client (signal faible).
- Tours ratés : Nombre de tours qui échouent.
- Échecs : Nombre de tentatives infructueuses du système (liens brisés ou images invisibles).
La dernière section énumère les situations qui justifient le plus souvent un test de résistance.
Exemples de tests de résistance
Les tests de charge prennent tout leur sens chaque fois qu'un événement est susceptible de faire grimper le trafic bien au-delà du niveau de base quotidien :
- Un site de commerce électronique annonçant une vente spéciale pour les fêtes.
- Un site d'actualités au moment d'un événement majeur.
- Un organisme d'éducation publiant les résultats des examens.
- Réseaux sociaux, blogs et applications mobiles lors d'un phénomène viral.
Dans chaque cas, le test surveille les ressources telles que la mémoire, le processeur et le réseau, vérifie que les messages d'erreur appropriés apparaissent en situation de forte charge et confirme que le système revient ensuite à la normale. Il s'inscrit dans le cadre de cycle de vie des tests logiciels comme contrôle non fonctionnel à côté Test du système et l'ensemble plus large de types de tests logiciels.

.png)
.png)

