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

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

Passez votre flux Claude Code au niveau supérieur

50 modèles de prompts éprouvés, prêts à être copiés-collés dans Claude Code.

Gratuit

PDF gratuit : aide-mémoire Claude Code en 5 minutes

Commandes clés, raccourcis et exemples de prompts sur une seule page imprimable.

Télécharger le PDF
M

À propos de l'auteur

Masa

Ingénieur passionné par Claude Code. Il gère claudecode-lab.com, un média tech en 10 langues avec plus de 2 000 pages.