Partager via


Stratégies d’architecture pour les tests de performances

S’applique à cette recommandation de liste de contrôle d’efficacité des performances d’Azure Well-Architected Framework :

PE :06 Testez les performances. Effectuez des tests réguliers dans un environnement qui correspond à l’environnement de production. Comparez les résultats aux objectifs de performances et au benchmark de performances.

Ce guide décrit les recommandations pour les tests. Les tests de performances vous aident à évaluer les fonctionnalités d’une charge de travail dans différents scénarios. Il implique de tester le temps de réponse, le débit, l’utilisation des ressources et la stabilité de la charge de travail pour vous assurer que la charge de travail répond à ses exigences de performances.

Le test permet d’éviter les problèmes de performances. Il permet également de s’assurer que votre charge de travail répond à ses contrats de niveau de service. Sans test de performances, une charge de travail peut rencontrer des dégradations des performances qui sont souvent évitables. Les performances de la charge de travail peuvent dériver des cibles de performances et des bases de référence établies.

Définitions

Terme Definition
Test de chaos Test de performances qui vise à tester la résilience et la stabilité d’un système en introduisant délibérément des défaillances ou des perturbations aléatoires et imprévisibles.
Test de charge Test de performances qui mesure les performances du système sous une charge standard et lourde.
Base de référence des performances Ensemble de métriques qui représentent le comportement d’une charge de travail dans des conditions normales, comme validé par les tests.
Test de contrainte Test de performances qui surcharge un système jusqu’à ce qu’il se brise.
Test synthétique Test de performances qui simule les demandes utilisateur dans une application.

Les tests de performances vous aident à collecter des données mesurables sur une charge de travail. Lorsque vous exécutez des tests suffisamment tôt, ils vous aident également à générer des charges de travail aux bonnes spécifications. Vous devez effectuer des tests de performances dès que possible dans le cycle de vie du développement logiciel. Les tests précoces vous permettent d’intercepter et de résoudre les problèmes de performances plus tôt dans le développement. Vous pouvez utiliser une preuve de concept (POC) si le code de production n’est pas prêt.

Préparer le test

La préparation des tests de performances fait référence à la configuration et à l’organisation des ressources, des configurations et des scénarios de test dont vous avez besoin pour effectuer efficacement des tests de performances.

Définir les critères d’acceptation

Les critères d’acceptation spécifient les exigences de performances auxquelles une charge de travail doit répondre pour être considérées comme acceptables ou réussies. Définissez des critères qui s’alignent sur les cibles de performances.

Passez en revue les objectifs de performances. Les cibles de performances définissent le niveau de performances souhaité pour votre charge de travail. Passez en revue les cibles de performances établies pour la charge de travail. Les cibles de performances sont des métriques qui peuvent impliquer le temps de réponse, le débit, l’utilisation des ressources ou tout autre indicateur de performance pertinent. Par exemple, vous pouvez avoir une cible pour que votre temps de réponse soit inférieur à un certain seuil, par exemple moins de 2 secondes.

Définissez les critères d’acceptation. Traduisez les cibles de performances en critères d’acceptation spécifiques que vous pouvez utiliser pour évaluer les performances de votre charge de travail. Par exemple, supposons que votre cible de performances pour le temps de réponse soit de 2 secondes ou moins. Votre critère d’acceptation peut être le temps de réponse moyen de la charge de travail doit être inférieur à 2 secondes. Utilisez ces critères d’acceptation pour déterminer si la charge de travail répond au niveau de performances souhaité.

Lorsque vous définissez des critères d’acceptation, il est important de se concentrer sur les utilisateurs et leurs attentes. Les critères d’acceptation permettent de s’assurer que le travail fourni répond aux besoins et exigences de l’utilisateur. Gardez à l’esprit les considérations suivantes pour incorporer la perspective de l’utilisateur dans les critères d’acceptation :

  • Exigences de l’utilisateur : comprendre les besoins et objectifs de l’utilisateur pour la charge de travail. Réfléchissez à la façon dont la charge de travail doit s’effectuer pour répondre à ces exigences.

  • Expérience utilisateur : définissez les critères d’acceptation qui capturent l’expérience utilisateur souhaitée. Incluez des facteurs tels que le temps de réponse, la facilité d’utilisation, l’accessibilité et la satisfaction globale.

  • Exigences fonctionnelles : répondez aux fonctionnalités spécifiques que l’utilisateur s’attend à voir dans la charge de travail. Définissez les critères d’acceptation autour de ces exigences fonctionnelles pour vous assurer qu’ils sont satisfaits.

  • Cas d’usage : envisagez différents scénarios ou cas d’usage que l’utilisateur peut rencontrer. Définissez les critères d’acceptation en fonction de ces cas d’usage pour valider les performances de la charge de travail dans des situations réelles.

