Logo Parasoft

Comment l'analyse d'impact des tests raccourcit les cycles de test des microservices pour des versions plus rapides et de haute qualité

By Lavanya Esambadu 12 septembre 5 min de lecture

Explorez les défis de test uniques introduits par les microservices, pourquoi les approches traditionnelles entravent la vitesse des tests et comment l'analyse d'impact des tests offre un moyen si utile de suivre le rythme.

Comment l'analyse d'impact des tests raccourcit les cycles de test des microservices pour des versions plus rapides et de haute qualité

Portrait de Lavanya Esambadu, ingénieur solution chez Parasoft
By Lavanya Esambadu 12 septembre 5 min de lecture

Explorez les défis de test uniques introduits par les microservices, pourquoi les approches traditionnelles entravent la vitesse des tests et comment l'analyse d'impact des tests offre un moyen si utile de suivre le rythme.

Les tests étaient autrefois simples : vous aviez une grande application monolithique, vous apportiez une modification, vous exécutiez une série de tests et vous aviez terminé.

Aujourd'hui, avec les microservices, les choses ont radicalement changé. Nous avons divisé le monolithe en services indépendants pour accélérer le processus, améliorer l'évolutivité et permettre aux équipes de travailler de manière indépendante. C'est une excellente idée, jusqu'au moment des tests.

Bien que conçus pour être indépendants, les microservices sont connectés via des API, des files d'attente de messages et des contrats partagés. Lorsqu'un service change, cela peut avoir un impact accidentel sur d'autres parties du système, entraînant des défaillances en aval. Celles-ci peuvent être difficiles à prévoir, surtout dans les applications distribuées de grande taille.

Alors, que font les équipes ? Soit elles exécutent tous les tests sur l'ensemble du système, des tests de service individuels aux scénarios complets de bout en bout, ce qui ralentit le pipeline, retarde les retours et réduit la vitesse du cycle de test, soit elles exécutent un ensemble limité de tests, risquant ainsi de manquer des défauts et de coûteuses retouches.

Le défi des tests de microservices

La nature interdépendante des microservices complique les tests. Si vous modifiez un service, les fonctionnalités en aval peuvent être affectées.

Pour réduire ce risque, de nombreuses équipes s’appuient sur tests de bout en bout (E2E) qui testent des flux de travail entiers sur plusieurs services. Bien que cette approche puisse révéler des problèmes interservices, les tests E2E sont notoirement lents à exécuter et à maintenir, surtout lorsque des couches d'interface utilisateur sont impliquées. L'exécution d'une seule suite peut prendre des heures, ce qui rend son exécution après chaque modification peu pratique. Plus ces cycles de tests s'allongent, plus ils freinent la vitesse de publication, transformant des versions fréquentes et de haute qualité en déploiements retardés et à enjeux élevés.

Aujourd’hui, la plupart des équipes sont confrontées à deux options :

  • Exécutez tout. Sûr mais lent. L'exécution des tests prend des heures, voire des jours, les pipelines sont engorgés et les retours sur les tests sont retardés.
  • Exécutez quelques tests. Plus rapide, mais risqué. Des problèmes critiques peuvent passer inaperçus et n'apparaître qu'après le déploiement.

Les cycles de test longs et les retours de test lents nuisent à la productivité, augmentent la frustration et érodent la confiance au sein des équipes.

Tests ciblés avec analyse d'impact des tests (TIA) pour les microservices

La clé pour raccourcir les cycles de test des microservices ne réside pas dans la réduction du nombre de tests, mais dans l'exécution des tests appropriés. C'est là qu'intervient l'analyse d'impact des tests (TIA). L'analyse d'impact des tests (TIA) s'attaque à ce problème en identifiant précisément les tests pertinents pour une modification de code spécifique, évitant ainsi de devoir exécuter tous les tests ou de se limiter à un ensemble limité.

TIA fonctionne en cartographiant chaque test— API, intégration, ou UI— aux parties spécifiques du code qu'il applique. Lorsqu'un service est modifié, TIA identifie les zones affectées et identifie uniquement les tests nécessaires à la validation de la modification, que les modifications de code résident dans le même service ou dans des services dépendants. Le périmètre dépend de la manière dont les équipes l'appliquent : une équipe de service peut utiliser TIA pour cibler les tests de son microservice uniquement, tandis qu'une équipe d'application peut l'utiliser pour optimiser sa suite de tests de bout en bout.

Grâce à une cartographie intelligente et précise et à des exécutions de tests automatisées, les équipes peuvent valider leurs modifications de code plus rapidement tout en réduisant le périmètre de leurs exigences de test. Cela permet d'éviter à la fois le risque de sous-tests et le ralentissement dû aux tests excessifs.

Pour tester les microservices, TIA fournit :

  • Identification automatique des tests impactés
  • Sélection de tests interservices pour détecter rapidement les problèmes en aval
  • Cycles de rétroaction plus rapides sans sacrifier la couverture ou la qualité

Graphique montrant l'application Web et les microservices A, B et C avec la distribution des tests échoués, réussis, des modifications de code et aucune modification de code.

