Meilleures pratiques en matière d'automatisation des tests de pipeline de données

Meilleures pratiques en matière d'automatisation des tests de pipeline de données

Nœud source: 2035833

Les processus d'intégration de données bénéficient de tests automatisés comme n'importe quel autre logiciel. Pourtant, trouver un projet de pipeline de données avec un ensemble approprié de tests automatisés est rare. Même lorsqu'un projet comporte de nombreux tests, ils sont souvent non structurés, ne communiquent pas leur objectif et sont difficiles à exécuter.

Une caractéristique de pipeline de données le développement est la publication fréquente de données de haute qualité pour obtenir les commentaires et l'acceptation des utilisateurs. À la fin de chaque itération du pipeline de données, on s'attend à ce que les données soient de haute qualité pour la phase suivante. 

Les tests automatisés sont essentiels pour les tests d'intégration des pipelines de données. Les tests manuels ne sont pas pratiques dans les environnements de développement hautement itératifs et adaptatifs.

Principaux problèmes liés au test manuel des données

Premièrement, cela prend trop de temps et constitue un obstacle critique à la livraison fréquente des pipelines. Les équipes qui s'appuient principalement sur les tests manuels finissent par reporter les tests à des périodes de test dédiées, ce qui permet aux bogues de s'accumuler. 

Deuxièmement, les tests manuels du pipeline de données ne sont pas suffisamment reproductibles pour les tests de régression. 

L'automatisation des tests du pipeline de données nécessite une planification initiale et une diligence continue, mais une fois que les équipes techniques adoptent l'automatisation, le succès du projet est plus assuré.

Variantes de pipelines de données

  • Extraire, transformer et charger (ETL)
  • Extraire, charger et transformer (ELT)
  • Lac de données, pipelines d'entrepôt de données
  • Canalisations en temps réel
  • Pipelines d'apprentissage automatique

Composants de pipeline de données pour l'automatisation des tests

Les pipelines de données se composent de plusieurs composants, chacun responsable d'une tâche spécifique. Les éléments d'un pipeline de données incluent :

  • Les sources de données: L'origine des données
  • Ingestion de données : Le processus de collecte de données à partir de la source de données
  • Transformation des données: Le processus de transformation des données collectées dans un format pouvant être utilisé pour une analyse plus approfondie
  • Vérifications/validations des données : Le processus pour s'assurer que les données sont exactes et cohérentes
  • Stockage de données: Le processus de stockage des données transformées et validées dans un entrepôt de données ou un lac de données
  • L'analyse des données: Le processus d'analyse des données stockées pour identifier les modèles, les tendances et les idées

Meilleures pratiques pour automatiser les tests de pipeline de données

Quoi et quand automatiser (ou même si vous avez besoin d'automatisation) sont des décisions cruciales pour l'équipe de test (ou de développement). La sélection de caractéristiques de produit adaptées à l'automatisation détermine en grande partie le succès de l'automatisation. 

Lors de l'automatisation des tests pour un pipeline de données, les meilleures pratiques incluent :

  • Définir des objectifs de test clairs et spécifiques : Avant de commencer les tests, il est essentiel de définir ce que vous voulez atteindre grâce aux tests. Cela vous aidera à créer des tests efficaces et efficients qui fournissent des informations précieuses.
  • Testez tous les workflows du pipeline de données : Un pipeline de données se compose généralement de plusieurs composants : ingestion, traitement, transformation et stockage des données. Il est important de tester chaque composant pour garantir le flux correct et fluide des données dans le pipeline.
  • Utilisez des données de test crédibles : Lors du test d'un pipeline de données, il est important d'utiliser des données réalistes qui imitent des scénarios réels. Cela aidera à identifier les problèmes qui peuvent survenir lors de la manipulation de différents types de données.
  • Automatisez avec des outils efficaces : Ceci peut être réalisé en utilisant des frameworks et des outils de test.
  • Surveillez régulièrement le pipeline : Même une fois les tests terminés, il est essentiel de surveiller régulièrement le pipeline pour s'assurer qu'il fonctionne comme prévu. Cela aidera à identifier les problèmes avant qu'ils ne deviennent des problèmes critiques.
  • Impliquer les parties prenantes : Impliquez les parties prenantes telles que les analystes de données, les ingénieurs de données et les utilisateurs métier dans le processus de test. Cela aidera à garantir que les tests sont pertinents et utiles pour toutes les parties prenantes.
  • Tenir à jour la documentation : Il est important de conserver des documents décrivant les tests, les cas de test et les résultats des tests. Cela aidera à garantir que les tests peuvent être reproduits et maintenus dans le temps.

Faire attention; l'automatisation de la modification des fonctionnalités instables doit être évitée. Aujourd'hui, aucun outil métier connu ou ensemble de méthodes/processus ne peut être considéré comme un test complet de bout en bout du pipeline de données. 

Tenez compte de vos objectifs d'automatisation des tests

L'automatisation des tests de pipeline de données est décrite comme l'utilisation d'outils pour contrôler 1) l'exécution des tests, 2) les comparaisons des résultats réels aux résultats prédits, et 3) la configuration des conditions préalables aux tests et d'autres fonctions de contrôle des tests et de rapport des tests. 