Définissez les seuils d’acceptation. Déterminez les seuils dans les critères d’acceptation qui indiquent si la charge de travail répond aux objectifs de performances. Ces seuils définissent la plage de performances acceptable pour chaque métrique. Par exemple, supposons que le critère d’acceptation pour le temps de réponse soit inférieur à 2 secondes. Vous pouvez définir le seuil à 2,5 secondes. Ce niveau indique que toute durée de réponse supérieure à 2,5 secondes est considérée comme un problème de performances.

Définissez les critères de passage. Établissez les critères permettant de déterminer si la charge de travail a réussi ou échoué le test de performances. Vous pouvez définir le passage comme répondant à tous les critères d’acceptation ou atteindre un certain pourcentage d’entre eux.

Sélectionner le type de test

Pour sélectionner le bon type de test de performances, il est important d’aligner le test avec vos critères d’acceptation. Les critères d’acceptation définissent les conditions qui doivent être remplies pour qu’une exigence ou un correctif de bogue soit pris en compte. Les tests de performances doivent viser à vérifier si une charge de travail répond à ces critères d’acceptation et s’exécute comme prévu dans les conditions spécifiées. L’alignement du type de test de performances avec les critères d’acceptation permet de s’assurer que le test se concentre sur la conformité aux attentes en matière de performances définies par les critères.

  • Comprendre les critères d’acceptation. Passez en revue les critères d’acceptation pour la spécification ou le correctif de bogue. Les critères décrivent les conditions et fonctionnalités spécifiques à remplir.

  • Identifiez les métriques de performances pertinentes. En fonction des critères d’acceptation, déterminez les métriques de performances qui sont essentielles pour atteindre les résultats souhaités. Par exemple, si les critères d’acceptation se concentrent sur le temps de réponse, la hiérarchisation des tests de charge peut être appropriée.

  • Sélectionnez un type de test approprié. Évaluez les types de test disponibles et choisissez celui qui s’aligne le mieux avec les métriques de performances et les critères d’acceptation identifiés.

Le tableau suivant fournit un exemple de types de test et de leurs cas d’usage.

Type de test Descriptif Cas d’utilisation
Test de charge Simuler des charges utilisateur réalistes pour mesurer la façon dont votre charge de travail s’exécute sous les charges de travail maximales attendues. Détermine la tolérance de charge.
Test de stress Poussez votre charge de travail au-delà de ses limites normales pour identifier ses points de rupture et mesurer sa capacité à récupérer. Détermine la résilience et la robustesse.
Test de trempe (test d’endurance) Exécutez votre charge de travail sous des charges élevées soutenues pendant une période prolongée pour identifier la dégradation des performances, les fuites de mémoire ou les problèmes de ressources. Évalue la stabilité et la fiabilité au fil du temps.
Tests de pic Simuler des augmentations soudaines de la charge utilisateur pour évaluer la façon dont votre charge de travail gère les changements brusques de la demande. Mesure la capacité à mettre à l’échelle et à maintenir les performances pendant les périodes de pointe.
Test de compatibilité Testez les performances de votre charge de travail sur différentes plateformes, navigateurs ou appareils. Permet de garantir des performances cohérentes dans différents environnements.

Hiérarchiser vos types de test sélectionnés en fonction des caractéristiques et des exigences de votre charge de travail. Tenez compte de facteurs tels que la criticité des métriques de performances, les attentes des utilisateurs, les priorités métier et les problèmes connus ou les vulnérabilités.

Sélectionner des outils de test

Choisissez les outils appropriés en fonction du type de test de performances que vous souhaitez exécuter. Évaluez l’infrastructure, les ressources et les contraintes de l’environnement de test. Choisissez des outils de test qui prennent en charge les types de test souhaités et fournissent les fonctionnalités nécessaires à la surveillance, à la mesure, à l’analyse et aux rapports.

Un outil APM (Application Performance Monitoring) fournit des insights approfondis sur les applications et est un outil de test essentiel. Il vous aide à tracer des transactions individuelles et à mapper leurs chemins via différents services de charge de travail. Après les tests, vous devez utiliser l’outil APM pour analyser et comparer les données de test par rapport à votre base de référence de performances.

Utilisez des outils de profilage pour identifier les goulots d’étranglement des performances dans votre code. Le profilage permet d’identifier les zones du code qui consomment la plupart des ressources et nécessitent une optimisation. Il fournit des insights sur le temps d’exécution et l’utilisation de la mémoire de différentes parties du code.

Les étapes suivantes peuvent vous aider à sélectionner les outils de test appropriés :

  • Identifiez les exigences de test. Commencez par comprendre les exigences spécifiques de vos tests de performances. Tenez compte de différents facteurs :

    • Type de charge de travail
    • Métriques de performances à mesurer, telles que le temps de réponse et le débit
    • Complexité de l’architecture de la charge de travail
    • Environnement de test, tel que cloud, local ou hybride
  • Outils de test de recherche. Effectuez des recherches pour identifier les outils de test de performances qui s’alignent sur vos exigences. Considérez les outils commerciaux et open source disponibles sur le marché. Recherchez les outils qui prennent en charge les types de tests de performances souhaités, tels que les tests de charge ou les tests de contrainte, et qui fournissent des fonctionnalités pour mesurer les métriques de performances.

  • Évaluer les fonctionnalités de l’outil. Évaluez les fonctionnalités fournies par chaque outil de test. Recherchez des fonctionnalités telles que la simulation du comportement et de l’extensibilité réalistes de l’utilisateur pour gérer les charges utilisateur volumineuses. Prenez en charge différents protocoles et technologies, l’intégration à d’autres outils de test ou infrastructures, ainsi que des fonctionnalités de création de rapports et d’analyse.

  • Envisagez la compatibilité et l’intégration. Déterminez la compatibilité des outils de test avec votre infrastructure et vos technologies existantes. Assurez-vous que les outils peuvent être facilement intégrés à votre environnement de test et qu’ils peuvent communiquer avec la charge de travail nécessaire pour la surveillance et l’analyse.

  • Évaluez les coûts et les licences. Évaluez la structure des coûts et les termes de licence associés aux outils de test. Tenez compte des facteurs tels que l’investissement initial, les coûts de maintenance et les coûts de support. Considérez également d’autres exigences de licence qui dépendent du nombre d’utilisateurs ou d’utilisateurs virtuels.

  • Mener un POC. Sélectionnez quelques outils qui semblent les plus adaptés en fonction de votre évaluation. Effectuez une POC à petite échelle pour valider l’utilisation, les fonctionnalités et l’efficacité des outils dans votre scénario de test spécifique.

  • Envisagez de prendre en charge et de former. Évaluez le niveau de support et de formation fourni par le fournisseur ou la communauté de l’outil. Déterminez la disponibilité de la documentation, des didacticiels et des canaux de support technique pour vous aider à relever les défis ou problèmes qui peuvent survenir pendant le processus de test.

Créer des scénarios de test

La création de scénarios de test fait référence au processus de conception de situations ou de conditions spécifiques qui conviennent pour tester les performances d’une charge de travail. Les scénarios de test sont créés pour émuler des modèles réalistes de comportement utilisateur et de charge de travail. Ces scénarios permettent aux testeurs de performances d’évaluer la façon dont la charge de travail s’exécute dans différentes conditions.

