Découvrez comment la solution Parasoft Continuous Quality permet de contrôler et de gérer les environnements de test pour fournir des logiciels de haute qualité en toute confiance. Inscrivez-vous pour la démo >>

BLOG

Comment utiliser la virtualisation avec état pour inciter les chefs de produit à se concentrer sur ce qui est important

Comment utiliser la virtualisation avec état pour inciter les chefs de produit à se concentrer sur ce qui est important Temps de lecture : 5 minutes
En ce qui concerne les utilisateurs finaux, ils ne se soucient pas de la folie back-end qui se déroule sur votre site. La principale préoccupation d'un utilisateur est de faire quoi que ce soit sur la page Web, quelle que soit la séquence d'étapes nécessaires pour y parvenir. Un service virtuel capable de simuler ce comportement permettra des tests de bout en bout plus tôt, une meilleure couverture de toutes les exigences de la logique métier et des démonstrations de produits efficaces pour les chefs de produit.

Dans l'une de nos revues de sprint les moins glamour, l'un des chefs de produit a montré de la frustration face à la démo de notre équipe, car nous ne pouvions montrer que les fonctionnalités / services nouvellement mis en œuvre individuellement et non le flux de travail de bout en bout. Le raisonnement en était simplement parce qu'il n'y avait pas encore assez de fonctionnalités mises en œuvre pour relier les données entre les différents services. Pour cette user story en particulier, le chef de produit ne se souciait pas de voir les pièces individuelles du puzzle, il voulait voir les pièces assemblées dans leur ensemble: la logique métier.

Donc, étant une entreprise qui fabrique des outils de test de logiciels, nous utilisé l'un d'eux donner à notre chef de produit ce qu'il voulait. Et depuis lors, nous avons tiré parti de la virtualisation des services (vous ne savez pas ce que c'est ? En savoir plus sur la virtualisation des services ici.) dans beaucoup de nos démos et dans notre flux de travail global. La virtualisation des services nous permet d'utiliser des services virtuels pour représenter des services indisponibles qui sont encore en développement par d'autres équipes travaillant à différentes cadences de sprint. Il nous permet de mettre en place des "stubs intelligents" qui présentent un comportement de dépendance réaliste ou un comportement complètement fictif pour répondre à nos besoins. En simulant les parties de nos démos qui ne sont pas disponibles, nous pouvons donner des démos de gestion de produits qui montrent des flux de travail entiers pour obtenir les commentaires dont nous avons besoin, sans nous attarder sur les éléments qui sont hors de portée.

Virtualisation des services avec l'outil CRUD du référentiel de données

La virtualisation des appels de service individuels est assez simple, mais s'assurer que ces appels individuels se comportent en conséquence dans le cadre d'un système entier est autre chose. Le sujet devient plus intéressant lorsque certains de ces services nécessitent la conservation de données persistantes entre les appels. Lorsque des données persistantes sont impliquées, il est essentiel que le service virtuel gère les données dans les différents états et simule véritablement le comportement du service réel pour représenter plus précisément la logique métier derrière l'application. Nous appelons cela la «virtualisation avec état» et vous pouvez tout lire sur notre blog sur ajouter de la vie à la virtualisation des services avec des tests de transition d'état et d'état. C'est ici qu'intervient l'outil CRUD Data Repository.

Parasoft Virtualiser (notre solution de virtualisation de services) possède une fonctionnalité appelée outil CRUD Data Repository. L'outil CRUD du référentiel de données (créer, lire, mettre à jour, supprimer) a été créé pour gérer le problème de persistance des données souvent associé aux services Web nécessitant une transition d'état.

