Testador de dados grandes e pequenos: tendências, teoria, minha história

Olá pessoal, meu nome é Alexander e sou um engenheiro de qualidade de dados que verifica a qualidade dos dados. Este artigo discutirá como cheguei a isso e por que, em 2020, essa direção de teste acabou por estar no auge de uma onda.



Tendência mundial


O mundo de hoje está passando por mais uma revolução tecnológica, um dos aspectos é o uso de vários dados por várias empresas para promover seu próprio volante de vendas, lucros e relações públicas. Parece que é a presença de dados de boa qualidade, bem como cérebros habilidosos, que podem ganhar dinheiro com eles (processar, visualizar, criar modelos de aprendizado de máquina etc.) corretamente, se tornaram a chave do sucesso para muitos hoje. Se 15 a 20 anos atrás, grandes empresas estavam envolvidas em um trabalho denso com o acúmulo de dados e sua monetização, hoje é o lote de quase todas as pessoas sãs.

Nesse sentido, há vários anos, todos os portais de busca de emprego em todo o mundo começaram a transbordar com vagas da Data Scientists, já que todos estavam confiantes de que, com a participação de um especialista na equipe, você pode construir um supermodelo de aprendizado de máquina, prever o futuro e criar um “quantum”. Salto para a empresa. Com o tempo, as pessoas perceberam que essa abordagem quase nunca funciona, pois longe de todos os dados que caem nas mãos de tais especialistas é adequado para modelos de treinamento.

E começaram as solicitações dos cientistas de dados: "Vamos comprar mais dados desses e desses ...", "Não temos dados suficientes ...", "Precisamos de mais alguns dados e, de preferência, de alta qualidade ...". Com base nessas solicitações, inúmeras interações entre empresas que possuem um conjunto de dados específico começaram a se alinhar. Naturalmente, isso exigia a organização técnica desse processo - para conectar-se à fonte de dados, baixá-los, verificar se estão totalmente carregados etc. O número desses processos começou a crescer e hoje recebemos uma enorme necessidade de outro tipo de especialistas - Dados Engenheiros da qualidade - aqueles que monitorariam o fluxo de dados no sistema (pipelines de dados), a qualidade dos dados na entrada e na saída, tirariam conclusões sobre sua adequação, integridade e outras características.

A tendência para os engenheiros de qualidade de dados chegou até nós dos Estados Unidos, onde, no meio de uma era violenta do capitalismo, ninguém está pronto para perder a batalha por dados. Abaixo, forneci capturas de tela dos dois sites de busca de emprego mais populares nos EUA: www.monster.com e www.dice.com - que exibem dados em 17 de março de 2020 pelo número de vagas publicadas recebidas, por palavras-chave: Qualidade dos dados e Cientista de dados.

www.monster.com
Cientistas de dados - 21.416 empregosQualidade de dados - 41.104 vagas

www.dice.com
Cientistas de dados - 404 vagasData Quality - 2020 vagas

Obviamente, essas profissões de forma alguma competem entre si. Com as capturas de tela, eu apenas queria ilustrar a situação atual no mercado de trabalho em termos de solicitações de engenheiros de qualidade de dados, que agora exigem muito mais do que cientistas de dados.

Em junho de 2019, o EPAM, respondendo às necessidades do mercado de TI moderno, destacou a Qualidade de Dados como uma prática separada. Durante o trabalho diário, os engenheiros da Qualidade de dados gerenciam dados, verificam seu comportamento em novas condições e sistemas e controlam a relevância dos dados, sua adequação e relevância. Com tudo isso, no sentido prático da qualidade dos dados, os engenheiros realmente dedicam um pouco de tempo aos testes funcionais clássicos, mas depende muito do projeto (darei um exemplo abaixo).

Os deveres do engenheiro de Qualidade de dados não se limitam às verificações manuais / automáticas de rotina para "nulos, contagens e somas" nas tabelas do banco de dados, mas exigem um profundo entendimento das necessidades de negócios do cliente e, consequentemente, a capacidade de transformar dados existentes em informações comerciais úteis.

Teoria da qualidade dos dados




Para imaginar o papel de um engenheiro desse tipo, vamos descobrir o que é Data Quality em teoria.

