Webinaire en vedette : MISRA C++ 2023 : tout ce que vous devez savoir | Voir le séminaire

Avantages de la virtualisation des services au-delà du stubbing et du mocking

Logo cube Parasoft 300x300
15 septembre 2022
7 min lire

Faites plus que moquer et écraser. Tirez pleinement parti de la virtualisation des services, qui teste totalement une application, même si tous les composants ne sont pas encore disponibles.

La virtualisation des services (SV) est une méthode utilisée par les équipes DevOps pour simuler les composants du comportement d'une application. Les composants sont des API, des bases de données, des réseaux, des appareils, etc. Les équipes utilisent SV car certains composants du projet peuvent être indisponibles pour un certain nombre de raisons, notamment :

  • Les développeurs sont encore en train de les développer.
  • Ils peuvent être problématiques à mettre en place.
  • Ils peuvent être difficiles d'accès.
  • Des tiers peuvent en être propriétaires.
  • Ils peuvent être coûteux ou limités.

La virtualisation des services est comme un simulateur de vol pour les applications. L'objectif est que les testeurs testent les fonctionnalités et les lacunes pendant le développement et reconnaissent les problèmes potentiels, en les traitant le plus tôt possible afin que l'avion ne s'écrase pas.

L'impact et les avantages de la virtualisation sur les critères de qualité et de performance

Les leçons d'ING et de Bank of America

L'utilisation de SV permet d'économiser du temps, de l'argent, des maux de tête et de la frustration. Les équipes DevOps ne se retrouvent pas avec une attitude « nous contre eux » lorsque le développement s'arrête en attendant que les autres membres de l'équipe terminent leur partie.

Virtualisation des services : entrer dans les détails

  • Un service virtuel est un « test double ». Il s'agit souvent d'un logiciel en tant que service (SaaS) et ne fonctionne jamais directement avec des fonctions ou des méthodes.
  • Pour créer des services et des actifs virtuels, les développeurs peuvent enregistrer le trafic avec une plate-forme de virtualisation de services plutôt que de construire le modèle d'interaction à partir de zéro.
  • La virtualisation des services prend généralement en charge plusieurs protocoles, tels que MQ, HTTP, TCP et autres. Un mock ou un stub n'en supporte souvent qu'un seul.
  • Les outils de virtualisation des services comportent souvent des interfaces utilisateur qui permettent aux non-développeurs d'utiliser les outils pour tester sans avoir à connaître les détails du projet.

Les outils de virtualisation des services peuvent également répliquer des aspects non fonctionnels du système, tels que des charges d'activité élevées ou des connexions et des temps de réponse lents. Certains services virtuels ont un groupe de réponses tronquées pour les critères de requête fournis et envoient toutes les autres requêtes à un système dorsal opérationnel. C'est ce qu'on appelle l'écrasement partiel.

Comment choisir le bon outil de virtualisation de service

Comme les simulations, la virtualisation des services peut inclure des correspondances de requêtes complexes. Ceux-ci permettent au test de renvoyer une réponse pour de nombreux types de requêtes. Au-delà de la simple moquerie, la virtualisation des services simule le comportement d'un système lorsqu'il construit et renvoie des réponses basées sur les données et les attributs de la demande.

Comparer les stubs et les mocks

Les stubs et les mocks remplissent certaines des mêmes fonctions que la virtualisation des services mais, comme nous le notons, ils ne sont pas aussi complets ou aussi flexibles.

Que sont les talons ?

Un stub exécute au minimum une interface et renvoie des informations codées en dur qui sont étroitement liées à la suite de tests. Les équipes de test trouvent les talons sont les plus utiles lorsque la suite de tests est simple et que la conservation des informations codées en dur dans le stub n'est pas un problème.

Les développeurs écrivent des stubs, généralement pour un usage personnel, et ils ne les partagent normalement pas car les stubs ne peuvent pas fonctionner entre les plates-formes et en raison des dépendances d'infrastructure codées en dur.

Qu'est-ce qu'un mock ?

Une simulation est un « observateur » d'interface programmable qui vérifie si la sortie du développement répond aux attentes définies par le test. Les outils de test créent des simulations à l'aide d'une bibliothèque tierce, par exemple JMock, Mockito ou WireMock.