Considérez l'expérience traditionnelle du panier d'achat. Disons qu'un système de panier est composé de 3 services Web: le service d'inventaire, le service de panier et le service de paiement. Chacun de ces services a son propre ensemble de données, mais leurs enregistrements partagent un élément ou un attribut (ID d'inventaire, ID de panier, ID de transaction) qui doit être honoré pour passer au service en aval. En plus de l'élément partagé, l'enregistrement des articles dans le panier, leur montant et le prix total calculé doivent être conservés tout au long de l'expérience d'achat pour remplir le processus de commande.

Une solution minimale serait de virtualiser un scénario fixe dans lequel un utilisateur recherche un article statique, ajoute l'article au panier et termine enfin le paiement. Cependant, nous savons que les achats en ligne peuvent être plus complexes. Lorsque le service réel est échangé avec le service virtuel, le comportement doit être transparent et transparent pour tous les autres services interagissant avec lui. Par conséquent, nous ne pouvons pas supposer que ce sera le seul scénario exécuté sur le service virtuel.

Un utilisateur peut décider d'ajouter un article différent, de mettre à jour l'article d'origine ou de le supprimer tous ensemble dans un acte soudain de mécontentement ou de fatigue d'achat. Le comportement humain est imprévisible. L'outil CRUD Data Repository nous permet de simuler cette imprévisibilité en créant et en modifiant des enregistrements à la volée et le maintenir entre les actions de l'utilisateur. Cela nous permet d'accomplir facilement n'importe quelle séquence d'événements lancés sur le service virtuel. Toute arithmétique ou logique supplémentaire sera gérée par l'outil sans effort.

En plus de nos démos de sprint, j'ai eu le privilège d'assister cette année dans deux projets distincts où les capacités de l'outil CRUD Data Repository se sont avérées extrêmement précieuses. Laissez-moi vous guider à travers eux.

Stabilisation des données d'environnement dynamique pendant les tests de performance

Un test de performance était requis pour une application qui s'intégrait à plusieurs services tiers. L'équipe de développement disposait déjà d'un ou deux enregistrements statiques qu'elle utilisait pour valider que l'application se comportait comme prévu tout au long de son test. Cependant, pour que le test de performance soit valide, les données et les actions effectuées dans le test devraient être aléatoires avec une variabilité élevée, pour simuler correctement un scénario réel. L'état des ensembles de données individuels devait être cohérent entre tous les services individuels, y compris les services tiers. Il aurait été assez simple pour l'équipe de développement d'injecter de nouveaux enregistrements de base de données dans chaque service tiers dépendant, mais malheureusement, l'accès aux environnements sandbox a été un coût élevé et une pléthore de maux de tête potentiels.

L'équipe a pu mettre en œuvre avec succès son test de performance à l'aide de la virtualisation des services et de l'outil CRUD Data Repository. Tout enregistrement qui n'existait pas dans le service virtualisé pendant l'exécution serait créé dans son état initial par l'outil dans une configuration «catch all». Le service virtuel utiliserait alors l'enregistrement nouvellement créé pour répondre avec succès à la demande et le modifierait pendant la durée de vie du test. La configuration était étonnamment indolore et garantissait un flux de bout en bout réel et fiable pour chaque utilisateur unique généré par l'outil de test de performance.

Injection de données en temps réel dans un système sous test

Le deuxième cas était inhabituel, mais certainement amusant à virtualiser. L'affaire concernait le test d'une application fonctionnant avec un système d'immatriculation des véhicules géré par l'État. Chaque fois qu'un nouveau NIV (numéro d'identification du véhicule) était ajouté à l'application, il enverrait des appels asynchrones au système d'enregistrement pour demander les informations complètes du véhicule. Si le NIV n'existait pas dans le système, il répondrait comme non enregistré. Malheureusement, le système d'enregistrement avait une politique obligatoire qui exigeait que les informations sur le nouveau véhicule soient insérées manuellement par une personne (oui, une personne vivante et respirante). Le système répondrait différemment si les informations relatives au NIV demandé n'étaient pas enregistrées après un certain nombre de demandes.

Ce comportement général est courant pour les services asynchrones. C'est essentiellement l'équivalent d'un enfant qui demande «sommes-nous encore là?» lors d'un voyage sur la route - une question que l'on ignore généralement à moins qu'ils ne se rapprochent réellement.

Une fois que la personne a enregistré manuellement les informations, le système répondait avec la charge utile de confirmation. Le but ici était de simuler le système d'immatriculation du véhicule pour tester l'application de manière indépendante. Le défi consistait à déterminer comment configurer le service virtuel pour répondre différemment à une demande identique à des moments différents. Pour ce faire, nous avons utilisé l'outil CRUD Data Repository pour tenir compte du nombre d'appels effectués avec la même demande. Une fois qu'un nombre de comptage particulier a été atteint, l'outil CRUD mettrait à jour l'état de l'enregistrement pour que l'actif virtuel réponde différemment. L'outil CRUD a également été configuré pour créer un nouvel enregistrement pour tout NIV demandé de manière aléatoire dans une fenêtre de temps prévue afin de simuler le processus d'enregistrement manuel. Quelque chose qui paraissait difficile au départ a été facilement réalisé avec le bon outil.

Résumé

La vérité est que lorsqu'il s'agit d'un utilisateur final ou d'un chef de produit, la folie back-end qui se produit lors d'une simple action de page Web est négligeable. La principale préoccupation d'un utilisateur est que tout ce qu'il est venu faire sur la page Web sera fait avec succès, quelle que soit la séquence d'étapes nécessaires pour y parvenir. Un service virtuel capable de simuler ce comportement permettra des tests de bout en bout plus tôt, une couverture améliorée de toutes les exigences de la logique métier et des démonstrations de produits efficaces. Avec les récentes améliorations apportées à Parasoft VirtualiserL'interface utilisateur de l'outil CRUD et la conception de la configuration, il est désormais beaucoup plus facile de gérer des scénarios complexes et de fournir les fonctionnalités du monde réel que vos parties prenantes, chefs de produit et testeurs recherchent, le plus tôt possible.

Choisir la bonne solution de virtualisation de service

Écrit par

Omar ramirez

Omar est ingénieur SQA chez Parasoft.

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