Découvrez les nouveautés de MISRA C:2012 AMD3 et comment obtenir la couverture la PLUS ÉTENDUE avec C/C++test 2022.2 ! Regarder à la demande >>

Relevez les défis des tests de performance

Par Sergueï Baranov

15 décembre 2022

5  min lire

Les tests de performances vous indiquent comment votre application se comportera lorsqu'elle sera exposée au monde réel et soumise à un flux de demandes d'utilisateurs. Obtenez des méthodes et des stratégies de test de performance pour préparer efficacement et de manière fiable votre application afin qu'elle corresponde aux charges de travail de production et assure son succès.

Les organisations de développement de logiciels sont sous pression pour offrir une excellente expérience utilisateur tout en équilibrant les coûts de développement et de maintenance. Pour une application logicielle serveur, telle qu'une application Web ou une API, des réponses toujours rapides et fiables sont aussi importantes que l'exactitude fonctionnelle pour garantir la satisfaction de l'utilisateur et le succès de l'application.

Test de performance est le domaine de l'assurance qualité logicielle qui se concentre sur la réactivité et la fiabilité d'une application lorsqu'elle est soumise à un flux de demandes de plusieurs utilisateurs. Il évalue le comportement d'une application sous les charges de demande de service attendues et analyse les résultats afin que les goulots d'étranglement et autres inefficacités qui empêchent le bon fonctionnement sous charge puissent être identifiés et résolus.

  • Les outils de test de performance peuvent aider à garantir que votre système gérera :
  • Chargement régulier des demandes de service et
  • Variations dans les types de demandes et les modèles de trafic.

Cependant, même les meilleurs outils ne suffisent pas s'ils ne sont pas appliqués dans le contexte d'une stratégie et d'une pratique de test de performance appropriées. Seule la combinaison des deux peut assurer le succès.

Problèmes de l'approche traditionnelle

Les tests de performances reposaient traditionnellement sur une application presque fonctionnelle s'exécutant dans un environnement de production ou de préproduction. Par implication, c'est tard dans le cycle de vie du développement pour découvrir les problèmes importants. Les problèmes découverts aussi tard ont un impact important sur les coûts et le calendrier.

De plus, le temps et les efforts nécessaires pour terminer le cycle complet de tests de performance manuels limitent la fréquence à laquelle cela peut être fait, limitant ainsi la fréquence des cycles de publication ou obligeant les organisations à publier avec des tests de performance partiels ou inexistants.

La recherche de solutions qui réduiraient l'incertitude et les risques causés par les problèmes décrits ci-dessus ont poussé les organisations à commencer à appliquer des tests de performance aux stratégies Agile et de décalage à gauche déjà utilisées et prouvées efficaces dans d'autres domaines des tests logiciels.

Défis des tests de performance modernes

Les tests de performance avec décalage vers la gauche indiquent que les problèmes de l'approche traditionnelle proviennent de tests trop tardifs et trop peu fréquents. Par conséquent, vous devez tester tôt et souvent.

Cela semble bien en théorie, mais comment le mettre en œuvre en pratique ?

Pour que les promesses de test de décalage vers la gauche se matérialisent, vous devez résoudre l'ensemble de problèmes suivant :

  • Comment tester les performances d'une application qui n'existe pas encore ?
  • Comment trouver l'équilibre entre agilité et coûts ?
  • Comment rentabiliser l'automatisation des tests de performance ?
  • Comment réduire les coûts d'installation et d'exploitation ?

Problème 1 : Comment tester les performances d'une application qui n'existe pas encore ?

L'exigence de commencer tôt signifie que les tests de performance doivent être créés avec les tests unitaires et fonctionnels, ce qui peut être long avant que l'application finale ne prenne forme. Ces deux méthodes principales vous permettent de commencer à tester les performances d'une application serveur avant qu'elle ne soit entièrement fonctionnelle.

  • Virtualisation des services
  • Tests de performance au niveau de l'unité

La virtualisation des services permet de tester les applications à un stade précoce en émulant le comportement de leurs dépendances externes, telles que les API, les bases de données, les systèmes de messagerie, etc., qui peuvent ne pas être disponibles lors des premières étapes de développement pour l'une des raisons suivantes :

  1. Ils sont travaillés en parallèle avec l'application sous test (AUT).
  2. Leur accès est limité.

Un outil de virtualisation de service doit vous permettre d'imiter les réponses des dépendances externes et leurs paramètres de performance, tels que les délais de réponse, qui affecteront les performances de l'AUT de manière réaliste.

Les tests de performances au niveau de l'unité vous permettent d'évaluer les composants tiers et internes que vous envisagez d'intégrer à votre application. Par exemple, vous pouvez évaluer les performances d'autres bibliothèques d'analyseur JSON pour les tailles de requête et les niveaux de charge que vous attendez de votre application cible. Cela vous aidera à choisir la meilleure alternative et définir des attentes de performance réalistes pour votre application en fonction des performances des composants qu'elle utilise.

Problème 2 : Agilité vs. Coûts. Comment trouver l'équilibre ?

L'obligation de tester souvent peut suggérer que les tests de performances doivent être exécutés aussi souvent que les tests unitaires ou fonctionnels dans un processus de génération d'intégration continue (CI) déclenché par des enregistrements de code source.

Bien que les tests de performances doivent faire partie intégrante de la livraison continue des applications, l'application de la même logique de fréquence de test qui fonctionne pour les tests unitaires ou fonctionnels peut ne pas être pratique car l'exécution de la suite complète de tests de performances nécessite généralement beaucoup plus de temps et de ressources informatiques.

