Use Cases

Automação de Testes de API com Claude Code: Guia Prático de QA

Automação de Testes de API com Claude Code. Guia Prático de QA. Inclui exemplos práticos de código.

Praticando Automação de Testes de API com Claude Code

Testes abrangentes são essenciais para garantir a qualidade das APIs. Com o Claude Code, você pode automatizar tudo de uma vez - desde o design de casos de teste até a geração de mocks e integração com CI.

Design de Casos de Teste

Testes CRUD para REST APIs

> Crie testes CRUD para a API de usuários com Vitest + supertest.
> Cubra testes de sucesso, erro e valores-limite.
// tests/api/users.test.ts
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
import request from 'supertest';
import { app } from '../../src/app';
import { resetDatabase, seedUsers } from '../helpers/db';

describe('Users API', () => {
  beforeEach(async () => {
    await resetDatabase();
    await seedUsers();
  });

  describe('GET /api/users', () => {
    it('pode obter a lista de usuários', async () => {
      const res = await request(app)
        .get('/api/users')
        .expect(200);

      expect(res.body.data).toBeInstanceOf(Array);
      expect(res.body.data.length).toBeGreaterThan(0);
      expect(res.body.data[0]).toHaveProperty('id');
      expect(res.body.data[0]).toHaveProperty('name');
      expect(res.body.data[0]).not.toHaveProperty('password');
    });

    it('paginação funciona corretamente', async () => {
      const res = await request(app)
        .get('/api/users?page=1&limit=5')
        .expect(200);

      expect(res.body.data.length).toBeLessThanOrEqual(5);
      expect(res.body.meta).toHaveProperty('totalPages');
      expect(res.body.meta).toHaveProperty('currentPage', 1);
    });
  });

  describe('POST /api/users', () => {
    it('pode criar um novo usuário', async () => {
      const newUser = {
        name: 'Usuário de teste',
        email: 'test@example.com',
        password: 'SecurePass123!',
      };

      const res = await request(app)
        .post('/api/users')
        .send(newUser)
        .expect(201);

      expect(res.body.data.name).toBe(newUser.name);
      expect(res.body.data.email).toBe(newUser.email);
    });

    it('retorna 400 para e-mail inválido', async () => {
      const res = await request(app)
        .post('/api/users')
        .send({ name: 'Test', email: 'inválido', password: 'Pass123!' })
        .expect(400);

      expect(res.body.errors).toBeDefined();
    });

    it('retorna 409 para e-mail duplicado', async () => {
      await request(app)
        .post('/api/users')
        .send({ name: 'User1', email: 'dup@example.com', password: 'Pass123!' });

      await request(app)
        .post('/api/users')
        .send({ name: 'User2', email: 'dup@example.com', password: 'Pass456!' })
        .expect(409);
    });
  });
});

Geração de Mocks e Stubs

Testes com Dependências de APIs Externas

> Crie um mock para a API de pagamentos do Stripe.
> Use MSW.
// tests/mocks/handlers.ts
import { http, HttpResponse } from 'msw';

export const handlers = [
  http.post('https://api.stripe.com/v1/charges', () => {
    return HttpResponse.json({
      id: 'ch_test_123',
      amount: 1000,
      currency: 'brl',
      status: 'succeeded',
    });
  }),

  http.post('https://api.stripe.com/v1/refunds', () => {
    return HttpResponse.json({
      id: 're_test_456',
      amount: 1000,
      status: 'succeeded',
    });
  }),
];

Testes de Contrato

Testes de contrato para verificar a consistência entre especificação e implementação da API também podem ser gerados com o Claude Code. É possível construir testes que comparam automaticamente schemas OpenAPI com respostas.

Testes de Performance

> Crie um script de teste de carga para a API usando k6.
> Com um cenário de aumento gradual de carga.
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '1m', target: 50 },
    { duration: '3m', target: 50 },
    { duration: '1m', target: 100 },
    { duration: '3m', target: 100 },
    { duration: '1m', target: 0 },
  ],
  thresholds: {
    http_req_duration: ['p(95)<500'],
    http_req_failed: ['rate<0.01'],
  },
};

Resumo

Com o Claude Code, você pode automatizar tudo de uma vez - desde o design de testes de API até a implementação e integração com CI. Consulte também o guia de estratégias de testes e construção de pipeline CI/CD.

Para mais detalhes sobre testes de API, consulte a documentação oficial do Vitest.

#Claude Code #API testing #automation #testing #quality assurance

Leve seu fluxo no Claude Code a outro nível

50 modelos de prompt testados em campo, prontos para colar direto no Claude Code.

Grátis

PDF gratuito: Cheatsheet do Claude Code em 5 minutos

Comandos principais, atalhos e exemplos de prompts em uma única página para imprimir.

Baixar PDF
M

Sobre o autor

Masa

Engenheiro apaixonado por Claude Code. Mantém o claudecode-lab.com, uma mídia tech em 10 idiomas com mais de 2.000 páginas.