Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

3 stratégies pour maximiser le retour sur investissement des tests de microservices

Par Chris Colosimo

11 février 2021

5  min lire

Les microservices s'efforcent de décomposer les applications monolithiques traditionnelles en petits services évolutifs et déployables individuellement. Certaines architectures de microservices fonctionnent dans un environnement réactif où les services peuvent communiquer de manière asynchrone sans bloquer une réponse.

Ces types d'environnements basés sur des microservices sont moins sujets aux défaillances lorsque des parties du système tombent en panne ou se comportent mal. Pour une fonctionnalité complète, le bon fonctionnement de toutes les dépendances est toujours nécessaire, mais un avantage majeur de cette approche est le découplage qu'elle fournit.

Microservices sont autonomes, ce qui signifie qu'ils peuvent être déployés, mis à l'échelle et modifiés individuellement selon les besoins. Cela permet une itération rapide. Cependant, pour obtenir des itérations plus rapides et un service fiable, une plus grande attention est désormais accordée aux API, à la fois publiques et utilisées en interne parmi les dépendances.

Lorsqu'il s'agit de tester des microservices, toute une série de nouveaux défis se présentent.

Infographie avec boîte 3D à gauche étiquetée, Monolith, avec des chevilles étiquetées Feature # 1-13 avec une flèche étiquetée entité dupliquée pointant vers des colonnes 3D à droite représentant des systèmes autonomes.

Nouveaux défis des tests de microservices

Le passage aux microservices apporte de nouveaux défis aux équipes logicielles qui réduisent le retour sur investissement lors de la transition.

Beaucoup plus d'interactions à automatiser au niveau de la couche API

Les interdépendances entre les microservices nécessitent beaucoup plus de transferts et d'interactions se déroulant en arrière-plan au niveau de la couche API. Des tests adéquats nous obligent non seulement à comprendre ces interactions, mais aussi à les isoler et à les tester.

Barrages routiers de développement parallèle

Les microservices sont agiles en termes de modification et de redéploiement, mais la complexité de les tester ralentit le développement parallèle. Cette complexité est due à de nombreuses interactions entre les services. Cela complique l'environnement de test et trouble la compréhension de ce qui se passe.

Impacts sur les méthodes traditionnelles de test

Les microservices sont en contradiction avec les tests traditionnels, qui reposent généralement sur des interactions demande / réponse synchrones. Les microservices sont parfois déployés dans des architectures réactives et événementielles avec de nouveaux protocoles et formats de messages et une communication asynchrone.

Plus de points d'échec potentiels

Des interactions et des dépendances accrues augmentent les points de défaillance potentiels. Et en raison de la nature réactive des services, de nouveaux flux d'événements peuvent se déclencher dans le désordre et tomber en panne.

Distractions de développement

Le passage à l'architecture de microservices présente des avantages, mais a également un coût qui détourne souvent l'équipe de développement de l'implémentation de fonctionnalités génératrices de revenus. À moins que les obstacles liés aux tests et au développement parallèle ne soient résolus, le véritable retour sur investissement est difficile à atteindre.

Trois stratégies pour tirer pleinement parti des tests de microservices

Pour maximiser le retour sur investissement de tests de microservices, suivez ces tactiques:

  • Augmentez la qualité de la couverture de test des API fonctionnelles avec l'IA pour vous assurer que les services déployés répondent aux exigences.
  • Automatisez les flux de travail complexes et axés sur les événements pour accélérer les tests.
  • Améliorez l'environnement de test pour améliorer la fiabilité et la stabilité des tests.

Augmentez la couverture des tests API fonctionnels avec l'IA

Le manque de code et de couverture des tests est un problème de qualité, de sécurité et d'expérience client. Si les services ne sont déployés que partiellement testés, ce sont les clients qui découvrent les bugs! Une couverture accrue signifie plus de tests. Pour faire de cela une réalité, l'automatisation des tests est nécessaire pour accélérer les tests fonctionnels grâce à la création rapide de tests tirant parti de l'existant. Sélénium Tests d'interface utilisateur.

Parallèlement à cela, il est essentiel d'automatiser la validation des séquences d'API qui nécessitent un échange de données entre les services. La plupart de ces séquences d'API sont basées sur des «enregistrements» du trafic de l'API à partir de vos tests d'interface utilisateur automatisés. Ces séquences API peuvent être clonées et transformées pour augmenter la couverture des tests.

L'augmentation de l'automatisation des tests réduit le temps de résolution des problèmes en identifiant les points de défaillance.

Diminuer le temps passé à «déboguer» les échecs de test signifie plus de temps pour tester la fonctionnalité.

Les tests d'API automatisés sont une plate-forme pour les tests non fonctionnels, car les séquences réelles peuvent être automatisées pour les tests de charge et de performances en utilisant les mêmes actifs de test et le même cadre de test.

