🚀 Capítulo 07: Testes de API (Tema: Stargate)
NOTE
Este capítulo utiliza a temática de Stargate para explicar os Testes de API. O portal conecta mundos; enviar as coordenadas corretas e receber o sinal de sucesso é o teste da API!
1. 🎯 Objetivo da Aula
Compreender o que são Testes de API, aprendendo a verificar se as requisições HTTP retornam os dados corretos e os Status Codes esperados.
2. 🏢 O Cenário Prático (Seu Desafio)
O portal Stargate conecta a Terra a outros planetas. Para usá-lo, você digita as coordenadas em um painel.
- A Requisição: Você envia as coordenadas (URL) e o tipo de missão (Dados no Body).
- A Resposta: O portal se abre (Sucesso) ou emite um bipe de erro (Falha).
No mundo web, as APIs são os portais que conectam o Frontend (a tela) ao Backend (o servidor).
- Se você enviar as coordenadas certas (Login correto), o portal responde com Status
200 OK. - Se você errar a senha, o portal responde com Status
401 Unauthorized. Seu desafio é testar as respostas desse portal!
3. 🧠 Fundamentos: A Teoria Traduzida
Testar uma API (Application Programming Interface) significa enviar requisições HTTP simuladas e verificar se a resposta do servidor está correta.
📡 O que testamos em uma resposta de API?
- Status Code (Código de Status): O número que diz o que aconteceu.
200ou201: Sucesso! Tudo certo.400: Bad Request (Você enviou dados errados).401ou403: Falha de autenticação/permissão.404: Not Found (O planeta/rota não existe).500: Erro interno do servidor (O portal quebrou por dentro).
- Response Body (Corpo da Resposta): Os dados reais que vieram (geralmente em formato JSON).
4. 📖 Exemplo Guiado: Testando a rota de Login (JS)
Imagine que estamos usando uma ferramenta de teste para bater na nossa API de login.
// Simulação de um teste de API usando uma biblioteca como Supertest
const request = require("supertest");
const app = require("../app"); // Seu servidor
function testLoginSucesso() {
request(app)
.post("/api/login")
.send({ usuario: "daniel", senha: "123" }) // Enviando dados
.expect(200) // Esperamos status 200 OK
.end((err, res) => {
if (err) console.log("❌ Teste Falhou: " + err);
else console.log("✅ Teste Passou! Login realizado.");
});
}5. 🛠️ Prática Obrigatória 1: Prevendo o Status Code
Diga qual Status Code você espera receber em cada situação:
- Você tentou cadastrar um usuário novo com sucesso.
- Você tentou acessar a página de administração sem estar logado.
- Você tentou buscar um produto que não existe no estoque.
- O código do servidor deu um erro de divisão por zero e travou tudo.
6. 🛠️ Prática Obrigatória 2: Testes Manuais de API
Nem todo teste de API precisa ser código. Existem ferramentas visuais onde você pode digitar a URL e clicar em “Enviar” para ver a resposta. Pesquise o nome das duas ferramentas mais famosas do mercado para testar APIs manualmente. (Dica: Uma começa com P e a outra com I ou I).
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 07 Qualidade) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
mod_11_qualidade_e_testes_de_software/
├── capitulos/
│ ├── capitulo_07_api.md
│ └── codigos/
│ └── cap07/
│ └── api_test.js9. 💡 Checkpoint de Lógica
Os testes de API são ótimos porque não dependem da interface gráfica (HTML/CSS). Eles testam a inteligência do sistema de forma pura e rápida!
10. 🔥 Desafio de Fixação
Baixe e instale a ferramenta Postman ou a extensão Thunder Client no VS Code para fazer seu primeiro teste manual de API em uma API pública (como a PokéAPI).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
201(Created) ou200(OK).401(Unauthorized).404(Not Found).500(Internal Server Error).