Généralement, l'automatisation des tests implique l'automatisation d'un processus manuel existant qui utilise un processus de test formel.

Bien que les tests manuels du pipeline de données puissent révéler de nombreuses failles de données, ils sont laborieux et chronophages. De plus, les tests manuels peuvent être inefficaces pour détecter certains défauts. 

L'automatisation du pipeline de données implique le développement de programmes de test qui, autrement, devraient être exécutés manuellement. Une fois les tests automatisés, ils peuvent être répétés rapidement. Il s'agit souvent de la méthode la plus rentable pour un pipeline de données qui peut avoir une longue durée de vie. Même des corrections ou des améliorations mineures au cours de la durée de vie du pipeline peuvent entraîner la rupture de fonctionnalités qui fonctionnaient auparavant.

L'intégration de tests automatisés dans le développement de pipelines de données présente un ensemble unique de défis. Les outils de test de développement de logiciels automatisés actuels ne sont pas facilement adaptables aux projets de bases de données et de pipelines de données. 

La grande variété d'architectures de pipeline de données complique encore ces défis car elles impliquent plusieurs bases de données nécessitant un codage spécial pour l'extraction des données, les transformations, le chargement, nettoyage des données, agrégations de données et enrichissement des données.

Les outils d'automatisation des tests peuvent être coûteux et sont généralement utilisés avec les tests manuels. Cependant, ils peuvent devenir rentables à long terme, en particulier lorsqu'ils sont utilisés à plusieurs reprises dans des tests de régression.

Candidats fréquents pour l'automatisation des tests   

  • Test de rapport BI 
  • Entreprise, conformité gouvernementale
  • Traitement d'agrégation de données
  • Nettoyage et archivage des données
  • Tests de qualité des données
  • Réconciliation des données (par exemple, source à cible)
  • Transformations de données
  • Chargements de données de table de dimension
  • Tests de bout en bout
  • ETL, ELT tests de validation et de vérification
  • Charges de données de table de faits 
  • Vérification du chargement des fichiers/données
  • Test de charge incrémentielle
  • Tests de charge et d'évolutivité
  • Fichiers, enregistrements, champs manquants
  • Test de performance 
  • Intégrité référentielle
  • Les tests de régression
  • Tests de sécurité
  • Test et profilage des données sources
  • Staging, validations des données ODS 
  • Tests unitaires, d'intégration et de régression

L'automatisation de ces tests peut être nécessaire en raison de la complexité du traitement et du nombre de sources et de cibles à vérifier. 

Pour la plupart des projets, les processus de test du pipeline de données sont conçus pour vérifier et mettre en œuvre la qualité des données.

La variété des types de données disponibles aujourd'hui présente des défis de test

Il existe une grande variété de types de données disponibles aujourd'hui, allant des types de données structurés traditionnels tels que le texte, les nombres et les dates aux types de données non structurés tels que l'audio, les images et la vidéo. De plus, divers types de données semi-structurées, telles que XML et JSON, sont largement utilisées dans le développement Web et l'échange de données.

