Skip to content

Latest commit

 

History

History
630 lines (443 loc) · 21.4 KB

File metadata and controls

630 lines (443 loc) · 21.4 KB

📊 Relatório de Cobertura de Testes - API ServeRest

Coverage Tests Assertions Performance

Última Atualização: 26 de novembro de 2025 Versão: 1.0.0
Total de Endpoints Testados: 16
Cobertura Geral: 100% ✅


📈 Resumo

Métricas Consolidadas (Admin + User)

Métrica Valor Status
Total de Requisições 38
Testes Executados 196
Asserções Totais 240
Taxa de Sucesso 100%
Endpoints Cobertos 16/16
Validações de Schema 100%
Testes de Segurança 100%
Tempo Total de Execução 3.473s
Tempo Médio por Request 53ms
Total de Dados Recebidos 19.39KB 📊

Breakdown por Collection

Collection Requisições Testes Assertions Sucesso Tempo
ServeREST - Admin 20 104 127 100% 1.856s
ServeREST - User 18 92 113 100% 1.617s

👩‍💻 Coleção API ServeRest ADM

Endpoint Métodos Cenários Testes
/login POST Login com credenciais de admin 6
/usuarios GET, POST Listagem de usuários, Cadastro de admin e usuário auxiliar 10
/usuarios/{_id} GET, PUT, DELETE Busca por ID, Edição de usuário auxiliar, Exclusão de usuário auxiliar 13
/produtos GET, POST Listagem de produtos, Cadastro de 2 produtos (autorizado) 17
/produtos/{_id} GET, PUT, DELETE Busca de 2 produtos específicos, Edição de produto (autorizado), Exclusão de produto (autorizado) 20
/carrinhos GET, POST Listagem de carrinhos ativos e Criação de carrinho 18
/carrinhos/{_id} GET Busca de carrinho específico com validação de cálculos 14
/carrinhos/concluir-compra DELETE Tentativa de conclusão após cancelamento 8
/carrinhos/cancelar-compra DELETE Cancelamento com reabastecimento de estoque 8

👤 Coleção API ServeRest User

Endpoint Métodos Cenários Testes
/login POST Login com credenciais de usuário comum 6
/usuarios GET, POST Listagem de usuários, Cadastro de user e usuário auxiliar 10
/usuarios/{_id} GET, PUT, DELETE Busca por ID, Edição de usuário auxiliar, Exclusão de usuário auxiliar 13
/produtos GET, POST Listagem de produtos, Tentativa de cadastro (403 Forbidden) 11
/produtos/{_id} GET, PUT, DELETE Busca de produto específico, Tentativa de edição (403 Forbidden), Tentativa de exclusão (403 Forbidden) 22
/carrinhos GET, POST Listagem de carrinhos ativos e Criação de carrinho 18
/carrinhos/{_id} GET Busca de carrinho específico com validação de cálculos 14
/carrinhos/concluir-compra DELETE Tentativa de conclusão após cancelamento 8
/carrinhos/cancelar-compra DELETE Cancelamento com reabastecimento de estoque 8

📊 Cobertura Detalhada por Endpoint

🔐 Autenticação

POST /login - Realizar Login

Collection Status Tempo Validações Testes
Admin 200 OK 43ms 6 assertions
User 200 OK 46ms 6 assertions

✅ Validações Implementadas:

  • Status code 200 (OK)
  • Mensagem: "Login realizado com sucesso"
  • Token JWT válido (formato Bearer)
  • Token possui 3 partes (header.payload.signature)
  • Schema validation completo
  • Captura automática do token

📊 Cobertura: 100% | Total de Testes: 12


👤 Gerenciamento de Usuários

POST /usuarios - Cadastrar Usuário

Collection Status Tempo Validações Testes
Admin 201 Created 43-199ms 5 assertions × 2
User 201 Created 48-80ms 5 assertions × 2

✅ Validações Implementadas:

  • Status code 201 (Created)
  • Mensagem de sucesso
  • ID gerado (16 caracteres)
  • Schema validation
  • Armazenamento do ID

📊 Cobertura: 100% | Total de Testes: 20


GET /usuarios - Listar Usuários

Collection Status Tempo Usuários Validações
Admin 200 OK 49ms 17 5 assertions
User 200 OK 43ms 17 5 assertions

✅ Validações:

  • Quantidade corresponde ao array
  • Campos obrigatórios presentes
  • Email com formato válido
  • Schema validation

📊 Cobertura: 100% | Total de Testes: 10


GET /usuarios/{id} - Buscar por ID

Collection Status Tempo Validações
Admin 200 OK 44ms 7 assertions
User 200 OK 60ms 7 assertions

✅ Validações:

  • ID corresponde ao solicitado
  • Email formato válido
  • Campo administrador (true/false)
  • Schema validation

