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.
Related Posts
Como Turbinar Seus Projetos Pessoais com o Claude Code [Com Exemplos]
Aprenda a acelerar drasticamente projetos de desenvolvimento pessoal usando o Claude Code. Inclui exemplos reais e um workflow prático da ideia ao deploy.
Como Automatizar Refatoração com o Claude Code
Aprenda a automatizar refatoração de código de forma eficiente usando o Claude Code. Inclui prompts práticos e padrões concretos de refatoração para projetos reais.
Guia Completo de Configuração CORS com Claude Code
Aprenda sobre o guia completo de configuração CORS usando o Claude Code. Dicas práticas e exemplos de código incluídos.