Skip to content

Documentação de testes manuais e automatizados do projeto de API Nutrimind - Fatec

Notifications You must be signed in to change notification settings

juliagonzalezmoreira/doc-testes-nutrimind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portfólio de Testes do Projeto NutriMind

Documentação consolidada dos testes do ecossistema NutriMind (Backend, Frontend e IA), com foco em qualidade, cobertura e estratégia de QA.


💡 Visão Geral

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


📊 Panorama Geral dos Testes

  • 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.

    Resultado dos testes do Backend

  • Frontend (Vue 3 + TypeScript)

    • 243 testes automatizados (100% passando).
    • Cobrem componentes, views, composables, UI, navegação, estados de erro e loading.

    Resultado dos testes do Frontend

  • IA (Python)

    • 52 testes automatizados (51 passando / 1 skipped).
    • Validação de tools, agentes de IA, servidor Flask e tratamento de erros com mocks.

    Resultado dos testes da IA

  • Testes Manuais (documentados)

    • Fluxos críticos como login, cadastro, chat com IA, upload de imagem, planos alimentares, 2FA e performance percebida.

🧪 Backend – Testes e Cobertura (Spring Boot)

Tecnologias: JUnit 5, Spring Boot Test, MockMvc, Mockito, H2 em memória, AssertJ.

  • Estrutura de testes

    • controller/: testes de API para AuthController, 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/DELETE de 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.
  • 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
  • CI/CD

    • Job backend_tests no GitLab CI executando ./mvnw test em cada MR.

🎨 Frontend – Testes e Cobertura (Vue 3 + Vitest)

Tecnologias: Vitest, Vue Test Utils, jsdom, TypeScript.

  • Estrutura de testes

    • src/tests/setup.ts: configuração global (mocks de localStorage, matchMedia, stubs de Teleport, 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”.
  • 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 (gera coverage/index.html).
  • CI/CD

    • Job frontend_tests no GitLab CI executando npm ci + npm run test a cada MR.

🤖 IA – Testes e Cobertura (Python / pytest)

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 o root_agent e 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.
  • Execução

    • Todos os testes: pytest
    • Arquivo específico: pytest tests/test_tools.py
    • Com cobertura HTML:
      pytest --cov=nutrimind_agent --cov-report=html
  • CI/CD

    • Job ia_tests no GitLab CI executando:
      pip install -r requirements.txt -r requirements-test.txt
      pytest

📋 Testes Manuais (Visão Consolidada)

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.


✅ Feedback

Caso tenha algum feedback, entre em contato!

Desenvolvido com 💜 por Julia Gonzalez Moreira

About

Documentação de testes manuais e automatizados do projeto de API Nutrimind - Fatec

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published