|
|
<table>
|
|
|
<tr>
|
|
|
<th> [Home](home) </th>
|
|
|
<th> [Escopo e Cronograma](escopo e cronograma) </th>
|
|
|
<th> [Processo](processo) </th>
|
|
|
<th> [Design/Mockups](design/mockups) </th>
|
|
|
<th> [Configuração](configuracao) </th>
|
|
|
<th> [Arquitetura](arquitetura) </th>
|
|
|
<th> [Infra](infraestrutura) </th>
|
|
|
<th> [Código](codigo) </th>
|
|
|
<th> [BD](banco de dados) </th>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
# Testes automatizados
|
|
|
|
|
|
Como parte dos processos de garantia de qualidade de software, incluímos etapas automatizadas de verificação e validação do software.
|
|
|
|
|
|
## Testes de integração no backend
|
|
|
|
|
|
## Testes de intergação no Frontend
|
|
|
### 1. FLUXOS DE AUTENTICAÇÃO E ONBOARDING
|
|
|
|
|
|
#### 1.1 Cadastro de Usuário Regular
|
|
|
|
|
|
- **Objetivo**: Verificar processo de cadastro com formulário específico
|
|
|
- **Pré-condições**: App instalado, primeira execução
|
|
|
- **Passos**:
|
|
|
1. Abrir aplicativo na tela Home
|
|
|
2. Clicar em "Cadastre-se" (link na tela inicial)
|
|
|
3. Preencher campos obrigatórios:
|
|
|
- Nome completo
|
|
|
- Nickname
|
|
|
- Email
|
|
|
- Senha
|
|
|
- Telefone
|
|
|
- Gênero (dropdown)
|
|
|
- Data de nascimento
|
|
|
4. Clicar em "Próximo" (deve direcionar para tela de seleção de categorias)
|
|
|
5. Selecionar preferências (categorias)
|
|
|
6. Clicar em botão de finalizar cadastro
|
|
|
- **Resultado esperado**: Usuário cadastrado e direcionado para o feed
|
|
|
|
|
|
#### 1.2 Cadastro de Restaurante
|
|
|
|
|
|
- **Objetivo**: Verificar cadastro de estabelecimento
|
|
|
- **Pré-condições**: App instalado
|
|
|
- **Passos**:
|
|
|
1. Na tela Home, clicar em "Cadastre seu restaurante aqui!"
|
|
|
2. Preencher formulário específico de restaurante:
|
|
|
- Nome
|
|
|
- Endereço
|
|
|
- Descrição
|
|
|
- Telefone
|
|
|
- Preço médio
|
|
|
- Clica em Adicionar Cardápio
|
|
|
- Adiciona horários de funcionamento
|
|
|
4. Ao clicar em Adicionar Cardápio, deve abrir tela de adição de item no cardápio. Preencehr os campos:
|
|
|
- Imagem
|
|
|
- Descrição
|
|
|
- Preço
|
|
|
5. Clicar em avançar, deve voltar para o cadastro
|
|
|
6. Ao clicar em "Próximo" deve direcionar para tela de seleção de categorias
|
|
|
7. Selecionar preferências (categorias)
|
|
|
8. Clicar em botão de finalizar cadastro
|
|
|
- **Resultado esperado**: Restaurante cadastrado com todos os campos, incluindo cardápio e horários, e redirecionando para tela do seu perfil (ou para o Login)
|
|
|
|
|
|
#### 1.3 Login de Usuário
|
|
|
|
|
|
- **Objetivo**: Verificar autenticação existente
|
|
|
- **Pré-condições**: Usuário previamente cadastrado
|
|
|
- **Passos**:
|
|
|
1. Na tela Home, clicar em "Entrar"
|
|
|
2. Inserir email no campo específico
|
|
|
3. Inserir senha no campo específico
|
|
|
4. Clicar em botão "Entrar"
|
|
|
5. Verificar validação de campos obrigatórios
|
|
|
- **Resultado esperado**: Login realizado com sucesso, e redirecionamento para tela do Feed em "/Feed"
|
|
|
|
|
|
### 2. NAVEGAÇÃO PRINCIPAL E INTERFACE
|
|
|
|
|
|
#### 2.1 Bottom Navigation (Tabs)
|
|
|
|
|
|
- **Objetivo**: Verificar navegação entre as 5 abas principais
|
|
|
- **Componentes**: Feed, Search, Roulette (ícone especial), Community, Profile
|
|
|
- **Passos**:
|
|
|
1. Fazer login e verificar aba Feed ativa (ícone home)
|
|
|
2. Clicar na aba Search (ícone search) - índice 1
|
|
|
3. Clicar na aba Roulette (ícone especial roleta) centralizada - índice 2
|
|
|
4. Clicar na aba Community (ícone groups) - índice 3
|
|
|
5. Clicar na aba Profile (ícone person) - índice 4
|
|
|
6. Retornar para Feed (ícone home) - índice 0
|
|
|
- **Resultado esperado**: Navegação fluida, estados visuais corretos, estilo da barra (altura 66px, borda laranja)
|
|
|
|
|
|
#### 2.2 Redirecionamento de Perfil por Role
|
|
|
|
|
|
- **Objetivo**: Verificar redirecionamento automático baseado no tipo de usuário
|
|
|
- **Passos**:
|
|
|
1. Login como USER → verificar redirecionamento para "/UserProfile"
|
|
|
2. Login como INFLUENCER → verificar redirecionamento para "/InfluencerProfile"
|
|
|
3. Login como RESTAURANT → verificar redirecionamento para "/restaurantProfile" com ID
|
|
|
- **Resultado esperado**: Cada tipo de usuário acessa seu perfil específico
|
|
|
|
|
|
### 3. FUNCIONALIDADES DO FEED
|
|
|
|
|
|
#### 3.1 Feed Principal - Carregamento e Exibição
|
|
|
|
|
|
- **Objetivo**: Verificar funcionamento do feed baseado em localização
|
|
|
- **Componentes**: Header com nome/nickname, SearchInput, Banner da Roleta, Carrossel de Restaurantes e de Postagens
|
|
|
- **Passos**:
|
|
|
1. Fazer login e aguardar carregamento
|
|
|
2. Verificar permissão de localização (do dispositivo)
|
|
|
3. Aguardar carregamento de latitude/longitude
|
|
|
4. Verificar chamada da API getFeed com coordenadas
|
|
|
5. Verificar exibição do Header com dados do usuário
|
|
|
6. Verificar SearchInput (apenas clicável, não editável)
|
|
|
7. Verificar banner da Roleta (imagem card-roulette.png)
|
|
|
8. Verificar seção "Restaurantes perto de você"
|
|
|
9. Verificar carrossel de Restaurantes e de Postagens
|
|
|
- **Resultado esperado**: Feed carregado com todos os componentes, dados de localização utilizados
|
|
|
|
|
|
#### 3.2 Interação com Componentes do Feed
|
|
|
|
|
|
- **Objetivo**: Testar elementos interativos do feed
|
|
|
- **Passos**:
|
|
|
1. Clicar no SearchInput → redirecionamento para "/Search"
|
|
|
2. Clicar no banner da Roleta → redirecionamento para "/Roulette"
|
|
|
3. Interagir com o carousel de restaurantes próximos: ao clicar em um item do carrossel, redireciona para tela de perfil do restaurante clicado
|
|
|
4. Scroll vertical na tela
|
|
|
- **Resultado esperado**: Navegação correta, interações responsivas
|
|
|
|
|
|
#### 3.3 Estados de Erro e Loading
|
|
|
|
|
|
- **Objetivo**: Verificar tratamento de cenários especiais
|
|
|
- **Passos**:
|
|
|
1. Testar com loading (LocationProvider) → ActivityIndicator visível
|
|
|
2. Testar com erro de API → mensagem de erro vermelha centralizada
|
|
|
3. Testar sem permissão de localização
|
|
|
- **Resultado esperado**: Feedback visual adequado para cada estado
|
|
|
|
|
|
### 4. SISTEMA DE BUSCA
|
|
|
|
|
|
#### 4.1 Busca Geral (Search Tab)
|
|
|
|
|
|
- **Objetivo**: Verificar funcionalidade de busca integrada
|
|
|
- **Componentes**: SearchInput, SearchRestaurants, SearchUsers
|
|
|
- **Passos**:
|
|
|
1. Acessar aba Search
|
|
|
2. Verificar SearchInput com placeholder "Pesquisar"
|
|
|
3. Digitar termo de busca
|
|
|
4. Executar busca (hook useSearch)
|
|
|
5. Verificar loading state (ActivityIndicator)
|
|
|
6. Verificar resultados divididos em restaurantes e usuários
|
|
|
- **Resultado esperado**: Busca unificada funcionando, resultados categorizados
|
|
|
|
|
|
#### 4.2 Busca de Usuários (Prefixo @)
|
|
|
|
|
|
- **Objetivo**: Verificar busca específica de usuários
|
|
|
- **Passos**:
|
|
|
1. Na aba Search, digitar "@" seguido de nome
|
|
|
2. Verificar detecção automática (isUserSearch = true)
|
|
|
3. Verificar componente SearchUsers sendo exibido
|
|
|
4. Verificar resultados de usuários
|
|
|
- **Resultado esperado**: Busca focada em usuários com prefixo @
|
|
|
|
|
|
#### 4.3 Busca de Restaurantes
|
|
|
|
|
|
- **Objetivo**: Verificar busca de estabelecimentos
|
|
|
- **Passos**:
|
|
|
1. Buscar por nome de restaurante (sem @)
|
|
|
2. Verificar componente SearchRestaurants
|
|
|
3. Verificar filtros disponíveis (se houver)
|
|
|
4. Acessar detalhes de restaurante encontrado
|
|
|
- **Resultado esperado**: Resultados relevantes de restaurantes
|
|
|
|
|
|
#### 4.4 Filtros de Busca (FilterScreen/FilterResultScreen)
|
|
|
|
|
|
- **Objetivo**: Verificar sistema de filtros avançados
|
|
|
- **Passos**:
|
|
|
1. Acessar tela de filtros
|
|
|
2. Aplicar filtros disponíveis
|
|
|
3. Ver resultados filtrados (FilterResultScreen)
|
|
|
4. Verificar contexto FilterResultProvider
|
|
|
- **Resultado esperado**: Filtros funcionais com resultados precisos
|
|
|
|
|
|
### 5. FUNCIONALIDADE ROLETA
|
|
|
|
|
|
#### 5.1 Interface da Roleta
|
|
|
|
|
|
- **Objetivo**: Verificar componentes visuais e interação
|
|
|
- **Componentes**: Animação de rotação, modais de filtro, confetti, resultado
|
|
|
- **Passos**:
|
|
|
1. Acessar aba Roulette (ícone especial)
|
|
|
2. Verificar gradiente de fundo (#FFB370 → #FF914B)
|
|
|
3. Verificar imagem da roleta com animação
|
|
|
4. Verificar botão de girar
|
|
|
5. Verificar botões de filtros (Vibe, Budget, Filter)
|
|
|
- **Resultado esperado**: Interface visual completa e responsiva
|
|
|
|
|
|
#### 5.2 Sistema de Filtros da Roleta
|
|
|
|
|
|
- **Objetivo**: Verificar modais de configuração
|
|
|
- **Passos**:
|
|
|
1. Clicar no filtro "Vibe" → RouletteVibeModal
|
|
|
2. Selecionar vibe (setSelectedVibe)
|
|
|
3. Clicar no filtro "Budget" → RouletteBudgetModal
|
|
|
4. Selecionar orçamento (setSelectedBudget)
|
|
|
5. Usar filtro geral → RouletteFilterModal
|
|
|
6. Verificar persistência das seleções
|
|
|
- **Resultado esperado**: Filtros aplicados e mantidos entre interações
|
|
|
|
|
|
#### 5.3 Execução da Roleta
|
|
|
|
|
|
- **Objetivo**: Testar algoritmo de recomendação e animação
|
|
|
- **Passos**:
|
|
|
1. Configurar filtros (vibe e budget)
|
|
|
2. Clicar para girar a roleta (spinRoulette)
|
|
|
3. Verificar estado isSpinning = true
|
|
|
4. Aguardar animação (2000ms duration)
|
|
|
5. Verificar confetti.gif durante 2.8s
|
|
|
6. Verificar chamada getRandomRestaurant(vibe, budget)
|
|
|
7. Aguardar RouletteRestaurantModal com resultado
|
|
|
- **Resultado esperado**: Animação fluida, API chamada com filtros, resultado exibido
|
|
|
|
|
|
#### 5.4 Resultado da Roleta
|
|
|
|
|
|
- **Objetivo**: Verificar exibição e ações pós-roleta
|
|
|
- **Passos**:
|
|
|
1. Verificar modal com dados do restaurante sorteado
|
|
|
2. Ver detalhes do restaurante
|
|
|
3. Opções de ação (aceitar, rejeitar, ver mais)
|
|
|
4. Girar novamente para novo resultado
|
|
|
- **Resultado esperado**: Informações completas, ações funcionais
|
|
|
|
|
|
### 6. SISTEMA DE AVALIAÇÕES
|
|
|
|
|
|
#### 6.1 Criação de Review (CreateReview)
|
|
|
|
|
|
- **Objetivo**: Verificar processo completo de avaliação
|
|
|
- **Pré-condições**: Usuário logado, restaurantId fornecido via parâmetros
|
|
|
- **Passos**:
|
|
|
1. Acessar tela CreateReview via navegação
|
|
|
2. Aguardar carregamento dos dados do usuário (getUserById)
|
|
|
3. Verificar campos disponíveis:
|
|
|
- Campo description (CustomTextInput)
|
|
|
- Sistema de nota/estrelas (setNota)
|
|
|
- Altura dinâmica do input (setImputHeight)
|
|
|
4. Preencher descrição da avaliação
|
|
|
5. Selecionar nota (0-5 estrelas com FontAwesome)
|
|
|
6. Enviar avaliação (createReview hook)
|
|
|
- **Resultado esperado**: Review criada e salva no sistema
|
|
|
|
|
|
#### 6.2 Interface de Avaliação
|
|
|
|
|
|
- **Objetivo**: Verificar componentes visuais da tela
|
|
|
- **Passos**:
|
|
|
1. Verificar ActivityIndicator durante loading
|
|
|
2. Verificar tratamento de erro (mensagem de erro se houver)
|
|
|
3. Verificar layout responsivo (SafeAreaView, ScrollView)
|
|
|
4. Verificar ícones de avaliação (FontAwesome stars)
|
|
|
5. Verificar componente MaterialIcons para ações
|
|
|
- **Resultado esperado**: Interface limpa e funcional
|
|
|
|
|
|
#### 6.3 Validação de Dados de Avaliação
|
|
|
|
|
|
- **Objetivo**: Verificar validações antes do envio
|
|
|
- **Passos**:
|
|
|
1. Tentar enviar sem descrição
|
|
|
2. Tentar enviar sem nota
|
|
|
3. Verificar campos obrigatórios
|
|
|
4. Verificar limites de caracteres
|
|
|
- **Resultado esperado**: Validações apropriadas aplicadas
|
|
|
|
|
|
### 7. GERENCIAMENTO DE PERFIL
|
|
|
|
|
|
#### 7.1 Perfis por Tipo de Usuário
|
|
|
|
|
|
- **Objetivo**: Verificar acesso específico baseado no role
|
|
|
- **Passos**:
|
|
|
1. **UserProfile**: Acesso para role = 'USER'
|
|
|
- Verificar redirecionamento automático
|
|
|
- Verificar funcionalidades específicas de usuário comum
|
|
|
2. **InfluencerProfile**: Acesso para role = 'INFLUENCER'
|
|
|
- Verificar funcionalidades específicas de influenciador
|
|
|
3. **restaurantProfile**: Acesso para role = 'RESTAURANT'
|
|
|
- Verificar redirecionamento com restaurantId = user.id
|
|
|
- Verificar dashboard de restaurante
|
|
|
- **Resultado esperado**: Cada perfil carrega funcionalidades específicas do role
|
|
|
|
|
|
#### 7.2 Edição de Perfil de Restaurante (RestaurantProfilePatch)
|
|
|
|
|
|
- **Objetivo**: Verificar funcionalidades de edição para restaurantes
|
|
|
- **Passos**:
|
|
|
1. Acessar tela RestaurantProfilePatch
|
|
|
2. Editar informações do estabelecimento
|
|
|
3. Atualizar dados comerciais
|
|
|
4. Salvar alterações
|
|
|
- **Resultado esperado**: Dados de restaurante atualizados
|
|
|
|
|
|
#### 7.3 Funcionalidades de Mídia (AddMedia)
|
|
|
|
|
|
- **Objetivo**: Verificar adição de conteúdo visual
|
|
|
- **Passos**:
|
|
|
1. Acessar tela AddMedia
|
|
|
2. Selecionar imagens da galeria
|
|
|
3. Adicionar descrições/legendas
|
|
|
4. Publicar mídia
|
|
|
- **Resultado esperado**: Mídia adicionada ao perfil/feed
|
|
|
|
|
|
### 8. CASOS ESPECIAIS E EDGE CASES
|
|
|
|
|
|
#### 8.1 Tratamento de Erros
|
|
|
|
|
|
- **Objetivo**: Verificar resiliência do sistema
|
|
|
- **Passos**:
|
|
|
1. Testar com conexão intermitente
|
|
|
2. Testar com dados inválidos
|
|
|
3. Testar upload de arquivo muito grande
|
|
|
4. Testar caracteres especiais em texto
|
|
|
5. Testar limites de caracteres
|
|
|
|
|
|
#### 8.2 Performance e Usabilidade
|
|
|
|
|
|
- **Objetivo**: Verificar experiência do usuário
|
|
|
- **Passos**:
|
|
|
1. Medir tempo de carregamento de telas
|
|
|
2. Testar com lista grande de restaurantes
|
|
|
3. Testar scroll em feeds extensos
|
|
|
4. Verificar responsividade da interface
|
|
|
5. Testar em diferentes tamanhos de tela
|
|
|
|
|
|
#### 8.3 Segurança e Privacidade
|
|
|
|
|
|
- **Objetivo**: Verificar proteção de dados
|
|
|
- **Passos**:
|
|
|
1. Testar acesso a dados sem permissão
|
|
|
2. Verificar criptografia de senhas
|
|
|
3. Testar bloqueio após tentativas incorretas
|
|
|
4. Verificar expiração de sessão
|
|
|
5. Testar exclusão de dados pessoais |