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
  • Testes

Last edited by Guilherme Santos da Silva Nov 12, 2025
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Testes

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 de Dados e Diagrama
  • Configuração de Ambientes
  • Escopo e Cronograma
  • Fluxo de Trabalho Gitflow
  • Mockups
  • Padrões
  • Teste
  • Testes
  • Home
  • uploads
    • 1ba82490dae6da7a4519295ab0cf736b
      • CONFIGURATION