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

Améliorez le stubbing et le mocking avec la virtualisation des services

Par Parasoft

9 février 2012

3  min lire

Quel est le lien entre la virtualisation des services et le stub et le mocking ?

Les blocages sont endémiques dans les environnements de développement parallèles et agiles, où différentes équipes travaillent simultanément sur des composants système interconnectés - et chaque équipe doit accéder aux composants de l'autre afin d'accomplir ses propres tâches. Mais lorsqu'une équipe finit par attendre l'accès à des fonctionnalités dépendantes, l'agilité est étouffée.

Une approche pour contourner un tel conflit pour tester les ressources consiste pour chaque membre de l'équipe à créer de simples stubs ou simulacres pour remplacer la ressource dépendante. Cependant, il existe de sérieux risques associés à cette approche:

  • Le stub peut ne pas représenter correctement l'étendue complète du comportement final du composant.
  • Différents membres de l'équipe peuvent développer et travailler sur différents stubs en fonction de différentes hypothèses.

Dans les deux cas, le résultat final est que la qualité et / ou la productivité seront compromises. Si l'application est construite sur une hypothèse erronée, des défauts pourraient être introduits (si cette différence n'est pas détectée) ou un retravail sera nécessaire (si la différence est détectée). De plus, si l'application est testée par rapport à une hypothèse erronée, il existe un risque important que la fonctionnalité «validée» ne fonctionne pas réellement comme prévu et que d'autres défauts aient été négligés.

Comment la virtualisation des services contribue à la simulation / stubbing

Alors que les stubs sont créés du point de vue de la suite de tests afin de "sauter" les composants système indisponibles, la virtualisation des services implique la construction d'actifs virtuels pour rendre le comportement des composants contraints accessible à toute l'équipe.

Les utilisateurs peuvent créer l'actif, puis valider ce comportement avec les parties dépendantes si nécessaire. Avec l'actif provisionné de manière centralisée, tous les membres de l'équipe accèderont au même actif, ce qui exprime le comportement attendu. Cela permet une cohérence absolue et un risque réduit de défauts de glissement dans le produit final.

La virtualisation de services véritablement sans script permet d'accélérer l'adoption de la virtualisation, que des ressources de test simples ou complexes soient nécessaires. Un large éventail de types de messages signifie une meilleure prise en charge de votre domaine d'application prévu.

La virtualisation des services émule un comportement plus réaliste

De plus, la virtualisation des services peut représenter un comportement beaucoup plus réaliste que de simples stubs et simulacres. Vous pouvez capturer le comportement actuel des systèmes en direct ou du trafic enregistré, mettre à jour le comportement si nécessaire pour couvrir les modifications prévues, puis configurer cet actif virtuel en paramétrant son comportement conditionnel, ses critères de performance et ses données de test.

Vous pouvez également facilement modifier l'actif virtuel pour produire l'assortiment approprié de conditions de panne, d'exceptions, etc. qui doivent être exercées afin de valider la gamme complète du comportement du système - y compris sa capacité à répondre correctement (ou au moins échouer en douceur) dans diverses situations exceptionnelles.

La virtualisation permet des conditions de test complexes (par exemple, hypothèses, sécurité, basculement, performances et scénarios de test négatifs) et découvre les problèmes de performances cachés dans votre application testée en contrôlant les performances du service, pour les tests de charge ou pour la lenteur simulation de réseau. Les utilisateurs peuvent facilement configurer une variété de scénarios par la virtualisation de services de pilotage dynamique des données à partir de sources de données externes ou d'une infrastructure de référentiel de données intégrée.

La virtualisation des services représente un comportement composite

Les actifs virtuels créés à partir de la virtualisation des services n'ont pas besoin de fonctionner comme des silos; ils peuvent représenter un comportement composite. Par exemple, un appel pour transférer des fonds dans un point de terminaison virtuel peut déclencher une mise à jour du solde de compte sur un autre. Cela permet aux actifs virtuels de se comporter de manière avec état et vous permet de modéliser facilement le comportement d'un système entier, même si le comportement croise plusieurs connexions, protocoles ou interfaces.

Un comportement avec état est un élément essentiel de la création de dépendances virtualisées réalistes. En d'autres termes, une dépendance virtualisée conserve son état d'un test à l'autre. Pour disposer de services virtualisés fiables et réutilisables, il est essentiel qu'ils puissent imiter suffisamment le service réel pour fournir des résultats significatifs à l'application testée, ce qui, à son tour, nécessite des tests avec état. En plus de l'état, il est également nécessaire de simuler les changements d'état en fonction de différentes entrées potentielles, le service virtualisé doit étendre ce comportement avec état pour permettre le test de transition d'état.

La virtualisation des services permet le test des limites

Parfois, pour reproduire un défaut, des données qui n'existent normalement pas dans l'environnement réel sont nécessaires. En chargeant des données synthétiques dans des services virtuels, toutes sortes de réponses hors limites sont possibles, qui sont des cas extrêmes en réalité. Cela facilite grandement les tests de sécurité et de condition aux limites, car vous pouvez simuler exactement les réponses que vous recherchez.

Par Parasoft

Les outils de test de logiciels automatisés de pointe de Parasoft prennent en charge l'ensemble du processus de développement logiciel, depuis le moment où le développeur écrit la première ligne de code jusqu'aux tests unitaires et fonctionnels, jusqu'aux tests de performance et de sécurité, en exploitant des environnements de test simulés en cours de route.

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