Use Cases

Automatisation des tests d'API avec Claude Code : guide pratique QA

Automatisation des tests d'API avec Claude Code. Guide pratique QA. Inclut des exemples de code pratiques.

Pratiquer l’automatisation des tests d’API avec Claude Code

Des tests exhaustifs sont essentiels pour garantir la qualite d’une API. Avec Claude Code, vous pouvez automatiser d’un seul coup la conception des cas de test, la generation de mocks et l’integration CI.

Conception des cas de test

Tests CRUD d’une REST API

> Cree des tests CRUD pour l'API utilisateurs avec Vitest + supertest.
> Couvre les tests de cas normaux, cas d'erreur et valeurs limites.
// 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('peut obtenir la liste des utilisateurs', 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 pagination fonctionne correctement', 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('peut creer un nouvel utilisateur', async () => {
      const newUser = {
        name: 'Utilisateur de test',
        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('renvoie 400 avec une adresse e-mail invalide', async () => {
      const res = await request(app)
        .post('/api/users')
        .send({ name: 'Test', email: 'invalid', password: 'Pass123!' })
        .expect(400);

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

    it('renvoie 409 avec une adresse e-mail en double', 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);
    });
  });
});

Generation de mocks et stubs

Tests de dependances avec des API externes

> Cree des mocks de l'API de paiement Stripe.
> Utilise 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',
    });
  }),
];

Tests de contrat

Les tests de contrat qui verifient la coherence entre la specification de l’API et l’implementation peuvent aussi etre generes avec Claude Code. Vous pouvez construire des tests qui comparent automatiquement les schemas OpenAPI avec les reponses.

Tests de performance

> Cree un script de tests de charge d'API avec k6.
> Avec un scenario d'augmentation progressive de la charge.
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

Avec Claude Code, vous pouvez automatiser d’un seul coup la conception des tests d’API, l’implementation et l’integration CI. Consultez egalement le guide de strategie de test et la construction du pipeline CI/CD.

Pour plus de details sur les tests d’API, consultez la documentation officielle de Vitest.

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