Automatisez les flux de travail complexes et axés sur les événements

L'augmentation de la couverture des tests fonctionnels nécessite plus de permutations des données de test. L'automatisation des tests aide en fournissant de grandes permutations de données à partir de scénarios de bout en bout directement via les API.

La gestion des données de test est une fonction essentielle de l'automatisation des tests. Il doit préserver la sécurité des données de test (si elles sont basées sur des données de production) et le paramétrage des données pour prendre en charge des scénarios nouveaux et complexes.

Pour vérifier le comportement correct, une visibilité sur les interactions de service est nécessaire. La virtualisation des services est la virtualisation des services pour renforcer la visibilité de l'architecture événementielle. La virtualisation aide en étant un proxy au milieu de diverses applications qui sont intégrées ensemble. En créant un service virtuel pour simuler une base de données héritée, par exemple, il est possible de surveiller les demandes en provenance et à destination du système hérité et du microservice testé.

Comment choisir la bonne solution de virtualisation de service

La capacité de surveiller les interactions dans une architecture événementielle est utile. La virtualisation des services nous permet d'automatiser la validation de ces flux de travail complexes lorsque les données se déplacent entre les systèmes. Des assertions sont placées dans les services virtualisés pour garantir des transactions de demande / réponse correctes, ce qui permet à la fois de surveiller et de vérifier des interactions complexes liées aux événements.

Test des microservices de stabilisation, d'isolement et de décalage vers la gauche

La virtualisation des services fait passer la simulation des services à un niveau supérieur. Il simule le comportement complexe et avec état de vos interactions API pour stabiliser et isoler votre automatisation de test fonctionnel des dépendances en aval difficiles à gérer. Cet environnement de test virtualisé et stable peut être répliqué pour chaque développeur et testeur, supprimant la complexité des environnements réels tout en conservant le comportement requis pour les tests. Cela permet en outre une validation continue de votre inventaire de microservices, y compris des tests du système client dans le cadre de votre pipeline CI / CD / DevOps.

Ramifications commerciales d'une stratégie de test améliorée

Dans de nombreuses organisations, les tests sont très lourds. En d'autres termes, plus de temps et d'efforts sont consacrés aux tests manuels ou d'interface utilisateur qu'aux tests API ou unitaires. Ces organisations comprennent qu'elles ont besoin d'une meilleure couverture, mais les tests d'interface utilisateur sont plus faciles à comprendre et à définir (les interfaces utilisateur sont plus intuitives). En conséquence, des ressources moins techniques (et moins coûteuses) peuvent effectuer les tests.

Les entreprises de logiciels cherchent souvent à automatiser les tests qu'elles effectuent actuellement, qui sont principalement des tests d'interface utilisateur. Bien que cela aide, l'automatisation de l'interface utilisateur est instable et nécessite une maintenance constante. En outre, la plupart des problèmes rencontrés au niveau de l'interface utilisateur sont le résultat de bogues au niveau de la couche API. Le manque de visibilité sur l'activité et les interactions sous-jacentes signifie une perte de temps à déterminer la cause première.

Les organisations désireuses de transformer leur Automatisation des API obtenez des produits mieux testés et économisez du temps et de l'argent en examinant les tests selon une approche combinée descendante et ascendante. Une nouvelle stratégie de test a un retour sur investissement élevé car des API soigneusement validées réduisent les instabilités de l'interface utilisateur, ce qui signifie une meilleure expérience client.

Des niveaux plus élevés de couverture de test sont désormais possibles avec un temps de création de test réduit. Une visibilité accrue sur les interactions au niveau de l'API signifie une réduction du temps moyen de correction. Les développeurs trouveront plus de problèmes plus rapidement. C'est un gagnant-gagnant avec un retour sur investissement élevé sur un investissement relativement modeste.

Résumé

Ces trois stratégies simplifient radicalement le processus de création de tests en tirant parti de la création de tests basés sur l'IA, de l'automatisation des tests API et de la virtualisation des services. Les tests s'améliorent avec une meilleure couverture du code sans affecter les calendriers des produits, ce qui se traduit par de meilleurs microservices. L'adoption de ces stratégies aide les équipes logicielles à réaliser le retour sur investissement qu'elles souhaitent atteindre lors des tests.

Appel à l'action pour obtenir le livre blanc intitulé Testing Microservices

Par Chris Colosimo

Chef de produit chez Parasoft, Chris élabore des stratégies de développement de produits pour les solutions de test fonctionnel de Parasoft. Son expertise en accélération SDLC grâce à l'automatisation l'a conduit à des déploiements majeurs en entreprise, tels que Capital One et CareFirst.

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