A Qualidade dos dados é um dos estágios do Gerenciamento de dados (o mundo todo que vamos deixar para você estudar independentemente) e é responsável pela análise dos dados de acordo com os seguintes critérios:


Eu acho que não vale a pena decifrar cada um dos pontos (em teoria, eles são chamados de "dimensões de dados"), eles são muito bem descritos na figura. Mas o próprio processo de teste não implica uma cópia rigorosa desses sinais nos casos de teste e sua verificação. Na Qualidade dos Dados, como em qualquer outro tipo de teste, é necessário, em primeiro lugar, prosseguir com os requisitos de qualidade dos dados acordados com os participantes do projeto que tomam decisões de negócios.



Dependendo do projeto de qualidade dos dados, um engenheiro pode executar várias funções: desde um testador automatizado comum com uma avaliação superficial da qualidade dos dados até a pessoa que realiza seus perfis profundos de acordo com os critérios acima.



Uma descrição muito detalhada do gerenciamento de dados, qualidade dos dados e processos relacionados está bem descrita em um livro intitulado “DAMA-DMBOK: Conhecimento em gerenciamento de dados: 2ª edição” . Eu recomendo este livro como uma introdução a este tópico (você encontrará um link para ele no final do artigo).

Minha história


No setor de TI, passei de um Junior Product Tester a Lead Data Quality Engineer na EPAM. Após cerca de dois anos como testador, eu acreditava firmemente que fiz absolutamente todos os tipos de teste: regressão, funcional, estressante, estabilidade, segurança, interface do usuário etc. - e tentei um grande número de ferramentas de teste, tendo trabalhado ao mesmo tempo em três linguagens de programação: Java, Scala, Python.



Olhando para trás, entendo por que o conjunto de minhas habilidades profissionais se mostrou tão diversificado - participei de projetos ligados ao trabalho com dados, grandes e pequenos. Foi isso que me levou ao mundo de um grande número de ferramentas e oportunidades de crescimento.



Para apreciar a variedade de ferramentas e oportunidades para obter novos conhecimentos e habilidades, basta olhar para a figura abaixo, que mostra os mais populares deles no mundo de "Dados e IA".


Esse tipo de ilustração é compilado anualmente por um dos conhecidos capitalistas de risco Matt Turck, nativo do desenvolvimento de software. Aqui está um link para seu blog e empresa de capital de risco, onde ele trabalha como parceiro.

Especialmente rápido, cresci profissionalmente quando eu era o único testador no projeto, ou pelo menos no início do projeto. É nesse momento que você precisa ser responsável por todo o processo de teste e não tem a oportunidade de dar um passo atrás, apenas para a frente. No começo era um espantalho, mas agora todas as vantagens de um teste desse tipo são óbvias para mim:

  • Você começa a se comunicar com toda a equipe mais do que nunca, já que não há proxy para a comunicação: nem um gerente de teste nem outros testadores.
  • , , .
  • « , », , , .
  • — , , .

À medida que o projeto crescia 100% do tempo, eu me tornei um mentor para os testadores que o procuravam novamente, os treinavam e transmitiam o conhecimento que eu havia aprendido. Ao mesmo tempo, dependendo do projeto, nem sempre recebi o mais alto nível de especialistas em testes automáticos da gerência e havia a necessidade de treiná-los em automação (para aqueles que desejavam) ou criar ferramentas para usá-los nas atividades diárias (ferramentas de geração de dados e carregá-los no sistema , uma ferramenta para realizar testes de carga / testes de estabilidade "rápidos" etc.).

Exemplo de projeto específico


Infelizmente, devido a obrigações de não divulgação, não posso falar em detalhes sobre os projetos em que trabalhei, no entanto, darei exemplos de tarefas típicas do Engenheiro de Qualidade de Dados em um dos projetos.

A essência do projeto é implementar uma plataforma para preparar dados para o treinamento de modelos de aprendizado de máquina baseados neles. O cliente era uma grande empresa farmacêutica dos Estados Unidos. Tecnicamente, era um cluster Kubernetes , subindo para instâncias do AWS EC2 , com vários microsserviços e o projeto EPAM- Legion subjacente ao Open Source , adaptado às necessidades de um cliente específico (agora o projeto reencarnou como odahu ). Os processos de ETL foram organizados usando o Apache Airflow e movidos os dados doSistemas de cliente SalesForce na AWS S3 Buckets. Em seguida, uma imagem do docker de um modelo de aprendizado de máquina foi implementada na plataforma, que foi treinada com os dados mais recentes e produziu previsões com base na interface da API REST que interessavam aos negócios e resolviam problemas específicos.

