Este projeto tem como objetivo avaliar e melhorar a cobertura de testes de um sistema bancário simplificado, utilizando a ferramenta JaCoCo para análise de cobertura de código. O trabalho foi desenvolvido no contexto da disciplina Engenharia de Qualidade de Software 1 do curso de Engenharia de Software Comercial.
- ☕ Linguagem: Java (versão >= 1.8)
- ⚙️ Gerenciador de Dependências: Maven
- 🧪 Ferramenta de Cobertura de Testes: JaCoCo
Para a atividade, foi utilizado o repositório BankingUnitTests, que implementa operações bancárias básicas:
-
💰 Classes principais:
Account
: Conta bancária comum.LimitedAccount
: Conta bancária com limite.ATM
: Controlador de transações (depósitos, saques e transferências).InsufficientFundsException
: Exceção para saldo insuficiente.
-
🧪 Testes unitários:
ATMTest.java
: Cobre cenários de depósito e saque.
Antes da aplicação da ferramenta JaCoCo, foram identificadas as seguintes questões:
- Testes para depósitos e saques estão presentes no
ATMTest
. - Algumas transferências entre contas estão parcialmente cobertas.
- Transferências com
LimitedAccount
como fonte ou destino não foram completamente testadas. - Testes para valores negativos em depósitos e saques estão ausentes.
- O arquivo
Main.java
não possui cobertura de teste.
Para garantir maior segurança, seguimos as boas práticas:
- Revisão manual do código para tratamento correto de exceções.
- Uso de mensagens de erro diferenciadas para facilitar depuração.
- Verificação de dependências utilizando bases públicas de vulnerabilidades.
- Ampla adoção: Ferramenta popular na comunidade Java.
- Integração facilitada: Plugin nativo para Maven.
- Custo zero: Open-source.
- Relatórios detalhados: Disponíveis em HTML e XML.
- Cobertura: Menos eficaz para testes baseados em branches.
- PIT Mutation Testing: Excelente para testes de mutação, mas com tempo de execução maior.
- Emma: Ferramenta desatualizada, sem suporte ativo.
Para configurar o JaCoCo, adicione o seguinte trecho ao pom.xml
:
<build>
<plugins>
<!-- Plugin JaCoCo para geração de relatórios de cobertura de código -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.8</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
- Compile o projeto:
mvn clean install
- Execute os testes:
mvn test
- Gere o relatório de cobertura:
mvn jacoco:report
- O relatório estará disponível em:
target/site/jacoco/index.html
[a implementar]
- Cobertura inicial: ~60%
- Cobertura após melhorias: [a fazer]
- Impacto: [a fazer]
[a implementar]
- André Hugo
- Breno Carvalho
- Fabiola Santos
- João de Sousa
- Vitória Barbosa