Automatizacion de pruebas de API con Claude Code: guia practica de QA
Automatizacion de pruebas de API con Claude Code. Guia practica de QA. Incluye ejemplos de codigo practicos.
Practicar la automatizacion de pruebas de API con Claude Code
Las pruebas exhaustivas son esenciales para garantizar la calidad de una API. Con Claude Code, puedes automatizar de una vez desde el diseno de casos de prueba hasta la generacion de mocks y la integracion con CI.
Diseno de casos de prueba
Pruebas CRUD de REST API
> Crea pruebas CRUD para la API de usuarios con Vitest + supertest.
> Cubre pruebas de casos normales, casos de error y 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('puede obtener la lista de usuarios', 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('la paginacion funciona correctamente', 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('puede crear un nuevo usuario', async () => {
const newUser = {
name: 'Usuario de prueba',
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('devuelve 400 con correo electronico invalido', async () => {
const res = await request(app)
.post('/api/users')
.send({ name: 'Test', email: 'invalid', password: 'Pass123!' })
.expect(400);
expect(res.body.errors).toBeDefined();
});
it('devuelve 409 con correo electronico 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);
});
});
});
Generacion de mocks y stubs
Pruebas de dependencias con API externas
> Crea mocks de la API de pagos de Stripe.
> Usa 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: 'jpy',
status: 'succeeded',
});
}),
http.post('https://api.stripe.com/v1/refunds', () => {
return HttpResponse.json({
id: 're_test_456',
amount: 1000,
status: 'succeeded',
});
}),
];
Pruebas de contrato
Las pruebas de contrato que verifican la consistencia entre la especificacion de la API y la implementacion tambien se pueden generar con Claude Code. Puedes construir pruebas que comparen automaticamente los schemas OpenAPI con las respuestas.
Pruebas de rendimiento
> Crea un script de pruebas de carga de API usando k6.
> Con un escenario de incremento 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'],
},
};
Summary
Con Claude Code puedes automatizar de una vez desde el diseno de pruebas de API hasta la implementacion y la integracion con CI. Consulta tambien la guia de estrategia de pruebas y la construccion del pipeline CI/CD.
Para mas detalles sobre pruebas de API, consulta la documentacion oficial de Vitest.
Related Posts
Cómo potenciar tus proyectos personales con Claude Code [Con ejemplos]
Aprende a acelerar drásticamente tus proyectos personales de desarrollo usando Claude Code. Incluye ejemplos reales y un flujo de trabajo práctico desde la idea hasta el despliegue.
Cómo automatizar la refactorización con Claude Code
Aprende a automatizar eficientemente la refactorización de código usando Claude Code. Incluye prompts prácticos y patrones concretos de refactorización para proyectos reales.
Guia completa de configuracion CORS con Claude Code
Aprende sobre la configuracion completa de CORS usando Claude Code. Incluye consejos practicos y ejemplos de codigo.