Avec l'avènement de l'Internet des objets (IoT), divers types de données ont explosé, notamment les données de capteur, les données de localisation et les données de communication de machine à machine. Au fur et à mesure que ces types de données sont extraits et transformés, les tests peuvent devenir plus compliqués sans outils appropriés. Cela a conduit à de nouvelles technologies de gestion des données et à de nouvelles techniques analytiques telles que le traitement de flux, l'informatique de pointe et l'analyse en temps réel.

La figure 1 montre des exemples de types de données largement utilisés aujourd'hui. Le grand nombre représente des défis lorsqu'il s'agit de tester si les transformations requises sont correctement effectuées. Par conséquent, les professionnels des données doivent bien connaître un large éventail de types de données et être adaptables pour tester les tendances et technologies émergentes.

Figure 1 : Exemples de la variété des sources de données et des cibles de données

Évaluer les composants du pipeline pour d'éventuels tests automatisés

Les tests automatisés sont un élément clé des développements agiles et modernes. Nous pouvons appliquer cette prise de conscience au pipeline de données.

Un aspect essentiel des tests de pipeline de données est que le nombre de tests effectués continuera d'augmenter pour vérifier les fonctionnalités et la maintenance ajoutées. Figure 2 montre de nombreux domaines où l'automatisation des tests peut être appliquée dans un pipeline de données.

Figure 2 : Test des « points chauds » du début à la fin d'un pipeline de données

Lors de la mise en œuvre de l'automatisation des tests, les données peuvent être suivies depuis les couches source, via le traitement du pipeline de données, jusqu'aux charges dans le pipeline de données, puis enfin jusqu'aux applications ou rapports frontaux. Supposons que des données corrompues soient trouvées dans une application frontale ou un rapport. Dans ce cas, l'exécution de suites automatisées peut aider à déterminer plus rapidement si des problèmes individuels sont localisés dans des sources de données, un processus de pipeline de données, une base de données/datamart de pipeline de données nouvellement chargée ou des rapports de veille économique/d'analyse.

L'accent mis sur l'identification rapide des problèmes de données et de performances dans les architectures de pipeline de données complexes fournit un outil clé pour promouvoir l'efficacité du développement, raccourcir les cycles de construction et respecter les objectifs des critères de publication.

Décider des catégories de tests à automatiser

L'astuce consiste à déterminer ce qui doit être automatisé et comment gérer chaque tâche. Une série de questions doivent être prises en compte lors de l'automatisation des tests, telles que :

  • Quel est le coût de l'automatisation des tests ?
  • Qui est responsable de l'automatisation des tests (par exemple, Dev., QA, ingénieurs de données) ?
  • Quels outils de test doivent être utilisés (par exemple, open source, fournisseur) ?
  • Les outils choisis répondront-ils à toutes les attentes ?
  • Comment les résultats des tests seront-ils communiqués ?
  • Qui interprète les résultats des tests ?
  • Comment les scripts de test seront-ils maintenus ?
  • Comment allons-nous organiser les scripts pour un accès facile et précis ? 

La figure 3 montre des exemples de durées (pour l'exécution des tests, l'identification des défauts et les rapports) pour les cas de test manuels et automatisés à partir d'une expérience de projet réelle.

Figure 3: Comparaison des durées d'exécution des tests manuels et automatisés.

Les tests automatisés du pipeline de données visent à couvrir les fonctions les plus critiques pour le chargement d'un pipeline de données - la synchronisation et la réconciliation des données source et cible.

Avantages et limites des tests automatisés

 Défis de l'automatisation des tests

  • Rapport de test: Tester l'intelligence d'affaires ou les rapports analytiques grâce à l'automatisation
  • Complexité des données : Les tests de pipeline de données impliquent souvent des structures et des transformations de données complexes qui peuvent être difficiles à automatiser et nécessitent une expertise spécialisée.
  • Complexité du pipeline : Les pipelines de données peuvent être complexes et peuvent impliquer plusieurs étapes de traitement, ce qui peut être difficile à tester et à déboguer. De plus, les modifications apportées à une partie du pipeline peuvent avoir des conséquences imprévues en aval.

