Você está na página 1de 11

Cobertura de Testes

Java + JaCoCo
Prof. Dr. Fábio Aiub Sperotto
fabio.sperotto@ifsc.edu.br
Cobertura de Código (code coverage)


A cobertura de testes é uma métrica que define o número de
testes que precisamos escrever para um dado programa.

Cobertura = nr. de instruções executados pelo testes / total de


instruções existentes no programa.


A ideia hoje é que tenhamos um relatório e uma indicação
visual onde:

– O valor final da métrica, conforme equação acima, em %;


– Indicações visuais por cores em cada linha de instrução,
indicando se algum teste percorreu aquela linha (verde) ou
se não existe teste que alcance tal instrução (vermelho).

2
JaCoCo + Java + Apache NetBeans


EclEmma é uma ferramenta de cobertura de código feita
originalmente para a IDE Eclipse.


JaCoCo pode ser integrado com o Apache Netbeans por meio
de plugin no Maven. Para Apache NetBeans versão 16 (ou
próxima) use o JaCoCo 0.8.8.


Após fazer a configuração correta por meio do pom.xml, toda
vez que executar os testes unitários (por si só ou na build) um
relatório em HTML será gerado no diretório do projeto,
exemplo:
NetBeansProjects/projeto/target/site/jacoco/...projeto/index.html

3
JaCoCo


Exemplo de code coverage report no próprio projeto que
implementa o plugin:
https://www.jacoco.org/jacoco/trunk/coverage/

4
Configuração

Adicione no pom.xml da sua aplicação Maven (para ctrl + c use o slide seguinte):
<build> Build da aplicação
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.8</version> Versão funcional
<executions>
<execution>
<goals> Objetivo do maven
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>generate-code-coverage-report</id>
<phase>test</phase> Gerar relatório nos testes
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

5
Configuração (para copiar)
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.8</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>generate-code-coverage-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
6
Execução

Depois do pom.xml pronto, clique com o botão direito no projeto
e Clean and Build.

Em seguida, clicando com botão direito novamente no projeto,
teremos a opção de Code Coverage. É possível exibir
integrado no NetBeans o relatório:

7
Execução

Resultados:

8
Execução

Resultados:

9
Discussões

Qual o percentual ideal de cobertura a ser alcançado?


É sempre importante e pragmático ter a métrica numérica como objetivo? E
métodos triviais como getters/setters?


Para sistemas de missão não crítica:

– Mínima cobertura: 60% a 70%;


– Cobertura ótima: 71% a 80%;
– Cobertura excessiva: 81% a 100%.

TDD tende a fornecer como bônus no mínimo uma cobertura ótima
(geralmente retorna uns 90%).


As vezes as funcionalidades estão testadas mas nem todas as exceções da
aplicação foram cobertas de testes, então dificilmente poderá chegar aos
100% quando dificilmente alguma operação percorra caminhos não
conhecidos do sistema.
10
Referências

Marco Tulio Valente. Engenharia de Software Moderna: Princípios e
Práticas para Desenvolvimento de Software com Produtividade, Editora:
Independente, 395 páginas, 2020.

Java Code Coverage for Eclipse: https://www.jacoco.org/

Barua, B. K. Test Coverage Definition – Test Unit. Microsoft Lear Center.
Disponível em
https://learn.microsoft.com/en-us/answers/questions/778016/test-covera
ge-definition-unit-testing
Acesso em 27/2/2023.

What is a reasonable code coverage % for unit testes?
https://stackoverflow.com/questions/90002/what-is-a-reasonable-code-co
verage-for-unit-tests-and-why

Konik, J. Who Cares About Code Coverage and Why? Codecov.
Disponível em
https://about.codecov.io/blog/who-cares-about-code-coverage-and-why/
Acesso em 27/2/2023.

11

Você também pode gostar