Les scénarios de test permettent de répliquer différents modèles de charge de travail, tels que l’accès utilisateur simultané, les périodes de charge maximales ou des séquences de transactions spécifiques. En testant la charge de travail selon différents modèles de charge de travail, vous pouvez identifier les goulots d’étranglement des performances et optimiser l’allocation des ressources.

  • Définissez le comportement de l’utilisateur. Émulez des modèles réalistes de comportement utilisateur et de charge de travail en identifiant les étapes et les actions que les utilisateurs effectuent lorsqu’ils interagissent avec la charge de travail. Envisagez des activités telles que la connexion, l’exécution de recherches, l’envoi de formulaires ou l’accès à des fonctionnalités spécifiques. Décomposez chaque scénario en étapes et actions spécifiques qui représentent l’interaction de l’utilisateur avec la charge de travail. Vous pouvez inclure la navigation dans les pages, l’exécution de transactions ou l’interaction avec différents éléments de la charge de travail.

  • Déterminez l’implication des données. Identifiez les données de test requises pour exécuter les scénarios de test. Vous pouvez inclure la création ou la génération de jeux de données réalistes qui représentent différents scénarios, profils utilisateur ou volumes de données. Assurez-vous que les données de test sont diverses et couvrent différents cas d’usage pour fournir une évaluation complète des performances.

  • Concevoir des scripts de test. Créez des scripts de test qui automatisent l’exécution des scénarios de test définis. Les scripts de test se composent généralement d’une séquence d’actions, de requêtes HTTP ou d’interactions avec des API de charge de travail ou des interfaces utilisateur. Utilisez des outils de test de performances ou des langages de programmation pour écrire les scripts, en tenant compte des facteurs tels que la paramétrage, la corrélation et la gestion dynamique des données. Validez les scripts de test pour l’exactitude et la fonctionnalité. Déboguez les problèmes, tels que les erreurs de script, les actions manquantes ou incorrectes ou les problèmes liés aux données. La validation de script de test est essentielle pour garantir une exécution de test de performances précise et fiable.

  • Configurez les variables de test et les paramètres. Configurez des variables et des paramètres dans des scripts de test pour introduire la variabilité et simuler des scénarios réels. Incluez des paramètres tels que les informations d’identification de l’utilisateur, les données d’entrée ou la randomisation pour imiter différents comportements utilisateur et réponses de charge de travail.

  • Affinez de façon itérative les scripts. Affinez et améliorez continuellement les scripts de test en fonction des commentaires, des résultats des tests ou de la modification des exigences. Envisagez d’optimiser la logique de script, le paramétrage et la gestion des erreurs, ou d’ajouter des points de contrôle et validation supplémentaires.

Configurer l’environnement de test

La configuration d’un environnement de test fait référence au processus de configuration de l’infrastructure, des logiciels et des configurations réseau dont vous avez besoin pour créer un environnement qui ressemble étroitement à votre environnement de production.

Pour configurer votre environnement de test d’une manière qui améliore l’efficacité des performances, incluez les étapes suivantes dans votre processus de configuration :

  • Mettre en miroir votre environnement de production. Configurez votre environnement de test pour ressembler étroitement à votre environnement de production. Tenez compte des facteurs tels que la configuration de l’infrastructure, les paramètres réseau et les configurations logicielles. L’objectif est de s’assurer que les résultats des tests de performances sont représentatifs des conditions réelles.

  • Provisionnez des ressources suffisantes. Allouez des ressources adéquates telles que l’UC, la mémoire et l’espace disque à l’environnement de test. Assurez-vous que les ressources disponibles peuvent gérer la charge de travail attendue et fournir des mesures de performances précises.

  • Répliquer les conditions réseau. Configurez les paramètres réseau dans l’environnement de test pour répliquer les conditions réseau attendues pendant le déploiement réel de la charge de travail. Vous devez inclure la bande passante, la latence et les protocoles réseau.

  • Installez et configurez les dépendances. Installez les logiciels, bibliothèques, bases de données et autres dépendances nécessaires pour que la charge de travail s’exécute correctement. Configurez ces dépendances pour qu’elles correspondent à l’environnement de production attendu.

Compromis : il existe des coûts associés à la maintenance d’environnements de test distincts, au stockage des données, à l’aide d’outils et à l’exécution de tests. Connaître le coût des tests de performances et trouver un moyen d’optimiser les dépenses.

Risque : les données de production peuvent contenir des informations sensibles. Sans stratégie de nettoyage et de masquage robuste, vous risquez de fuite de données sensibles lorsque vous utilisez des données de production pour les tests.

Effectuer les tests

Exécutez les tests de performances à l’aide de l’outil de test choisi. Les tests impliquent la mesure et l’enregistrement des métriques de performances, la surveillance de l’intégrité et la capture des problèmes de performances qui surviennent.