Comment ça marche

Lorsqu'un développeur valide du code, TIA analyse la modification au niveau du fichier ou de la méthode. Il utilise une cartographie prédéfinie des tests couvrant les différentes parties de la base de code, établie à partir des tests précédents, des données de couverture de code et de l'analyse des dépendances.

Dans un environnement de microservices, ce mappage inclut les dépendances directes au sein d'une même chaîne de microservices exécutés. Grâce à ces informations, TIA détermine l'ensemble minimal de tests (intégration, API ou interface utilisateur) qui affectent le code modifié et ses dépendances. Ces tests sont ensuite automatiquement déclenchés dans le pipeline CI/CD, ignorant les tests non liés.

Résultat : seuls les tests significatifs associés à chaque modification sont exécutés, ce qui réduit le temps d’exécution tout en détectant les problèmes en aval à un stade précoce.

Des retours plus rapides, des cycles de test plus intelligents

Trouver le juste équilibre entre rapidité et qualité a toujours été un véritable défi dans le développement logiciel. Les développeurs privilégient les itérations rapides, tandis que les ingénieurs en automatisation des tests garantissent la qualité. L'analyse d'impact des tests (TIA) change la donne : plus besoin de faire de compromis.

Avec TIA, les développeurs obtiennent des résultats de tests ciblés jusqu'à 90 % plus rapidement après la validation du code. Finies les pertes de productivité dues à l'attente de la fin d'une suite complète de régression. Pour les testeurs, cela signifie la certitude que chaque fonctionnalité critique est validée, sans le temps et l'argent nécessaires à l'exécution de chaque test à chaque fois.

La différence est claire, littéralement. Notre comparaison avec Jenkins montre comment TIA transforme les exécutions longues et gourmandes en ressources en cycles de test optimisés et ciblés. Cette efficacité ne se limite pas à gagner du temps, elle réduit également la consommation de calcul de votre pipeline CI/CD, diminuant ainsi les coûts opérationnels tout en libérant des ressources pour d'autres builds.

Graphiques côte à côte montrant les tendances d'exécution complètes des tests sans analyse d'impact des tests par rapport à l'analyse d'impact des tests.
En rendant l'exécution des tests plus intelligente, TIA favorise une culture de qualité continue. Les tests s'exécutent progressivement à chaque modification du code. Résultat : livraison plus rapide, coûts réduits et confiance accrue.

Pleins feux sur les clients : une entreprise Fintech réduit le temps de test de 40 %

Pour voir analyse d'impact de test en action, considérons l’histoire de cette société leader dans le domaine des services financiers qui gérait une application complexe construite sur 36 microservices.

Avant d'adopter TIA, leur régression comprenait plus de 10,000 XNUMX tests répartis sur l'interface utilisateur web, l'API et les couches de base de données. Par conséquent, lorsque les développeurs apportaient des modifications au code, l'exécution de la suite complète de tests de régression était complexe et chronophage.

Obtenir un retour rapide constituait un défi de taille. L'exécution de tous les tests pouvait prendre des jours et nécessitait une équipe dédiée. Les équipes de développement et de tests fonctionnels devaient donc examiner et décider manuellement des modules de test à exécuter, en fonction de leur expérience et de leurs meilleures hypothèses.

Malgré cette approche, des milliers de tests devaient encore être exécutés, ce qui entraînait des retards. L'équipe d'automatisation disposait rarement de la bande passante nécessaire pour exécuter et maintenir un grand nombre de tests d'interface utilisateur, surtout avec des délais de publication serrés.

Après avoir adopté l'analyse d'impact des tests, le pipeline CI/CD a automatiquement sélectionné les tests impactés par les modifications de codeAu lieu d'exécuter la suite complète, seuls les tests nécessaires ont été exécutés, ce qui a permis d'obtenir un retour d'information plus rapide tout en garantissant qu'aucun élément critique n'a été oublié. Parce que TIA s'appuie sur données de couverture de code, cela a également fourni à l'équipe une visibilité claire sur les parties du code qui ont été testées par chaque test.

Testez uniquement ce qui est nécessaire, exactement quand c'est nécessaire

Le développement rapide des applications modernes basées sur les microservices peut ralentir les tests à l'ancienne. Exécuter chaque test pour chaque petite modification n'est plus pratique.

Au lieu de tout tester, TIA accélère considérablement les boucles de rétroaction des tests : certaines équipes signalent des cycles de test jusqu'à 90 % plus rapides. Il ne s'agit pas seulement de tester plus vite. Il s'agit de savoir que vous testez les bons éléments lorsque des modifications applicatives surviennent et de réduire le risque de passer à côté de problèmes critiques lorsque des microservices interdépendants sont impactés.

Si votre équipe est lassée des longs cycles de test et de l'attente de retours, il est temps de repenser son approche. Avec TIA, vous pouvez arrêter de tester trop ou trop peu, et commencer à tester de manière stratégique en toute confiance.

Découvrez comment votre équipe peut accélérer les tests de microservices pour des versions plus rapides et de haute qualité.

Démonstration de la plateforme