📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Módulo 11: Qualidade e Testes de Software. Recomendado revisar antes de começar.

🧪 Testes de Mutação com Pitest & Testes de Contrato Pact

v1.0 — Engenharia de Software & Práticas Profissionais

Trilha de Especialização Pedagógica


🎯 Objetivo & Escopo do Projeto

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.


🛠️ Código de Exemplo da Implementação

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");
    }
}


🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd testes_04_mutation_pitest_contract

2. Execute a aplicação ou testes

./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


🏛️ Arquitetura Visual & Engenharia de Software

O fluxo arquitetural abaixo detalha as camadas de interface, regras de negócio e homologação automatizada na subpasta test-mutation/:

Arquitetura da Aplicação

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

🎯 Engenharia de Requisitos & Modelagem Formal

👤 User Stories (Histórias de Usuário)

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

⚙️ Requisitos Funcionais (RF)

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

🛡️ Requisitos Não-Funcionais (RNF)

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

🔗 Matriz de Rastreabilidade (RTM)

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

🏁 Checkpoints de Qualidade & Homologação

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 ✅