Skip to content
Latchkey

O Que É Cobertura de Testes?

A cobertura de testes mede quanto do seu código é exercitado pelos seus testes, geralmente como uma porcentagem de linhas, branches ou funções.

A cobertura de testes é uma métrica popular, mas facilmente mal interpretada. Ela informa quais partes do código seus testes tocaram durante a execução, o que é útil para identificar áreas não testadas. O que ela não consegue informar é se esses testes realmente verificam as coisas certas, então é um ponto de partida para o julgamento, não um substituto dele.

O que a cobertura mede

Uma ferramenta de cobertura instrumenta seu código, executa a suíte de testes e registra quais instruções, branches ou funções foram executadas. O resultado é uma porcentagem e um detalhamento por arquivo mostrando exatamente quais linhas nunca foram alcançadas por nenhum teste.

Por que cobertura alta não é o objetivo

O código pode ser executado por um teste sem ser verificado de forma significativa. Um teste que chama uma função mas não verifica nada ainda conta para a cobertura. Então 100 por cento de cobertura com verificações fracas pode ser pior do que 70 por cento com verificações precisas. A cobertura mostra o que não está testado, não o que está bem testado.

Usando a cobertura bem

  • Trate a baixa cobertura como uma lanterna apontando para as lacunas.
  • Não persiga um número de vaidade com testes triviais.
  • Acompanhe a tendência ao longo do tempo, não apenas o valor absoluto.
  • Concentre a cobertura em código arriscado, complexo ou crítico.

Um exemplo rápido

Ferramentas como coverage.py ou nyc imprimem um relatório que você pode ler rapidamente, com as linhas que nenhum teste alcançou destacadas por arquivo.

A coverage summary
Name           Stmts   Miss  Cover
----------------------------------
cart.py           42      3    93%
checkout.py       58     12    79%

Portões de cobertura no CI

Muitos pipelines falham um build se a cobertura cair abaixo de um limite ou regredir nas linhas alteradas. Isso impede que código não testado passe despercebido. Gerar e enviar o relatório adiciona um pouco de tempo, que runners rápidos absorvem para que o portão não desacelere o ciclo de feedback.

Principais conclusões

  • A cobertura mede qual código seus testes executam, como uma porcentagem.
  • Uma cobertura alta não garante boas verificações nem bons testes.
  • Use-a para encontrar lacunas e acompanhar tendências, não como uma meta de vaidade.

Guias relacionados