Les testeurs utilisent des simulations lorsqu'ils ont de grandes suites de tests, où l'utilisation d'un stub ne fonctionnera pas (car chaque test nécessite une configuration de données différente) ou les conserver dans un stub serait trop coûteux. Les développeurs écrivent également des simulations pour leur usage personnel et ne les partagent généralement pas pour la même raison qu'ils ne partagent pas les stubs comme mentionné ci-dessus.

Les avantages et les défis de la virtualisation des services

Les nombreux avantages de l'utilisation de la virtualisation des services incluent :

  • Établit une communauté afin que les équipes de développement puissent communiquer avec leurs collègues équipes de développement et de test et partager des artefacts. Les équipes peuvent également facilement échanger des actifs SV au sein de l'entreprise.
  • Facile à apprendre, même pour les non-informaticiens, les développeurs peuvent continuer leur travail pendant que les testeurs utilisent SV pour tester tous les aspects d'un projet, avec la réduction des coûts de main-d'œuvre qui en résulte.
  • Prend en charge de nombreux protocoles et est capable d'enregistrer le trafic. Idéalement, ces enregistrements de trafic peuvent être utilisés pour générer automatiquement des actifs virtuels.
  • Réduit la dépendance à la disponibilité des composants tiers et il n'y a pas de frais de service pour les bases de données, API ou services tiers.
  • Réduit le temps de mise sur le marché car SV réduit les tests et, par conséquent, le temps de développement.
  • Augmente la qualité car les tests sont plus approfondis et précis.

Certaines personnes disent que l'utilisation de la virtualisation des services présente trop de défis. Parasoft fournit des solutions.

Le défi : "Contrairement aux testeurs ou aux développeurs qui créent un stub ou une simulation pour tester le projet, les outils SV ne coûtent-ils pas plus cher ?"

Solution: Ne pas utiliser SV complique les tests et augmente les dépenses. Découvrez comment Parasoft résout les problèmes de complexité, de dépenses et d'autres problèmes potentiels ici.

Le défi : "Les systèmes SV sont volumineux et peuvent ne pas convenir à ma petite entreprise."

Solution: Les licences simples et basées sur la valeur de Parasoft s'adaptent aux besoins de votre entreprise et prennent en charge les déploiements petits et grands avec un mélange d'offres.

Le défi : « Pour éviter une mauvaise expérience utilisateur, comment mon entreprise peut-elle s'assurer que le package de virtualisation de services que je choisis correspond à mes besoins ? »

Solution: Les experts de Parasoft expliquent les aspects à considérer pour sélectionner le bon outil de virtualisation de services pour les besoins de votre entreprise en ce livre blanc.

Découvrez comment la solution d'application cloud et Web de Parasoft accélère les tests d'API et d'interface utilisateur et facilite la gestion de votre environnement de test.

Virtualisation des données et des services API

Les équipes DevOps utilisent souvent deux principaux types de SV :

  • Virtualisation des services de données
  • Virtualisation des services API

Virtualisation Des Données

La maintenance et l'approvisionnement de la base de données sont souvent problématiques. Les administrateurs de bases de données peuvent ne pas avoir la formation dont ils ont besoin à l'heure actuelle des opérations basées sur le cloud ou les compétences dont ils ont besoin pour créer efficacement et efficacement des données de test réutilisables. La virtualisation des services de base de données permet aux testeurs de « découpler » les couches de base de données, ce qui permet ensuite aux membres de l'équipe de partager et de répartir les ressources des bases de données selon les besoins.

L'utilisation de la virtualisation des services de base de données permet aux équipes de continuer à créer et à tester des exemples de données réalistes même si les sources de données ne sont pas disponibles. Une fois que le développeur a identifié la source de données, il spécifie les attributs que la source inclut. Lorsqu'une demande est transmise à l'actif virtuel, il utilise la source de données simulée pour produire des réponses spécifiques à l'environnement basées sur des facteurs de demande. Lorsque le testeur modifie les ensembles de données, les réponses simulées sont automatiquement mises à jour.

