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, teste de carga com Grafana k6 e pipeline CI/CD com GitHub Actions.
- Node.js
- Express
- MongoDB / Mongoose
- Postman + Newman (testes funcionais e pipeline CI/CD)
- Grafana k6 (testes de carga e performance)
- GitHub Actions (execução automática dos testes a cada push)
| 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.postman_collection.json na raiz do projeto.
Para importar no Postman:
- Abra o Postman
- Clique em Import
- Selecione o arquivo
Postman.postman_collection.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.
Para rodar via Newman (linha de comando):
newman run Postman.postman_collection.json -e Postman.postman_environment.jsonOs testes são executados automaticamente via GitHub Actions a cada push na branch main. O pipeline sobe o MongoDB, instala as dependências, inicializa o backend e executa a collection completa com Newman.
Para acompanhar as execuções: Actions
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% ✅