Surveillez et collectez des métriques de performances telles que le temps de réponse, le débit, l’utilisation du processeur et de la mémoire, ainsi que d’autres indicateurs pertinents.

Utilisez les scénarios de test définis pour placer la charge de travail sous charges attendues. Effectuez des tests dans ces conditions de charge variables. Par exemple, utilisez des niveaux, tels que des niveaux normaux, de pic et de stress, pour analyser le comportement de la charge de travail dans différents scénarios.

Analyser les résultats

L’analyse des résultats des tests implique l’examen des données et métriques collectées à partir des tests de performances pour obtenir des insights sur les performances de la charge de travail. L’objectif est d’identifier les problèmes de performances et d’utiliser les commentaires pour ajuster les priorités dans le développement d’applications. Les actions suivantes sont des étapes clés pour analyser les résultats des tests.

Passez en revue les métriques de performances. Examinez les métriques de performances que vous collectez pendant les tests de performances, telles que les temps de réponse, le débit, les taux d’erreur, l’utilisation du processeur et de la mémoire et la latence réseau. Analysez ces métriques pour comprendre les performances globales de la charge de travail.

  • Identifiez les goulots d’étranglement. Évaluez les métriques de performances pour identifier les goulots d’étranglement ou les zones de performances inefficaces. L’évaluation peut inclure des temps de réponse élevés, des contraintes de ressources, des problèmes de base de données, une latence réseau et des limitations de scalabilité. L’identification des causes racines de ces goulots d’étranglement vous aide à hiérarchiser les améliorations des performances.

  • Mettre en corrélation les métriques. Évaluez les relations et les corrélations entre différentes métriques de performances. Par exemple, analysez la façon dont l’utilisation accrue de la charge ou des ressources affecte les temps de réponse. La compréhension de ces corrélations peut fournir des insights précieux sur le comportement de la charge de travail dans différentes conditions. Recherchez des modèles et des tendances dans les données de performances au fil du temps. Analysez les performances sous différents niveaux de charge ou pendant des périodes spécifiques. La détection des tendances peut aider à identifier les variations saisonnières, les heures d’utilisation maximales ou les problèmes de performances récurrents.

Évaluez les critères d’acceptation. Comparez les résultats de test par rapport aux critères d’acceptation prédéfinis et aux objectifs de performances. Évaluez si la charge de travail répond aux normes de performances souhaitées. Si la charge de travail ne répond pas aux critères d’acceptation, examinez et affinez davantage les optimisations.

Itérer et affiner l’analyse. Apportez d’autres ajustements et améliorations en fonction des besoins. Utilisez les données et métriques collectées pour diagnostiquer des problèmes de performances spécifiques. Le diagnostic peut impliquer le suivi via les composants de charge de travail, l’examen des fichiers journaux, la surveillance de l’utilisation des ressources ou l’analyse des messages d’erreur. Explorez plus en détail les données pour comprendre les causes sous-jacentes des problèmes de performances.

En fonction de l’analyse des résultats des tests, hiérarchiser les problèmes de performances identifiés et implémenter les améliorations nécessaires. Les améliorations peuvent impliquer l’optimisation du code, l’optimisation des requêtes de base de données, l’amélioration des mécanismes de mise en cache et l’optimisation des configurations réseau.

Établir des bases de référence

Les bases de référence fournissent un point de référence pour comparer les résultats des performances au fil du temps. Les bases de référence doivent être des captures instantanées significatives des performances de la charge de travail , vous n’avez pas besoin d’utiliser chaque test comme base de référence.

Tenez compte des objectifs de charge de travail et documentez les instantanés de performances qui vous permettent d’apprendre au fil du temps et d’optimiser. Utilisez ces mesures de référence comme benchmark pour les futurs tests de performances et utilisez-les pour identifier toute dégradation ou amélioration.