La virtualisation des bases de données réduit les frictions d'équipe souvent causées par les dépendances. Les travaux de développement peuvent progresser même si les sources de données réelles ne sont pas sur place. Les équipes peuvent également utiliser une base de données virtuelle pour migrer d'un serveur à un autre sans interruption. Il s'agit d'une opportunité d'économiser sur les importantes dépenses d'infrastructure qu'entraîne souvent la gestion traditionnelle des bases de données.

Virtualisation des services d'API

Les API (Application Programming Interfaces) sont des intermédiaires logiciels qui permettent à deux applications de communiquer entre elles. Lorsque vous êtes sur votre PC en train d'interagir sur Facebook, ou sur votre téléphone pour effectuer une transaction sur le site Web d'une banque ou consulter les actualités, les API sont à l'œuvre, en amont ou en coulisses. Les applications complexes peuvent utiliser de nombreux types d'API différents, ce qui augmente la difficulté des tests approfondis.

Lorsque les testeurs utilisent la virtualisation des services pour tester les API, le développement avance rapidement et la qualité augmente. Les tests de performances, le sandboxing tiers et les tests de charge aident tous les développeurs à comprendre toutes les capacités d'une API pendant les retards et les situations de charge élevée et de trafic intense. Les testeurs peuvent utiliser la virtualisation des services pour tester différents types de messages et différents protocoles, tels que JSON, JMS, WADL et REST. Ils peuvent l'utiliser pour des tests de bout en bout, ce qui fournit une validation multicouche sur une grande variété de terminaux. D'autres façons dont les développeurs utilisent la virtualisation des services d'API incluent la possibilité pour les testeurs de :

  • Découvrez comment divers événements et messages traversent des architectures complexes.
  • Testez les cas extrêmes tels que les gros volumes d'appels ou une mauvaise connectivité.
  • Examinez les défaillances telles que les temps de réponse lents, les temps d'arrêt ou l'inaccessibilité d'une intégration en aval.
  • Testez les failles de sécurité.
  • Testez même si certains des composants du système ne sont pas disponibles.
  • Testez un concept avant de construire réellement une pièce.
  • Trouvez la meilleure API avec laquelle intégrer.

Virtualisation des services de microservices d'API

Les entreprises ont constaté que les tests de microservices utilisant la virtualisation des services sont très utiles. Les microservices sont de petites parties d'un système plus vaste que les entreprises ont publié indépendamment ou ont modifié ou mis en œuvre à divers moments. Lorsque chaque service provient d'un lieu et d'un environnement différents, les tests sont difficiles. Grâce à la virtualisation des microservices d'API, les testeurs n'installent que le microservice sur lequel ils travaillent, puis virtualisent le reste, ce qui permet de gagner des heures.

Découvrez Parasoft Virtualize en action !

Réduire les dépendances

La réduction des dépendances est un autre avantage des tests de l'API SV. Lorsque les développeurs "décalent vers la gauche" et impliquent l'AQ dès le début de la création du système, les tests de l'API SV permettent à l'AQ d'intervenir directement et de tester les "travaux en cours" dans une réplique exacte de l'environnement - même si les développeurs n'ont pas publié les détails du programme. Cela implique l'exécution de tests automatisés ou de tests continus pour un retour direct.

Autonomisation des tests CI/CD

S'assurer que l'application fonctionne correctement ne suffit pas. Il doit également répondre aux exigences du système et aux objectifs commerciaux plus larges du projet en plus de s'assurer que toutes les intégrations sont continues et stables. La virtualisation des services API permet à QA de tester même lorsque les développeurs sont encore en train de créer l'API. De plus, cela aide les testeurs d'applications à s'assurer que les API peuvent s'intégrer avec succès aux API tierces, même si ces applications ne sont pas encore prêtes à être publiées.

Améliorer la transformation DevOps

Pour réaliser CI/CD (intégration continue/livraison continue), un objectif d'automatisation de 80 % des tests est optimal. Le test des API est extrêmement important car il permet de s'assurer que l'ensemble du pipeline fonctionne toujours correctement après que l'équipe a ajouté de nouvelles fonctionnalités. Cela inclut les API externes et internes. Les opérations et le développement sont de plus en plus intégrés, de sorte que les boucles de rétroaction et les versions sont plus fréquentes. Mais lorsque ces équipes n'exécutent que des suites de tests d'interface utilisateur, les boucles de rétroaction peuvent se rompre. La virtualisation des services d'API permet aux équipes DevOps de simuler les dépendances dès le début afin qu'elles puissent mettre en œuvre des tests automatisés au fur et à mesure que le développement progresse.

