Recommandations pour les tests de performances

S’applique à cette recommandation de liste de vérification de l’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 performance 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. Cela implique de tester le temps de réponse, le débit, l’utilisation des ressources et la stabilité de la charge de travail pour s’assurer que la charge de travail répond à ses exigences de performances.

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

Définitions

Terme Définition
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 interruptions 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 le test.
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 des utilisateurs dans une application.

Stratégies de conception

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 à créer des charges de travail selon les spécifications appropriées. Vous devez effectuer des tests de performances le plus tôt possible dans le cycle de vie du développement de logiciels. 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 qu’une charge de travail doit respecter pour être considérée comme acceptable ou réussie. Définissez des critères qui s’alignent sur les objectifs 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 objectifs de performances qui sont établis 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 inférieur à 2 secondes.

Définissez des critères d’acceptation. Traduisez les objectifs 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 vous 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 aux exigences des utilisateurs. Gardez à l’esprit les considérations suivantes pour incorporer le point de vue de l’utilisateur dans les critères d’acceptation :

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

  • Expérience utilisateur : définissez des 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 des critères d’acceptation autour de ces exigences fonctionnelles pour vous assurer qu’elles sont remplies.

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

Définissez des 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 du temps de réponse soit inférieur à 2 secondes. Vous pouvez définir le seuil sur 2,5 secondes. Ce niveau indique que tout temps de réponse de plus de 2,5 secondes est considéré comme un problème de performances.

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

Sélectionner le type de test

Pour sélectionner le bon type de test de performances, il est important d’aligner le test sur vos critères d’acceptation. Les critères d’acceptation définissent les conditions qui doivent être remplies pour qu’une exigence ou une correction de bogue soit considérée comme effectuée. Les tests de performances doivent viser à vérifier si une charge de travail répond à ces critères d’acceptation et fonctionne comme prévu dans des 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 le respect des 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 tests 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 leurs cas d’usage.

Type de test Description Cas d’utilisation
Test de charge Simulez des charges utilisateur réalistes pour mesurer les performances de votre charge de travail sous les pics de charge de travail attendus. Détermine la tolérance de charge.
Tests de contrainte 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 trempage (test d’endurance) Exécutez votre charge de travail sous des charges élevées prolongées 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.
Test des pics Simulez 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 les 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 le caractère critique des métriques de performances, les attentes des utilisateurs, les priorités métier et les problèmes ou vulnérabilités connus.

Sélectionner les 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 tests souhaités et fournissent les fonctionnalités nécessaires pour la surveillance, la mesure, l’analyse et la création de rapports.

Un outil de surveillance des performances des applications (APM) fournit des informations approfondies sur les applications et est un outil de test essentiel. Il vous permet de suivre des transactions individuelles et de mapper leurs chemins à travers différents services de charge de travail. Après le test, vous devez utiliser l’outil APM pour analyser et comparer les données de test par rapport à votre base de référence des 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 le plus de 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 :

  • Identifier 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 charge de travail
    • L’environnement de test, par exemple, basé sur le 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 besoins. Considérez les outils commerciaux et open source disponibles sur le marché. Recherchez des 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 réaliste de l’utilisateur et la scalabilité pour gérer des charges utilisateur volumineuses. Envisagez la prise en charge de divers protocoles et technologies, l’intégration à d’autres outils ou infrastructures de test, ainsi que les fonctionnalités de création de rapports et d’analyse.

  • Tenez compte de la compatibilité et de 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 à 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 de facteurs tels que l’investissement initial, les coûts de maintenance et les coûts de support. Tenez également compte d’autres exigences de licence qui dépendent du nombre d’utilisateurs ou d’utilisateurs virtuels.

  • Effectuer une preuve de concept. Sélectionnez quelques outils qui semblent les plus appropriés en fonction de votre évaluation. Effectuez une preuve de concept à petite échelle pour valider la convivialité, les fonctionnalités et l’efficacité des outils dans votre scénario de test spécifique.

  • Envisagez le support et la formation. É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 tutoriels 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. Des scénarios de test sont créés pour émuler des modèles de charge de travail et de comportement réalistes des utilisateurs. Ces scénarios permettent aux testeurs de performances d’évaluer les performances de la charge de travail 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 pic de charge ou des séquences de transactions spécifiques. En testant la charge de travail sous 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 de charge de travail et de comportement des utilisateurs réalistes en identifiant les étapes et les actions effectuées par les utilisateurs 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éterminer 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 les API de charge de travail ou les interfaces utilisateur. Utilisez des outils de test de performances ou des langages de programmation pour écrire les scripts, en tenant compte de facteurs tels que le 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 tous 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 des scripts de test est essentielle pour garantir une exécution précise et fiable des tests de performances.

  • Configurez les variables et les paramètres de test. 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.

  • Affiner les scripts de manière itérative. Affinez et améliorez en continu les scripts de test en fonction des commentaires, des résultats des tests ou de l’évolution 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 des validations 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 de manière à améliorer 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 qu’il ressemble étroitement à votre environnement de production. Tenez compte de 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 le processeur, 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épliquez 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 à l’exécution correcte de la charge de travail. 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’utilisation 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 une stratégie de nettoyage et de masquage robuste, vous risquez de fuiter des données sensibles lorsque vous utilisez des données de production à des fins de test.

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 se produisent.

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 les charges attendues. Effectuez des tests dans ces différentes conditions de charge. Par exemple, utilisez des niveaux, tels que les niveaux normaux, de pointe 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 d’examiner les données et les 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 l’analyse des résultats des tests.

