Pular para o conteúdo principal

🧪 Tipos de Testes

📋 Visão Geral

O projeto Robot Framework implementa testes end-to-end (E2E) focados na validação de fluxos completos da aplicação, garantindo que todas as funcionalidades críticas funcionem corretamente desde a interface do usuário até a integração com APIs e banco de dados.

🔄 Testes End-to-End (E2E)

🎯 Objetivo

Os testes E2E simulam o comportamento real do usuário, validando fluxos completos da aplicação desde a interface até a integração com APIs e banco de dados.

📊 Cobertura Atual

  • Autenticação: Login, logout e recuperação de senha
  • Cadastro: Registro de novos usuários com validações completas
  • Perfil: Edição e atualização de dados do usuário
  • Listagem: Visualização e gerenciamento de usuários
  • Navegação: Fluxos de navegação entre páginas
  • Validações: Testes de validação de formulários e campos

🛠️ Características Técnicas

  • Base URL: http://localhost:8181
  • Browser: Chrome/Chromium com Browser Library
  • API Integration: Testes diretos com APIs REST
  • Paralelização: Suporte para execução paralela com Pabot
  • Screenshots: Capturas automáticas em caso de falha

📝 Exemplos de Implementação

🔐 Teste de Login

*** Settings ***
Documentation Suite de testes para validar funcionalidades de login.

Resource ../resources/keywords.resource
Resource ../resources/loginKeywords.resource

Test Setup Preparar Teste ${BASE_URL}
Test Teardown Fechar O Navegador

*** Test Cases ***
Cenário 1: Deveria Ser Possivel Visualizar Os Elementos Da Tela
[Documentation] Testa a exibição correta dos elementos na tela de login.
Verificar Os Elementos Da Tela

Cenário 2: Deveria Ser Possivel Fazer Login Com As Credenciais Válidas
[Documentation] Testa login com credenciais corretas.
Digitar O Email Do Usuario generic@example.com
Digitar O Password Do Usuario 123456
Clicar No Botão De Entrar Na Conta
Verificar O Feedback Do Usuario Login realizado com sucesso!

Cenário 3: Deveria Ser Possivel Ir Para A Tela De Cadastro
[Documentation] Testa a navegação para a página de cadastro.
Clicar No Link link-signup
Verificar A Navegação Da Url signup

📝 Teste de Cadastro

*** Settings ***
Documentation Suite de testes para validar funcionalidades de cadastro de usuários.

Resource ../resources/keywords.resource
Resource ../resources/registerKeywords.resource

Test Setup Preparar Teste ${BASE_URL} signup
Test Teardown Fechar O Navegador

*** Test Cases ***
Cenário 1: Deveria Ser Possível Visualizar Os Elementos Da Tela De Cadastros
[Documentation] Verifica se todos os elementos esperados na tela de cadastro são exibidos corretamente.
Verificar Os Elementos Da Tela De Cadastro

Cenário 2: Não Deveria Ser Possível Criar O Usuário Com O Nome Completo Errado
[Documentation] Testa a validação do campo "Nome Completo" com um valor inválido.
Preencher O Campo fullname Teste
Verificar A Mensagem Do Erro No Campo fullname O Nome Completo deve conter pelo menos Nome e Sobrenome.

Cenário 3: Deveria Ser Possível Cadastrar Um Usuário
[Documentation] Valida o fluxo completo para criar um novo usuário com dados válidos.
Preencher Todos Os Campos
Clicar No Botão Cadastrar
Verificar A Mensagem De Sucesso No Toast

👤 Teste de Perfil

*** Settings ***
Documentation Suite de testes para validar funcionalidades de perfil de usuário.

Library ../library/CustomDataLibrary.py
Resource ../resources/keywords.resource
Resource ../resources/profileKeywords.resource

Test Setup Preparar Teste Com API ${BASE_URL} profile
Test Teardown Fechar O Navegador

*** Test Cases ***
Cenário 1: Deveria Ser Possível Visualizar Os Elementos Da Tela De Perfil
[Documentation] Verifica se os elementos da tela de perfil do usuário estão visíveis.
Verificar Os Elementos Da Tela De Perfil Do Usuário

Cenário 2: Deveria Ser Possível Salvar Alteração
[Documentation] Verifica se é possível salvar alteração.
${fullName}= Generate Full Name
${phone}= Generate Phone
${socialName}= Generate First Name

Preencher Os Campos Do Formulário fullname-profile ${fullName}
Preencher Os Campos Do Formulário phone-profile ${phone}
Preencher Os Campos Do Formulário socialname-profile ${socialName}
Clicar No Botão Salvar [data-testid="btn-save-profile"]
Verificar A Mensagem Do Toast Ao Tentar Atualizar Usuário alterado com sucesso!

📋 Teste de Listagem

*** Settings ***
Documentation Suite de testes para validar funcionalidades de listagem de usuários.

Resource ../resources/keywords.resource
Resource ../resources/listUsersKeywords.resource

Test Setup Preparar Teste Com API ${BASE_URL} listusers
Test Teardown Fechar O Navegador

*** Test Cases ***
Deveria Ser Possível Visualizar Elementos Da Tela De Listagem De Usuários
[Documentation] Testa a exibição correta dos elementos na tela de listagem de usuários.
Verificar Elemento Visível [data-testid="table-users"]
Verificar Elemento Visível [data-testid="checkbox-select-all"]
Verificar Elemento Visível [data-testid="btn-delete-user"]