Pour résoudre ce problème, la suite de tests de performances applicatives doit être composée de différents types de tests de performances, dont la fréquence d'exécution est inversement proportionnelle au temps et aux ressources nécessaires à l'exécution de ces tests. Avec une telle approche, des tests de fumée ou de performances de base relativement courts peuvent être exécutés dans le cadre du processus de génération de CI, tandis que des tests plus complets sont exécutés régulièrement, mais moins fréquemment.

Fréquence de test Type de test
Chaque version de CITest de fumée/de base, tests de performances unitaires
Tous les jours/nuitTest de charge moyenne
Une fois par semaineTest d'endurance, test d'effort

Problème 3 : Comment rentabiliser l'automatisation des tests de performance ?

L'exécution automatisée des tests de performance en elle-même n'aura que peu de valeur sans l'automatisation de l'analyse des résultats des tests. Un test de performance peut générer beaucoup de données. Au fur et à mesure que le développement de l'application avance, le nombre de tests de performance, la complexité de leurs scénarios et leur durée vont augmenter. L'exécution continue de ces tests crée un réservoir de données qui doit être réduit à une réponse réussite/échec. Cette réponse est généralement obtenue à la suite de vérifications du contrat de niveau de service (SLA) qui sont automatiquement appliquées aux données de test de performances collectées à la fin du test.

La création d'un ensemble complet de contrôles SLA stables pour chaque test de performance est la clé d'une automatisation réussie des tests de performance.

Indicateur de performance clé (KPI)Critères d'acceptation du SLA
Temps de réponse moyenDoit être inférieur à 1 seconde
Taux d'échecDevrait être inférieur à 0.01 %

Pour tirer pleinement parti de l'exécution continue des tests, les résultats des tests de performance doivent être automatiquement publiés sur un tableau de bord de reporting et d'analyse afin que vous puissiez comprendre rapidement les données de tendance. L'approche décalée vers la gauche ajoute les développeurs en tant qu'utilisateurs du tableau de bord, en plus des gestionnaires et des testeurs. Le tableau de bord doit donc contenir les détails de bas niveau que les développeurs recherchent pour enquêter et établir efficacement les causes des échecs de SLA ou des tendances historiques.

Test de charge et de performance dans un pipeline de livraison DevOps

L'automatisation des tests ne doit pas s'arrêter au stade de l'exécution des tests de performance et de l'analyse réussite/échec. Le niveau suivant est analyse automatisée des causes profondes de tests de performances.

4. Comment réduire les coûts d'installation et d'exploitation ?

Les avantages des tests de performance automatisés shift-left ont un coût de construction de l'infrastructure d'automatisation des tests, de création ou de modification de tests, et potentiellement d'acquisition et d'apprentissage de nouveaux outils et de changements culturels.

Dans ce voyage, vous devez vous assurer que les outils de test de performance que vous utilisez correspondent aux nouveaux principes que vous mettez en pratique. Vous trouverez ci-dessous une liste des fonctionnalités de l'outil de test de performance qui vous feront gagner du temps dans la configuration et la maintenance des tests automatisés.

  • Offre une interface de ligne de commande étendue pour l'exécution automatisée des tests de performance.
  • Permet la réutilisation des ressources de test, telles que les actifs de test fonctionnels, les moniteurs de performances, les vérifications SLA, etc.
  • Peut être utilisé dans les environnements informatiques cloud et fermés.
  • Fournit des fonctionnalités pour les mises à jour en masse des projets de test de performances.
  • Prend en charge la génération automatisée de cas de test.
  • Prend en charge l'analyse automatisée des causes profondes des défaillances.
  • Rend les choses courantes faciles et les choses avancées possibles.

En pratique, cela signifie que tout en offrant une interface graphique pour les tâches de test de performances courantes, l'outil offre une option pour étendre ses fonctionnalités avec des scripts dans tous les principaux domaines fonctionnels. Une interface graphique pour les tâches courantes fournira une productivité et une courbe d'apprentissage rapide, tandis que l'extensibilité avec les scripts ou la programmation garantira que, quelle que soit la spécificité de vos exigences de test automatisé, l'outil doit fournir les moyens d'y répondre.

La stabilité et la maintenabilité des tests contribuent grandement à réduire les coûts opérationnels des tests de performance. Bien que ce sujet mérite un article séparé, nous mentionnerons un domaine qui est souvent oublié si l'on examine les tests de performance des applications Web d'un point de vue traditionnel. Les applications Web modernes utilisent dans une large mesure les appels API, la tendance est d'utiliser exclusivement les appels API pour récupérer le contenu dynamique des serveurs.

Cette dépendance croissante des applications Web aux appels d'API entraîne un changement qualitatif dans les tests de performances modernes. Lorsque le contenu statique d'une application Web est servi par des réseaux de diffusion de contenu (CDN) hautement disponibles, la majeure partie du temps de chargement de la page Web provient des appels d'API. Les performances de telles applications Web deviennent fonction des performances des API dont elles dépendent, ce qui justifie le remplacement des UI par des tests de performances des API.

Un tel remplacement apporte de multiples avantages.

  • Tests d'API plus stables
  • Beaucoup moins de ressources informatiques sont nécessaires pour exécuter
  • Facile à réutiliser à partir de tests fonctionnels existants

Remplacer l'interface utilisateur par des tests de performances API pour les applications Web éligibles peut grandement contribuer à la stabilité de vos tests de performances et réduire les coûts opérationnels.

Où aller ensuite

Les tests de performance modernes introduisent de nouveaux principes pilotés par l'automatisation des tests. Les inefficacités du processus de test traditionnel sont écartées, mais les fondations demeurent. Et il est important de revoir et d'appliquer efficacement les nouvelles pratiques.

Guide des meilleures pratiques de test de performance

Par Sergueï Baranov

Sergei est un ingénieur logiciel principal chez Parasoft, se concentrant sur les tests de charge et de performance au sein de Parasoft SOAtest.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.