🚀 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?

  1. Status Code (Código de Status): O número que diz o que aconteceu.
    • 200 ou 201: Sucesso! Tudo certo.
    • 400: Bad Request (Você enviou dados errados).
    • 401 ou 403: 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).
  2. 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:

  1. Você tentou cadastrar um usuário novo com sucesso.
  2. Você tentou acessar a página de administração sem estar logado.
  3. Você tentou buscar um produto que não existe no estoque.
  4. 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)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 07 Qualidade) e clique em Commit to main.
  2. 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.js

9. 💡 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:

  1. 201 (Created) ou 200 (OK).
  2. 401 (Unauthorized).
  3. 404 (Not Found).
  4. 500 (Internal Server Error).

Capitulo Anterior | Proximo Capitulo