Logo Parasoft

Qu'est-ce que la virtualisation des services ? Guide complet

Aller à la section

Vue d'ensemble

Les services appelés par votre application peuvent ne pas être disponibles pour les tests lorsque vous en avez besoin. Virtualisation des services crée des services virtuels stables qui reproduisent la réalité.

Qu'est-ce que la virtualisation des services ?

La virtualisation des services est une fonction des tests logiciels permettant d'émuler les dépendances d'une application. Elle permet aux équipes DevOps d'utiliser des simulations de dépendances de services générées par ordinateur plutôt que réelles, ce qui leur permet de tester fréquemment, en amont et de réduire les coûts dans diverses situations. Ces simulations incluent des éléments clés manquants du système distribué : par exemple, lorsque des composants dépendants sont inaccessibles, la mise à l'échelle des environnements de formation et l'élaboration de scénarios d'intégration de partenaires.

L'utilisation de services virtuels à des fins de test est plus rentable que l'utilisation d'environnements de production à ces fins. Les tests d'API avec simulation de point de terminaison éliminent les risques de perte de données, évitent d'utiliser les serveurs coûteux dont le programme réel a besoin pour fonctionner et permettent à l'entreprise de renoncer aux frais de licence excédentaires. Il en résulte des procédures de test rapides, précises et moins lourdes.

Les équipes peuvent intégrer la virtualisation des services dans les pratiques de test automatisées pour les tests d’intégration continue exigés par les flux de travail DevOps.

Pourquoi la virtualisation des services est-elle importante ?

Les entreprises bénéficient de plusieurs avantages en mettant en œuvre la virtualisation des services pour les tests logiciels.

Icône de flèche vers le bas bleue

Réduire ou éliminer les temps d'arrêt des tests

La virtualisation des services garantit des tests continus et sans interruption, car elle simule des dépendances indisponibles ou instables. Lorsqu'un service en production devient indisponible pendant les tests, l'automatisation des tests se poursuit pendant l'exécution des cas de test sur le service virtualisé. Cela réduit les défauts de dernière minute et prévient les retards de livraison causés par des obstacles environnementaux.

Icône de flèche de tendance à la hausse bleue

Augmenter la productivité du développement

La virtualisation des services permet le développement parallèle et la création d'environnements de test virtuels dédiés. Ainsi, les équipes peuvent travailler indépendamment des dépendances externes et éliminer les contraintes liées aux environnements de test partagés, accélérant ainsi les cycles de test.

Icône de travail d'équipe

Accélérer l'approvisionnement des ressources

Les équipes rationalisent la gestion des ressources et les processus de test grâce à des environnements virtuels, rapidement clonables, partagés, déployés et détruits à la demande. Elles économisent ainsi du temps, des efforts et des coûts liés à la configuration et à la maintenance d'environnements de test en direct.

Icône bleue Temps et coûts

Réduire les coûts d'investissement et d'exploitation

La virtualisation des composants élimine le besoin d'environnements physiques multiples, réduisant ainsi les coûts d'infrastructure et de test. Elle évite également les frais d'accès à certaines dépendances tierces pendant les tests.

Icône de choc électrique accélérée bleue

Accélérez la mise sur le marché

Des tests précoces et fréquents grâce à la virtualisation des services permettent de résoudre les problèmes plus rapidement et de raccourcir les cycles de développement. Ainsi, les entreprises commercialisent leurs produits plus rapidement..

Solutions Gear avec icône de coche bleue

Améliorer la qualité des logiciels

La virtualisation des services permet des tests fréquents et complets tout au long du développement, améliorant ainsi la qualité logicielle. La possibilité de simuler des scénarios de défaillance dans des environnements virtuels permet d'identifier et de résoudre les problèmes en amont pour de meilleures versions logicielles.

Façons d'utiliser la virtualisation des services

Plusieurs domaines peuvent tirer parti de la virtualisation des services pour améliorer la productivité.

Développement Agile/Parallèle

