Projeto baseado no repositório original QaCoders Academy, desenvolvido durante o curso de testes de API. Este repositório contém melhorias implementadas durante os estudos, incluindo refatoração do código de geração de massa de dados, criação da função
recommendationUpdatepara validação no PUT, testes automatizados compm.testvia Collection Runner e teste de carga com Grafana k6.
- Node.js
- Express
- MongoDB / Mongoose
- Postman (testes funcionais e massa de dados)
- Grafana k6 (testes de carga e performance)
| Método | Rota | Descrição |
|---|---|---|
| GET | /status | Verifica se a API está online |
| POST | /api/recommendation | Cria uma recomendação |
| GET | /api/recommendation | Lista todas as recomendações |
| GET | /api/recommendation/:id | Busca uma recomendação por ID |
| PUT | /api/recommendation/:id | Atualiza uma recomendação |
| DELETE | /api/recommendation/:id | Remove uma recomendação |
- Todo cadastro via POST inicia com
situation: "Pendente"estatus: true, independente do valor enviado no body - O campo
fullNameexige nome e sobrenome — nomes simples são rejeitados - O campo
descriptionaceita no máximo 500 caracteres - O campo
starsé obrigatório - A alteração de
situationestatussó é possível via PUT
# Instalar dependências
npm install
# Executar em modo desenvolvimento
npm run devA collection está disponível no arquivo Postman.json na raiz do projeto.
Para importar:
- Abra o Postman
- Clique em Import
- Selecione o arquivo
Postman.json - Configure o environment com a variável
baseUrl: http://127.0.0.1:3001
Os testes foram executados com 100 iterações via Collection Runner, totalizando 1600 testes com 0 falhas.
O script de carga está disponível em k6/load-test-v2.js.
- Grafana k6 instalado
k6 run k6/load-test-v2.jsO teste simula o fluxo completo da API com 10 usuários simultâneos durante 2 minutos:
- 0–30s: rampa de 0 a 10 usuários
- 30s–1m30s: 10 usuários simultâneos
- 1m30s–2m: rampa de descida para 0
Cada iteração executa: POST → GET por ID → DELETE
| Métrica | Valor |
|---|---|
| Iterações completas | 908 |
| Checks executados | 4.540 |
| Checks com sucesso | 100% |
| Requisições com falha | 0% |
| Latência média | 4.42ms |
| P95 | 8.22ms |
| Requisições por segundo | 22 |
- P95 abaixo de 500ms ✅
- Taxa de falha abaixo de 1% ✅