Sobre esta ferramenta
Três números diferentes são chamados de “cobertura”, e eles respondem a perguntas diferentes. A cobertura de requisitos pergunta se todo requisito tem um teste. A cobertura de execução pergunta quanto dos testes planejados realmente rodou e passou. A cobertura de código pergunta qual código foi executado enquanto os testes automatizados rodavam. Esta calculadora trata os três e mostra cada fórmula. Para cobertura de código, informe os quatro percentuais do seu relatório do Istanbul, Vitest, Jest, JaCoCo ou coverage.py e um limite: ela marca quais métricas não passam no gate e aponta padrões, como cobertura de branches muito abaixo da de linhas, o que geralmente significa que caminhos de erro e blocos else não são testados. Ela também deixa claro o que a cobertura não consegue dizer.
Como usar
- Escolha a calculadora: cobertura de requisitos, de execução ou de código.
- Informe as contagens ou percentuais; os resultados são atualizados enquanto você digita.
- Para cobertura de código, defina o limite que o seu CI exige e leia as observações.
- Copie o resumo para um relatório de status.
Perguntas frequentes: Calculadora de cobertura de testes
100% de cobertura de código é uma boa meta?
Raramente. Os últimos pontos percentuais costumam ser código defensivo caro de alcançar, e 100% de cobertura ainda não prova que as assertions têm significado. Muitos times colocam o gate entre 70–90% e revisam o código não coberto nos pull requests.
Por que a cobertura de branches é menor que a de linhas?
Uma linha com um if conta como coberta quando roda uma vez, mas a cobertura de branches exige os dois resultados, verdadeiro e falso. Uma diferença grande significa que muitas condições são testadas só de um jeito, geralmente o caminho feliz.
Como saber se meus testes realmente verificam algo?
Testes de mutação (por exemplo, Stryker para JavaScript ou PIT para Java) alteram levemente o seu código e verificam se algum teste falha. Mutantes sobreviventes mostram código que roda nos testes, mas não é de fato verificado.