Les pratiques logicielles modernes impliquent plusieurs équipes opérationnelles travaillant séparément sur des éléments de l'environnement, puis les réunissant via des API pour former le produit final. En attendant l'accès à une partie de l'application, les équipes DevOps peuvent utiliser la virtualisation des services pour simuler ces pièces manquantes afin de pouvoir poursuivre le développement de leur application.

Test de performance

La virtualisation des services prend en charge les tests de performance en simulant des systèmes dépendants qui peuvent être indisponibles, coûteux ou difficiles à faire évoluer en environnement réel. Elle permet aux équipes de créer des services virtuels stables et prévisibles, capables de reproduire diverses conditions de performance, telles que la latence, le débit et les scénarios d'erreur. Les testeurs peuvent ainsi identifier les goulots d'étranglement des performances dès le début du cycle de développement et valider le comportement de l'application sous différentes charges.

Gestion des données de test

Les entreprises disposent de vastes quantités de données qui constituent une part importante de leurs interactions avec leurs clients, par exemple une banque. Ces informations peuvent inclure des PII (informations personnellement identifiables) telles que des numéros de sécurité sociale. Il n'est pas approprié de permettre aux testeurs d'avoir accès à des sources de données de production réelles pour leurs besoins. La virtualisation des services donne aux équipes de test la possibilité de générer des données de manière synthétique, par exemple des numéros de sécurité sociale correctement formatés et masqués, qu'elles peuvent ensuite utiliser pour tester les fonctionnalités.

Entrainement d'employé

Les entreprises peuvent utiliser la virtualisation des services pour former leurs employés à une application qu'ils utiliseront au quotidien. Cela évite aux stagiaires d'avoir à se former à la version de production réelle du logiciel, qui peut être liée à plusieurs applications compliquées, et les empêche de modifier ou de supprimer des données sensibles.

Intégration des partenaires

Les entreprises exposent souvent les API aux clients ou aux partenaires commerciaux, y compris les environnements de test pour faciliter l'intégration. La maintenance de ces environnements de test pour les partenaires a un coût, comme tout autre environnement. La virtualisation des services est une excellente technique pour offrir aux partenaires un accès aux environnements sandbox de vos API pour s'intégrer plus facilement à moindre coût.

Meilleures pratiques pour la virtualisation des services

Plusieurs domaines peuvent tirer parti de la virtualisation des services pour améliorer la productivité.

  • Virtualisez uniquement ce qui compte.
    Il n'est pas nécessaire de créer la totalité, ni même une grande partie, du comportement réel du système que vous virtualisez. Il vous suffit d'implémenter les transactions essentielles. Et n'essayez pas d'émuler des requêtes ad hoc. Si vous rencontrez un cas de test erroné dû à des entrées erronées, vous pouvez générer une transaction virtualisée qui le réplique.
  • Reconnaissez les cas de test que vous soutenez.
    N'incluez des comportements dans votre service virtuel qu'après avoir compris comment les cas de test interagissent avec eux. Votre plan de test doit définir précisément les transactions à inclure dans la virtualisation. Laissez le plan de test déterminer les transactions à virtualiser.
  • Testez le bon système.
    Assurez-vous de créer des scénarios de test qui valident le système testé, et non la virtualisation des services. Simulez une réplique idéale du composant dépendant. Parallèlement, la virtualisation doit être suffisamment intelligente pour permettre au client de finaliser un workflow. Par exemple, lors d'un test d'interface utilisateur pour une banque, le service virtuel doit uniquement assurer la représentation correcte d'un retrait ou d'un dépôt, sans avoir à vérifier le solde du compte.

Exemple de virtualisation des données

Une entreprise de e-commerce développant un nouveau système de gestion des commandes intègre plusieurs API tierces pour le traitement des paiements, l'expédition et la gestion des stocks. Lors des tests d'intégration, l'équipe d'assurance qualité a besoin de données de test réalistes représentant différents scénarios de commande, y compris des cas extrêmes comme les ruptures de stock, les expéditions partielles et les échecs de paiement. Cependant, s'appuyer sur les données de production soulève des problèmes de confidentialité. De plus, la coordination avec des partenaires externes pour obtenir les conditions de test adéquates entraîne des retards importants.