📊 Cobertura: 100% | Total de Testes: 14


PUT /usuarios/{id} - Editar Usuário

Collection Status Tempo Validações
Admin 200 OK 49ms 3 assertions
User 200 OK 48ms 3 assertions

📊 Cobertura: 100% | Total de Testes: 6


DELETE /usuarios/{id} - Excluir Usuário

Collection Status Tempo Validações
Admin 200 OK 43ms 3 assertions
User 200 OK 46ms 3 assertions

📊 Cobertura: 100% | Total de Testes: 6


📦 Gerenciamento de Produtos

POST /produtos - Cadastrar Produto

Collection Status Tempo Permissão Validações
Admin ✅ 201 Created 45-47ms Autorizado 6 assertions × 2
User ❌ 403 Forbidden 44ms Bloqueado 6 assertions

🔐 Validações de Segurança:

  • Admin pode criar produtos ✅
  • User bloqueado (403) ✅
  • Mensagem: "Rota exclusiva para administradores"

📊 Cobertura: 100% | Total de Testes: 18


GET /produtos - Listar Produtos

Collection Status Produtos Validações
Admin 200 OK 10 6 assertions
User 200 OK 10 6 assertions

✅ Validações:

  • Preços positivos (> 0)
  • Quantidades não-negativas
  • Campos obrigatórios

📊 Cobertura: 100% | Total de Testes: 12


GET /produtos/{id} - Buscar por ID

Collection Status Tempo Validações
Admin 200 OK 42-47ms 8 assertions × 2
User 200 OK 43ms 8 assertions

📊 Cobertura: 100% | Total de Testes: 24


PUT /produtos/{id} - Editar Produto

Collection Status Permissão Validações
Admin ✅ 200 OK Autorizado 4 assertions
User ❌ 403 Forbidden Bloqueado 6 assertions

📊 Cobertura: 100% | Total de Testes: 10


DELETE /produtos/{id} - Excluir Produto

Collection Status Permissão Validações
Admin ✅ 200 OK Autorizado 4 assertions
User ❌ 403 Forbidden Bloqueado 6 assertions

📊 Cobertura: 100% | Total de Testes: 10


/usuarios/{id} - Buscar Usuário por ID

Método Status Code Cenário Validações Status
GET 200 Usuário encontrado ✅ ID corresponde ao solicitado
✅ ID válido (string)
✅ Email formato válido
✅ Campo administrador true/false
✅ Schema validation
GET 400 Usuário não encontrado ✅ Mensagem de erro específica
GET 400 ID inválido (formato) ❌ Não testado ⚠️

Cobertura: 85% | Testes: 10


/usuarios/{id} - Editar Usuário

Método Status Code Cenário Validações Status
PUT 200 Alteração com sucesso ✅ Mensagem de sucesso
✅ Schema validation
PUT 201 Upsert (ID não encontrado) ✅ Novo cadastro realizado
✅ ID gerado
✅ Captura de novo ID
PUT 400 Email duplicado ✅ Mensagem de erro específica

Cobertura: 90% | Testes: 8


/usuarios/{id} - Excluir Usuário

Método Status Code Cenário Validações Status
DELETE 200 Exclusão com sucesso ✅ Mensagem de sucesso
✅ Schema validation
DELETE 200 Nenhum registro excluído ✅ Mensagem específica
✅ Warning no console
DELETE 400 Usuário com carrinho ❌ Não testado explicitamente ⚠️

Cobertura: 80% | Testes: 6


3️⃣ Gerenciamento de Produtos

/produtos - Cadastrar Produto

Método Status Code Cenário Validações Status
POST 201 Cadastro com sucesso (ADM) ✅ Mensagem de sucesso
✅ ID gerado
✅ Token presente no header
✅ Schema validation
POST 400 Nome duplicado ✅ Mensagem de erro específica
POST 401 Token inválido/expirado ✅ Mensagem de erro
✅ Token presente verificado
POST 403 Usuário sem permissão ✅ Mensagem "Rota exclusiva para administradores"

Cobertura: 95% | Testes: 12


/produtos - Listar Produtos

Método Status Code Cenário Validações Status
GET 200 Listagem com sucesso ✅ Quantidade corresponde ao array
✅ Preços positivos
✅ Quantidade não-negativa
✅ Campos obrigatórios
✅ Captura primeiro/último produto COM estoque
✅ Schema validation
GET 200 Filtros por query params ✅ Filtro por nome, preço, descrição

Cobertura: 95% | Testes: 15


/produtos/{id} - Buscar Produto por ID

Método Status Code Cenário Validações Status
GET 200 Produto encontrado ✅ ID corresponde ao solicitado
✅ ID válido
✅ Preço >= 1
✅ Quantidade >= 0
✅ Nome não vazio
✅ Campos obrigatórios
✅ Schema validation
GET 400 Produto não encontrado ✅ Mensagem de erro específica