Visualmente, tudo parecia algo como isto:


Havia muitos testes funcionais nesse projeto e, dada a velocidade dos recursos de desenvolvimento e a necessidade de manter o ritmo do ciclo de lançamento (sprints de duas semanas), era necessário pensar imediatamente na automação do teste dos nós de sistema mais críticos. A maior parte da plataforma em si com o Kubernetes foi coberta por autotestes implementados no Robot Framework.+ Python, mas eles também precisavam ser mantidos e expandidos. Além disso, para a conveniência do cliente, foi criada uma GUI para gerenciar os modelos de aprendizado de máquina incorporados em um cluster, bem como a capacidade de especificar onde e onde transferir dados para o treinamento do modelo. Essa extensa adição envolveu a expansão de verificações funcionais automatizadas, que foram feitas principalmente por meio de chamadas à API REST e um pequeno número de testes de interface do usuário de ponta a ponta. No equador de todo esse movimento, juntamos um testador manual, que fez um excelente trabalho ao aceitar os testes das versões do produto e se comunicar com o cliente sobre a aceitação do próximo lançamento. Além disso, devido ao surgimento de um novo especialista, pudemos documentar nosso trabalho e adicionar algumas verificações manuais muito importantes,que eram difíceis de automatizar imediatamente.

E, finalmente, depois que alcançamos a estabilidade da plataforma e um complemento da GUI acima dela, começamos a construir pipelines ETL usando os DAGs do Apache Airflow. O controle automatizado da qualidade dos dados foi realizado escrevendo DAGs especiais do Airflow que verificaram os dados de acordo com os resultados do processo ETL. Como parte deste projeto, tivemos sorte e o cliente nos deu acesso a conjuntos de dados anônimos, nos quais testamos. Verificamos os dados linha por linha quanto à conformidade com os tipos, a presença de dados quebrados, o número total de registros antes e depois, comparando as transformações executadas pelo processo ETL para agregação, alterando os nomes das colunas e outras coisas. Além disso, essas verificações foram dimensionadas para diferentes fontes de dados, por exemplo, além do SalesForce, também no MySQL.

As verificações da qualidade final dos dados já foram realizadas no nível S3, onde foram armazenadas e estavam prontas para uso nos modelos de aprendizado de máquina. Para obter dados do arquivo CSV final no S3 Bucket e validá-lo, o código foi gravado usando o cliente boto3 .

Além disso, por parte do cliente, havia um requisito para armazenar parte dos dados em um bucket S3, em outro. Para isso, também era necessário escrever verificações adicionais para verificar a confiabilidade desse tipo.

Experiência geral em outros projetos


Um exemplo da lista mais generalizada de atividades de Qualidade de Dados de um engenheiro:

  • Prepare dados de teste (válidos / inválidos / grandes / pequenos) por meio de uma ferramenta automatizada.
  • Faça o download do conjunto de dados preparado para a fonte original e verifique sua disponibilidade para uso.
  • Ative os processos ETL para processar um conjunto de dados do armazenamento de origem para o final ou intermediário usando um conjunto específico de configurações (se possível, defina parâmetros configuráveis ​​para a tarefa ETL).
  • Verifique os dados processados ​​pelo processo ETL quanto à qualidade e conformidade com os requisitos de negócios.

Ao mesmo tempo, a ênfase principal das verificações não deve estar apenas no fato de o fluxo de dados no sistema ter atingido o final (que faz parte dos testes funcionais), mas principalmente na verificação e validação dos dados para conformidade com os requisitos esperados, identificando anomalias e outras coisas.

Ferramentas


Uma das técnicas para esse controle de dados pode ser a organização de verificações em cadeia em cada estágio do processamento de dados, a chamada “cadeia de dados” na literatura - controle de dados desde a fonte até o ponto de uso final. Essas verificações geralmente são implementadas escrevendo consultas SQL de validação. É claro que essas solicitações devem ser o mais leve possível e verificar partes individuais da qualidade dos dados (metadados das tabelas, linhas em branco, NULLs, erros na sintaxe - outras verificações de atributo necessárias).

