Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Se-doce-fosse
  • Wiki
  • Wiki
  • qualidade

Last edited by João Pedro Salles da Silva Oct 02, 2025
Page history

qualidade

Qualidade

Este documento descreve a estratégia de testes e ferramentas de qualidade implementadas na aplicação para vendas de doces com backend em Java/Spring Boot e frontend em React/TypeScript.


Visão geral da qualidade

O projeto implementa uma estratégia robusta de qualidade de código com:

  • Cobertura de testes automatizados para backend e frontend
  • Análise estática de código com ESLint e ferramentas Java
  • Formatação padronizada com Prettier
  • Integração contínua com GitHub Actions
  • Hooks de Git para validação antes dos commits
  • Relatórios de cobertura automatizados

Backend - Java/Spring Boot

Framework de Testes

  • JUnit 5 - Framework principal para testes unitários
  • Spring Boot Test - Testes de integração com Spring
  • Mockito - Mocking para testes isolados
  • MockMvc - Testes de controllers web
  • H2 Database - Banco em memória para testes

🎯 Tipos de Testes Implementados

1. Testes de Controller

  • Localização: src/test/java/com/sedocefosse/backend/controller/
  • Anotações: @WebMvcTest, @MockBean
  • Cobertura: Endpoints REST, validações, responses HTTP

Exemplo - ProductControllerTest:

@WebMvcTest(ProductController.class)
class ProductControllerTest {
    
    @Test
    void getProductBySku_shouldReturnProduct_whenSkuExists() throws Exception {
        // Testa busca de produto por SKU
        mockMvc.perform(get("/products/SKU-CHOCO-01"))
               .andExpect(status().isOk())
               .andExpect(jsonPath("$.nome").value("Cookie de Chocolate"));
    }
}

Cobertura de Código

  • Plugin: JaCoCo Maven Plugin v0.8.11
  • Relatórios: HTML, XML
  • Configuração automática para execução em mvn test

Execução de Testes

# Executar todos os testes
./mvnw test

# Executar testes com relatório de cobertura
./mvnw test jacoco:report

# Compilar e testar
./mvnw clean install

Ferramentas de qualidade backend

  • Maven Compiler Plugin - Compilação com Java
  • Spring Boot DevTools - Hot reload em desenvolvimento
  • Lombok - Redução de boilerplate code
  • Validação Bean - Validações automáticas de entrada

Frontend - React/TypeScript

Framework de Testes

  • Jest - Framework de testes principal
  • React Testing Library - Testes focados no usuário
  • jsdom - Ambiente DOM simulado
  • ts-jest - Suporte a TypeScript

Tipos de Testes Implementados

1. Testes de Componentes

  • Cobertura: Componentes UI, interações, estado

Exemplo - CartContext.test.tsx:

describe('CartContext', () => {
  it('adiciona produto ao carrinho', () => {
    const { getByText } = render(
      <CartProvider>
        <TestComponent />
      </CartProvider>
    );
    
    fireEvent.click(getByText('add'));
    expect(screen.getByTestId('quantity')).toHaveTextContent('2');
  });
});

2. Testes de Páginas

  • Home.test.tsx - Página inicial
  • Login.test.tsx - Autenticação
  • Produtos.test.tsx - Listagem de produtos
  • ProdutosAdmin.test.tsx - Área administrativa

3. Testes de Contexto

  • CartContext.test.tsx - Gerenciamento do carrinho

Cobertura de Código

  • Relatórios: Text, LCOV, HTML
  • Diretório: coverage/
  • Exclusões: Arquivos de tipo, main.tsx, configurações

Execução de Testes

# Executar todos os testes
npm run test

# Testes em modo watch
npm run test:watch

# Testes com cobertura
npm run test:coverage

Ferramentas de qualidade frontend

ESLint - Análise Estática

Prettier - Formatação de Código

TypeScript - Tipagem Estática

  • Configurações específicas para app, testes e node
  • Strict mode habilitado
  • Verificações de tipo em build

Integração Contínua (CI/CD)

Backend Pipeline

Frontend Pipeline

Triggers de CI

  • Pull Requests para main e develop
  • Push para main
  • Validação completa em cada PR

Git Hooks e Qualidade

🔧 Backend Hooks

  • pre-commit: Validação de nomenclatura de branches
  • Script: validate-branch-name.sh

Frontend Hooks

  • lint-staged: Formatação automática
  • pre-commit: ESLint + Prettier nos arquivos modificados
# .husky/pre-commit
npx lint-staged

Automação

  • CI/CD automatizado com GitHub Actions
  • Hooks de Git para validação local
  • Relatórios de cobertura automatizados
  • Validação de branch naming
  • Formatação automática no commit

Clone repository
  • Arquitetura
  • banco_dados
  • codigo
  • configuracao
  • design_mockups
  • escopo
  • Home
  • processo
  • qualidade
  • uploads
    • 1ba82490dae6da7a4519295ab0cf736b
      • CONFIGURATION