Grâce à la virtualisation des services, l’équipe simule les services dépendants et génère des données de test synthétiques qui reflètent les transactions du monde réel, sans avoir besoin d’accéder à des données de production sensibles.

Ils utilisent le trafic enregistré pour déduire automatiquement les modèles de données et les contraintes, puis génèrent divers ensembles de données couvrant un large éventail de scénarios. Les messages JSON sont gérés grâce à des vues arborescentes intuitives, et le masquage des données garantit le respect de la confidentialité. Chaque équipe pouvant créer et gérer ses propres ensembles de données de test de manière indépendante, les tests ne sont plus retardés par le provisionnement des données ni impactés par la pollution des données, ce qui accélère les cycles de publication tout en améliorant la couverture et la qualité des tests.

Graphique comparant le flux de travail sans virtualisation des services et avec virtualisation des services

Comment démarrer avec la virtualisation des services

La virtualisation des services est un outil puissant pour simuler les dépendances lors des tests et du développement logiciels. Voici comment démarrer :

  1. Comprendre les bases. La virtualisation des services implique la création de versions virtuelles de composants tels que des API, des bases de données ou des services tiers. Cela vous permet de tester et de développer sans dépendre des systèmes réels.
  2. Choisissez le bon outil. Plusieurs outils sont disponibles avec des fonctionnalités uniques. Choisissez celui qui répond aux besoins de votre équipe.
  3. Configurez votre environnement. Installez l'outil choisi et configurez-le pour émuler les services dont vous avez besoin. Par exemple, vous pouvez créer des ressources et des intervenants virtuels pour simuler des comportements spécifiques.
  4. Définir des scénarios. Identifiez les scénarios que vous souhaitez tester. Il peut s'agir de services indisponibles, de réponses lentes ou de conditions d'erreur spécifiques.
  5. Intégrez-le à votre flux de travail. Intégrez la virtualisation des services à vos processus de développement et de test. Cela favorise l'intégration continue et les tests précoces.
  6. Apprendre et expérimenter. De nombreux outils proposent des tutoriels et des guides. Par exemple, Parasoft Virtualize fournit des instructions étape par étape pour créer des services virtuels.

Outils de virtualisation des services

Il existe deux types de outils de virtualisation des services.

  1. Outils légers. Des outils gratuits et open source comme Traffic Parrot et Mockito offrent aux débutants un moyen simple et ponctuel d'explorer les avantages de la virtualisation des services. Les équipes les adoptent souvent pour des projets spécifiques. Cependant, ces solutions légères présentent généralement des capacités limitées et une ergonomie médiocre pour les utilisateurs non techniques. Malgré leur gratuité initiale, leur utilisation à long terme devient souvent coûteuse en raison des besoins de maintenance et de personnalisation.
  2. Outils d'entreprise. Offrant des fonctionnalités robustes pour les utilisateurs expérimentés, les outils de virtualisation d'entreprise favorisent la collaboration en équipe et une intégration transparente aux pipelines CI/CD. Ces solutions excellent dans la gestion de volumes de trafic élevés tout en maintenant les performances, ce qui les rend idéales pour les environnements DevOps. Bien que plus performantes que les alternatives gratuites, elles nécessitent un investissement ; les équipes doivent donc évaluer soigneusement leurs besoins avant de les adopter.

Comment choisir le bon outil de virtualisation de service

La meilleure façon de choisir une solution de virtualisation de services adaptée à votre organisation est de :

  1. Examinez les différentes capacités dont votre équipe peut avoir besoin.
  2. Identifier les solutions qui incluent ces capacités.
  3. Pensez aux besoins futurs en matière de capacités.
Solutions

Fonctionnalités sans script

Offrez la possibilité de créer des services virtuels sans écrire de code ou de générer automatiquement des services virtuels à partir des enregistrements de trafic. Les testeurs et autres non-développeurs peu familiarisés avec les implémentations de services peuvent facilement comprendre, créer et partager des services virtuels. Cela permet une adoption plus rapide, une meilleure collaboration au sein des équipes et une utilisation plus large.

