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.
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.
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.
- A estrutura utilizada foi o Page Objects para melhor organização e reutilização do código.
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
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.
O objetivo é garantir que a API está respondendo corretamente conforme os métodos http passados, validando a estrutura JSON e os status retornados.
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
- 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
Este projeto realiza teste de carga para avaliar o desempenho da API https://jsonplaceholder.typicode.com/users
.
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?
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
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).