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 >>

Qu'est-ce que la virtualisation des services ? Outils et exemples de tests

Par Jeff Peeples

7 septembre 2021

4  min lire

La virtualisation des services est devenue un élément essentiel des tests de logiciels. Découvrez comment utiliser la virtualisation des services pour accéder facilement aux composants qui entravent le développement et les tests.

Définition de la virtualisation des services

En tant que composant essentiel de la plupart des stratégies de test de nos clients, nous avons tendance à recevoir de nombreuses questions sur la virtualisation des services. Voici quelques explications.

Testez à tout moment, n'importe où avec la bonne solution de virtualisation de services

La virtualisation des services permet aux équipes d'accéder facilement aux composants limités qui entravent le développement et les tests. Cela se manifeste généralement par des contraintes environnementales, dans lesquelles des composants techniquement hors de portée des tests sont nécessaires pour permettre une fonctionnalité complète de bout en bout.

Avec la virtualisation des services, vous pouvez supprimer ces contraintes en simulant ces dépendances en aval et en échangeant la fonctionnalité réelle avec un comportement émulé. Lorsque cela est fait correctement, le système se comporte comme si le composant réel était disponible.

Ainsi, vous pouvez éliminer les contraintes de planification en fournissant un accès universel à un environnement de test émulé précis. Et vous pouvez éliminer les goulots d'étranglement des processus en fournissant un accès rapide à des systèmes dépendants évolutifs, indisponibles ou autrement difficiles d'accès. Comme indiqué par l'entrée de virtualisation des services de Wikipedia, ces systèmes dépendants peuvent être :

  • Pas encore terminé
  • Toujours en évolution
  • Contrôlé par un tiers ou un partenaire
  • Disponible pour les tests uniquement dans une capacité limitée ou à des moments peu pratiques
  • Difficile à provisionner ou à configurer dans un environnement de test
  • Nécessaire pour un accès simultané par différentes équipes avec une configuration de données de test variée et d'autres exigences
  • Utilisation restreinte ou coûteuse pour les tests de charge et de performance

L'entrée de Wikipedia continue de bien décrire cela:

Plutôt que de virtualiser des systèmes entiers, il ne virtualise que des tranches spécifiques de comportement dépendant essentielles à l'exécution des tâches de développement et de test. Cela fournit juste assez de logique d'application pour que les développeurs ou les testeurs obtiennent ce dont ils ont besoin sans avoir à attendez que le service réel soit terminé et facilement disponible.

Par exemple, au lieu de virtualiser une base de données entière (et d'effectuer toute la gestion des données de test associées ainsi que de configurer la base de données pour chaque session de test), vous surveillez la façon dont l'application interagit avec la base de données, puis vous émulez le comportement de la base de données associée requêtes transmises à la base de données, jeux de résultats correspondants renvoyés, etc.).

Pourquoi la virtualisation des services est-elle importante ?

Pour atteindre la qualité rapidement, il est essentiel d'avoir un accès illimité à un environnement de test fiable et réaliste. Il est important de reconnaître qu'un environnement de test complet inclut l'application sous test (AUT) et tous ses composants dépendants tels que les API, les services tiers, les bases de données, les applications et autres points de terminaison.

La virtualisation des services permet aux équipes DevTest de avoir accès à un environnement de test complet, y compris tous les composants système critiques dépendants, ainsi que modifier le comportement de ces composants dépendants d'une manière qui serait impossible avec un environnement de test par étapes, ce qui vous permet de tester plus tôt, plus rapidement et plus complètement. Il vous permet également d'isoler différentes couches de l'application pour le débogage et les tests de performances.

Comment choisir la bonne solution de virtualisation de service

Accéder à un environnement de test complet

Avec les cycles de développement itératifs rapides d'aujourd'hui, les équipes DevTest ont besoin d'un accès précoce à un environnement de test complet afin de:

  • Validez la fonctionnalité de chaque user story dès qu'elle est terminée
  • Validez l'impact de chaque user story dès qu'elle est terminée
  • Effectuer des tests plus complets plus tôt dans le processus
  • Effectuer leurs propres tâches DevTest même si une autre équipe est en train d'implémenter ou de faire évoluer un composant dépendant en parallèle avec l'itération actuelle