No caso de teste de regressão, que usa conjuntos de dados prontos (imutáveis ​​/ levemente alteráveis), modelos prontos para verificar dados em relação à qualidade (descrições dos metadados esperados da tabela; objetos seletivos em minúsculas que podem ser selecionados aleatoriamente durante o teste, podem ser armazenados no código de autoteste) E assim por diante).

Também durante o teste, você deve escrever processos de ETL de teste usando estruturas como Apache Airflow, Apache Spark ou uma ferramenta de nuvem de caixa preta como GCP Dataprep , GCP DataflowE assim por diante. Essa circunstância faz o engenheiro de teste mergulhar nos princípios das ferramentas acima e ainda mais efetivamente em como realizar testes funcionais (por exemplo, processos ETL existentes no projeto) e usá-los para verificar os dados. Em particular, o Apache Airflow possui operadores prontos para trabalhar com bancos de dados analíticos populares, por exemplo, o GCP BigQuery . O exemplo mais básico de seu uso já foi descrito aqui , então não o repetirei.

Além de soluções prontas, ninguém o proíbe de vender suas técnicas e ferramentas. Isso não será apenas um benefício para o projeto, mas também para o próprio Data Quality Engineer, o que aumenta seus horizontes técnicos e habilidades de codificação.

Como funciona em um projeto real


Uma boa ilustração dos últimos parágrafos sobre "cadeia de dados", ETL e verificações onipresentes é o seguinte processo de um dos projetos reais:



Aqui, dados diferentes (naturalmente preparados por nós) se enquadram no "funil" de entrada do nosso sistema: válido, inválido, misto etc. n., depois são filtrados e terminam em um armazenamento intermediário, aguardando novamente por uma série de transformações e colocados em um armazenamento final, a partir do qual, por sua vez, serão realizadas análises, apresentação de dados e pesquisa de negócios. Nesse sistema, sem verificar funcionalmente a operação dos processos ETL, nos concentramos na qualidade dos dados antes e depois das transformações, bem como na análise.

Resumindo o que foi dito acima, independentemente dos locais em que trabalhei, eu estava envolvido em todos os projetos de dados que combinavam os seguintes recursos:

  • Somente através da automação, você pode verificar alguns casos e obter um ciclo de lançamento favorável aos negócios.
  • O testador de um projeto como esse é um dos membros mais respeitados da equipe, pois traz grandes benefícios para cada um dos participantes (teste acelerado, bons dados do Data Scientist, identificação de defeitos nos estágios iniciais).
  • Não importa se você trabalha no seu hardware ou nas nuvens - todos os recursos são abstraídos para um cluster, como Hortonworks, Cloudera, Mesos, Kubernetes, etc.
  • Os projetos são baseados em uma abordagem de microsserviço, prevalecendo a computação distribuída e paralela.

Observo que, durante os testes no campo da Qualidade de dados, o especialista em testes muda seu foco profissional para o código do produto e as ferramentas utilizadas.

Recursos distintos do teste de qualidade de dados


Além disso, para mim, destaquei o seguinte (farei imediatamente uma reserva MUITO generalizada e exclusivamente subjetiva) características distintivas do teste em projetos (sistemas) de Data (Big Data) e outras áreas:


Links Úteis


  1. Teoria: DAMA-DMBOK: Conhecimento em Gerenciamento de Dados: 2ª Edição .
  2. Centro de Formação  EPAM 
  3. Materiais recomendados para o engenheiro novato da Qualidade de dados:

    1. Curso gratuito Stepik:  Uma introdução aos bancos de dados
    2. Curso no LinkedIn Learning:  Data Science Foundations: Data Engineering .
    3. Artigos:

    4. Vídeo:


Conclusão


A Qualidade dos dados é uma área promissora muito jovem, para fazer parte da qual significa fazer parte de uma startup. Uma vez no Data Quality, você mergulhará em um grande número de tecnologias modernas sob demanda, mas o mais importante - você terá enormes oportunidades para gerar e implementar suas idéias. Você pode usar a abordagem de melhoria contínua, não apenas no projeto, mas também para si mesmo, desenvolvendo-se continuamente como especialista.

All Articles