Deveria Ser Possível Selecionar Um Usuário E Excluí-lo
[Documentation] Testa a seleção de um usuário e sua exclusão.
Selecionar Checkbox Por Índice 2
Clicar Botão [data-testid="btn-delete-user"]
Verificar Mensagem Toast 1 usuário(s) excluído(s) com sucesso!

🔄 Teste de Recuperação de Senha

*** Settings ***
Documentation Suite de testes para validar funcionalidades de recuperação de senha.

Resource ../resources/keywords.resource
Resource ../resources/recoverKeywords.resource

Test Setup Preparar Teste ${BASE_URL} recover-password
Test Teardown Fechar O Navegador

*** Test Cases ***
Cenário 1: Deveria Ser Possível Visualizar Os Elementos Da Tela E Recuperar A Senha
[Documentation] Verifica se os elementos da tela de recuperação de senha estão visíveis.
Verificar Os Elementos Da Tela De Recuperação De Senha

Cenário 2: Deveria Ser Possível Enviar O Email De Recuperação De Senha
[Documentation] Verifica se é possível enviar o email de recuperação de senha.
Preencher O Campo De Email generic@example.com
Clicar No Botão De Recuperar A Senha
Verificar A Mensagem Do Toast De Recuperação Um e-mail foi enviado com instruções para recuperar a senha.

🎯 Estratégias de Teste

📋 Padrões de Nomenclatura

  • Suites: [Funcionalidade].robot (ex: login.robot)
  • Test Cases: Cenário [Número]: [Descrição do Comportamento]
  • Keywords: [Ação] [Objeto] (ex: Clicar No Botão De Entrar)
  • Tags: Uso de tags para categorização e filtros

🔧 Hooks e Setup

  • Test Setup: Configuração antes de cada teste
  • Test Teardown: Limpeza após cada teste
  • Suite Setup: Configuração antes da suite
  • Suite Teardown: Limpeza após a suite

🎨 Seletores de Teste

  • Padrão: [data-testid="elemento"]
  • CSS Selectors: css=[data-testid="elemento"]
  • Consistência: Todos os elementos interativos possuem data-testid
  • Manutenibilidade: Seletores independentes de mudanças de CSS

🔄 Keywords e Recursos

  • Modularidade: Keywords organizadas por funcionalidade
  • Reutilização: Keywords compartilhadas entre testes
  • Parâmetros: Uso de argumentos para flexibilidade
  • Documentação: Documentação clara para cada keyword

📊 Métricas de Qualidade

🎯 Cobertura de Testes

  • Fluxos Principais: 5 fluxos principais cobertos
  • Cenários: 30+ cenários de teste implementados
  • Validações: Cobertura completa de validações de formulário

⚡ Performance

  • Execução E2E: ~8-12 minutos
  • Paralelização: 4 processos simultâneos com Pabot
  • Retry Strategy: Implementada via Robot Framework

🛡️ Confiabilidade

  • API Integration: Testes diretos com APIs para maior confiabilidade
  • Data Isolation: Geração de dados únicos para cada execução
  • Error Handling: Tratamento robusto de erros e timeouts
  • Screenshots: Capturas automáticas em caso de falha

🔧 Keywords Avançadas

🎲 Geração de Dados

*** Keywords ***
Preencher Todos Os Campos
${cpf}= Generate Valid Cpf
${fullName}= Generate Full Name
${email}= Generate Email
${phone}= Generate Phone

Fill Text css=[data-testid="input-fullname"] ${fullName}
Fill Text css=[data-testid="input-socialname"] Nome Social
Fill Text css=[data-testid="input-document"] ${cpf}
Fill Text css=[data-testid="input-phone"] ${phone}
Fill Text css=[data-testid="input-email"] ${email}
Fill Text css=[data-testid="input-password"] 123456
Fill Text css=[data-testid="input-password-confirmation"] 123456

🔐 Autenticação via API

*** Keywords ***
Login Via API
${payload}= Evaluate {"email": "${EMAIL}", "password": "${PASSWORD}"} json
${response}= POST ${API_URL}/auth/login json=${payload}
Should Be Equal As Numbers ${response.status_code} 200

${responseJson}= Evaluate ${response.text} json
${token}= Set Variable ${responseJson["token"]}

LocalStorage Set Item user-token ${token}

🎯 Validações e Assertions

*** Keywords ***
Verificar A Mensagem Do Erro No Campo
[Arguments] ${name} ${error}
Wait For Elements State [data-testid="input-error-${name}"] visible
${elementText}= Get Text [data-testid="input-error-${name}"]
Should Be Equal ${elementText} ${error}

Verificar A Navegação Da Url
[Arguments] ${expectedPath}
Wait For Navigation ${BASE_URL}${expectedPath}
${currentUrl}= Get Url
Should Start With ${currentUrl} ${BASE_URL}
${urlComponents}= Parse Url ${currentUrl}
Should Be Equal As Strings ${urlComponents.path} /${expectedPath}

🔄 Interações com Elementos

*** Keywords ***
Selecionar Checkbox Por Índice
[Arguments] ${index}
${checkboxes}= Get Elements [data-testid="checkbox-select-users"]
Run Keyword If ${index} >= len(${checkboxes}) Fail Índice ${index} fora do intervalo: existem apenas ${len(${checkboxes})} checkboxes.
${checkbox}= Get From List ${checkboxes} ${index}
Check Checkbox ${checkbox}

Simular Evento De Blur
[Arguments] ${locator}
Press Keys css=[data-testid="input-${locator}"] Tab