Contrôlez les coûts d'automatisation des tests avec des données de test virtuelles
Comment obtenir de bonnes données de test qui protègent les informations sensibles sans vous ruiner ? Les tests logiciels automatisés peuvent être coûteux, en particulier pour les environnements complexes qui interagissent avec de nombreuses API et points de terminaison en aval.
Traditionnel
gestion des données de test (TDM) Il n'existe pas de méthode économique pour générer des modèles de données et des jeux de données simulés. En créant des jeux de données virtuels réutilisables pour tester les dépendances, vous pouvez réduire le coût de l'automatisation des tests et mieux contrôler vos données et environnements de test.
Façons de créer des données de test virtuelles avec des exemples pratiques.
Quand et comment postuler données de test techniques pour minimiser les coûts et maximiser la réutilisabilité.
Le coût élevé de la gestion traditionnelle des données de test
Obtenir de bonnes données de test est un défi de taille. Il ne s'agit pas seulement de disposer de données, mais aussi de disposer des bien Données. C'est comme crocheter une serrure : il faut une combinaison parfaite d'entrées pour obtenir le résultat souhaité. Pour les tests logiciels, cela implique de disposer des conditions préalables et des données d'entrée adéquates pour valider votre application en profondeur.
De nombreuses équipes consacrent une part importante de leur temps, parfois 30 à 60 %, à la recherche, la gestion et la création de données de test. Cela s'explique par :
Accès limité: Les équipes de test n'ont souvent pas d'accès direct aux sources de données en temps réel. Les données qu'elles obtiennent constituent généralement un sous-ensemble des données de production, et leur obtention est parfois retardée.
Grands volumes : Les données de production peuvent être massives, en particulier pour les applications de grande entreprise, ce qui rend leur gestion difficile.
Dépendances des données : La gestion de relations et de combinaisons de données complexes entre différents systèmes constitue un défi majeur.
Temps de rafraîchissement longs : Une fois les données de test épuisées, les équipes doivent recommencer tout le processus pour obtenir de nouvelles données.
Principaux points à retenir sur les défis liés aux données de test :
La préparation des données de test prend du temps, consommant 30 à 60 % du temps des testeurs.
Le manque d’accès direct aux sources de données et aux données de production est un problème courant.
Les volumes de données importants et les dépendances complexes créent des frais de gestion importants.
Les longs cycles d’actualisation des données de test ralentissent les processus de test.
Qu’est-ce qui rend les données de test bonnes (et mauvaises) ?
De bonnes données de test doivent être réalistes. Des données irréalistes peuvent sérieusement nuire à la confiance que vous accordez à vos tests. Si vos données ne reflètent pas l'utilisation réelle de votre application, vous risquez de passer à côté de bugs critiques ou d'obtenir de faux positifs. Cela peut obliger les développeurs à revérifier leur travail, augmentant ainsi les coûts du projet.
Les données doivent également être contrôlées par l'équipe. Lorsque les testeurs ne sont pas propriétaires de leurs données, cela engendre de la frustration. Si les données sont réinitialisées de manière inattendue ou gérées par une autre équipe, cela peut perturber les conditions préalables et les états de test que les testeurs ont mis du temps à mettre en place. Ce manque de propriété entraîne souvent des blocages et des cycles de test plus longs.
De plus, les changements d'état au sein de votre application doivent être visibles. Si vos données de test se concentrent uniquement sur les entrées et les sorties, vous risquez de passer à côté de ce qui se passe en coulisses, avec des processus complexes et asynchrones ou des dépendances externes. Il est alors difficile d'identifier des défauts spécifiques.
Enfin, les données doivent être découplées. Lorsque les données sont étroitement couplées, un changement dans un domaine peut engendrer des problèmes partout ailleurs, rendant difficile la résolution des problèmes ou la mise en œuvre de mises à jour sans répercussions. Des données mal couplées augmentent directement les coûts du projet.
Les approches traditionnelles et leurs pièges
Il existe plusieurs méthodes courantes pour obtenir des données de test, mais chacune comporte son propre ensemble de problèmes :
Clonage des bases de données de production : Cela semble être une méthode simple pour obtenir des données réelles, mais elle est souvent coûteuse et chronophage. Elle nécessite également des politiques strictes pour garantir la confidentialité et la conformité des données, limitant ainsi l'accès aux données.
Sous-ensemble/échantillonnage des données de production : Bien que cela aide à gérer le volume de données, cela nécessite une connaissance approfondie des ensembles de données et de l'ensemble de l'architecture du système pour garantir que le sous-ensemble est pertinent et ne perturbe pas d'autres parties de l'application.
Génération/synthèse de données : Cette approche évite les problèmes de confidentialité, car les données ne sont pas réelles. Cependant, le défi réside dans la définition de la logique et des modèles permettant de créer des données réellement utiles aux tests, plutôt que de simples valeurs aléatoires.
Ces méthodes traditionnelles conduisent souvent à des environnements de test partagés, à des solutions de gestion des données de test (TDM) lourdes et à des équipes ne respectant pas l'intégrité des données, ce qui contribue aux dépassements de projet et aux défauts potentiels s'échappant en production.
La solution : données de test virtuelles avec virtualisation des services
La virtualisation des services offre un moyen puissant de créer des données de test simulées ou virtuelles. Au lieu de vous appuyer sur des bases de données réelles ou des scripts complexes de génération de données, vous pouvez utiliser la virtualisation des services pour simuler le comportement de vos API et sources de données. Vous pouvez ainsi :
Créer des actifs virtuels : Créez des services virtuels qui imitent vos API et vos réponses de données.
Services de pilotage des données : Configurez ces services virtuels pour utiliser des données de test spécifiques, vous permettant de contrôler les données avec lesquelles vos tests interagissent.
Isoler les environnements de test : Donnez à chaque équipe son propre environnement de test isolé avec ses propres données contrôlées, favorisant ainsi l’appropriation et réduisant les conflits.
Aucune infrastructure de base de données requise : Vous pouvez gérer les données de test dans différents formats tels que les fichiers CSV sans avoir besoin de connaissances approfondies en DBA.
Environnements de test isolés : Créez et gérez facilement des espaces de test indépendants.
Étuis de protection d'angle : Manipulez les données à la volée pour tester les cas extrêmes sans impacter les autres.
Partage facile: Distribuez efficacement des ensembles de données de test à tous ceux qui en ont besoin.
Éliminer la complexité du schéma : Évitez les tracas liés à la gestion de schémas de bases de données sous-jacents complexes.
Capturer et masquer les données : Enregistrez uniquement les données nécessaires et masquez dynamiquement les informations sensibles.
Application pratique : une démonstration
Imaginez une application bancaire comme Fairbank. Grâce à la virtualisation des services, vous pouvez enregistrer les interactions avec l'application, comme la connexion et la consultation des soldes de compte. Ces données enregistrées peuvent ensuite être utilisées pour créer des actifs virtuels, c'est-à-dire des services virtuels qui fournissent ces données de test spécifiques.
Par exemple, vous pouvez capturer les données de compte, puis mettre à jour le service virtuel pour les utiliser. Si vous devez tester des scénarios avec des soldes négatifs ou un grand nombre de comptes, vous pouvez modifier directement l'ensemble de données virtuelles. Cela vous permet de :
Générer des données réalistes : Capturez et réutilisez des données qui reflètent des scénarios du monde réel.
Données de contrôle : Apportez des modifications à la volée aux données de test, comme l'ajustement des soldes de compte, sans affecter les autres équipes.
Gérer les changements d’état : Assurez-vous que vos données virtuelles reflètent les états d’application nécessaires aux tests.
Découpler les données : Modifiez les ensembles de données de manière indépendante sans impacter les autres parties du système ou les services virtuels.
Cette approche s’intègre parfaitement aux pipelines CI/CD, permettant le déploiement et la gestion automatisés des environnements de test et des données.
Quand utiliser les données de test virtuelles
Les données de test virtuelles sont particulièrement bénéfiques pour :
Équipes agiles : Il accélère les cycles de test en simplifiant la gestion des données de test et en réduisant la dépendance aux administrateurs de bases de données et la disponibilité des données de production. Les équipes peuvent effectuer des tests au cours du même sprint.
Environnements complexes : Lorsque votre application interagit avec plusieurs services et dépendances, la virtualisation de ces composants et de leurs données fournit un environnement de test stable et contrôlé.
Test de performance: Vous pouvez facilement générer de grands volumes de données uniques, telles que les informations d'identification des utilisateurs, nécessaires aux tests de performances.
En adoptant stratégies de données de test virtuelles, Les organisations peuvent réduire considérablement les dépassements de projets, améliorer la couverture des tests et empêcher les défauts d'atteindre la production. Les outils qui prennent en charge cette approche sont souvent low-code, évolutifs et s'intègrent parfaitement aux pratiques DevOps, rendant la gestion des données de test plus efficace et rentable.