Este repositório foi desenvolvido como parte dos meus estudos em Qualidade de Software, com foco em automação de testes de API.
Neste projeto, utilizei o Cypress para automatizar requisições e validar o comportamento da API ServeRest, praticando cenários de autenticação, consulta, cadastro, edição e exclusão de registros.
A ideia foi construir uma base simples, mas organizada, para reforçar conceitos importantes de testes de API durante minha transição para a área de QA.
O objetivo deste projeto foi praticar os fundamentos da automação de testes de API, incluindo:
- envio de requisições HTTP;
- validação de status code;
- verificação de mensagens e campos da resposta;
- automação de cenários positivos e negativos;
- uso de dados dinâmicos;
- reutilização de comandos customizados;
- validação de contrato com Joi.
- JavaScript
- Node.js
- Cypress
- Joi
- @faker-js/faker
- cypress-plugin-api
- ServeRest
Neste projeto, foram automatizados testes para os endpoints de:
- Login
- Usuários
- Produtos
Também foram criados:
- contratos de validação com Joi;
- comandos customizados para reaproveitar ações frequentes;
- dados dinâmicos para reduzir dependência de massa fixa.
.
├── cypress
│ ├── contracts
│ │ ├── produtos.contract.js
│ │ └── usuarios.contract.js
│ ├── e2e
│ │ ├── exercicio-api.cy.js
│ │ ├── login.cy.js
│ │ └── produtos.cy.js
│ ├── fixtures
│ │ └── example.json
│ └── support
│ ├── commands.js
│ └── e2e.js
├── cypress.config.js
├── package.json
└── README.md
- realizar login com sucesso com usuário administrador;
- capturar o token de autenticação retornado pela API.
- validar o contrato da listagem de usuários;
- listar usuários cadastrados;
- cadastrar um novo usuário com sucesso;
- validar a mensagem de erro ao tentar cadastrar um e-mail já utilizado;
- editar um usuário existente;
- deletar um usuário previamente cadastrado.
- validar o contrato da listagem de produtos;
- listar produtos cadastrados;
- cadastrar um novo produto com sucesso;
- validar a mensagem de erro ao tentar cadastrar um produto com nome repetido;
- editar um produto já existente;
- editar um produto criado durante o teste;
- deletar um produto previamente cadastrado.
Para deixar os testes mais organizados e evitar repetição de código, foram criados comandos customizados para:
- obter token de autenticação;
- cadastrar produto;
- cadastrar usuário;
- editar usuário;
- deletar usuário.
Isso ajudou a deixar os cenários mais legíveis e reaproveitáveis.
Além das validações funcionais, o projeto também possui validação de contrato utilizando Joi para os endpoints de:
- usuários;
- produtos.
Esse tipo de validação ajuda a conferir se a estrutura da resposta da API está de acordo com o esperado.
Foi utilizado o Faker para gerar dados dinâmicos em alguns cenários, como:
- nome de usuário;
- e-mail;
- nome de produto.
Isso ajuda a evitar conflitos com massa fixa e torna a execução dos testes mais flexível.
Antes de executar o projeto, é necessário ter instalado na máquina:
- Node.js
- npm
Clone o repositório:
git clone https://github.com/Guss182/Teste-Api-Modulo14-EBAC.git
Acesse a pasta do projeto:
cd Teste-Api-Modulo14-EBAC
Instale as dependências:
npm install
Para iniciar o servidor da API localmente:
npm start
A aplicação será executada em:
http://localhost:3000/
Para rodar os testes em modo headless:
npm run cy:run
Para abrir o Cypress em modo interativo:
npx cypress open
A URL base da API está configurada no arquivo cypress.config.js:
baseUrl: "http://localhost:3000/"
Com este projeto, pratiquei principalmente:
- automação de testes de API com Cypress;
- organização básica de um projeto de testes;
- criação de comandos customizados;
- uso de autenticação via token;
- validação de status code e mensagens da API;
- uso de dados dinâmicos;
- validação de contrato com Joi.
Como este é um projeto de estudo, ainda existem melhorias que podem ser feitas no futuro, como:
- adicionar mais cenários negativos;
- separar melhor as massas de dados;
- melhorar o reaproveitamento entre os testes;
- adicionar relatórios de execução;
- integrar a execução em pipeline CI.
Este projeto representa uma etapa importante do meu aprendizado em QA, principalmente no estudo de testes de API.
Meu objetivo aqui foi construir uma base sólida nos conceitos fundamentais da automação, priorizando clareza, organização e entendimento do fluxo de testes antes de avançar para estruturas mais complexas.
Gustavo Alves Moreno
Em transição de carreira para a área de Qualidade de Software, com foco em testes manuais e automação.
- GitHub: Guss182
Projeto desenvolvido para fins de estudo e prática em automação de testes de API.