Documentação consolidada dos testes do ecossistema NutriMind (Backend, Frontend e IA), com foco em qualidade, cobertura e estratégia de QA.
Este repositório existe como documentação de QA do projeto NutriMind, reunindo em um único lugar:
- Resumo dos testes automatizados do Backend (JUnit 5, Spring Boot Test, MockMvc, Mockito, H2).
- Resumo dos testes automatizados do Frontend (Vitest, Vue Test Utils, jsdom).
- Resumo dos testes automatizados da IA (pytest, mocks, pytest-cov).
- Cenários de testes manuais que cobrem fluxos ponta a ponta (IA ⇄ Backend ⇄ Frontend) e experiência do usuário.
O objetivo é mostrar, de forma clara para recrutadores e times técnicos, como a qualidade foi tratada em cada camada do sistema.
🔗 Código-fonte completo do produto: Repositório principal do projeto NutriMind no GitHub
-
Backend (Java / Spring Boot)
- ~75 testes automatizados passando (
./mvnw test). - Foco em controllers REST, fluxos de autenticação, validações e regras de segurança.
- ~75 testes automatizados passando (
-
Frontend (Vue 3 + TypeScript)
- 243 testes automatizados (100% passando).
- Cobrem componentes, views, composables, UI, navegação, estados de erro e loading.
-
IA (Python)
- 52 testes automatizados (51 passando / 1 skipped).
- Validação de tools, agentes de IA, servidor Flask e tratamento de erros com mocks.
-
Testes Manuais (documentados)
- Fluxos críticos como login, cadastro, chat com IA, upload de imagem, planos alimentares, 2FA e performance percebida.
Tecnologias: JUnit 5, Spring Boot Test, MockMvc, Mockito, H2 em memória, AssertJ.
-
Estrutura de testes
controller/: testes de API paraAuthController,UserController,MealPlanController,ChatController.integration/: fluxo completo de autenticação (AuthIntegrationTest) usando H2.
-
Principais cenários cobertos
- Autenticação e segurança
- Registro de usuário (201, erros 400 para e‑mail duplicado/dados inválidos).
- Login (200 com token, 401 para credenciais inválidas).
- Fluxo de recuperação, redefinição e troca de senha.
- Validação de token e dados do usuário autenticado (
/validate-token,/me). - Garantia de 403 Forbidden em operações protegidas (
PUT/DELETEde usuários).
- Usuários
- CRUD de usuários, busca por ID, e‑mail, nome e role.
- Verificação de existência de e‑mail.
- Planos alimentares
- Validação de payload (400 quando dados obrigatórios faltam).
- Consultas, listagens, agrupamento de refeições por dia, 404 para IDs inexistentes.
- Chat / IA
- Envio de mensagens, tratamento de erros da IA, controle de sessões e paginação.
- Autenticação e segurança
-
Tipos de testes
- Unitários de controller, integração com H2 e validação de entrada.
-
Execução
- Todos os testes:
./mvnw test - Com cobertura (Jacoco configurado):
./mvnw clean test jacoco:report
- Todos os testes:
-
CI/CD
- Job
backend_testsno GitLab CI executando./mvnw testem cada MR.
- Job
Tecnologias: Vitest, Vue Test Utils, jsdom, TypeScript.
-
Estrutura de testes
src/tests/setup.ts: configuração global (mocks delocalStorage,matchMedia, stubs deTeleport, etc.).components/*.spec.ts: testes unitários de componentes (ex.:NotificationToast,ModalChangePassword,ModalForgotPassword,Sidebar).views/*.spec.ts: testes das telas (ex.:SignIn,SignUp,ChatView,ProfileView,MealPlanView).
-
Principais cenários cobertos
- Autenticação (SignIn / SignUp)
- Validação de e‑mail, senha, confirmações, mensagens de erro de rede/servidor.
- Login automático após cadastro bem‑sucedido.
- Componentes de UX
- Toasts de notificação (tipos, ícones, auto‑remoção, múltiplas notificações).
- Modais de esqueci/alterar senha (validações, estados de loading, redirecionamento).
- Chat com IA
- Envio de mensagens (clique, Enter, Shift+Enter).
- Estados de loading, sessão nova x existente, IDs de mensagem, formatação.
- Perfil e planos alimentares
- Renderização condicional de header/detalhes de perfil.
- Exibição de plano, carrossel de planos, grid de refeições, resumo nutricional, estados de erro e “empty state”.
- Autenticação (SignIn / SignUp)
-
Métricas principais
- 164 testes Vitest documentados por arquivo (e 243 testes no total da suíte).
- Objetivo de cobertura:
- Composables: 90%+ (100% atingido).
- Components: 80%+ (100% dos testados).
- Views: 70%+ (100% dos cenários determinísticos).
-
Execução
- Todos os testes:
npm run test - Com UI:
npm run test:ui - Com cobertura:
npm run test:coverage(geracoverage/index.html).
- Todos os testes:
-
CI/CD
- Job
frontend_testsno GitLab CI executandonpm ci+npm run testa cada MR.
- Job
Tecnologias: pytest, pytest-asyncio, pytest-cov, unittest.mock.
-
Estrutura de testes
tests/test_tools.py: valida ferramentas (tools.py) que conversam com backend, base vetorial, etc.tests/test_agents.py: garante que oroot_agente especialistas (NutriAgent,RecipeAgent,MealPlanAgent) estão corretamente configurados.tests/test_server.py: cobre o servidor Flask (/api/chat), CORS, configuração de sessão e fluxo de requisições.
-
Principais cenários cobertos
- Ferramentas (tools)
- Consulta à base nutricional com ChromaDB (quando encontra/não encontra contexto, tratamento de exceções).
- Obtenção de perfil de saúde do usuário (sucesso, 404, erro de API, falta de token).
- Salvamento de plano alimentar no backend (JSON inválido, sucesso, falhas de conexão).
- Agentes
- Nome, descrição, instruções e sub‑agentes configurados corretamente.
- Garantia de nomes únicos e consistentes para todos os especialistas.
- Servidor Flask
- Rejeição de requisições inválidas (sem
userMessage,sessionId,userId,authorization). - Aceitação de requisições válidas e tratamento de erros internos.
- Verificação de CORS, session service e estrutura de rotas.
- Rejeição de requisições inválidas (sem
- Ferramentas (tools)
-
Execução
- Todos os testes:
pytest - Arquivo específico:
pytest tests/test_tools.py - Com cobertura HTML:
pytest --cov=nutrimind_agent --cov-report=html
- Todos os testes:
-
CI/CD
- Job
ia_testsno GitLab CI executando:pip install -r requirements.txt -r requirements-test.txt pytest
- Job
Além dos testes automatizados, há uma bateria de testes manuais documentados (em estilo Gherkin/caso de teste) cobrindo:
-
Backend / API
- Cadastro, login, recuperação de senha, 2FA (ativar, desativar, login com 2FA).
- Atualização de perfil, geração de PDF de plano alimentar e envio por e‑mail.
- Recalculo de dieta com novos dados.
-
Frontend
- Navegação e responsividade do menu.
- Visualização de perfil e planos alimentares.
- Solicitação de plano/receitas via chat, upload de imagem, FAQ responsivo, indicadores de loading.
- Validação visual de mensagens de erro em formulários, limites (imagens grandes) e performance percebida.
-
IA
- Qualidade de respostas (nutrição, hábitos saudáveis, uso de dados do perfil).
- Recalculo de dieta, atualização de perfil via chat, tom de voz, naturalidade da conversa.
- Fluxos ponta a ponta (chat → backend → IA → frontend), incluindo análise de imagem.
Esses cenários completam a visão de QA do projeto, ligando o que é automatizado ao que é validado manualmente em ambiente real.
Este repositório foi organizado como documentação de qualidade do projeto NutriMind para uso em portfólio de QA.
Caso tenha algum feedback, entre em contato!
Desenvolvido com 💜 por Julia Gonzalez Moreira