Conceptions itératives

Si votre environnement de conception est itératif, envisagez la virtualisation des services. Il vous permet d'expérimenter rapidement de nouvelles idées et approches tout en évitant de construire l'intégralité de l'API. Le résultat est une méthode Agile pour voir si de nouvelles collaborations et fonctionnalités fonctionnent, moins d'importants investissements en temps et en ressources.

Accélération des tests d'interface utilisateur

La virtualisation des services permet aux équipes de décrire des intégrations d'interface utilisateur communes avec des packages Web tels que SOA et AJAX. Cela leur permet d'exécuter des tests d'interface utilisateur n'importe où, n'importe quand et sans interruption. Les équipes peuvent simuler des environnements externes, permettant ainsi un meilleur contrôle sur les données renvoyées par les services Web. En outre, les équipes peuvent même créer et tester des intégrations d'interface utilisateur avant que les services Web ne soient disponibles.

Simulation d'API vs virtualisation de service

La moquerie d'API imite les composants du logiciel afin que les développeurs puissent tester l'opérabilité. Les fonctions de la moquerie sont généralement spécifiques au contexte. En d'autres termes, les fonctions imitent une réponse comportementale pour satisfaire une exigence de développement particulière. De plus, la simulation d'API isole uniquement une partie individuelle de l'application. C'est trop simpliste et oblige les développeurs à créer de nouvelles interfaces, ce qui est compliqué.

Les stubs sont tout aussi simplistes et maladroits. L'utilisation à la fois de simulacres et de stubs prend plus de temps et est d'une efficacité limitée par rapport à la virtualisation des services d'API.
La virtualisation des services d'API produit un environnement répliqué beaucoup plus complet et réaliste. Les avantages incluent :

  • Plus de flexibilité car elle n'est pas liée à un contexte ou à des données spécifiques.
  • Les développeurs peuvent utiliser API SV pendant la production et les tests.
  • Réutilisable.
  • Peut être automatisé.
  • Ne nécessite pas de tests de scripts ou de classes.

Exemples de virtualisation de services

Exemple 1. Votre équipe travaille sur une grande application héritée complexe avec de nombreuses dépendances. La couverture actuelle des tests est faible, en particulier lorsque les dépendances du système ne sont pas toujours disponibles.

La virtualisation des services vous permet de consigner le trafic lorsque les dépendances deviennent disponibles. Par conséquent, l'équipe peut tester ultérieurement avec des services virtuels si vous rejouez le trafic. Cela réduit l'impact de la temps d'arrêt des dépendances pour l'équipe et les testeurs.

Exemple 2. Votre équipe travaille dans une architecture de type microservices. Un département compte 10 testeurs et 20 développeurs. Le groupe est chargé de fournir 70 petites applications, qui forment un produit.

Des équipes de travail testent les applications individuellement et de manière isolée. Bien que le système CI/CD de votre équipe fonctionne bien, l'environnement extérieur n'est pas agile. Leurs API sont lentes et souvent indisponibles, ce qui complique la configuration des données de test.

Pour résoudre le problème, chaque équipe qui s'interface avec les tiers utilise des outils SV, et les testeurs d'acceptation les utilisent lors de la construction du CI. Les développeurs les utilisent également pour des tests exploratoires manuels. L'équipe utilise ensuite les outils de la version d'intégration principale qui exécute toutes les applications. Enfin, les équipes de test de performance utilisent les outils SV dans les tests de performance full stack.

Résumé

Mieux que les simulations et les stubs, la virtualisation des services sert bien votre entreprise car elle permet des tests continus, elle est plus partageable et réutilisable. Lorsqu'il est ajouté à votre flux de travail CI/CD, SV réduit les coûts et raccourcit le délai de mise sur le marché.

Commencez à éliminer les contraintes de votre environnement avec Virtualize