Pular para o conteúdo

Tema

Programação · tema 25 de 40

Testes e reprodutibilidade em projetos de dados

30 min · 2 vídeos · 11 cards · 1 drill

Por que cai

A pergunta chega assim: 'como você sabe que esse número está certo?'. Quem responde 'conferi' não convence. Quem separa teste de código de teste de dado, dá exemplos dos dois e explica como outra pessoa reproduz o mesmo resultado amanhã, mostra maturidade que a maioria dos candidatos não tem.

Pré-teste · 1 de 2

responda antes de ver

Um pipeline roda sem erro e o relatório fica zerado. Que tipo de teste pegaria isso?

Quanta certeza você tem?

Vídeo · português · 20 min

Base de pytest para quem nunca escreveu teste. Assista para ter o vocabulário; o tema depois trata do que é específico de dados, que nenhum tutorial de pytest cobre.

Em uma frase

Em dados, a suíte tem duas metades — teste de código e teste do dado — e reprodutibilidade tem três pernas: ambiente congelado, entrada identificada e execução sem estado escondido.

Por que testar o dado, e não só o código

A transformação pode estar perfeita e o número sair errado, porque a entrada mudou sem o seu código mudar: coluna passou a vir nula, apareceu categoria nova, surgiu duplicata, o arquivo veio vazio.

MomentoO que verificar
EntradaVolume dentro da faixa, campos obrigatórios não nulos, conjunto de valores aceito, esquema esperado
SaídaUnicidade da chave, integridade com as dimensões, total batendo com a origem
CódigoCasos de borda das funções: divisão por zero, lista vazia, data inválida

Para categoria nova na entrada, prefira alerta a falha: categoria nova costuma ser legítima, e você quer decidir, não quebrar a madrugada.

O teste que passa junto com o bug

Um teste que calcula o resultado do mesmo jeito que o código não testa nada: ele reproduz a lógica, inclusive o erro. Teste bom afirma o valor esperado, obtido de fora — da regra escrita, de um cálculo manual, da origem.

E os melhores testes não são imaginados: vêm de incidentes. Cada vez que algo quebra, a causa vira teste. A suíte cresce a partir do que aconteceu.

As três pernas da reprodutibilidade

  1. 1Ambiente congelado: versões das bibliotecas fixadas em arquivo versionado, porque a mesma análise com outra versão pode arredondar ou ordenar diferente.
  2. 2Entrada identificada: não 'a tabela de vendas', mas o corte — data de referência ou versão da tabela. A tabela de hoje não é a de seis meses atrás.
  3. 3Execução sem estado escondido: reiniciar e rodar do zero. Notebook que funciona na tela pode não funcionar de cima para baixo.

Junto com o número, entregue o que foi assumido. Premissa não escrita é o que ninguém consegue recuperar seis meses depois.

Quando sai do notebook

Indicador recorrente não mora em notebook. Ele vira transformação versionada, com teste, orquestração e dono — exatamente para não depender da sua memória nem da sua máquina. O notebook fica onde ele é bom: exploração.

Como responder isso em voz alta

Separe as duas metades da suíte e dê exemplo de cada. Para reprodutibilidade, cite as três pernas e o teste concreto do notebook. Termine dizendo que os melhores testes vêm de incidentes — isso mostra que você já operou algo, e não só leu a respeito.

Se quiser outro ângulo1 vídeo
Complementar, com outro ritmo e exemplos. Repare na estrutura do teste: preparar, executar, afirmar. É a mesma estrutura que serve para teste de dado.

Como cai na sabatina

Como você garante que o número que você entregou hoje pode ser reproduzido daqui a seis meses?

Erros comuns

  • Testar só o código. A transformação pode estar correta e o número errado, porque o dado de entrada mudou. Teste de dado é metade da suíte.
  • Escrever teste que repete a implementação. Se o teste calcula do mesmo jeito que o código, ele passa junto com o bug; teste bom afirma o resultado esperado, de fora.
  • Achar que notebook que roda é reproduzível. Ele carrega estado de execuções anteriores e a ordem das células pode não ser a de cima para baixo; reiniciar e rodar do zero é o teste.
  • Esquecer de fixar a versão das bibliotecas. Mesma análise, biblioteca diferente, resultado diferente, meses depois.
  • Não registrar qual corte do dado foi usado. 'Rodei ontem' não reproduz nada; é preciso a data de corte ou a versão da tabela.
  • Cobrar cobertura de teste como número. Cobertura alta com asserções fracas dá falsa segurança; o que importa é o caso de borda coberto.

Flashcards

Card 1 de 11

0 certos · 0 a rever

Drill

Qual teste pega isso?

Para cada falha, diga o tipo de teste que a detectaria.

  1. 1.A função de cálculo de percentual divide por zero quando o denominador é vazio.

  2. 2.O arquivo de origem chegou vazio e o pipeline terminou com sucesso.

  3. 3.A tabela final tem chaves duplicadas depois de uma junção nova.

  4. 4.A definição de cliente ativo usada no cálculo não é a que a área usa.

  5. 5.Uma categoria nova apareceu na origem e não é tratada.

Quiz · 1 de 2

Qual afirmação sobre testes em projetos de dados é mais defensável?

Explique para um gerente

Explique em um minuto por que um relatório que roda sem erro pode estar errado, e o que se testa para pegar isso.

Se travar numa palavra técnica, é sinal de que ainda não entendeu essa parte.

Prefiro falar em voz alta

00:00

Toque para gravar, ou responda em voz alta sem gravar

Perguntas de sabatina deste tema2
  • · Como você garante que o número que entregou hoje pode ser reproduzido daqui a seis meses?
  • · Um pipeline rodou sem nenhum erro e o relatório saiu zerado. O que isso diz sobre a sua suíte de testes, e o que você acrescenta?
Responder no simulado
Para ir além3 artigos