Avantages de l'automatisation des tests

  • Exécute les cas de test plus rapidement : L'automatisation peut accélérer la mise en œuvre des scénarios de test.
  • Crée une suite de tests réutilisable : Une fois les scripts de test exécutés avec les outils d'automatisation, ils peuvent être sauvegardés pour un rappel et une réutilisation faciles.
  • Facilite les rapports de test : Une caractéristique intéressante de nombreux outils automatisés est leur capacité à produire des rapports et des fichiers de test. Ces fonctionnalités représentent avec précision l'état des données, identifient clairement les lacunes et sont utilisées dans les audits de conformité. 
  • Réduit les coûts de personnel et de reprise : Le temps consacré aux tests manuels ou aux nouveaux tests après correction des défauts peut être consacré à d'autres initiatives au sein du service informatique.

Limites potentielles

  • Ne peut pas remplacer complètement les tests manuels : Bien que l'automatisation puisse être utilisée pour diverses applications et cas de test, il ne peut pas complètement remplacer les tests manuels. Des cas de test complexes existeront toujours où l'automatisation ne capturera pas tout, et pour les tests d'acceptation par les utilisateurs, les utilisateurs finaux doivent souvent effectuer des tests manuellement. Par conséquent, il est essentiel d'avoir la bonne combinaison de tests automatisés et manuels dans le processus. 
  • Coût des outils : Les outils de test commerciaux peuvent être coûteux, en fonction de leur taille et de leurs fonctionnalités. À première vue, une entreprise peut considérer cela comme un coût inutile. Cependant, la réutilisation seule peut rapidement en faire un atout. 
  • Coût de la formation : Les testeurs doivent être formés non seulement à la programmation, mais également à la programmation de tests automatisés. Les outils automatisés peuvent être compliqués à utiliser et peuvent nécessiter une formation des utilisateurs.
  • L'automatisation nécessite une planification, une préparation et des ressources dédiées : Le succès des tests automatisés dépend principalement d'exigences de test précises et du développement minutieux des cas de test avant le début des tests. Malheureusement, le développement de cas de test est encore principalement un processus manuel. Étant donné que chaque organisation et application de pipeline de données peut être unique, de nombreux outils de test automatisés ne créeront pas de cas de test.

Premiers pas avec l'automatisation des tests de pipeline de données

Tous les tests de pipeline de données ne sont pas adaptés à l'automatisation. Évaluez les situations ci-dessus pour déterminer quels types d'automatisation seraient bénéfiques pour votre processus de test et combien est nécessaire. Évaluez vos exigences de test et identifiez les gains d'efficacité qui peuvent être obtenus grâce à des tests automatisés. Les équipes de pipeline de données qui consacrent un temps considérable aux tests de régression en bénéficieront le plus. 

Développer une analyse de rentabilisation pour les tests automatisés. Le service informatique doit d'abord justifier la transmission de la valeur à l'entreprise. 

Évaluez les options. Après avoir évalué l'état actuel et les exigences au sein du service informatique, déterminez quels outils s'alignent sur les processus et environnements de test de l'organisation. Les options peuvent inclure des fournisseurs, open source, internes ou une combinaison d'outils. 

Conclusions

Alors que l'automatisation des tests est rapidement devenue une alternative essentielle aux tests manuels, de plus en plus d'entreprises recherchent des outils et des stratégies pour mettre en œuvre avec succès l'automatisation. Cela a conduit à une croissance significative des outils d'automatisation des tests basés sur Appium, Selenium, Katalon Studio et bien d'autres. Cependant, le pipeline de données et les ingénieurs de données, la BI et les équipes d'assurance qualité doivent avoir les bonnes compétences en programmation pour utiliser pleinement ces outils d'automatisation. 

De nombreux experts en informatique ont prédit que l'écart de connaissances entre les testeurs et les développeurs doit et sera continuellement réduit. Les outils de test automatisés du pipeline de données peuvent réduire considérablement le temps passé à tester le code par rapport aux méthodes manuelles conventionnelles.

À mesure que les capacités de développement de pipeline de données continuent d'augmenter, le besoin de tests de données automatisés plus complets et modernes augmente également.

Horodatage:

Plus de DATAVERSITÉ