Cobertura: 90% | Testes: 12


/produtos/{id} - Editar Produto

Método Status Code Cenário Validações Status
PUT 200 Alteração com sucesso (ADM) ✅ Mensagem de sucesso
✅ Token presente
✅ Schema validation
PUT 400 Nome duplicado ✅ Mensagem de erro
PUT 401 Token inválido ✅ Mensagem de erro
PUT 403 Usuário sem permissão ✅ Mensagem específica

Cobertura: 90% | Testes: 10


/produtos/{id} - Excluir Produto

Método Status Code Cenário Validações Status
DELETE 200 Exclusão com sucesso (ADM) ✅ Mensagem de sucesso
✅ Token presente
✅ Schema validation
DELETE 400 Produto em carrinho ❌ Não testado explicitamente ⚠️
DELETE 401 Token inválido ✅ Mensagem de erro
DELETE 403 Usuário sem permissão ✅ Mensagem específica

Cobertura: 85% | Testes: 10


🛒 Gerenciamento de Carrinhos

POST /carrinhos - Criar Carrinho

Collection Status Tempo Validações
Admin 201 Created 52ms 7 assertions
User 201 Created 48ms 7 assertions

✅ Validações:

  • Token presente
  • ID gerado
  • Vinculação ao usuário
  • Schema validation

📊 Cobertura: 100% | Total de Testes: 14


GET /carrinhos - Listar Carrinhos

Collection Status Carrinhos Validações
Admin 200 OK 2 11 assertions
User 200 OK 2 11 assertions

✅ Validações Avançadas:

  • Cada usuário possui apenas 1 carrinho
  • Cálculo de preço total correto
  • Cálculo de quantidade total correto
  • Sem produtos duplicados

📊 Cobertura: 100% | Total de Testes: 22


GET /carrinhos/{id} - Buscar por ID

Collection Status Tempo Validações
Admin 200 OK 46ms 14 assertions
User 200 OK 51ms 14 assertions

✅ Validações Matemáticas:

  • precoTotal = Σ(preço × quantidade)
  • quantidadeTotal = Σ(quantidades)

📊 Cobertura: 100% | Total de Testes: 28


DELETE /carrinhos/cancelar-compra - Cancelar

Collection Status Efeito Validações
Admin 200 OK Estoque reabastecido 8 assertions
User 200 OK Estoque reabastecido 8 assertions

📊 Cobertura: 100% | Total de Testes: 16


DELETE /carrinhos/concluir-compra - Concluir

Collection Status Tempo Validações
Admin 200 OK 42ms 8 assertions
User 200 OK 48ms 8 assertions

📊 Cobertura: 100% | Total de Testes: 16


/carrinhos - Listar Carrinhos

Método Status Code Cenário Validações Status
GET 200 Listagem com sucesso ✅ Quantidade corresponde ao array
✅ Usuário possui apenas 1 carrinho
✅ Preços válidos
✅ Cálculo de preço total
✅ Cálculo de quantidade total
✅ Campos obrigatórios
✅ Produtos sem duplicação
✅ Schema validation

Cobertura: 95% | Testes: 16


/carrinhos/{id} - Buscar Carrinho por ID

Método Status Code Cenário Validações Status
GET 200 Carrinho encontrado ✅ ID válido
✅ Vinculado a usuário
✅ Possui >= 1 produto
✅ Preço total >= 0
✅ Quantidade total >= 1
✅ Cálculo preço correto
✅ Cálculo quantidade correto
✅ Produtos com campos obrigatórios
✅ Sem produtos duplicados
✅ Schema validation
GET 400 Carrinho não encontrado ✅ Mensagem de erro
✅ Resposta contém apenas message

Cobertura: 95% | Testes: 18


/carrinhos/cancelar-compra - Cancelar Compra

Método Status Code Cenário Validações Status
DELETE 200 Cancelamento com sucesso ✅ Mensagem de sucesso
✅ Estoque reabastecido
✅ Token presente
✅ Limpeza de variável cartID
✅ Schema validation
DELETE 200 Nenhum carrinho encontrado ✅ Mensagem específica
DELETE 401 Token inválido ✅ Mensagem de erro

Cobertura: 90% | Testes: 12


/carrinhos/concluir-compra - Concluir Compra

Método Status Code Cenário Validações Status
DELETE 200 Conclusão com sucesso ✅ Mensagem de sucesso
✅ Token presente
✅ Schema validation
DELETE 200 Nenhum carrinho encontrado ✅ Mensagem específica
DELETE 401 Token inválido ✅ Mensagem de erro

Cobertura: 90% | Testes: 10


🎯 Tipos de Validação Implementados

✅ Validações Funcionais

  • Status codes corretos
  • Mensagens de resposta adequadas
  • Estrutura de dados correta
  • Regras de negócio respeitadas

