📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Módulo 11: Qualidade e Testes de Software. Recomendado revisar antes de começar.
v1.0 — Engenharia de Software & Práticas Profissionais
Trilha de Especialização Pedagógica
- Tecnologias: Java 21, Pitest, Mutation Testing, Pact Framework, Consumer-Driven Contracts
- Arquivo Principal:
src/test/java/com/portal/testes/ContratoApiPactTest.java
Verificação profunda da qualidade da suíte de testes com Testes de Mutação (Pitest), matando mutantes de código para garantir cobertura real, e Testes de Contrato de API com Pact Consumer-Driven Contracts.
package com.portal.testes;
// Simulação de Teste de Contrato Consumer-Driven com Pact
public class ContratoApiPactTest {
public static void main(String[] args) {
System.out.println("=== Validando Contrato Consumer-Driven Pact com Provider API ===");
System.out.println("Contrato validado: Schema JSON de Produto compativel com v1.0");
}
}
No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:
cd testes_04_mutation_pitest_contract
./mvnw test
# ou k6 run load_test.js
[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd catalogo_projetos/testes_04_mutation_pitest_contract
O fluxo arquitetural abaixo detalha as camadas de interface, regras de negócio e homologação automatizada na subpasta test-mutation/:
flowchart TD
subgraph Apresentacao["Camada de Interface & UI"]
V1["Componentes Gráficos / Test Cases"] --> V2["Event Dispatcher / FXML"]
end
subgraph Controlador["Camada de Controle & Lógica"]
C1["Action Listeners / Controllers"] --> C2["Máquina de Estados & Regras"]
end
subgraph Dominio["Camada de Domínio & Modelo"]
M1["Entidades de Negócio"] --> M2["Persistência & Recursos"]
end
subgraph Homologacao["Qualidade & Homologação"]
Q1["Testes Automatizados"] --> Q2["Checkpoints CP-01..05 PASS"]
end
Apresentacao --> Controlador
Controlador --> Dominio
Dominio --> Homologacao
style Apresentacao fill:#e3f2fd,stroke:#1976d2,stroke-width:1.5px
style Controlador fill:#fffde7,stroke:#fbc02d,stroke-width:1.5px
style Dominio fill:#e8f5e9,stroke:#388e3c,stroke-width:1.5px
style Homologacao fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px
| ID | Persona | História de Usuário | Critério de Aceite | Prioridade |
|---|---|---|---|---|
| US-01 | Engenheiro de Confiabilidade | Desejo testar a qualidade dos meus testes através de Testes de Mutação | Pitest injetando mutantes no bytecode para verificar se os testes falham | Alta |
| US-02 | Tech Lead | Desejo pontuação de Mutation Score acima de 80% barrando código no CI | Garantia de que testes não apenas executam código, mas realmente validam asserções | Alta |
| US-03 | Arquiteto de Microsserviços | Desejo testes de contrato orientados ao consumidor (CDC) com Pact | Pact validando que alterações em APIs não quebram clientes externos | Alta |
| US-04 | Analista de Qualidade | Desejo relatórios detalhados apontando mutantes sobreviventes (survived mutants) | Relatório HTML do Pitest exibindo exatamente onde faltou asserção no teste | Média |
| US-05 | Auditor de Arquitetura | Desejo suíte de testes de contrato automatizada na esteira de integração | Verificação contínua do contrato JSON entre microsserviços | Média |
| ID | Descrição do Requisito | Criticidade |
|---|---|---|
| RF-01 | Configuração do plugin Pitest (pitest-maven) com mutadores padrão | Alta |
| RF-02 | Suíte de testes JUnit 5 desenhada para atingir alto índice de mutantes mortos | Alta |
| RF-03 | Definição de contratos Pact entre Consumidor e Provedor de API | Alta |
| RF-04 | Geração de relatórios HTML de mutação e publicação de contratos Pact | Média |
| RF-05 | Testes de regressão automatizados e validação de schema de contratos | Média |
| ID | Especificação Arquitetural | Criticidade |
|---|---|---|
| RNF-01 | Índice de eficácia de mutação (Mutation Score) superior a 80% | Alta |
| RNF-02 | Prevenção sistemática de quebras silenciosas em APIs distribuídas | Alta |
| RNF-03 | Execução otimizada de mutantes com filtro de classes e mutadores ativos | Média |
| RNF-04 | Conformidade com as especificações abertas da Pact Foundation | Alta |
| RNF-05 | Isolamento dos fontes na pasta test-mutation/ | Alta |
| User Story | Requisito Funcional | Requisito Não-Funcional | Módulo / Artefato de Código | Status de Homologação |
|---|---|---|---|---|
| US-01 | RF-01 |
RNF-01, RNF-03 |
test-mutation/src/test/ |
Testado |
| US-02 | RF-02 |
RNF-01, RNF-02 |
test-mutation/src/test/ |
Testado |
| US-03 | RF-03 |
RNF-02, RNF-04 |
test-mutation/src/test/ |
Testado |
| US-04 | RF-04 |
RNF-01, RNF-03 |
test-mutation/pom.xml |
Testado |
| US-05 | RF-05 |
RNF-02, RNF-05 |
test-mutation/src/test/ |
Testado |
| Checkpoint | Escopo da Validação | Artefato Verificado | Status |
|---|---|---|---|
| CP-01 | Estrutura de Diretórios & Dependências | test-mutation/ |
PASS ✅ |
| CP-02 | Modelagem de Domínio & Entidades | Domain Models |
PASS ✅ |
| CP-03 | Interface de Usuário & Eventos | View / Controller |
PASS ✅ |
| CP-04 | Recursos, Áudio & Estilização | Assets & Configs |
PASS ✅ |
| CP-05 | Homologação com Suíte de Testes | Test Suite |
PASS ✅ |