2.14 Fehlersuche und Dokumentation von Schnittstellen
APIs und automatisierte Workflows verbinden mehrere technische Systeme miteinander.
Tritt ein Fehler auf, muss geprüft werden:
- welches System betroffen ist
- an welcher Stelle der Fehler sichtbar wird
- wo die eigentliche Ursache liegt
- welche Daten übertragen wurden
- welcher Statuscode zurückgegeben wurde
- ob Authentifizierung und Berechtigungen stimmen
- welche Änderungen zuletzt durchgeführt wurden
- ob mehrere Teilsysteme gemeinsam den Fehler erzeugen
Eine Fehlermeldung zeigt häufig nur, wo ein Problem sichtbar wird – nicht zwingend, wo seine Ursache liegt.
Lernziele
Nach dieser Seite solltest du erklären können:
- wie Schnittstellenfehler systematisch untersucht werden
- warum Fehler häufig erst im Zusammenspiel entstehen
- wie Anforderungen, Datenformate und Abhängigkeiten Fehler verursachen
- wie Komponenten-, Integrations- und Systemtests unterschieden werden
- wie Logs und Statuscodes ausgewertet werden
- was eine Schnittstellendokumentation enthalten sollte
- wie Störungen nachvollziehbar dokumentiert und übergeben werden
Fehler zuerst eingrenzen
Vor der technischen Analyse sollte geklärt werden:
- Was funktioniert nicht?
- Was sollte stattdessen passieren?
- Seit wann besteht der Fehler?
- Wer oder was ist betroffen?
- Tritt der Fehler immer oder nur gelegentlich auf?
- Funktionieren die einzelnen Teilsysteme?
- Wurde vorher etwas verändert?
- Welche Fehlermeldung wird angezeigt?
Genaue Beschreibung:
Der Workflow startet, aber die Gruppenzuweisung schlägt nach der erfolgreichen Benutzeranlage fehl.
Ungenaue Beschreibung:
Die API funktioniert nicht.
Fehlerkategorien
| Fehlerbereich | Beispiel |
|---|---|
| Anforderung | gewünschtes Verhalten wurde unterschiedlich verstanden |
| Trigger | Webhook startet den Workflow nicht |
| Software | fehlerhafte Logik oder Konfiguration |
| Elektronik | Sensor-, Signal- oder Spannungsproblem |
| Mechanik | Verschleiß, Blockierung oder falsche Ausrichtung |
| Netzwerk | DNS-Fehler, geschlossener Port oder Paketverlust |
| TLS | Zertifikat wird nicht akzeptiert |
| Authentifizierung | Token fehlt oder ist abgelaufen |
| Autorisierung | Rolle oder Scope fehlt |
| Request | Methode, Endpoint oder Body ist falsch |
| Daten | Pflichtfeld oder Datentyp ist falsch |
| Timing | Folgeschritt wird zu früh ausgeführt |
| Zielsystem | API antwortet mit einem Serverfehler |
| Workflow-Logik | Bedingung oder Datenmapping ist falsch |
| Rate Limit | zu viele Anfragen wurden gesendet |
| Abhängigkeit | nachgelagerter Dienst ist ausgefallen |
Fehler entstehen häufig im Zusammenspiel
Theoretisch kann die Ursache eines technischen Problems in einem einzelnen Bereich liegen:
- Software
- Elektronik
- Mechanik
- Netzwerk
- Konfiguration
- Bedienung
In der Praxis entstehen viele Fehler jedoch erst durch das Zusammenspiel mehrerer Komponenten.
Einzelne Teilsysteme können für sich betrachtet korrekt funktionieren. Sobald sie miteinander verbunden werden, können dennoch unerwartete Probleme auftreten.
Ein funktionierendes Einzelteil garantiert noch kein funktionierendes Gesamtsystem.
Häufige Ursachen:
- unterschiedliche Interpretation von Anforderungen
- fehlerhafte Schnittstellen
- unterschiedliche Datenformate
- falsche Einheiten
- zeitliche Abhängigkeiten
- falsche Reihenfolge
- versteckte Systemabhängigkeiten
- gegenseitige Beeinflussung mehrerer Workflows
- nicht berücksichtigte Systemzustände
Fehlerstelle und Fehlerursache
Die sichtbare Fehlermeldung muss nicht aus dem Bereich stammen, in dem die eigentliche Ursache liegt.
Beispiel aus einem technischen System:
- Ein mechanisches Bauteil bewegt sich schwergängig.
- Der Motor benötigt dadurch mehr Strom.
- Die Elektronik erkennt eine Überlastung.
- Die Steuerungssoftware schaltet das System ab.
- Die Software zeigt eine Fehlermeldung an.
Die Meldung erscheint in der Software. Die eigentliche Ursache liegt jedoch in der Mechanik.
Beispiel aus der IT:
- Eine Datenbank ist nicht erreichbar.
- Die Anwendung kann keine Benutzerdaten laden.
- Die API antwortet mit
500 Internal Server Error. - Der n8n-Workflow meldet einen fehlgeschlagenen API-Aufruf.
Der Fehler wird in n8n sichtbar. Die Ursache liegt jedoch bei der Datenbank.
Die Stelle, an der ein Fehler sichtbar wird, ist nicht zwingend die Stelle seiner Ursache.
Unterschiedliche Interpretation von Anforderungen
Anforderungen müssen eindeutig und überprüfbar formuliert sein.
Unklare Anforderung:
Ein Benutzer soll beim Austritt automatisch deaktiviert werden.
Mögliche Interpretationen:
- sofort nach der Mitteilung
- am letzten Arbeitstag
- am Ende des letzten Arbeitstags
- erst nach der Datenübertragung
- nur im Hauptsystem
- gleichzeitig in allen verbundenen Systemen
Alle beteiligten Systeme könnten technisch korrekt funktionieren. Der Gesamtprozess wäre trotzdem falsch, wenn die Anforderung unterschiedlich verstanden wurde.
Mögliche Folgen:
- Konto wird zu früh gesperrt
- Konto bleibt zu lange aktiv
- Daten können nicht mehr übertragen werden
- einzelne Zugänge bleiben bestehen
- Lizenzen werden nicht freigegeben
Unklare Anforderungen führen häufig zu technisch korrekten, aber fachlich falschen Lösungen.
Fehler an Schnittstellen
Eine Schnittstelle verbindet zwei Systeme oder Komponenten miteinander.
An einer Schnittstelle müssen beide Seiten dieselben Vereinbarungen verwenden.
Dazu gehören:
- Datenformat
- Feldnamen
- Datentypen
- Einheiten
- Protokoll
- Zeichencodierung
- Zeitformat
- Zeitzone
- Reihenfolge
- Authentifizierung
- erwartete Response
- Fehlerbehandlung
Beispiel: Unterschiedliche Datentypen
Quellsystem:
{
"active": "true"
}
Zielsystem erwartet:
{
"active": true
}
Unterschied:
-
"true"ist ein String -
trueist ein Boolean
Beide Systeme können einzeln korrekt arbeiten. Der Fehler entsteht durch unterschiedliche Erwartungen an der Schnittstelle.
Beispiel: Unterschiedliche Feldnamen
Quellsystem:
{
"mail": "[email protected]"
}
Zielsystem erwartet:
{
"primaryEmail": "[email protected]"
}
Ohne korrektes Datenmapping kann das Zielsystem die E-Mail-Adresse nicht zuordnen.
Beispiel: Unterschiedliche Einheiten
Ein Sensor überträgt:
1500 Millivolt
Die Software interpretiert den Wert als:
1500 Volt
Der Messwert wurde korrekt übertragen, aber falsch interpretiert.
Weitere mögliche Verwechslungen:
- Millimeter und Zentimeter
- Byte und Bit
- Kilobyte und Kibibyte
- Sekunden und Millisekunden
- Celsius und Fahrenheit
- UTC und lokale Zeit
Fehler durch Reihenfolge und Timing
Manche Fehler entstehen nur, weil Schritte zu früh, zu spät oder in der falschen Reihenfolge ausgeführt werden.
Beispiel:
- Ein Benutzerkonto wird angelegt.
- Das Zielsystem benötigt einige Sekunden für die Bereitstellung.
- Der Workflow versucht sofort, den Benutzer einer Gruppe hinzuzufügen.
- Das Zielsystem kennt den neuen Benutzer noch nicht vollständig.
- Die Gruppenzuweisung schlägt fehl.
Die einzelnen Funktionen arbeiten korrekt.
Das Problem entsteht durch das Timing zwischen den Schritten.
Mögliche Lösungen:
- Verfügbarkeit abfragen
- Status des Vorgangs prüfen
- auf ein Folgeereignis warten
- begrenzten Retry verwenden
- Backoff einsetzen
- notwendige Wartezeit einbauen
Ein erfolgreicher API-Request bedeutet nicht immer, dass das Ergebnis sofort in allen Teilsystemen verfügbar ist.
Abhängigkeiten zwischen Systemen
Ein System kann von mehreren weiteren Diensten abhängig sein.
Beispiel:
n8n
|
v
API
|
v
Benutzerverwaltung
|
v
Datenbank
Fällt die Datenbank aus, meldet möglicherweise die API einen Fehler.
n8n zeigt dann einen fehlgeschlagenen API-Aufruf an, obwohl die Ursache in der Datenbank liegt.
Mögliche Abhängigkeiten:
- DNS
- Datenbank
- Authentifizierungsdienst
- Reverse Proxy
- Firewall
- TLS-Zertifikat
- Cloud-Dienst
- Speicher
- Warteschlange
- externer Anbieter
Verkettete Fehler
Ein einzelner Fehler kann mehrere Folgefehler auslösen.
Beispiel:
- DNS-Auflösung schlägt fehl.
- API ist nicht erreichbar.
- Benutzerkonto wird nicht angelegt.
- Gruppenzuweisung kann nicht stattfinden.
- Hardware-Aufgabe wird nicht erstellt.
- Mehrere Workflow-Schritte melden Fehler.
Die gemeinsame Ursache ist der DNS-Fehler.
Mehrere Fehlermeldungen können dieselbe gemeinsame Ursache besitzen.
Deshalb sollte zuerst der früheste fehlgeschlagene Schritt untersucht werden.
Emergentes Verhalten
Emergentes Verhalten bedeutet:
Das Gesamtsystem zeigt ein Verhalten, das bei der getrennten Betrachtung der Einzelteile nicht erkennbar war.
Beispiele:
- zwei funktionierende Dienste erzeugen gemeinsam eine Endlosschleife
- mehrere automatische Retries überlasten das Zielsystem
- zwei Synchronisierungen überschreiben gegenseitig Änderungen
- mehrere Zeitpläne starten denselben Prozess gleichzeitig
- einzeln korrekte Regeln erzeugen gemeinsam falsche Berechtigungen
Emergentes Verhalten entsteht nicht zwingend durch eine defekte Komponente.
Es kann durch die Verbindung, Reihenfolge oder gegenseitige Beeinflussung entstehen.
Beispiel: Gegenseitige Synchronisierung
System A synchronisiert Daten zu System B.
System B synchronisiert dieselben Daten zurück zu System A.
System A ändert Datensatz
|
v
System B übernimmt Änderung
|
v
System B meldet Änderung zurück
|
v
System A verarbeitet sie erneut
Mögliche Folgen:
- Endlosschleife
- unnötige API-Anfragen
- Rate Limit
- doppelte Benachrichtigungen
- widersprüchliche Daten
Mögliche Schutzmaßnahmen:
- führendes Quellsystem festlegen
- eindeutige Änderungs-ID verwenden
- Herkunft der Änderung speichern
- eigene Änderungen nicht erneut verarbeiten
- Zeitstempel oder Versionen vergleichen
Komponententest
Ein Komponententest prüft eine einzelne Funktion oder Komponente.
Beispiele:
- API-Endpoint einzeln testen
- JSON-Validierung prüfen
- einzelne n8n-Node ausführen
- Datenbankverbindung testen
- Sensor einzeln prüfen
Ziel:
Funktioniert die einzelne Komponente für sich?
Integrationstest
Ein Integrationstest prüft das Zusammenspiel mehrerer Komponenten.
Beispiele:
- n8n überträgt Daten an eine API
- ein Personalsystem sendet einen Webhook
- die Benutzerverwaltung weist eine Gruppe zu
- eine Anwendung speichert Daten in einer Datenbank
Ziel:
Funktionieren die Schnittstellen zwischen den Komponenten?
Systemtest
Ein Systemtest prüft den vollständigen Ablauf unter realistischen Bedingungen.
Beispiel:
Mitarbeiter wird freigegeben
|
v
Webhook wird gesendet
|
v
Benutzerkonto wird angelegt
|
v
Gruppen werden zugewiesen
|
v
Hardware-Aufgabe wird erstellt
|
v
Ergebnis wird protokolliert
Ziel:
Funktioniert das vollständige Gesamtsystem?
Abnahmetest
Ein Abnahmetest prüft, ob die tatsächlichen fachlichen Anforderungen erfüllt werden.
Beispiele:
- Konto wird zum richtigen Zeitpunkt aktiviert
- notwendige Rechte werden vergeben
- unnötige Rechte werden nicht vergeben
- Fehler werden korrekt gemeldet
- Datenschutzanforderungen werden eingehalten
- zuständige Personen erhalten die benötigten Informationen
Ziel:
Erfüllt die Lösung den vorgesehenen Zweck?
Testebenen im Überblick
| Testart | Geprüfter Bereich |
|---|---|
| Komponententest | einzelne Funktion oder Komponente |
| Integrationstest | Verbindung zwischen Komponenten |
| Systemtest | vollständiges Gesamtsystem |
| Abnahmetest | fachliche Anforderungen |
Ein erfolgreicher Komponententest ersetzt keinen Integrationstest.
Grundregel der Fehlersuche
Empfohlene Reihenfolge:
- fachliche Erwartung klären
- Fehlerbild genau beschreiben
- Trigger prüfen
- Eingangsdaten prüfen
- Netzwerk und Erreichbarkeit prüfen
- Endpoint und HTTP-Methode prüfen
- Authentifizierung prüfen
- Berechtigungen prüfen
- Header und Request-Body prüfen
- Statuscode und Response auswerten
- Reihenfolge und Timing prüfen
- Systemabhängigkeiten untersuchen
- letzte Änderungen kontrollieren
- Integration und Gesamtsystem testen
Von außen nach innen prüfen: Erwartung, Auslösung, Verbindung, Zugang, Daten und Verarbeitung.
Trigger prüfen
Zu prüfen sind:
- Ist der Workflow aktiv?
- Wurde das Ereignis ausgelöst?
- Ist die Webhook-URL korrekt?
- Wird die richtige HTTP-Methode verwendet?
- Ist der Zeitplan korrekt?
- Ist die richtige Zeitzone eingestellt?
- Wurde das Ereignis als Duplikat abgelehnt?
- Wurde die Test- oder Produktiv-URL verwendet?
Eingangsdaten prüfen
Zu prüfen sind:
- Sind alle Pflichtfelder vorhanden?
- Sind Felder leer oder
null? - Stimmen die Datentypen?
- Ist die JSON-Struktur korrekt?
- Stimmen die Feldnamen?
- Enthalten Werte unerwartete Leerzeichen?
- Entsprechen die Daten der Dokumentation?
Beispiel:
Erwartet:
{
"active": true
}
Empfangen:
{
"active": "true"
}
Erreichbarkeit prüfen
Mögliche Probleme:
- DNS-Auflösung fehlerhaft
- Port geschlossen
- Firewall blockiert
- Proxy falsch konfiguriert
- Container oder Dienst gestoppt
- Zielsystem in Wartung
- TLS-Zertifikat ungültig
- Netzwerkroute fehlerhaft
Wichtig:
Wird keine HTTP-Response empfangen, existiert auch kein HTTP-Statuscode.
Dann liegt möglicherweise ein Netzwerk-, DNS-, TLS- oder Verbindungsfehler vor.
Endpoint und HTTP-Methode prüfen
Beispiele:
GET /users/15
ruft einen Benutzer ab.
POST /users
legt einen neuen Benutzer an.
Typische Fehler:
- falsche API-Version
- falscher Ressourcenname
- Schreibfehler in der URL
- falsche Benutzer-ID
- GET statt POST
- PUT statt PATCH
- nicht unterstützte HTTP-Methode
Authentifizierung prüfen
Zu prüfen sind:
- Ist das Credential vorhanden?
- Ist das richtige Credential ausgewählt?
- Ist das Token gültig?
- Ist das Token abgelaufen?
- Wurde es widerrufen?
- Ist der Authorization-Header korrekt?
- Stimmen Client ID und Client Secret?
Falsch:
Authorization: abc123
Möglicherweise erforderlich:
Authorization: Bearer abc123
Typischer Statuscode:
401 Unauthorized
Autorisierung prüfen
Die Identität kann gültig sein, obwohl eine Aktion nicht erlaubt ist.
Zu prüfen sind:
- Benutzerrolle
- Gruppenmitgliedschaft
- API-Scopes
- Administratorfreigabe
- Zugriff auf die konkrete Ressource
- Least-Privilege-Konfiguration
Typischer Statuscode:
403 Forbidden
Merksatz:
401 bedeutet: Identität nicht bestätigt.
403 bedeutet: Identität bestätigt, aber Zugriff nicht erlaubt.
Header und Request-Body prüfen
Typische Header:
Authorization: Bearer ***
Content-Type: application/json
Accept: application/json
Typische Fehler:
-
Content-Typefehlt - falsches Datenformat
- JSON syntaktisch ungültig
- Pflichtfeld fehlt
- Feldname ist falsch
- falscher Datentyp
- Body besitzt falsche Verschachtelung
Beispiel:
Gesendet:
{
"name": "Max Mustermann",
"department": "IT"
}
Erwartet:
{
"user": {
"name": "Max Mustermann",
"department": "IT"
}
}
Statuscode auswerten
| Code | Typische Prüfung |
|---|---|
| 200 | erwartete Daten vorhanden? |
| 201 | Ressource tatsächlich erstellt? |
| 400 | Request und Pflichtfelder prüfen |
| 401 | Token und Authentifizierung prüfen |
| 403 | Rolle und Scopes prüfen |
| 404 | Endpoint und ID prüfen |
| 409 | vorhandene Ressource prüfen |
| 415 | Content-Type prüfen |
| 422 | fachliche Daten prüfen |
| 429 | Rate Limit und Wartezeit prüfen |
| 500 | Zielsystem und Logs prüfen |
| 502 | Proxy oder nachgelagerten Dienst prüfen |
| 503 | Verfügbarkeit des Dienstes prüfen |
| 504 | Timeout und Antwortzeit prüfen |
Der Statuscode sollte immer gemeinsam mit dem Response-Body ausgewertet werden.
Response-Body prüfen
Beispiel:
Status: 400 Bad Request
{
"error": "Missing required field",
"field": "email"
}
Der Statuscode zeigt die allgemeine Fehlerklasse.
Der Response-Body nennt häufig:
- genaue Ursache
- betroffenes Feld
- interne Fehlerkennung
- Request-ID
- empfohlene Maßnahme
Logs verwenden
Logs können zeigen:
- Zeitpunkt
- Workflow-Ausführung
- betroffene Node
- Eingangsdaten
- Ausgangsdaten
- Statuscode
- Fehlermeldung
- Anzahl der Versuche
- Ausführungsdauer
Nicht vollständig protokollieren:
- Passwörter
- API-Keys
- Bearer-Tokens
- Refresh Tokens
- Client Secrets
- vertrauliche personenbezogene Daten
Fehler reproduzieren
Ein reproduzierbarer Fehler kann gezielt untersucht werden.
Festgehalten werden sollten:
- genaue Eingabedaten
- verwendeter Endpoint
- HTTP-Methode
- relevante Header
- Zeitpunkt
- Statuscode
- Response
- betroffene API-Version
- vorherige Änderungen
- Reihenfolge der Schritte
Ein Test sollte möglichst erfolgen mit:
- Testkonto
- Testdaten
- Test-Endpoint
- ungefährlicher Ressource
- deaktivierten Löschaktionen
Einzelne Schritte testen
Ein komplexer Workflow sollte in kleinere Teile zerlegt werden.
Empfohlene Vorgehensweise:
- Trigger allein testen
- Eingangsdaten prüfen
- JSON validieren
- Authentifizierung testen
- GET-Anfrage ausführen
- POST oder PATCH mit Testdaten ausführen
- Response auswerten
- Folgeschritte einzeln ergänzen
- vollständigen Integrationstest durchführen
- Gesamtsystem testen
Erst den kleinsten fehlerhaften Schritt finden, danach den vollständigen Ablauf prüfen.
Letzte Änderungen prüfen
Viele Fehler entstehen nach einer Änderung.
Mögliche Änderungen:
- neues Token
- neue API-Version
- geänderter Endpoint
- neue Benutzerrolle
- verändertes Datenmapping
- aktualisierte n8n-Node
- geänderte Firewall-Regel
- neuer Proxy
- neue Umgebungsvariable
- Softwareupdate
Zu dokumentieren sind:
- Was wurde geändert?
- Wann wurde es geändert?
- Wer hat es geändert?
- Warum wurde es geändert?
- Wie wurde es getestet?
- Wie kann die Änderung zurückgenommen werden?
Änderungen ganzheitlich prüfen
Eine kleine Änderung kann mehrere Systeme beeinflussen.
Beispiel:
Ein Feld wird von:
department
zu:
departmentName
umbenannt.
Möglicherweise betroffen:
- Webhook
- Datenmapping
- If-Node
- Switch-Node
- API-Request
- Logging
- Dokumentation
- weitere Workflows
Vor einer Änderung sollte deshalb geprüft werden:
- Welche Systeme verwenden das Feld?
- Welche Workflows sind abhängig?
- Gibt es Testdaten?
- Ist ein Rollback möglich?
- Muss die Dokumentation angepasst werden?
Schnittstellendokumentation
Eine Schnittstellendokumentation beschreibt, wie zwei Systeme miteinander kommunizieren.
Sie sollte enthalten:
- Zweck der Schnittstelle
- Quell- und Zielsystem
- verantwortliche Personen
- Trigger
- Endpoints
- HTTP-Methoden
- Authentifizierungsverfahren
- benötigte Scopes
- Datenformat
- Feldnamen
- Datentypen
- Einheiten
- Zeitformat und Zeitzone
- Datenmapping
- Statuscodes
- Fehlerbehandlung
- Retry-Verhalten
- Rate Limits
- Logging
- Datenschutz
- Testverfahren
- Wiederherstellungsverfahren
Beispiel einer Kurzdokumentation
| Bereich | Inhalt |
|---|---|
| Name | Mitarbeiter-Onboarding |
| Zweck | Benutzerkonto automatisiert vorbereiten |
| Quellsystem | Personalsystem |
| Zielsystem | Benutzerverwaltung |
| Automatisierung | n8n |
| Trigger | Webhook |
| Methode | POST |
| Ressource | /users |
| Datenformat | JSON |
| Zeitformat | ISO 8601 |
| Zeitzone | Europe/Berlin |
| Authentifizierung | OAuth 2.0 |
| Fehleralarm | Kanal #it-support |
| Verantwortlich | interne IT |
| Testsystem | separates Testkonto |
Datenmapping dokumentieren
| Quellfeld | Zielfeld | Datentyp | Pflicht | Beispiel |
|---|---|---|---|---|
firstName |
givenName |
String | ja | Max |
lastName |
familyName |
String | ja | Mustermann |
mail |
primaryEmail |
String | ja | [email protected] |
department |
organization.department |
String | ja | IT |
active |
isActive |
Boolean | ja | true |
startDate |
custom.startDate |
Datum | nein | 2026-08-03 |
Workflow dokumentieren
Ein Workflow sollte folgende Angaben besitzen:
- eindeutiger Name
- kurze Beschreibung
- verantwortliche Person
- verwendete Credentials
- Trigger
- Eingaben
- Verarbeitung
- Ausgaben
- Bedingungen
- Fehlerpfad
- Abhängigkeiten
- letzte Änderung
Guter Name:
Mitarbeiter-Onboarding – Benutzerverwaltung
Ungünstiger Name:
Workflow Kopie Neu Final 3
Node-Namen
Nodes sollten nach ihrer Funktion benannt werden.
Gut:
-
Webhook – Mitarbeiter empfangen -
Pflichtfelder prüfen -
Benutzer nach E-Mail suchen -
Benutzerkonto anlegen -
Gruppenzuweisung prüfen -
Fehler an IT melden
Ungünstig:
-
HTTP Request 4 -
If 2 -
Node Neu -
Test Final
Änderungsprotokoll
| Datum | Änderung | Verantwortlich | Ergebnis |
|---|---|---|---|
| 18.07.2026 | API-Endpoint aktualisiert | interne IT | erfolgreich getestet |
| 19.07.2026 | neues Scope ergänzt | Administration | Freigabe dokumentiert |
| 20.07.2026 | Fehlerpfad erweitert | interne IT | Test erfolgreich |
Ein Änderungsprotokoll erleichtert die Fehlersuche nach Anpassungen.
Störungsdokumentation
Eine gute Störungsmeldung enthält:
- kurze Fehlerbeschreibung
- betroffene Systeme
- Beginn der Störung
- Auswirkung
- Statuscode oder Fehlermeldung
- bereits geprüfte Schritte
- vorläufige Ursache
- aktuelle Gegenmaßnahme
- zuständige Person
- nächster Schritt
Beispiel:
Fehler:
Benutzer-Onboarding schlägt bei der Gruppenzuweisung fehl.
Auswirkung:
Benutzerkonto wird erstellt, Gruppe jedoch nicht zugewiesen.
Statuscode:
403 Forbidden
Bereits geprüft:
Token gültig, Endpoint erreichbar, Benutzer vorhanden.
Vermutete Ursache:
benötigter Scope für Gruppenverwaltung fehlt.
Priorisierung von Störungen
| Priorität | Beispiel |
|---|---|
| niedrig | einzelner unkritischer Datensatz |
| mittel | mehrere Benutzer betroffen |
| hoch | wichtiger Geschäftsprozess ausgefallen |
| kritisch | Sicherheitsvorfall oder Datenverlust |
Zu berücksichtigen sind:
- Anzahl betroffener Benutzer
- betriebliche Auswirkung
- Sicherheitsrisiko
- möglicher Datenverlust
- vorhandener Workaround
- zeitliche Dringlichkeit
Übergabe an andere Mitarbeiter
Eine Übergabe sollte enthalten:
- aktueller Stand
- Fehlerursache, falls bekannt
- bereits getestete Maßnahmen
- offene Fragen
- relevante Logs
- betroffene Systeme
- sichere Wiederholungsmöglichkeit
- nächster empfohlener Schritt
Schlechte Übergabe:
Funktioniert nicht. Bitte prüfen.
Bessere Übergabe:
Der POST-Request an
/usersist erfolgreich. Die anschließende Gruppenzuweisung antwortet mit 403. Token, Benutzer-ID und Endpoint wurden geprüft. Vermutlich fehlt der Scope für Gruppenänderungen.
Wiederherstellung
Vor größeren Änderungen sollte bekannt sein:
- Gibt es ein Backup?
- Kann der Workflow exportiert werden?
- Kann eine alte Version wiederhergestellt werden?
- Können Credentials zurückgesetzt werden?
- Können Änderungen rückgängig gemacht werden?
- Welche manuellen Schritte sind notwendig?
Mögliche Maßnahmen:
- Workflow-Version sichern
- Konfiguration exportieren
- Testlauf durchführen
- Rollback dokumentieren
- Änderungen schrittweise veröffentlichen
Praxisbeispiel: Fehlerhafte Benutzeranlage
Fehler:
POST /users
Status: 409 Conflict
{
"error": "Email already exists"
}
Systematische Prüfung:
- Response wurde empfangen.
- Endpoint und Methode sind korrekt.
- Authentifizierung ist gültig.
- E-Mail-Adresse existiert bereits.
- vorhandenes Konto wird mit GET gesucht.
- Datensatz wird nicht erneut angelegt.
- Workflow erstellt eine manuelle Prüfaufgabe.
- Ergebnis wird protokolliert.
Praxisbeispiel: Workflow startet nicht
Prüfung:
- Workflow aktiv?
- Webhook-URL korrekt?
- Test- oder Produktiv-URL verwendet?
- Quellsystem hat tatsächlich gesendet?
- Firewall oder Proxy blockiert?
- richtige HTTP-Methode?
- Authentifizierung gültig?
- Trigger-Log vorhanden?
Mögliche Ursache:
Im Quellsystem wurde noch die Test-Webhook-URL verwendet.
Praxisbeispiel: Zusammenspiel mehrerer Workflows
Folgende Regeln gelten:
- Workflow A deaktiviert Benutzer ohne Abteilung.
- Workflow B entfernt beim Offboarding die Abteilung.
- Workflow C reaktiviert Benutzer mit offenen Aufgaben.
Möglicher Ablauf:
- Workflow B entfernt die Abteilung.
- Workflow A deaktiviert den Benutzer.
- Workflow C erkennt offene Aufgaben.
- Workflow C aktiviert den Benutzer erneut.
Jeder Workflow arbeitet nach seiner eigenen Regel korrekt.
Das Gesamtergebnis ist dennoch falsch.
Mögliche Lösung:
- gemeinsame Prozesslogik definieren
- eindeutigen Mitarbeiterstatus verwenden
- Prioritäten festlegen
- gegenseitige Abhängigkeiten dokumentieren
- vollständigen Systemtest durchführen
Systematische Fehlersuche
Bei einer gestörten Schnittstelle:
- fachliche Anforderung klären
- Problem genau beschreiben
- betroffene Systeme bestimmen
- Trigger prüfen
- Eingangsdaten prüfen
- Erreichbarkeit prüfen
- Endpoint und Methode kontrollieren
- Authentifizierung prüfen
- Autorisierung prüfen
- Header und Body prüfen
- Statuscode auswerten
- Response-Body lesen
- Reihenfolge und Timing untersuchen
- Abhängigkeiten prüfen
- Logs kontrollieren
- letzte Änderungen prüfen
- Komponenten einzeln testen
- Integrationstest durchführen
- Gesamtsystem testen
- Ursache und Lösung dokumentieren
Wichtige Begriffe
| Begriff | Bedeutung |
|---|---|
| Fehlerursache | tatsächlicher Auslöser eines Problems |
| Fehlerstelle | Stelle, an der ein Problem sichtbar wird |
| Fehlereingrenzung | Problem Schritt für Schritt lokalisieren |
| Schnittstellenfehler | Fehler bei Übergabe oder Interpretation |
| Abhängigkeit | ein System benötigt ein anderes System |
| emergentes Verhalten | unerwartetes Verhalten des Gesamtsystems |
| Komponententest | einzelne Komponente prüfen |
| Integrationstest | Zusammenspiel mehrerer Komponenten prüfen |
| Systemtest | vollständiges Gesamtsystem prüfen |
| Abnahmetest | fachliche Anforderungen prüfen |
| Reproduktion | Fehler unter gleichen Bedingungen erneut auslösen |
| Änderungsprotokoll | technische Änderungen dokumentieren |
| Rollback | Änderung auf vorherigen Stand zurücksetzen |
| Workaround | vorläufige Umgehung eines Fehlers |
Gesamtmerksatz
Technische Fehler liegen nicht immer eindeutig in Software, Elektronik oder Mechanik. Viele Probleme entstehen erst durch unklare Anforderungen, fehlerhafte Schnittstellen, falsche Datentypen, unterschiedliches Timing, versteckte Abhängigkeiten oder das Zusammenspiel mehrerer Teilsysteme. Deshalb müssen neben den einzelnen Komponenten auch ihre Integrationen und das vollständige Gesamtsystem geprüft werden.
Kontrollfragen
Warum zeigt eine Fehlermeldung nicht immer die eigentliche Ursache?
Weil ein Fehler in einem anderen Teilsystem entstehen und erst später sichtbar werden kann.
Warum können funktionierende Komponenten gemeinsam einen Fehler erzeugen?
Weil Schnittstellen, Datenformate, Reihenfolge, Timing oder Abhängigkeiten nicht zusammenpassen.
Was ist ein Schnittstellenfehler?
Ein Fehler bei der Übergabe oder Interpretation von Daten, Signalen oder Befehlen zwischen Systemen.
Was bedeutet emergentes Verhalten?
Das Gesamtsystem zeigt ein Verhalten, das bei der getrennten Betrachtung der Einzelteile nicht erkennbar war.
Was prüft ein Komponententest?
Eine einzelne Funktion oder Komponente.
Was prüft ein Integrationstest?
Das Zusammenspiel und die Schnittstellen zwischen mehreren Komponenten.
Was prüft ein Systemtest?
Den vollständigen Ablauf des Gesamtsystems.
Was prüft ein Abnahmetest?
Ob das System die tatsächlichen fachlichen Anforderungen erfüllt.
Warum müssen Statuscode und Response-Body gemeinsam geprüft werden?
Der Statuscode zeigt die allgemeine Fehlerklasse. Der Response-Body enthält häufig die genaue Ursache.
Warum ist ein Änderungsprotokoll wichtig?
Damit Fehler mit vorherigen technischen Änderungen in Verbindung gebracht werden können.
Warum sollte der früheste Fehler eines Ablaufs zuerst untersucht werden?
Weil spätere Fehlermeldungen häufig nur Folgefehler derselben Ursache sind.
Quellen
- IETF – HTTP Semantics
- MDN Web Docs – HTTP-Statuscodes
- n8n-Dokumentation – Executions
- n8n-Dokumentation – Error Handling
- OWASP – Logging Cheat Sheet
- BSI – IT-Grundschutz