Création rapide de services virtuels avant que le service réel ne soit disponible

Permettre le développement de services virtuels parallèlement à des services réels permet un développement parallèle, évitant ainsi les désynchronisations des processus Agile. Pour ce faire, il est important de rechercher des solutions prenant en charge la création de services virtuels à partir de fichiers de définition de services. Cela permet aux équipes de décaler les tests à gauche en créant un service virtuel de la dépendance non encore développée nécessaire à leur workflow de test.

Corrélation de réponse intelligente

Permet aux services virtuels de réagir différemment en fonction des requêtes entrantes. Cela garantit un comportement précis et dynamique des services, adapté à chaque requête. Les différents types de corrélation de réponse à prendre en compte sont les suivants :

  • Corrélation de déploiement pour garantir que chaque service virtuel traite uniquement les messages qui lui sont destinés en distinguant les messages entre différents écouteurs, tels que HTTP et Kafka.
  • Corrélation des messages pour acheminer les messages vers une logique de réponse appropriée en fonction de modèles, tels que la distinction entre les opérations « ajouter un compte » et « mettre à jour un compte ».
  • Corrélation des sources de données pour générer des réponses dynamiques en fonction des informations clés de la requête. Par exemple, répondre différemment à différents comptes clients.

Découpler les données des intervenants pour les services virtuels dynamiques

Améliorez la flexibilité de la virtualisation en extrayant la logique des données. Ces solutions permettent aux services virtuels de se connecter à diverses sources de données, comme Excel, CSV et bases de données actives, pour des recherches en temps réel, permettant ainsi des réponses dynamiques et en constante évolution.

Capacité à réutiliser les services

Favorise la collaboration entre les équipes, favorise le consensus sur les comportements de service clés et économise des efforts en simulant une fois les comportements de service partagés et en les réutilisant sur plusieurs services virtuels.

Un cadre d'extensibilité personnalisé

Prend en charge plusieurs langages de script, tels que Java, Python, JavaScript et Groovy, pour s'adapter à des expertises et des préférences variées. Il offre également une extensibilité permettant de gérer de nouveaux formats et protocoles de messages, permettant ainsi aux organisations de s'adapter efficacement aux normes du secteur ou aux implémentations personnalisées.

Prise en charge de l'authentification et de la sécurité

Valide la sécurité de la couche transport, comme les certificats SSL. Il prend également en charge divers mécanismes d'authentification, tels qu'OAuth, Basic Auth et Kerberos. De plus, il négocie et émule la sécurité de la couche message, notamment le chiffrement des données utiles, SAML et les signatures. Ces fonctionnalités garantissent des services virtuels réalistes et aident à identifier les failles des mécanismes d'authentification ou de sécurité.

Environnements de performances configurables

Permet des tests de performances précis en émulant des dépendances hors périmètre. Les services virtuels permettent des tests de performances plus précoces sans dépendre uniquement d'environnements complets. Les solutions doivent prendre en charge des délais de performance ajustables, statiques et dynamiques, par exemple pour ralentir les performances en cas d'utilisation accrue.

Solutions

Fonctionnalités sans script

Offrez la possibilité de créer des services virtuels sans écrire de code ou de générer automatiquement des services virtuels à partir des enregistrements de trafic. Les testeurs et autres non-développeurs peu familiarisés avec les implémentations de services peuvent facilement comprendre, créer et partager des services virtuels. Cela permet une adoption plus rapide, une meilleure collaboration au sein des équipes et une utilisation plus large.

Création rapide de services virtuels avant que le service réel ne soit disponible

Permettre le développement de services virtuels parallèlement à des services réels permet un développement parallèle, évitant ainsi les désynchronisations des processus Agile. Pour ce faire, il est important de rechercher des solutions prenant en charge la création de services virtuels à partir de fichiers de définition de services. Cela permet aux équipes de décaler les tests à gauche en créant un service virtuel de la dépendance non encore développée nécessaire à leur workflow de test.

Corrélation de réponse intelligente

