Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[TDC Floripa 2024] Como aplicar testes em arquitetura e modelagem de dados?

[TDC Floripa 2024] Como aplicar testes em arquitetura e modelagem de dados?

soon

Cadu Magalhães

June 14, 2024
Tweet

More Decks by Cadu Magalhães

Other Decks in Technology

Transcript

  1. Quem é esse? • 26 anos • ~5 anos de

    engenharia de dados • ~10 anos de programação • Google Cloud certified • Dono de gatos • Nerd, músico e cubista • Especialista em gambiarras • Participante de eventos e caçador de brindes Cadu Magalhães @1cadumagalhaes blog.cadumagalhaes.dev datacareer.guide
  2. Um pouco de história Engenharia de Software 1960 DevOps 2009

    2006 AWS Data Warehouse 1980 2005 Git Google File System MapReduce Engenharia de Dados 2000’s DataOps 2014
  3. Minhas experiências em dados • A maior parte do trabalho

    ainda é feita em planilhas, extraídas manualmente • Quando não é em planilha, é em notebooks python (ou os dois) • Não costumam usar ferramentas de versionamento • Tendência a reconstruir tudo do 0 • Teste? CI/CD? Padrões de código? Boas práticas?
  4. Muitas pessoas com experiência em engenharia de software migraram para

    dados. E essas pessoas começaram a trazer “atualizações” para área. Surgiram N ferramentas (muitas open-source) que resolvem problemas comuns
  5. • Foco no estado e nos atributos dos dados finais

    • O objetivo é garantir que os dados são precisos, confiáveis e úteis Testes • Foco nos processos e na lógica usados para gerenciar e transformar os dados • O objetivo é verificar e validar a operação correta dos sistemas Data Quality
  6. O que testar? E T L Testes de Ingestão •

    Garantir que os dados extraídos seguem os “contratos” definidos. • Que todos os campos: ◦ estão disponíveis, ◦ são do tipo esperado • Em extração de dados via API, em sistemas de integração (download de arquivos, acesso a um banco de dados).
  7. O que testar? E T L Testes de Integração/Transformação •

    Testes unitários • Regras de negócio • Integridade dos dados
  8. O que testar? E T L Testes de Exposição •

    Testes de funcionalidade com usuários (ex: validação de dashboards, plataformas) • Testes de qualidade de dados
  9. Como testar? Comece criando e separando dados de teste! •

    Ferramentas de mock (ex: Faker) • Escrever manualmente • Gen AI? • Amostra de dados já existentes ◦ De preferência, que não sejam de produção ◦ Utilizar ferramentas de ofuscação para dados sensíveis, se necessário • No caso de integração com sistemas (API’s), pode ser preciso fazer mock da chamada e da resposta.
  10. O que exatamente testar? • Scripts, automações • Frameworks de

    transformação (Spark, dbt) • Schemas, tabelas, colunas e valores do banco de dados • Infraestrutura • API’s, tarefas e DAG’s
  11. Minhas dicas • Desde cedo tive o costume de desenvolver

    consultas em amostras de tabelas grandes (geralmente entre 1 e 10% dos dados) para otimizar custos • Crie o costume de pensar em conjuntos de dados que são necessários para satisfazer suas consultas • Sugira a utilização de ferramentas especializadas (inclusive para testes) • Se possível, escreva testes unitários nos seus scripts e códigos. Pelo menos para os casos mais simples • Se o assunto te interessar, estude sobre Test Driven Development (TDD)
  12. E depois? O mundo de testes em software é gigante.

    Mas em aplicações de dados ele está se desenvolvendo. Além dessas etapas “básicas”, também podemos criar testes de performance, investir mais esforço em fazer uma avaliação de data quality. E por fim, existem materiais complementares sobre testes que mostram como cobrir outras etapas importantes do ambiente de dados.