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: '[email protected]',
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: '[email protected]', password: 'Pass123!' });
await request(app)
.post('/api/users')
.send({ name: 'User2', email: '[email protected]', 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.
PDF gratuito: Cheatsheet do Claude Code em 5 minutos
Basta informar seu e-mail e enviamos na hora o cheatsheet em uma página A4.
Cuidamos dos seus dados pessoais e nunca enviamos spam.
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.
Artigos relacionados
7 verificações antes de publicar todos os dias um artigo multilíngue sobre Claude Code
Uma checklist prática para publicar artigos multilíngues sobre Claude Code todos os dias sem esquecer idiomas, quebrar CTAs ou deixar páginas antigas no ar.
O que e Codex Automations? Conteudo, analise e deploy com IA enquanto voce dorme
Guia pratico para usar Codex Automations em analytics, artigos, CTA, deploy e monetizacao.
Desenhe Firestore com Claude Code: comece pelas consultas
Workflow prático para Firestore com Claude Code: schema orientado por consultas, índices, custos, regras de segurança e TypeScript.