Pour établir des bases de référence pour les tests de performances et les utiliser comme benchmark pour les prochains tests de performances, procédez comme suit :

  • Identifiez les métriques de performances. Déterminez les métriques de performances spécifiques que vous souhaitez mesurer et suivre. Voici quelques exemples :

    • Temps de réponse ou rapidité avec laquelle la charge de travail répond aux demandes.
    • Débit ou nombre de requêtes traitées par unité de temps.
    • Utilisation des ressources, telles que l’utilisation du processeur, de la mémoire et du disque.
  • Enregistrez des mesures significatives. Enregistrez les métriques de performances que vous obtenez pendant le test en tant que mesures de base. Ces mesures représentent le point de départ par rapport auquel vous comparez les futurs tests de performances.

  • Comparez les prochains tests. Dans les tests de performances suivants, comparez les métriques de performances aux bases de référence et aux seuils établis. La comparaison vous permet d’identifier toutes les améliorations ou dégradations des performances.

Tester en continu

Les tests continus impliquent la surveillance et l’affinement continus de vos tests. Les tests continus vous aident à maintenir des niveaux de performances cohérents et acceptables. Une charge de travail doit fournir un niveau de performances cohérent et acceptable par rapport à la base de référence. Vous devez régler la charge de travail au fil du temps pour produire des performances cohérentes qui se trouvent dans les limites acceptables des performances. Voici quelques pratiques clés :

  • Définissez les limites de dégradation. Définissez des seuils numériques qui spécifient le niveau de dégradation des performances acceptable au fil du temps. En définissant ces limites, vous pouvez surveiller les fluctuations de performances et recevoir des alertes lorsque les performances tombent en dessous du seuil défini.

  • Incluez l’assurance qualité. Incorporez les exigences de performances, telles que l’utilisation du processeur et les demandes maximales par seconde, dans le processus d’assurance qualité. Traitez les exigences de performances avec le même niveau d’importance que les exigences fonctionnelles. Ce processus permet de s’assurer que la charge de travail répond aux exigences de performances définies avant de la déployer en production.

  • Automatiser les alertes. Dans les environnements dynamiques, la détection et la réponse rapides sont cruciales. Configurez des systèmes d’alerte automatisés qui utilisent la base de référence des performances comme référence. S’il existe un écart significatif dans les performances, les équipes nécessaires sont averties immédiatement d’agir.

  • Tester les modifications. Certains problèmes de performances peuvent uniquement se manifester dans un paramètre actif. Appliquez des pratiques de test approfondies pour les modifications de code et d’infrastructure proposées. Utilisez l’instrumentation du code pour obtenir des insights sur les caractéristiques de performances de l’application, telles que les chemins chauds, les allocations de mémoire et le garbage collection. Ce test garantit que toute modification introduite ne dégrade pas les performances au-delà des limites acceptables.

Facilitation Azure

Effectuez les tests : Azure Pipelines vous permet d’intégrer des tests de performances dans votre pipeline CI/CD. Vous pouvez incorporer des tests de charge en tant qu’étape dans votre pipeline pour valider les performances et l’extensibilité de vos applications.

Azure Chaos Studio vous permet d’injecter des erreurs réelles dans votre application afin de pouvoir exécuter des expériences d’injection de pannes contrôlées. Les expériences vous aident à mesurer, comprendre et améliorer votre application cloud et votre résilience de service.

Azure Load Testing est un service de test de charge qui génère une charge à grande échelle sur n’importe quelle application. Load Testing fournit des fonctionnalités permettant d’automatiser les tests de charge et de les intégrer dans votre flux de travail d’intégration continue et de livraison continue (CI/CD). Vous pouvez définir des critères de test, tels que le temps de réponse moyen ou les seuils d’erreur, et arrêter automatiquement les tests de charge en fonction de conditions d’erreur spécifiques. Le test de charge offre un tableau de bord qui fournit des mises à jour actives et des métriques de ressources détaillées des composants d’application Azure pendant un test de charge. Vous pouvez analyser les résultats des tests, identifier les goulots d’étranglement des performances et comparer plusieurs exécutions de test pour comprendre les régressions de performances au fil du temps.

Analyse des résultats : Azure Monitor est une solution de supervision complète pour collecter, analyser et répondre aux données de télémétrie à partir de vos environnements cloud et locaux. Application Insights est une extension de Monitor qui fournit des fonctionnalités APM. Vous pouvez utiliser Application Insights pour surveiller les applications pendant le développement et le test, et également en production.

Compromis : le test prend du temps et des compétences pour effectuer et peut affecter l’efficacité opérationnelle.

Liste de contrôle d’efficacité des performances

Reportez-vous à l’ensemble complet de recommandations.