DEV Community

Cover image for Testes Mutantes com Pitest
Diego de Sousa Brandão
Diego de Sousa Brandão

Posted on

2 1

Testes Mutantes com Pitest

Introdução ao Plugin Pitest-Maven

O plugin Pitest-Maven é uma ferramenta de análise de mutação para projetos Java que permite avaliar a eficácia dos testes automatizados em encontrar defeitos no código-fonte. Essa ferramenta identifica mutações (alterações artificiais) no código e executa os testes automatizados para verificar se essas mutações são detectadas. O objetivo principal é avaliar a qualidade dos testes, identificando lacunas na cobertura e melhorando a confiabilidade do código.

O que o Plugin Pitest-Maven faz?

O Pitest-Maven realiza as seguintes tarefas principais:

Geração de Mutantes: O plugin cria mutantes, que são versões modificadas do código-fonte, introduzindo erros deliberados, como a troca de operadores matemáticos ou a remoção de declarações de código.

Execução de Testes: O plugin executa os testes automatizados definidos no projeto Java, usando os mutantes criados como entrada.

Avaliação de Cobertura: Ele analisa a cobertura dos testes em relação aos mutantes gerados. Se um mutante não for "morto" (ou seja, não for detectado como defeituoso pelos testes), ele é considerado um "sobrevivente".

Relatórios de Cobertura e Mutação: O plugin gera relatórios detalhados que mostram quais mutantes sobreviveram, quais foram mortos e a eficácia dos testes em encontrar defeitos no código.

Configuração em uma API REST usando Maven

Aqui está um tutorial passo a passo sobre como configurar o plugin Pitest-Maven em um projeto de API REST Java:

Pré-requisitos:
JDK instalado.
Maven instalado.
Um projeto de API REST Java existente.

Passo 1: Adicionar a Dependência do Pitest-Maven no POM.xml

Abra o arquivo pom.xml do seu projeto e adicione a seguinte dependência:

          <plugin>
                <groupId>org.pitest</groupId>
                <artifactId>pitest-maven</artifactId>
                <version>1.8.0</version>  <!-- Verifique a versão mais recente -->
                <dependencies>
                    <dependency>
                        <groupId>org.pitest</groupId>
                        <artifactId>pitest-junit5-plugin</artifactId>
                        <version>0.14</version>  <!-- Verifique a versão mais recente -->
                    </dependency>
                </dependencies>
                <configuration>
                    <targetTests>
                        <param>ADICIONE_AQUI_O_CAMINHO DA PASTA_ DOS_SEUS_TESTES*Test</param>
 <!-- EXEMPLO! <param>br.com.sw.api.*Test</param> Configurações de relatório aqui -->
                    </targetTests>
                </configuration>
            </plugin>
        </plugins>
Enter fullscreen mode Exit fullscreen mode

Passo 2: Executar o Plugin Pitest-Maven

Execute o plugin Pitest-Maven usando o seguinte comando Maven:

mvn test-compile org.pitest:pitest-maven:mutationCoverage

Enter fullscreen mode Exit fullscreen mode

Os relatórios gerados estarão disponíveis na pasta target/pit-reports.

Exemplo de saída no console:

Image description

Exemplo de relatório:

Image description

Conclusão

O plugin Pitest-Maven é uma ferramenta valiosa para melhorar a qualidade dos testes automatizados em projetos Java, incluindo APIs REST. Ele ajuda a identificar lacunas na cobertura de testes e aprimora a confiabilidade do código, garantindo que as mutações introduzidas deliberadamente sejam detectadas. Ao seguir este tutorial, você pode configurar e usar o Pitest-Maven em seu projeto de API REST, fortalecendo seus testes e aumentando a qualidade do seu software.

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (2)

Collapse
 
khmarbaise profile image
Karl Heinz Marbaise

I recommend to upgrade pitest-maven-plugin to most recent version (1.14.4) as well as pitest-junit5-plugin to 1.2.0 ...

Collapse
 
diegobrandao profile image
Diego de Sousa Brandão

thanks budy, I added a message to " <!-- Check latest version -->"

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

👥 Ideal for solo developers, teams, and cross-company projects

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay