load testing complete guide
Un guide complet de test de charge pour les débutants:
Dans ce didacticiel, nous allons apprendre pourquoi nous effectuons des tests de charge, ce qui en est réalisé, l'architecture, quelle est l'approche à suivre pour exécuter avec succès un test de charge, comment mettre en place un environnement de test de charge, les meilleures pratiques, ainsi que les meilleurs outils de test de charge disponibles sur le marché.
Nous avons entendu parler des types de tests fonctionnels et non fonctionnels. Dans les tests non fonctionnels, nous avons différents types de tests tels que les tests de performance, les tests de sécurité, les tests d'interface utilisateur, etc.
Par conséquent, le test de charge est un type de test non fonctionnel qui est un sous-ensemble des tests de performance.
Ainsi, lorsque nous disons que nous testons une application pour la performance, que testons-nous tous ici? Nous testons l'application pour la charge, le volume, la capacité, le stress, etc.
Ce que vous apprendrez:
- Qu'est-ce que le test de charge?
- Architecture de test de charge
- Pourquoi tester en charge?
- Environnement
- Approcher
- Les meilleures pratiques
- Conclusion
- lecture recommandée
Qu'est-ce que le test de charge?
Le test de charge est un sous-ensemble du test de performance, dans lequel nous testons la réponse du système dans des conditions de charge variables en simulant plusieurs utilisateurs accédant à l'application simultanément. Ces tests mesurent généralement la vitesse et la capacité de l'application.
Ainsi chaque fois que nous modifions la charge, nous surveillons le comportement du système dans diverses conditions.
Exemple :Supposons que le besoin de notre client pour une page de connexion est de 2 à 5 secondes et que ces 2 à 5 secondes doivent être cohérentes tout au long jusqu'à ce que la charge soit de 5000 utilisateurs. Alors, que devons-nous observer entendre? S'agit-il uniquement de la capacité de gestion de la charge du système ou est-ce simplement l'exigence de temps de réponse?
La réponse est les deux. Nous voulons un système capable de gérer une charge de 5000 utilisateurs avec un temps de réponse de 2 à 5 secondes pour tous les utilisateurs simultanés.
Alors, qu'entend-on par utilisateur simultané et utilisateur virtuel?
Les utilisateurs simultanés sont ceux qui se connectent à l'application et exécutent en même temps un ensemble d'activités et se déconnectent de l'application en même temps. D'autre part, les utilisateurs virtuels entrent et sortent du système indépendamment des autres activités de l'utilisateur.
Architecture de test de charge
Dans le diagramme ci-dessous, nous pouvons voir comment différents utilisateurs accèdent à l'application. Ici, chaque utilisateur fait une demande sur Internet, qui est ensuite passée à travers un pare-feu.
Après le pare-feu, nous avons un équilibreur de charge qui distribue la charge à l'un des serveurs Web, puis passe au serveur d'application et plus tard au serveur de base de données où il récupère les informations nécessaires en fonction de la demande de l'utilisateur.
Les tests de charge peuvent être effectués manuellement ou à l'aide d'un outil. Mais le test de charge manuel n'est pas conseillé car nous ne testons pas l'application pour une charge moindre.
Exemple: Supposons que nous souhaitons tester une application d'achat en ligne pour voir le temps de réponse de l'application pour chaque utilisateur, cliquez sur Étape 1 - URL de lancement, le temps de réponse, Connectez-vous à l'application et notez le temps de réponse et ainsi de suite comme en sélectionnant un produit, l'ajout au panier, le paiement et la déconnexion. Tout cela doit être fait pour 10 utilisateurs.
Ainsi, maintenant, lorsque nous devons tester la charge de l'application pour 10 utilisateurs, nous pouvons y parvenir en mettant manuellement la charge par 10 utilisateurs physiques de différentes machines au lieu d'utiliser un outil. Dans ce scénario, il est conseillé de faire un test de charge manuel plutôt que d'investir dans un outil et de mettre en place un environnement pour l'outil.
Alors que nous imaginons que si nous devons effectuer un test de charge pour 1500 utilisateurs, nous devons automatiser le test de charge en utilisant l'un des outils disponibles en fonction des technologies dans lesquelles l'application est construite et également en fonction du budget dont nous disposons pour le projet.
Si nous avons un budget, nous pouvons opter pour des outils commerciaux comme Load Runner, mais si nous n'avons pas beaucoup de budget, nous pouvons opter pour des outils open source comme JMeter, etc.
sites Web pour télécharger des vidéos youtube en mp3
Qu'il s'agisse d'un outil commercial ou d'un outil open source, les détails doivent être partagés avec le client avant de finaliser l'outil. Habituellement, une preuve de concept est préparée, où nous générons un exemple de script à l'aide de l'outil et montrons les exemples de rapports au client pour approbation de l'outil avant de le finaliser.
Dans les tests de charge automatisés, nous remplaçons les utilisateurs à l'aide d'un outil d'automatisation, qui imite les actions des utilisateurs en temps réel. En automatisant la charge, nous pouvons économiser des ressources ainsi que du temps.
Vous trouverez ci-dessous le diagramme qui montre comment les utilisateurs sont remplacés à l'aide d'un outil.
Pourquoi tester en charge?
Supposons qu'il existe un site Web d'achat en ligne qui fonctionne plutôt bien pendant les jours ouvrables normaux, c'est-à-dire que les utilisateurs peuvent se connecter à l'application, parcourir les différentes catégories de produits, sélectionner des produits, ajouter des articles au panier, vérifier et se déconnecter. une plage acceptable et il n'y a pas d'erreurs de page ou de temps de réponse énormes.
Pendant ce temps, il arrive un jour de pointe, disons le jour de Thanks Giving et il y a des milliers d'utilisateurs qui sont connectés au système, le système tombe en panne soudainement et les utilisateurs ont une réponse très lente, certains ne pourraient même pas connectez-vous au site, quelques-uns n'ont pas pu s'ajouter au panier et certains n'ont pas pu vérifier.
Par conséquent, en ce grand jour, la société a dû faire face à une perte énorme car elle a perdu de nombreux clients et beaucoup d'affaires également. Tout cela s'est produit simplement parce qu'ils n'ont pas prédit la charge de l'utilisateur pour les jours de pointe, même s'ils auraient prédit qu'aucun test de charge n'a été effectué sur le site Web de l'entreprise, par conséquent, ils ne savent pas combien de charge l'application sera capable de gérer. les jours de pointe.
Ainsi, pour gérer de telles situations et afin de surmonter d’énormes revenus, il est conseillé d’effectuer des tests de charge pour ce type d’applications.
- Les tests de charge aident à construire des systèmes solides et fiables.
- Le goulot d'étranglement dans le système est identifié bien à l'avance avant la mise en ligne de l'application.
- Il aide à identifier la capacité de l'application.
Qu'est-ce qui est réalisé lors d'un test de charge?
Avec un test de charge approprié, nous pouvons avoir une compréhension exacte de ce qui suit:
- Le nombre d'utilisateurs que le système est capable de gérer ou auquel il peut évoluer.
- Le temps de réponse de chaque transaction.
- Comment se comporte chaque composant de l'ensemble du système sous Charge, c'est-à-dire les composants du serveur d'applications, les composants du serveur Web, les composants de la base de données, etc.
- Quelle est la meilleure configuration de serveur pour gérer la charge?
- Si le matériel existant est suffisant ou si un matériel supplémentaire est nécessaire.
- Les goulots d'étranglement tels que l'utilisation du processeur, l'utilisation de la mémoire, les retards du réseau, etc., sont identifiés.
Environnement
Nous avons besoin d'un environnement de test de charge dédié pour effectuer nos tests. Parce que la plupart du temps, l'environnement de test de charge sera le même que l'environnement de production et que les données disponibles dans l'environnement de test de charge seront identiques à celles de la production, bien qu'il ne s'agisse pas des mêmes données.
Il y aura plusieurs environnements de test tels que l'environnement SIT, l'environnement QA, etc., ces environnements ne sont pas la même production, car contrairement aux tests de charge, ils n'ont pas besoin d'autant de serveurs ou de données de test pour effectuer des tests fonctionnels ou des tests d'intégration.
Exemple:
Dans un environnement de production, nous avons 3 serveurs d'applications, 2 serveurs Web et 2 serveurs de base de données. En QA, nous avons seulement 1 serveur d'applications, 1 serveur Web et 1 serveur de base de données. Par conséquent, si nous effectuons un test de charge sur l'environnement QA qui n'est pas égal à la production, alors nos tests ne sont pas valides et sont également incorrects et nous ne pouvons donc pas nous fier à ces résultats.
Essayez donc toujours d'avoir un environnement dédié pour les tests de charge qui est similaire à celui d'un environnement de production.
De plus, nous avons parfois des applications tierces que notre système appellera, par conséquent, dans de tels cas, nous pouvons utiliser des stubs car nous ne pouvons pas toujours travailler avec les fournisseurs tiers pour l'actualisation des données ou tout autre problème ou assistance.
Essayez de prendre un instantané de l'environnement une fois qu'il est prêt afin que, chaque fois que vous souhaitez reconstruire l'environnement, vous puissiez utiliser cet instantané, ce qui faciliterait la gestion du temps. Certains outils sont disponibles sur le marché pour configurer l'environnement comme Puppet, Docker, etc.
Approcher
Avant de commencer le test de charge, nous devons comprendre si un test de charge est déjà effectué sur le système ou non. Si des tests de charge ont été effectués plus tôt, nous devons savoir quel a été le temps de réponse, les métriques client et serveur collectées, quelle était la capacité de charge de l'utilisateur, etc.
De plus, nous avons besoin d'informations sur la capacité actuelle de gestion des applications. S'il s'agit d'une nouvelle application, nous devons comprendre les exigences, quelle est la charge ciblée, quel est le temps de réponse attendu et si cela est vraiment réalisable ou non.
S'il s'agit d'une application existante, vous pouvez obtenir les exigences de charge et les modèles d'accès utilisateur à partir des journaux du serveur. Mais s'il s'agit d'une nouvelle application, vous devez contacter l'équipe commerciale pour obtenir toutes les informations.
Une fois que nous avons les exigences, nous devons identifier comment nous allons exécuter le test de charge. Est-ce fait manuellement ou à l'aide d'outils? Faire un test de charge manuellement nécessite beaucoup de ressources et est également très coûteux. Répéter le test encore et encore sera également difficile.
Par conséquent, pour surmonter cela, nous pouvons utiliser des outils Open source ou des outils commerciaux. Les outils open source sont disponibles gratuitement, ces outils peuvent ne pas avoir toutes les fonctionnalités comme les autres outils commerciaux mais si le projet a une contrainte budgétaire, alors nous pouvons opter pour des outils open source.
Alors que les outils commerciaux ont de nombreuses fonctionnalités, ils prennent en charge de nombreux protocoles et sont très conviviaux.
Notre approche de test de charge sera la suivante:
# 1) Identifier les critères d'acceptation du test de charge
Par exemple:
- Le temps de réponse de la page de connexion ne doit pas dépasser 5 secondes, même dans les conditions de charge maximale.
- L'utilisation du processeur ne doit pas dépasser 80%.
- Le débit du système doit être de 100 transactions par seconde.
# 2) Identifiez les scénarios commerciaux qui doivent être testés.
Ne testez pas tous les flux, essayez de comprendre les principaux flux commerciaux qui devraient se produire en production. S'il s'agit d'une application existante, nous pouvons obtenir ses informations à partir des journaux du serveur de l'environnement de production.
S'il s'agit d'une application nouvellement créée, nous devons travailler avec les équipes commerciales pour comprendre les modèles de flux, l'utilisation des applications, etc. Parfois, l'équipe de projet organisera des ateliers pour donner un aperçu ou des détails sur chaque composant de l'application.
Nous devons assister à l'atelier d'application et noter toutes les informations requises pour effectuer notre test de charge.
# 3) Modélisation de la charge de travail
Une fois que nous avons les détails sur les flux commerciaux, les modèles d'accès des utilisateurs et le nombre d'utilisateurs, nous devons concevoir la charge de travail de telle manière qu'elle imite la navigation réelle des utilisateurs en production ou comme prévu dans le futur une fois l'application sera en production.
Les points clés à retenir lors de la conception d'un modèle de charge de travail sont de voir combien de temps un flux commercial particulier prendra pour se terminer. Ici, nous devons attribuer le temps de réflexion de manière à ce que l'utilisateur navigue dans l'application d'une manière plus réaliste.
Le modèle de charge de travail sera généralement avec une rampe ascendante, descendante et un état stable. Nous devrions charger lentement le système et donc utiliser la rampe de montée et de descente. L'état d'équilibre sera généralement un test de charge d'une heure avec une montée en puissance de 15 min et une descente en profondeur de 15 min.
Prenons un exemple du modèle de charge de travail:
Présentation de l'application - Supposons un magasinage en ligne, où les utilisateurs se connecteront à l'application et disposeront d'une grande variété de robes à acheter, et pourront naviguer sur chaque produit.
Pour afficher les détails de chaque produit, ils doivent cliquer sur le produit. S'ils aiment le coût et la marque du produit, ils peuvent ajouter au panier et acheter le produit en vérifiant et en effectuant le paiement.
Voici une liste de scénarios:
- Parcourir - Ici, l'utilisateur lance l'application, se connecte à l'application, parcourt les différentes catégories et se déconnecte de l'application.
- Parcourir, Vue du produit, Ajouter au panier - Ici, l'utilisateur se connecte à l'application, parcourt les différentes catégories, affiche les détails du produit, ajoute le produit au panier et se déconnecte.
- Parcourir, voir le produit, ajouter au panier et vérifier - Dans ce scénario, l'utilisateur se connecte à l'application, parcourt différentes catégories, affiche les détails du produit, ajoute le produit au panier, effectue le retrait et se déconnecte.
- Parcourir, vue du produit, Ajouter au panier Commander et effectuer le paiement - Ici, l'utilisateur se connecte à l'application, parcourt les différentes catégories, affiche les détails du produit, ajoute le produit au panier, effectue le paiement, effectue le paiement et se déconnecte.
S. Non | Flux d'affaires | Nombre de transactions | Charge d'utilisateur virtuel | Temps de réponse (sec) | % Taux d'échec autorisé | Transactions par heure |
---|---|---|---|---|---|---|
1 | Parcourir | 17 | 1600 | 3 | Moins de 2% | 96 000 |
deux | Parcourir, Vue du produit, Ajouter au panier | 17 | 200 | 3 | Moins de 2% | 12 000 |
3 | Parcourir, voir le produit, ajouter au panier et vérifier | 18 | 120 | 3 | Moins de 2% | 7200 |
4 | Parcourir, vue du produit, Ajouter au panier Commander et effectuer le paiement | vingt | 80 | 3 | Moins de 2% | 4800 |
Les valeurs ci-dessus ont été dérivées sur la base des calculs suivants:
- Transactions par heure = Nombre d'utilisateurs * Transactions effectuées par un seul utilisateur en une heure.
- Le nombre d'utilisateurs = 1600.
- Le nombre total de transactions dans le scénario Parcourir = 17.
- Temps de réponse pour chaque transaction = 3.
- Temps total pour un seul utilisateur pour effectuer 17 transactions = 17 * 3 = 51 arrondi à 60 s (1 min).
- Transactions par heure = 1600 * 60 = 96000 transactions.
# 4) Concevoir les tests de charge- Le test de charge doit être conçu avec les données que nous avons collectées jusqu'à présent, à savoir les flux commerciaux, le nombre d'utilisateurs, les modèles d'utilisateurs, les mesures à collecter et à analyser. De plus, les tests doivent être conçus de manière très réaliste.
# 5) Exécuter le test de charge - Avant d'exécuter le test de chargement, assurez-vous que l'application est opérationnelle. L'environnement de test de charge est prêt. L'application est testée fonctionnellement et est stable.
Vérifiez les paramètres de configuration de l'environnement de test de charge. Il doit être identique à l'environnement de production. Assurez-vous que toutes les données de test sont disponibles. Assurez-vous d'ajouter les compteurs nécessaires pour surveiller les performances du système pendant l'exécution du test.
Commencez toujours avec une charge faible et augmentez progressivement la charge. Ne commencez jamais à pleine charge et ne cassez pas le système.
# 6) Analyser les résultats du test de charge - Ayez un test de base pour toujours comparer avec les autres tests. Rassemblez les métriques et les journaux du serveur après l'exécution du test pour trouver les goulots d'étranglement.
Certains projets utilisent des outils de surveillance des performances des applications pour surveiller le système pendant l'exécution du test, ces outils APM aident à identifier la cause première plus facilement et à gagner beaucoup de temps. Ces outils sont très faciles à trouver la cause première du goulot d'étranglement car ils ont une vue large pour localiser le problème.
Certains des outils APM sur le marché incluent DynaTrace, Wily Introscope, App Dynamics, etc.
# 7) Rapports - Une fois le test terminé, rassemblez toutes les métriques et envoyez le rapport de synthèse du test à l'équipe concernée avec vos observations et recommandations.
Les meilleures pratiques
Voici quelques-unes des meilleures pratiques de test de charge:
#1) Vérifiez toujours la stabilité de l'application avant de démarrer un test de charge. L'application doit être signée fonctionnellement stable par l'équipe de test fonctionnel et tous les défauts majeurs doivent être corrigés et testés avant que la version ne soit copiée dans l'environnement de test de charge.
#deux) Assurez-vous que l'environnement de test de charge est une réplique ou est proche de l'environnement de production, y compris le nombre de serveurs, d'équilibreurs de charge, de configurations de serveur et de pare-feu.
# 3) Vérifiez si les données de test sont uniques et que toutes les données de test sont copiées dans l'environnement de charge avant d'effectuer un test de charge.
# 4) Concevez les scénarios de test de manière à imiter l'action de l'utilisateur en temps réel qui se produit dans la production.
# 5) Concevez la charge de travail en fonction des charges des utilisateurs de production et des flux métier et, dans le cas d'une ancienne application, voyez s'il s'agit d'une nouvelle discussion avec l'équipe métier concernant les flux métier et la charge utilisateur.
# 6) Collectez toutes les métriques importantes telles que le temps de réponse, les hits par seconde, le débit, le processeur, la mémoire, le réseau et les Vusers en cours d'exécution.
Lecture recommandée => Liste des outils de test de performance disponibles sur le marché pour effectuer des tests de charge exclusifs.
Conclusion
Dans ce didacticiel, nous avons appris comment les tests de charge jouent un rôle important dans les tests de performances d'une application, comment ils aident à comprendre l'efficacité et la capacité de l'application, etc.
Nous avons également appris comment cela permet de prédire si du matériel, des logiciels ou des réglages supplémentaires sont nécessaires sur une application.
Bonne lecture!!
lecture recommandée
- Test de charge avec les didacticiels HP LoadRunner
- Test alpha et test bêta (un guide complet)
- Guide de test de sécurité des applications Web
- Guide des tests de stress pour les débutants
- Guide du débutant sur les tests de pénétration des applications Web
- Un guide complet de tests non fonctionnels pour les débutants
- Build Verification Testing (BVT Testing) Guide complet
- Test de performance vs test de charge vs test de stress (différence)