API-Testautomatisierung mit Claude Code: Ein praktischer QA-Leitfaden
API-Testautomatisierung mit Claude Code. Ein praktischer QA-Leitfaden. Mit praktischen Codebeispielen.
API-Testautomatisierung mit Claude Code in der Praxis
Umfassende Tests sind unerlässlich, um die Qualität von APIs zu gewährleisten. Mit Claude Code können Sie vom Testcase-Design über die Mock-Generierung bis zur CI-Integration alles auf einmal automatisieren.
Testcase-Design
CRUD-Tests für REST APIs
> Erstelle CRUD-Tests für die User-API mit Vitest + supertest.
> Decke Erfolgsfälle, Fehlerfälle und Grenzwerttests ab.
// 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('kann eine Benutzerliste abrufen', 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('Paginierung funktioniert korrekt', 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('kann einen neuen Benutzer erstellen', async () => {
const newUser = {
name: 'Testbenutzer',
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('gibt 400 bei ungültiger E-Mail-Adresse zurück', async () => {
const res = await request(app)
.post('/api/users')
.send({ name: 'Test', email: 'ungültig', password: 'Pass123!' })
.expect(400);
expect(res.body.errors).toBeDefined();
});
it('gibt 409 bei doppelter E-Mail-Adresse zurück', 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);
});
});
});
Mock- und Stub-Generierung
Tests mit externen API-Abhängigkeiten
> Erstelle einen Mock für die Stripe-Zahlungs-API.
> Verwende 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: 'eur',
status: 'succeeded',
});
}),
http.post('https://api.stripe.com/v1/refunds', () => {
return HttpResponse.json({
id: 're_test_456',
amount: 1000,
status: 'succeeded',
});
}),
];
Contract-Tests
Contract-Tests zur Überprüfung der Konsistenz zwischen API-Spezifikation und Implementierung können ebenfalls mit Claude Code generiert werden. Es können Tests erstellt werden, die OpenAPI-Schemata und Antworten automatisch vergleichen.
Performance-Tests
> Erstelle ein Lasttestskript für die API mit k6.
> Mit einem Szenario stufenweiser Lasterhöhung.
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'],
},
};
Zusammenfassung
Mit Claude Code können Sie vom API-Testdesign über die Implementierung bis zur CI-Integration alles auf einmal automatisieren. Siehe auch den Leitfaden für Teststrategien und CI/CD-Pipeline aufbauen.
Weitere Details zu API-Tests finden Sie in der offiziellen Vitest-Dokumentation.
Related Posts
So beschleunigen Sie Ihre Nebenprojekte mit Claude Code [Mit Beispielen]
Erfahren Sie, wie Sie persönliche Entwicklungsprojekte mit Claude Code drastisch beschleunigen. Inklusive realer Beispiele und eines praktischen Workflows von der Idee bis zum Deployment.
So automatisieren Sie Refactoring mit Claude Code
Erfahren Sie, wie Sie Code-Refactoring mit Claude Code effizient automatisieren. Inklusive praktischer Prompts und konkreter Refactoring-Muster für reale Projekte.
Vollständiger CORS-Konfigurationsleitfaden mit Claude Code
Erfahren Sie alles über die CORS-Konfiguration mit Claude Code. Mit praktischen Tipps und Codebeispielen.