Testeur de données grandes et petites: tendances, théorie, mon histoire

Bonjour à tous, je m'appelle Alexander et je suis ingénieur en qualité des données qui vérifie la qualité des données. Cet article expliquera comment j'en suis arrivé à cela et pourquoi en 2020, cette direction des tests s'est avérée être au sommet d'une vague.



Tendance mondiale


Le monde d'aujourd'hui est en train de subir une autre révolution technologique, dont l'un des aspects est l'utilisation de diverses données par diverses sociétés pour promouvoir leur propre volant de vente, leurs bénéfices et leurs relations publiques. Il semble que c'est la présence de bonnes données (de qualité), ainsi que de cerveaux habiles qui peuvent en tirer de l'argent (correctement traiter, visualiser, construire des modèles d'apprentissage automatique, etc.), sont devenus aujourd'hui la clé du succès pour beaucoup. S'il y a 15 à 20 ans, les grandes entreprises se livraient à un travail dense avec l'accumulation de données et leur monétisation, aujourd'hui c'est le lot de presque tous les gens sensés.

À cet égard, il y a plusieurs années, tous les portails de recherche d'emploi dans le monde ont commencé à déborder de postes vacants de Data Scientists, car tout le monde était sûr qu'en recrutant un tel spécialiste, vous pouvez créer un modèle de machine learning, prédire l'avenir et créer un «quantum». Bond pour l'entreprise. Au fil du temps, les gens ont réalisé que cette approche ne fonctionne presque jamais, car loin de toutes les données qui tombent entre les mains de ces spécialistes, elles conviennent aux modèles de formation.

Et les demandes des Data Scientists ont commencé: "Achetons plus de données de ceux-ci et ceux-là. ...", "Nous n'avons pas assez de données ...", "Nous avons besoin de plus de données et de préférence de haute qualité ...". Sur la base de ces demandes, de nombreuses interactions entre les entreprises qui possèdent un ensemble de données particulier ont commencé à s'aligner. Naturellement, cela nécessitait l'organisation technique de ce processus - pour se connecter à la source de données, les télécharger, vérifier qu'ils sont entièrement chargés, etc. Le nombre de ces processus a commencé à augmenter, et aujourd'hui nous avons reçu un énorme besoin d'un autre type de spécialistes - Données Les ingénieurs qualité - ceux qui surveilleraient le flux de données dans le système (pipelines de données), la qualité des données à l'entrée et à la sortie, tireraient des conclusions sur leur adéquation, leur intégrité et d'autres caractéristiques.

La tendance des ingénieurs Data Quality nous est venue des États-Unis, où au milieu d'une ère de capitalisme qui fait rage, personne n'est prêt à perdre la bataille pour les données. Ci-dessous, j'ai fourni des captures d'écran des deux sites de recherche d'emploi les plus populaires aux États-Unis: www.monster.com et www.dice.com - qui affichent des données au 17 mars 2020 par le nombre d'offres d'emploi reçues, par mots-clés: Qualité des données et Scientifique des données.

www.monster.com
Data Scientists - 21 416 emploisQualité des données - 41 104 emplois

www.dice.com
Data Scientists - 404 emploisQualité des données - 2020 emplois

De toute évidence, ces professions ne sont en aucune façon en concurrence. Avec des captures d'écran, je voulais juste illustrer la situation actuelle du marché du travail en termes de demandes d'ingénieurs Data Quality, qui nécessitent désormais bien plus que des Data Scientists.

En juin 2019, EPAM, répondant aux besoins du marché informatique moderne, a souligné la qualité des données comme une pratique distincte. Au cours de leur travail quotidien, les ingénieurs Data Quality gèrent les données, vérifient leur comportement dans de nouvelles conditions et de nouveaux systèmes, et contrôlent la pertinence des données, leur adéquation et leur pertinence. Avec tout cela, au sens pratique de la qualité des données, les ingénieurs consacrent vraiment un peu de temps aux tests fonctionnels classiques, MAIS cela dépend beaucoup du projet (je vais donner un exemple ci-dessous).

Les fonctions de l'ingénieur de la qualité des données ne se limitent pas aux vérifications manuelles / automatiques de routine des «valeurs nulles, comptées et totales» dans les tableaux de base de données, mais nécessitent une compréhension approfondie des besoins commerciaux du client et, par conséquent, la capacité de transformer les données existantes en informations commerciales utiles.

Théorie de la qualité des données




Afin d'imaginer pleinement le rôle d'un tel ingénieur, découvrons ce qu'est la qualité des données en théorie.

La qualité des données est l'une des étapes de la gestion des données (le monde entier que nous vous laisserons étudier de manière indépendante) et est responsable de l'analyse des données selon les critères suivants:


Je pense que cela ne vaut pas la peine de déchiffrer chacun des points (en théorie, ils sont appelés «dimensions des données»), ils sont assez bien décrits dans l'image. Mais le processus de test lui-même n'implique pas une copie stricte de ces signes dans des cas de test et leur vérification. En qualité des données, comme dans tout autre type de test, il est tout d'abord nécessaire de partir des exigences de qualité des données convenues avec les participants au projet qui prennent des décisions commerciales.



Selon le projet Data Quality, un ingénieur peut remplir différentes fonctions: d'un testeur automatisé ordinaire avec une évaluation superficielle de la qualité des données, à la personne qui effectue leur profilage profond selon les critères ci-dessus.



Une description très détaillée de la gestion des données, de la qualité des données et des processus associés est bien décrite dans un livre intitulé «DAMA-DMBOK: Data Management Body of Knowledge: 2nd Edition» . Je recommande fortement ce livre comme introduction à ce sujet (vous trouverez un lien vers celui-ci à la fin de l'article).

Mon histoire


Dans l'industrie informatique, je suis passé d'un testeur de produit junior à un ingénieur en chef de la qualité des données chez EPAM. Après environ deux ans en tant que testeur, j'avais la ferme conviction que je faisais absolument tous les types de tests: régression, fonctionnel, stressant, stabilité, sécurité, interface utilisateur, etc. - et essayé un grand nombre d'outils de test, après avoir travaillé en même temps dans trois langages de programmation: Java, Scala, Python.



Avec le recul, je comprends pourquoi l'ensemble de mes compétences professionnelles s'est avéré si diversifié - j'ai participé à des projets liés au travail avec les données, grandes et petites. C'est ce qui m'a conduit au monde d'un grand nombre d'outils et d'opportunités de croissance.



Pour apprécier la variété d'outils et d'opportunités d'acquérir de nouvelles connaissances et compétences, il suffit de regarder l'image ci-dessous, qui montre les plus populaires d'entre eux dans le monde des «Data & AI».


Ce type d'illustration est compilé chaque année par l'un des capital-risqueurs bien connus Matt Turck, natif du développement de logiciels. Voici un lien vers son blog et sa société de capital-risque où il travaille en tant que partenaire.

Particulièrement rapide, j'ai grandi professionnellement lorsque j'étais le seul testeur du projet, ou du moins au début du projet. C'est à un tel moment que vous devez être responsable de l'ensemble du processus de test, et vous n'avez pas la possibilité de prendre du recul, seulement d'avancer. Au début, c'était un épouvantail, mais maintenant tous les avantages d'un tel test me sont évidents:

  • Vous commencez à communiquer avec toute l'équipe plus que jamais, car il n'y a pas de proxy pour la communication: ni responsable de test, ni collègues testeurs.
  • , , .
  • « , », , , .
  • — , , .

Au fur et à mesure que le projet grandissait à 100%, je suis devenu un mentor pour les testeurs qui sont revenus vers lui, les ont formés et ont transmis les connaissances que j'avais acquises. En même temps, selon le projet, je n'ai pas toujours obtenu le plus haut niveau d'experts en test automatique de la direction et il fallait soit les former à l'automatisation (pour ceux qui le souhaitent), soit créer des outils pour les utiliser dans les activités quotidiennes (outils de génération de données et les charger dans le système , un outil pour effectuer des tests de charge / tests de stabilité "rapides", etc.).

Exemple de projet spécifique


Malheureusement, en raison d'obligations de non-divulgation, je ne peux pas parler en détail des projets sur lesquels j'ai travaillé, mais je vais donner des exemples de tâches typiques de Data Quality Engineer sur l'un des projets.

L'essence du projet est de mettre en œuvre une plate-forme de préparation de données pour la formation de modèles d'apprentissage automatique basés sur eux. Le client était une grande entreprise pharmaceutique des États-Unis. Techniquement, il s'agissait d'un cluster Kubernetes , passant aux instances AWS EC2 , avec plusieurs microservices et le projet EPAM- Legion sous-jacent à l'Open Source , adapté aux besoins d'un client particulier (maintenant le projet est réincarné en odahu ). Les processus ETL ont été organisés à l'aide d' Apache Airflow et ont déplacé les données deSystèmes clients SalesForce chez AWS S3 Buckets. Ensuite, une image docker d'un modèle d'apprentissage automatique a été déployée sur la plate-forme, qui a été formée sur les dernières données et a produit des prédictions basées sur l'interface API REST qui étaient d'intérêt pour l'entreprise et résolvaient des problèmes spécifiques.

Visuellement, tout ressemblait à ceci:


Il y avait beaucoup de tests fonctionnels sur ce projet, et étant donné la vitesse de développement des fonctionnalités et la nécessité de maintenir le rythme du cycle de sortie (sprints de deux semaines), il était nécessaire de penser immédiatement à l'automatisation du test des nœuds système les plus critiques. La plupart de la plate-forme elle-même avec Kubernetes a été couverte par des autotests implémentés sur Robot Framework.+ Python, mais ils devaient également être maintenus et développés. De plus, pour la commodité du client, une interface graphique a été créée pour gérer les modèles d'apprentissage automatique intégrés dans un cluster, ainsi que la possibilité de spécifier où et où transférer les données pour la formation des modèles. Cet ajout important a entraîné l'expansion des vérifications fonctionnelles automatisées, qui ont été principalement effectuées via des appels d'API REST et un petit nombre de tests d'interface utilisateur de bout en bout. À peu près à l'équateur de tout ce mouvement, nous avons été rejoints par un testeur manuel, qui a fait un excellent travail d'accepter les tests des versions de produits et de communiquer avec le client sur l'acceptation de la prochaine version. De plus, grâce à l'émergence d'un nouveau spécialiste, nous avons pu documenter notre travail et ajouter des contrôles manuels très importants,qui étaient difficiles à automatiser tout de suite.

Et enfin, après avoir atteint la stabilité de la plate-forme et un add-on GUI au-dessus, nous avons commencé à construire des pipelines ETL à l'aide des DAG Apache Airflow. Un contrôle automatisé de la qualité des données a été effectué en écrivant des DAG Airflow spéciaux qui vérifiaient les données en fonction des résultats du processus ETL. Dans le cadre de ce projet, nous avons eu de la chance, et le client nous a donné accès à des ensembles de données anonymisés, sur lesquels nous avons testé. Nous avons vérifié la conformité des types de données ligne par ligne, la présence de données cassées, le nombre total d'enregistrements avant et après, en comparant les transformations effectuées par le processus ETL pour l'agrégation, en changeant les noms des colonnes et d'autres choses. De plus, ces contrôles ont été mis à l'échelle vers différentes sources de données, par exemple, en plus de SalesForce, également sur MySQL.

Des contrôles de la qualité finale des données ont déjà été effectués au niveau S3, où ils étaient stockés et prêts à l'emploi pour l'apprentissage de modèles d'apprentissage automatique. Pour obtenir les données du fichier CSV final se trouvant sur le compartiment S3 et le valider, le code a été écrit à l'aide du client boto3 .

De plus, du côté du client, il était nécessaire de stocker une partie des données dans un compartiment S3, une partie dans un autre. Pour cela, il a également fallu effectuer des vérifications supplémentaires pour vérifier la fiabilité d'un tel tri.

Expérience générale sur d'autres projets


Un exemple de la liste la plus généralisée des activités de qualité des données d'un ingénieur:

  • Préparez les données de test (valides / invalides / grandes / petites) grâce à un outil automatisé.
  • Téléchargez l'ensemble de données préparé dans la source d'origine et vérifiez qu'il est prêt à être utilisé.
  • Lancez les processus ETL pour traiter un ensemble de données du stockage source vers le stockage final ou intermédiaire à l'aide d'un ensemble spécifique de paramètres (si possible, définissez des paramètres configurables pour la tâche ETL).
  • Vérifier la qualité et la conformité des données traitées par le processus ETL avec les exigences commerciales.

Dans le même temps, l'accent devrait être mis non seulement sur le fait que le flux de données dans le système a fonctionné et a atteint sa fin (ce qui fait partie des tests fonctionnels), mais principalement sur la vérification et la validation des données pour la conformité aux exigences attendues, l'identification des anomalies et autres choses.

Outils


L'une des techniques pour un tel contrôle des données peut être l'organisation de contrôles en chaîne à chaque étape du traitement des données, la soi-disant «chaîne de données» dans la littérature - le contrôle des données de la source au point d'utilisation finale. Ces vérifications sont le plus souvent implémentées par l'écriture de requêtes SQL de validation. Il est clair que ces demandes doivent être aussi légères que possible et vérifier la qualité individuelle des données (métadonnées des tableaux, lignes vides, valeurs NULL, erreurs de syntaxe - autres vérifications d'attributs requises).

Dans le cas des tests de régression, qui utilisent des ensembles de données prêts à l'emploi (immuables / légèrement modifiables), des modèles prêts à l'emploi pour vérifier la qualité des données (descriptions des métadonnées attendues du tableau; objets sélectifs en minuscules qui peuvent être sélectionnés au hasard pendant le test, peuvent être stockés dans le code d'autotest) Etc).

Pendant les tests, vous devez également écrire des processus ETL de test à l'aide de frameworks tels qu'Apache Airflow, Apache Spark ou un outil cloud de boîte noire comme GCP Dataprep , GCP DataflowEtc. Cette circonstance fait que l'ingénieur de test se plonge dans les principes des outils ci-dessus et encore plus efficacement comment effectuer des tests fonctionnels (par exemple, les processus ETL existants sur le projet) et les utiliser pour vérifier les données. En particulier, Apache Airflow a des opérateurs prêts à l'emploi pour travailler avec des bases de données analytiques populaires, par exemple GCP BigQuery . L'exemple le plus élémentaire de son utilisation a déjà été décrit ici , donc je ne le répéterai pas.

En plus des solutions toutes faites, personne ne vous interdit de vendre vos techniques et outils. Ce sera non seulement un avantage pour le projet, mais aussi pour l'ingénieur qualité des données lui-même, ce qui renforce ses horizons techniques et ses compétences en codage.

Comment ça marche sur un vrai projet


Une bonne illustration des derniers paragraphes sur la «chaîne de données», ETL et les contrôles omniprésents est le processus suivant de l'un des vrais projets:



ici, différentes données (naturellement préparées par nous) tombent dans «l'entonnoir» d'entrée de notre système: valide, invalide, mixte, etc. n., puis ils sont filtrés et se retrouvent dans un stockage intermédiaire, puis ils attendent à nouveau une série de transformations et placés dans un stockage final, à partir duquel, à leur tour, des analyses seront effectuées, une cartographie des données et une recherche d'informations commerciales. Dans un tel système, sans vérifier fonctionnellement le fonctionnement des processus ETL, nous nous concentrons sur la qualité des données avant et après les transformations, ainsi que sur l'analyse.

Pour résumer ce qui précède, quels que soient les lieux où je travaillais, j'étais partout impliqué dans des projets Data qui combinaient les fonctionnalités suivantes:

  • Ce n'est que par l'automatisation que vous pouvez vérifier certains cas et obtenir un cycle de publication convivial.
  • Le testeur d'un tel projet est l'un des membres de l'équipe les plus respectés, car il apporte de grands avantages à chacun des participants (tests accélérés, bonnes données de Data Scientist, identification des défauts dans les premiers stades).
  • Peu importe que vous travailliez sur votre matériel ou dans les nuages ​​- toutes les ressources sont abstraites dans un cluster tel que Hortonworks, Cloudera, Mesos, Kubernetes, etc.
  • Les projets sont basés sur une approche de microservice, le calcul distribué et parallèle prévaut.

Je note que, lors des tests dans le domaine de la qualité des données, le spécialiste des tests se concentre sur le code produit et les outils utilisés.

Caractéristiques distinctives des tests de qualité des données


De plus, pour moi-même, j'ai souligné les caractéristiques distinctives suivantes (je ferai immédiatement une réservation TRÈS généralisée et exclusivement subjective) des tests dans les projets (systèmes) de données (Big Data) et d'autres domaines:


Liens utiles


  1. Théorie: DAMA-DMBOK: Ensemble de connaissances sur la gestion des données: 2e édition .
  2. Centre de formation  EPAM 
  3. Matériaux recommandés pour l'ingénieur novice en qualité des données:

    1. Cours Stepik gratuit:  introduction aux bases de données
    2. Cours sur LinkedIn Learning:  Data Science Foundations: Data Engineering .
    3. Des articles:

    4. Vidéo:


Conclusion


La qualité des données est un domaine très jeune et prometteur, dont faire partie signifie faire partie d'une startup. Une fois dans la qualité des données, vous plongerez dans un grand nombre de technologies modernes en demande, mais surtout - vous aurez d'énormes opportunités pour générer et mettre en œuvre vos idées. Vous pouvez utiliser l'approche de l'amélioration continue non seulement sur le projet, mais aussi pour vous-même, en continuant de vous développer en tant que spécialiste.

All Articles