API-Testing-Leitfaden: Von den Grundlagen bis zu automatisierten Workflows
Lerne, wie du REST APIs effektiv testest – von manuellen Tests mit HTTP-Clients bis hin zu automatisierten Test-Suites, Status-Codes und Authentifizierungsstrategien.
APIs sind die Verträge zwischen Softwaresystemen. Wenn eine API ausfällt, bricht alles zusammen, was davon abhängt. Dennoch wird API-Testing oft als nachrangig behandelt – etwas, das man kurz vor dem Deployment schnell im Browser-Tab erledigt. Eine durchdachte API-Teststrategie erkennt Fehler frühzeitig, dokumentiert das erwartete Verhalten und gibt dir die Sicherheit, deine Software auszuliefern.
Was ist ein API-Test?
Ein API-Test sendet eine HTTP-Anfrage und prüft bestimmte Eigenschaften der Antwort:
- Status-Code – Erhalten wir
200 OKoder404 Not Found? - Response-Body – Stimmt die Datenstruktur? Sind die Werte korrekt?
- Header – Ist
Content-Typerichtig gesetzt? Ist der Auth-Header vorhanden? - Antwortzeit – Antwortet der Endpoint innerhalb eines akzeptablen Zeitrahmens?
- Fehlerbehandlung – Was passiert bei ungültigen Eingaben? Erhalten wir aussagekräftige Fehlermeldungen?
HTTP-Status-Codes, die du kennen musst
| Code | Bedeutung | Wann du ihn siehst |
|---|---|---|
200 |
OK | Erfolgreiche GET-, PUT-, PATCH-Anfragen |
201 |
Created | Erfolgreicher POST, der eine Ressource erstellt |
204 |
No Content | Erfolgreicher DELETE oder eine Aktion ohne Body |
400 |
Bad Request | Ungültige Eingabe, fehlerhaftes JSON, fehlende Felder |
401 |
Unauthorized | Fehlender oder ungültiger Authentifizierungs-Token |
403 |
Forbidden | Authentifiziert, aber nicht autorisiert |
404 |
Not Found | Ressource existiert nicht |
409 |
Conflict | Doppelte Ressource, Versionskonflikt |
422 |
Unprocessable Entity | Validierungsfehler bei gültigem JSON |
429 |
Too Many Requests | Rate-Limit überschritten |
500 |
Internal Server Error | Fehler auf der Serverseite |
503 |
Service Unavailable | Server nicht verfügbar oder überlastet |
401bedeutet „Wer bist du?" –403bedeutet „Ich weiß, wer du bist, aber das ist dir nicht erlaubt."
Manuelles Testen mit dem API Request Builder
Bevor du mit der Automatisierung beginnst, solltest du deine Endpoints manuell verstehen. Unser API Request Builder ermöglicht dir:
- Die HTTP-Methode festlegen (GET, POST, PUT, PATCH, DELETE)
- Header hinzufügen (Authorization, Content-Type, benutzerdefinierte Header)
- Query-Parameter ohne manuelles URL-Encoding aufbauen
- Einen JSON-Request-Body mit Syntax-Highlighting schreiben
- Die vollständige Antwort inklusive Header und Zeitangaben einsehen
Das ist ideal, um eine neue API zu erkunden, einen bestimmten Endpoint zu debuggen oder einen Fix schnell zu überprüfen.
REST APIs testen: der vollständige CRUD-Zyklus
Für eine hypothetische /users-API umfasst eine vollständige Test-Suite Folgendes:
Erstellen (POST)
POST /users
Content-Type: application/json
{
"name": "Alice Chen",
"email": "alice@example.com",
"role": "editor"
}
Prüfen:
- Status
201 Created - Response-Body enthält den erstellten Benutzer mit einer generierten
id Location-Header verweist auf die neue Ressource (z. B./users/42)
Lesen (GET)
GET /users/42
Authorization: Bearer <token>
Prüfen:
- Status
200 OK - Body stimmt mit dem erstellten Benutzer überein
idist42
Aktualisieren (PUT / PATCH)
PATCH /users/42
Content-Type: application/json
{ "role": "admin" }
Prüfen:
- Status
200 OK roleist in der Antwort nun"admin"- Andere Felder unverändert
Löschen (DELETE)
DELETE /users/42
Authorization: Bearer <token>
Prüfen:
- Status
204 No Content - Nachfolgender
GET /users/42gibt404zurück
Negativtests: die Tests, die die meisten überspringen
Positive Tests prüfen den Erfolgspfad. Negativtests prüfen, ob die API fehlerhafte Eingaben zuverlässig behandelt:
- Fehlende Pflichtfelder →
400mit klarer Fehlermeldung - Ungültige Datentypen (
"age": "twenty") →400 - Nicht vorhandene Ressource (
GET /users/99999) →404 - Abgelaufener Token →
401 - Zugriff auf die Daten eines anderen Benutzers →
403 - Senden eines 10 MB großen Payloads →
413 Payload Too Large - Rate-Limit überschreiten →
429mitRetry-After-Header
Eine gut gestaltete API schlägt vorhersehbar und informativ fehl.
Testmuster für Authentifizierung
Bearer Tokens (JWT)
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Testszenarien:
- Gültiger Token → korrekte Antwort
- Abgelaufener Token →
401mit der Meldung"Token expired" - Manipulierter Token (ein Zeichen ändern) →
401 - Fehlender Header →
401 - Token für eine andere Umgebung →
401
Verwende unseren JWT Decoder, um Tokens zu inspizieren und Ablaufzeiten beim manuellen Testen zu prüfen.
API-Keys
X-API-Key: sk_live_abc123
Testen: falscher Key, fehlender Key, Key mit unzureichenden Berechtigungen.
OAuth 2.0 Flows
OAuth erhöht die Komplexität – teste die Token-Exchange-Endpoints getrennt von den Ressourcen-Endpoints.
Response-Bodies validieren
Prüfe nicht nur Status-Codes. Validiere die Struktur der Antworten:
// Using Jest + supertest
test("GET /users/:id returns the correct user", async () => {
const response = await request(app).get("/users/42").set("Authorization", `Bearer ${token}`);
expect(response.status).toBe(200);
expect(response.headers["content-type"]).toMatch(/json/);
expect(response.body).toMatchObject({
id: 42,
name: expect.any(String),
email: expect.stringMatching(/^[^\s@]+@[^\s@]+\.[^\s@]+$/),
role: expect.oneOf(["admin", "editor", "viewer"]),
});
});
Für größere Response-Schemas nutze die JSON-Schema-Validierung mit unserem JSON Schema Validator, um die erwartete Struktur einmalig zu definieren und alle Endpoints dagegen zu testen.
Contract Testing
In Microservices stellt Contract Testing sicher, dass Consumer und Provider sich auf die Form der API einigen. Der Consumer definiert, was er benötigt; der Provider überprüft, ob er das erfüllt. Tools wie Pact automatisieren diesen Prozess.
Das ist besonders wertvoll, wenn Teams unterschiedliche Services verantworten – ein Contract Test schlägt sofort fehl, wenn ein Feld umbenannt oder entfernt wird, noch vor der Integration.
Performance- und Lasttests
Funktionale Tests sagen dir, ob die API funktioniert. Performance-Tests sagen dir, wie gut sie unter Last funktioniert:
- Baseline – Wie sind die p50/p95/p99-Antwortzeiten bei einem einzelnen Benutzer?
- Lasttest – Wie verhält sie sich beim erwarteten Spitzenverkehr?
- Stresstest – Ab wann beginnt sie zu versagen?
- Spike-Test – Was passiert bei einem plötzlichen 10-fachen Anstieg des Traffics?
Ein gängiges Ziel: < 200ms für p95 beim erwarteten Spitzenverkehr.
API-Testing-Checkliste
- Alle CRUD-Operationen für jede Ressource testen
- Negativfälle testen: ungültige Eingaben, fehlende Authentifizierung, nicht gefundene Ressourcen
- Response-Bodies gegen ein Schema validieren (nicht nur Status-Codes)
- Authentifizierungs-Grenzfälle testen: abgelaufene, fehlende, manipulierte Tokens
- Sicherstellen, dass Fehlerantworten hilfreiche Meldungen enthalten
- Prüfen, ob Paginierung, Filterung und Sortierung korrekt funktionieren
- Verhalten beim Rate-Limiting testen
- Sicherstellen, dass keine sensiblen Daten in Fehlerantworten erscheinen
- Antwortzeit unter erwartetem Last prüfen
Gute API-Tests sind dein Sicherheitsnetz beim Refactoring und die beste Dokumentation, die du haben kannst – sie zeigen exakt, was jeder Endpoint tut und was er erwartet.