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

qualidade · Changes

Page history
docs: cria pagina de qualidade authored Oct 02, 2025 by João Pedro Salles da Silva's avatar João Pedro Salles da Silva
Hide whitespace changes
Inline Side-by-side
qualidade.md 0 → 100644
View page @ 9a41607f
# 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:**
```java
@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
```bash
# 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:**
```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
```bash
# 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
```bash
# .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