✅ Validações de Contrato (Schema)

  • Tipos de dados corretos
  • Campos obrigatórios presentes
  • Estrutura JSON válida
  • 100% dos endpoints validados

✅ Validações de Segurança

  • Autenticação via token JWT
  • Autorização por perfil (ADM vs User)
  • Validação de token expirado
  • Rotas protegidas testadas

✅ Validações de Integridade

  • Cálculos matemáticos (preço, quantidade)
  • Relacionamentos entre entidades
  • Consistência de estoque
  • Unicidade de registros

⚠️ Validações Pendentes

  • Teste de SQL Injection
  • Teste de XSS
  • Teste de rate limiting
  • Validação de tamanho máximo de campos

📊 Cobertura por Tipo de Teste

Tipo de Teste Cobertura Quantidade Status
Testes Funcionais 95% 120+
Testes de Integração 90% 35+
Validação de Schema 100% 17
Testes de Segurança 85% 20+ ⚠️
Testes de Performance 0% 0

🚀 Cenários de Fluxo Completo Testados

✅ Fluxo 1: Cadastro e Login (ADM)

  1. Gerar massa de dados aleatórios
  2. Cadastrar usuário administrador
  3. Realizar login
  4. Capturar token JWT
  5. Validar token válido por 10 minutos

Status: ✅ Testado | Cobertura: 100%


✅ Fluxo 2: CRUD Completo de Produtos (ADM)

  1. Login como administrador
  2. Cadastrar produto
  3. Listar produtos
  4. Buscar produto por ID
  5. Editar produto
  6. Excluir produto

Status: ✅ Testado | Cobertura: 95%


✅ Fluxo 3: Compra com Carrinho (User)

  1. Login como usuário
  2. Listar produtos disponíveis
  3. Criar carrinho com 2 produtos
  4. Validar cálculo de totais
  5. Buscar carrinho por ID
  6. Cancelar/Concluir compra

Status: ✅ Testado | Cobertura: 95%


⚠️ Fluxo 4: Validação de Permissões

  1. Login como usuário comum
  2. Tentar cadastrar produto (deve falhar - 403)
  3. Tentar editar produto (deve falhar - 403)
  4. Tentar excluir produto (deve falhar - 403)

Status: ✅ Testado | Cobertura: 90%


🔴 Gaps Identificados (O que NÃO está testado)

Prioridade Alta

  • Validação de SQL Injection em todos os campos
  • Testes de limite de caracteres (campos muito longos)
  • Validação de tipos incorretos (string no lugar de number)
  • Teste de produto em carrinho ao tentar excluir
  • Teste de usuário com carrinho ao tentar excluir

Prioridade Média

  • Testes de performance/carga
  • Validação de rate limiting
  • Testes de timeout
  • Validação de CORS
  • Testes de concorrência

Prioridade Baixa

  • Testes de acessibilidade
  • Validação de encoding (UTF-8, etc.)
  • Testes com diferentes browsers/clients
  • Validação de headers opcionais

🎯 Metas Futuras

Q1 2025

  • Atingir 98% de cobertura
  • Adicionar 30+ testes de segurança
  • Implementar testes de performance
  • Criar dashboard de métricas em tempo real

Q2 2025

  • Implementar testes de carga (100+ usuários simultâneos)
  • Adicionar testes de regressão visual
  • Automatizar geração deste relatório
  • Integrar com SonarQube

📝 Notas Técnicas

Ferramentas Utilizadas

  • Newman CLI: Executor de coleções Postman
  • AJV: Validação de JSON Schema
  • GitHub Actions: Automação CI/CD
  • Newman Reporters: HTML Extra, CSV, JSON

Boas Práticas Implementadas

✅ Geração dinâmica de dados de teste
✅ Validação de contrato em 100% dos endpoints
✅ Captura e reutilização de variáveis
✅ Limpeza de variáveis entre testes
✅ Tratamento de múltiplos cenários (sucesso/erro)
✅ Logs informativos no console
✅ Scripts reutilizáveis (funções helper)


🏆 Conclusão

O projeto apresenta uma excelente cobertura de testes (95%), com validações robustas e cenários bem estruturados. Os principais pontos fortes são:

  1. Validação de Schema: 100% dos endpoints
  2. Testes de Integração: Fluxos completos testados
  3. Segurança: Autenticação e autorização validadas
  4. Automação: CI/CD configurado e funcional

Próximos Passos Recomendados

  1. Preencher os gaps de prioridade alta
  2. Adicionar testes de performance básicos
  3. Automatizar geração deste relatório
  4. Criar dashboard visual de cobertura

Maintainer: @sthefanyricardo

Repositório: testes-api-postman-newman

Para documentação completa, consulte: Test Coverage Report