Passez en revue les métriques de performances. Examinez les métriques de performances que vous collectez lors des 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, ainsi que la latence du 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 permet de hiérarchiser les améliorations des performances.

  • Mettre en corrélation les métriques. Évaluez les relations et les corrélations entre les différentes métriques de performances. Par exemple, analysez comment l’augmentation de la charge ou de l’utilisation des ressources affecte les temps de réponse. La compréhension de ces corrélations peut fournir des informations précieuses 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 de tendances peut aider à identifier les variations saisonnières, les pics d’utilisation ou les problèmes de performances récurrents.

Évaluez les critères d’acceptation. Comparez les résultats des tests avec les critères d’acceptation et les objectifs de performances prédéfinis. É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 les optimisations.

Itérer et affiner l’analyse. Apportez d’autres ajustements et améliorations en fonction des besoins. Utilisez les données et les métriques collectées pour diagnostiquer des problèmes de performances spécifiques. Le diagnostic peut impliquer le suivi des 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érarchisez les problèmes de performances identifiés et implémentez les améliorations nécessaires. Les améliorations peuvent impliquer l’optimisation du code, le réglage 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 instantanés significatifs 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 des instantanés de performances qui vous permettent d’apprendre au fil du temps et d’optimiser. Utilisez ces mesures de base comme point de référence pour les tests de performances futurs 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 point de référence pour les tests de performances futurs, procédez comme suit :

  • Identifier 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 vitesse à laquelle la charge de travail répond aux demandes.
    • Débit ou nombre de demandes traitées par unité de temps.
    • Utilisation des ressources, comme 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 tests de performances futurs.

  • Comparez les tests futurs. Dans les tests de performances suivants, comparez les métriques de performances aux lignes de base et aux seuils établis. La comparaison vous permet d’identifier les améliorations ou les 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 des 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 sont inférieures au seuil défini.

  • Inclure l’assurance qualité. Intégrez les exigences de performances, telles que l’utilisation du processeur et le nombre maximal de demandes 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.

  • Automatisez les alertes. Dans les environnements dynamiques, la détection et la réponse rapides sont essentielles. Configurez des systèmes d’alerte automatisés qui utilisent la base de référence des performances comme référence. En cas d’écart important dans les performances, les équipes nécessaires sont immédiatement averties d’agir.

  • Tester les modifications. Certains problèmes de performances ne peuvent se manifester que 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 d’accès à chaud, les allocations de mémoire et le garbage collection. Ce test garantit que toute modification apportée ne dégrade pas les performances au-delà des limites acceptables.

Animation Azure

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

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

Test de charge Azure est un service de test de charge qui génère une charge à grande échelle sur n’importe quelle application. Le test de charge fournit des fonctionnalités permettant d’automatiser les tests de charge et de les intégrer dans votre workflow 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 des seuils d’erreur, et arrêter automatiquement les tests de charge en fonction de conditions d’erreur spécifiques. Test de charge propose 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 séries de tests 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 la collecte, l’analyse et la réponse 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 les tests, ainsi qu’en production.

Compromis : les tests prennent du temps et des compétences et peuvent affecter l’efficacité opérationnelle.

Liste de contrôle d’efficacité des performances

Reportez-vous à l’ensemble complet de recommandations.