Skip to content

LuizClaudioPestana/registration-form

Repository files navigation

Testes Automatizados com Cypress - Formulário de Cadastro

Este projeto tem como objetivo validar um formulário de cadastro de usuário utilizando Cypress como framework de automação de testes web de interface. O foco dos testes é garantir que todas as regras de validação do formulário funcionem corretamente.

Funcionalidades Testadas

Os testes validam os seguintes requisitos do formulário:

  • Campos obrigatórios: O formulário não pode ser enviado sem preencher todos os campos.
  • Senha forte: A senha deve ter no mínimo 8 caracteres, 1 letra maiúscula e 1 número.
  • Confirmação de e-mail: O e-mail e a confirmação devem ser iguais.

Cenários de Teste

1️ - Preencher corretamente e enviar - Deve exibir mensagem de sucesso.
2️ - Deixar campos obrigatórios vazios - Deve exibir mensagens de erro.
3️ - Digitar uma senha fraca - Deve exibir erro de validação.
4️ - Digitar e-mails diferentes - Deve exibir erro.
5️ - Informar um e-mail inválido - Deve exibir erro.
6️ - Informar senha sem número - Deve exibir erro.
7️ - Informar senha sem letra maiúscula - Deve exibir erro.


Estrutura

  • A estrutura utilizada foi o Page Objects para melhor organização e reutilização do código.

Como Executar os Testes

1. Pré-requisitos

  • Ter o Node.js instalado (versão recomendada: 16+).
  • Ter o Cypress instalado no projeto.
  • Comando para instalar as dependências npm install
  • Comando para rodar os testes no modo interativo npx cypress open
  • Comando para rodar no modo headless npx cypress run

Testes de API com POSTMAN

Este projeto tem como objetivo validar a API https://jsonplaceholder.typicode.com/users e validar a API https://www.postman-echo.com/status/ para os casos de status 400 e 500 utilizando POSTMAN como ferramenta de teste.

Objetivos do Teste

O objetivo é garantir que a API está respondendo corretamente conforme os métodos http passados, validando a estrutura JSON e os status retornados.

Cenários de Teste

1 - Validar headers da resposta 2 - Buscar usuário por ID válido e validar os dados 3 - Buscar usuário por ID inexistente validar erro 404 4 - Validar retorno de erro 500 da API 5 - Criar usuário com todos os campos obrigatórios e validar resposta 6 - Validar retorno de erro 400 da API 7 - Atualizar um usuário existente e validar resposta 8 - Excluir um usuário e validar resposta

Como Executar os Testes

  • Ter o Postman instalado;
  • Importar as collections que estão na raiz do projeto(Testes de API(jsonPlaceholder).postman_collection.json) - Para importar o arquivo, pode ser feito em My Workspace > Import(botão) > Selecionar/arrastar o arquivo;
  • Ir no menu 3 pontos da collection(Testes de API(jsonPlaceholder)) e selecionar a opção Run Collection

Teste de Carga com k6

Este projeto realiza teste de carga para avaliar o desempenho da API https://jsonplaceholder.typicode.com/users.


Objetivos do Teste

O objetivo é medir a capacidade da API sob carga simulando 100 usuários simultâneos, e analisar os seguintes pontos:

1 - Tempo de resposta → A API consegue responder rapidamente sob carga? 2 - Erros de requisição → Existem falhas quando muitos usuários acessam ao mesmo tempo? 3 - Uso de CPU/memória → O sistema se mantém estável?


Como executar o teste

1️. Pré-requisitos

  • Antes de rodar o teste, é necessário ter o k6 instalado: sudo apt install k6 ou snap install k6(Linux)
  • Comando para rodar os testes k6 run k6/k6-test.js
  • Comando para executar os testes gerando relatório em .txt k6 run test.js | tee resultado.txt
  • Comando para executar os testes gerando relatório em json k6 run test.js --out json=resultado.json

Relatório após execução

 execution: local
    script: k6-test.js
    output: -

 scenarios: (100.00%) 1 scenario, 100 max VUs, 1m0s max duration (incl. graceful stop):
          * default: 100 looping VUs for 30s (gracefulStop: 30s)


 ✓ status é 200
 ✗ tempo de resposta < 500ms
  ↳  99% — ✓ 2782 / ✗ 4

 checks.........................: 99.92% 5568 out of 5572
 data_received..................: 17 MB  556 kB/s
 data_sent......................: 287 kB 9.2 kB/s
 http_req_blocked...............: avg=10.12ms min=209ns   med=2.15µs  max=340.72ms p(90)=2.99µs   p(95)=4.03µs  
 http_req_connecting............: avg=2.47ms  min=0s      med=0s      max=86.19ms  p(90)=0s       p(95)=0s      
 http_req_duration..............: avg=84.78ms min=30ms    med=68.11ms max=583.38ms p(90)=146.66ms p(95)=179.77ms
   { expected_response:true }...: avg=84.78ms min=30ms    med=68.11ms max=583.38ms p(90)=146.66ms p(95)=179.77ms
 http_req_failed................: 0.00%  0 out of 2786
 http_req_receiving.............: avg=2.43ms  min=55.47µs med=551.8µs max=161.9ms  p(90)=5.49ms   p(95)=10.12ms 
 http_req_sending...............: avg=1.15ms  min=30.97µs med=221µs   max=128.27ms p(90)=338.2µs  p(95)=460.24µs
 http_req_tls_handshaking.......: avg=5.94ms  min=0s      med=0s      max=214.61ms p(90)=0s       p(95)=0s      
 http_req_waiting...............: avg=81.19ms min=29.13ms med=65.64ms max=582.74ms p(90)=136.27ms p(95)=163.38ms
 http_reqs......................: 2786   89.659771/s
 iteration_duration.............: avg=1.09s   min=1.03s   med=1.06s   max=1.58s    p(90)=1.14s    p(95)=1.26s   
 iterations.....................: 2786   89.659771/s
 vus............................: 15     min=15           max=100
 vus_max........................: 100    min=100          max=100

Análise

  • O teste foi executado localmente, utilizando 100 usuários simultâneos(VUs) realizando requisições por 30s.
  • Obtendo um total de 2786 requisições feitas(~89.66 requisições/s - iterations).
  • Todas as respostas tiveram o status 200, porém nem todas as requisições ficaram abaixo de 500ms. Foram 99% das requisições com status 200, e 4 falharam.
  • O tempos de resposta (http_req_duration) teve média 84.78ms, mínimo 30ms, máximo 583.38ms, sendo 90% das requisições ≤ 146.66ms e 95% das requisições ≤ 179.77ms.
  • Mostrando que na maioria das requisições está respondendo de acordo. Apenas algumas poucas respostas ultrapassaram 500ms.
  • Nenhuma requisição falhou, tendo 100% das requisições bem-sucedidas(http_req_failed).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published