Use Cases

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: '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('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: 'dup@example.com', password: 'Pass123!' });

      await request(app)
        .post('/api/users')
        .send({ name: 'User2', email: 'dup@example.com', 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.

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

Lleva tu flujo con Claude Code al siguiente nivel

50 plantillas de prompts probadas en producción, listas para copiar y pegar en Claude Code.

Gratis

PDF gratuito: Hoja de trucos de Claude Code en 5 minutos

Comandos clave, atajos y ejemplos de prompts en una sola página imprimible.

Descargar PDF
M

Sobre el autor

Masa

Ingeniero apasionado por Claude Code. Dirige claudecode-lab.com, un medio tecnológico en 10 idiomas con más de 2.000 páginas.