Permet aux services virtuels de réagir différemment en fonction des requêtes entrantes. Cela garantit un comportement précis et dynamique des services, adapté à chaque requête. Les différents types de corrélation de réponse à prendre en compte sont les suivants :

  • Corrélation de déploiement pour garantir que chaque service virtuel traite uniquement les messages qui lui sont destinés en distinguant les messages entre différents écouteurs, tels que HTTP et Kafka.
  • Corrélation de messages pour acheminer les messages vers une logique de réponse appropriée en fonction de modèles, tels que la distinction entre les opérations « ajouter un compte » et « mettre à jour un compte ».
  • Corrélation des sources de données pour générer des réponses dynamiques en fonction des informations clés de la requête. Par exemple, répondre différemment à différents comptes clients.

Découpler les données des intervenants pour les services virtuels dynamiques

Améliorez la flexibilité de la virtualisation en extrayant la logique des données. Ces solutions permettent aux services virtuels de se connecter à diverses sources de données, comme Excel, CSV et bases de données actives, pour des recherches en temps réel, permettant ainsi des réponses dynamiques et en constante évolution.

Capacité à réutiliser les services

Favorise la collaboration entre les équipes, favorise le consensus sur les comportements de service clés et économise des efforts en simulant une fois les comportements de service partagés et en les réutilisant sur plusieurs services virtuels.

Un cadre d'extensibilité personnalisé

Prend en charge plusieurs langages de script, tels que Java, Python, JavaScript et Groovy, pour s'adapter à des expertises et des préférences variées. Il offre également une extensibilité permettant de gérer de nouveaux formats et protocoles de messages, permettant ainsi aux organisations de s'adapter efficacement aux normes du secteur ou aux implémentations personnalisées.

Prise en charge de l'authentification et de la sécurité

Valide la sécurité de la couche transport, comme les certificats SSL. Il prend également en charge divers mécanismes d'authentification, tels qu'OAuth, Basic Auth et Kerberos. De plus, il négocie et émule la sécurité de la couche message, notamment le chiffrement des données utiles, SAML et les signatures. Ces fonctionnalités garantissent des services virtuels réalistes et aident à identifier les failles des mécanismes d'authentification ou de sécurité.

Environnements de performances configurables

Permet des tests de performances précis en émulant des dépendances hors périmètre. Les services virtuels permettent des tests de performances plus précoces sans dépendre uniquement d'environnements complets. Les solutions doivent prendre en charge des délais de performance ajustables, statiques et dynamiques, par exemple pour ralentir les performances en cas d'utilisation accrue.

En plus des fonctionnalités ci-dessus, vous devez évaluer les flux de travail optimisés et les technologies prises en charge.

Flux de travail optimisés

  • Création et maintenance automatiques de services virtuels
  • Création d'actifs basée sur l'IA
  • Gestion et génération de données de test
  • Réutilisation des données
  • Basculement vers un système en direct
  • Émulation de comportement avec état

Technologies prises en charge

  • Virtualisation des API REST
  • Virtualisation de l'API SOAP
  • Messagerie API asynchrone
  • Virtualisation MQ/JMS
  • Virtualisation de l'IOT et des microservices
  • Virtualisation de la base de données
  • Virtualisation de pages Web
  • Virtualisation du transfert de fichiers
  • Mainframe et longueur fixe
  • Virtualisation EDI
  • FIX, Swift et autres protocoles

Découvrez la valeur de Parasoft Virtualize

Découvrez le retour sur investissement potentiel que votre organisation pourrait connaître avec la solution de virtualisation des services de Parasoft.

Calculez vos économies »

Image abstraite d'un graphique à secteurs et d'analyses démontrant Parasoft Jtest
Image de bannière rectangulaire avec principalement du bleu foncé et des coins inclinés en bleu standard. Dans le coin supérieur droit se trouve un collage d'icônes de produits Parasoft pour DTP, C/C++test, CTP, Jtest, Selenic, Insure++, C/C++test CT, dotTEST, Virtualize et SOAtest.

Améliorez vos tests logiciels avec les solutions Parasoft.

Démonstration de la plateforme