La virtualisation de services peut fournir un accès à tout composant dépendant manquant ou contraint dans votre environnement de test: services tiers, API, bases de données, mainframes, ESB et autres composants qui communiquent à l'aide de protocoles de messagerie courants. Les principaux candidats à la virtualisation des services incluent des composants dépendants qui sont à la fois:

  • Moyennement (ou plus) d'accès difficile pour les tests, par exemple en raison de conflits d'horaire, de frais d'accès, de licences, de limites géopolitiques, etc.
  • Modérément (ou plus) complexe à configurer pour les tests

Par exemple, un service interne peut être facilement accessible à partir d'un environnement de test par étapes et simple à configurer. D'un autre côté, une file d'attente de messages complexe est probablement plus difficile à mettre en place dans un environnement de test par étapes et beaucoup plus difficile à configurer pour le test. À l'extrémité du spectre, un système mainframe ou ERP aura de multiples contraintes associées à l'accès DevTest ainsi que des limitations distinctes sur votre capacité à le configurer pour le test. L'utilisation de la virtualisation des services garantit qu'un environnement de test est accessible à la demande. Il élimine les contraintes d'accès et réduit les frais généraux associés à une configuration répétée. Les équipes peuvent tester virtuellement sans limites.

Modification du comportement des composants dépendants

La virtualisation des services vous permet également de contrôler le comportement des composants dépendants. Il est très difficile de modifier la configuration du réseau ou du matériel associé à chaque composant dépendant de l'AUT. Il est également assez courant de faire face à des environnements de test par étapes qui présentent des performances plus lentes que celles que vous rencontreriez en production.

Grâce à la virtualisation des services, vous avez un meilleur contrôle sur la réponse des dépendances. Cela vous donne un accès à la demande à un éventail beaucoup plus large de comportements de dépendance (tout comme un simulateur de vol). Par conséquent, vous pouvez évaluer le risque d'une version candidate plus rapidement et avec plus de précision.

Par exemple, vous pouvez simuler différents comportements de dépendance pour:

  • Vérifiez comment votre AUT réagit aux variations de performances dans les dépendances. Les utilisateurs peuvent-ils effectuer des transactions principales même lorsqu'une dépendance subit une latence élevée ? Les scénarios à faible latence exposent-ils des problèmes de simultanéité ?
  • Isolez le composant testé pour comprendre si un comportement inattendu provient de problèmes avec les dépendances ou de votre AUT
  • Définissez l'environnement de test complet dans différents états et validez la sécurité et la résilience de votre AUT dans ces contextes
Comment adopter et faire évoluer la virtualisation des services

Modification des données des composants dépendants

Les services virtuels n'ont pas besoin de toujours répondre avec les données réelles du système réel. En fait, il existe de nombreux avantages à fournir des données inattendues à partir de vos services virtuels. Les services virtuels sont séparés de leurs sources de données, ce qui permet une plus grande flexibilité dans la génération de données de réponse qui répondent aux besoins des différentes équipes, tels que:

  • Les équipes de développement qui souhaitent se prémunir contre les réponses mal formées ou les comportements négatifs dans leur application peuvent générer des réponses de service qui génèrent un comportement négatif.
  • Les équipes de test qui souhaitent valider la manière dont les réponses non nominales sont gérées par le service peuvent renvoyer des caractères illégaux dans la réponse.
  • Les équipes de performance qui souhaitent comprendre l'impact des réponses de charge utile volumineuses peuvent fournir des réponses plus importantes que la normale à partir de composants dépendants.

En simulant les différentes données de service dans ces types de situations, vous pouvez gagner beaucoup plus de flexibilité avec vos tests.

Avantages pratiques de la virtualisation des services

Bien sûr, nous n'avons fait qu'effleurer la surface ici. Le déploiement de la virtualisation des services dans votre organisation présente de nombreux avantages. Les entreprises qui ont adopté la pratique de test de pointe de la virtualisation des services signalent moins de défauts, une meilleure couverture des tests, des taux d'exécution des tests plus élevés et beaucoup moins de temps passé à tester.

Découvrez comment votre équipe peut créer des simulations de service fiables et prévisibles avec Parasoft Virtualize.

Par Jeff Peeples

Jeff Peeples est chef de produit senior chez Parasoft, dirigeant la direction de la plate-forme fonctionnelle pour SOAtest, Virtualize et CTP. Jeff possède une vaste expérience dans la définition de solutions et l'élaboration de feuilles de route pour les secteurs d'activité, notamment l'énergie, les technologies financières et les voyages/l'hôtellerie.

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