Warum „kann ich nicht reproduzieren" fast immer ein Schritte-Problem ist
Gute Reproduktionsschritte = ein klarer Startpunkt + eine Aktion pro Schritt + echte Daten + die Beobachtung bei jedem Schritt. Kann jemand sie laut vorlesen und landet auf demselben Bildschirm, sind die Schritte gut genug. Unten findest du 5 Regeln, einen Test für den richtigen Detaillierungsgrad, 5 vollständige Beispiele (inklusive der Frage, wie man einen sporadischen Bug beschreibt) und eine Checkliste für das Absenden.
Wenn ein Entwickler mit „kann ich nicht reproduzieren" antwortet, ist das selten Unwille. In den Schritten fehlt etwas — und zwar meist eines von drei Dingen:
+ enthält.In einem Satz: Schritte sind kein Protokoll für dich, sondern eine Route für andere.
5 Regeln für brauchbare Schritte
user+test@x.com, nicht „eine E-Mail-Adresse".Wie fein sollten die Schritte sein?
| Detaillierung | Beispiel | Problem |
|---|---|---|
| Zu grob | „Checkout öffnen, Artikel entfernen, Zähler ist falsch" | Drei Aktionen in einem Satz — niemand erkennt, wo es bricht |
| Genau richtig | „1. /cart öffnen 2. Rechts neben dem Produkt auf Löschen klicken 3. Den Zähler oben auf der Seite beobachten" |
Eine Aktion pro Schritt, jeder einzeln prüfbar |
| Zu fein | „1. Zeiger auf die Schaltfläche bewegen 2. linke Maustaste drücken 3. loslassen" | Physische Aktionen zerlegt — schwerer zu lesen, nicht leichter |
Der Test: Stelle nach dem Schreiben zwei Fragen. ① Kommt jemand anderes ohne meinen Screenshot auf denselben Bildschirm? ② Kann ein Entwickler in zwei Minuten sagen, ob es Frontend, API oder Daten betrifft? Zweimal Ja heißt: Der Detaillierungsgrad passt.
5 vollständige Beispiele
Beispiel 1: Login und Authentifizierung (5 Schritte)
Vorbedingungen: Konto test@example.com registriert und aktiv.
Umgebung: Chrome 120 / macOS 14 / Desktop / 1920×1080 / Inkognito-Fenster.
https://app.example.com/login öffnentest@example.com und das korrekte Passwort eingebenErwartet: Meldung „Captcha falsch, bitte erneut versuchen", Konto bleibt entsperrt. Tatsächlich: Meldung „Konto gesperrt, in 24 Stunden erneut versuchen" — obwohl das Captcha korrekt war.
Beispiel 2: Zahlung und Gutscheine (6 Schritte)
Vorbedingungen: 2 Artikel im Warenkorb, Summe 1.299 €; Konto ist ein Enterprise-Konto. Umgebung: Chrome 120 / Windows 11 / Desktop / 1440×900 / Enterprise-Konto.
/cart öffnen und die Summe 1.299 € bestätigenSAVE100 eingeben (seit drei Tagen abgelaufen)Erwartet: Hinweis „Gutschein abgelaufen", Warenkorb unverändert. Tatsächlich: Meldung „Gutschein angewendet" und 100 € werden abgezogen; im Moment des Klicks auf „Anwenden" verschwinden beide Artikel aus dem Warenkorb.
Beispiel 3: Mobile Touch (5 Schritte)
Vorbedingungen: angemeldet, 1 Artikel im Warenkorb. Umgebung: iPhone 14 / iOS 17.2 / Safari / Viewport 390×844.
https://shop.example.com/cart öffnenErwartet: Der Button wandert über die Tastatur und bleibt antippbar. Tatsächlich: Die Tastatur verdeckt rund 60 % des Buttons, Taps in diesem Bereich bewirken nichts.
Beispiel 4: API und Daten (4 Schritte)
Vorbedingungen: Token für die Testumgebung vorhanden; in der Datenbank liegen 12.400 Bestellungen, 12 davon passen zum Suchbegriff.
Umgebung: https://api-test.example.com / curl 8.x.
GET /api/orders/export?month=2026-08 mit dem Header Authorization: Bearer <token>month=2026-08-01~2026-08-07 versuchenErwartet: 200 mit einer Export-Job-ID oder 202, wenn der Job eingereiht wurde. Tatsächlich: 504 (Gateway-Timeout); mit kleinerem Zeitraum kommt 200 — der Schwellenwert hängt also an der Datenmenge.
Beispiel 5: Sporadischer Bug (mit Wahrscheinlichkeit und Timing)
Vorbedingungen: Konto ohne Guthaben; die Testkarte ist beim Testnutzer hinterlegt. Umgebung: Chrome 120 / macOS 14 / Netzwerk auf 3G gedrosselt.
/checkout öffnen und die Zahlungsdaten ausfüllenErwartet: Genau eine Bestellung; Doppelklicks werden clientseitig entdoppelt oder serverseitig durch Idempotenz blockiert.
Tatsächlich: In 3 von 10 Versuchen entstanden zwei Bestellungen (Reproduktionsbedingungen: Abstand <500ms und Netzwerklatenz >1s). Aufnahme des Network-Panels und die Request-IDs beider POST /api/orders-Aufrufe sind angehängt.
So beschreibst du einen sporadischen Bug:
- Gib eine Wahrscheinlichkeit an, nicht das Wort „sporadisch": „3 von 10 Versuchen" ist hundertmal nützlicher.
- Gib Timing oder Schwellenwert an: „Abstand <500ms", „Netzwerklatenz >1s" — solche Bedingungen sind oft der Hinweis auf die Ursache.
- Gib die Beweisart an: Bildschirmaufnahme und Konsolen-Logs sind die einzigen dauerhaften Nachweise, die ein sporadischer Bug mitbringen kann.
7 Fehler, die deine Schritte ungültig machen
Checkliste vor dem Absenden
- Vorbedingungen notiert (Login-Status + Datenzustand)?
- Der erste Schritt ist eine fachliche Aktion, nicht „Browser öffnen"?
- Genau eine Aktion pro Nummer?
- Echte Werte statt Platzhalter?
- Beobachtungen nach den Schlüsselschritten notiert?
- Erwartetes und tatsächliches Ergebnis getrennt?
- Bei sporadischen Bugs Wahrscheinlichkeit und Timing angegeben?
FAQ
Wie viele Schritte sollte eine Reproduktion haben?
Üblicherweise 3–8. Weniger als 3 bedeutet meist fehlende Vorbedingungen; mehr als 8 lässt sich meist kürzen — die Navigation in die Vorbedingungen verschieben und nur die auslösenden Aktionen behalten.
Gehört die Umgebung in die Schritte oder in ein eigenes Feld?
In ein eigenes Feld. In den Schritten stört sie den Lesefluss und ist nicht filterbar. Hat das Format kein Umgebungsfeld (etwa eine E-Mail), dann deklariere sie in einer Zeile über den Schritten: „Umgebung: Chrome 120 / macOS 14 / 1920×1080".
Sollen belanglose Aktionen wie „Zurück klicken" oder „Dialog schließen" mit rein?
Nur wenn sie Teil der Reproduktionsbedingungen sind. Der Test: Streiche den Schritt — tritt der Fehler noch auf? Wenn ja, weg damit; wenn nein, muss er bleiben.
Wie schreibe ich Schritte für einen Bug, den ich selbst nicht reproduzieren kann?
Schreibe drei Dinge ehrlich auf: ① die probierten Bedingungen (welche Versuche klappten, welche nicht); ② den stärksten vorhandenen Nachweis (Aufnahme, Konsolen-Logs, Netzwerkanfragen); ③ beobachtete Korrelationen („nur bei langsamem Netz"). Markiere es im Titel oder in den Notizen als „Reproduktionsbedingungen unklar", statt es als reproduzierbar darzustellen.
Worin unterscheiden sich Reproduktionsschritte von Testfällen?
Ein Testfall ist eine vorab entworfene Prüfliste — er deckt Normalfälle, Grenzen und Ausnahmen ab und zielt auf Abdeckung. Reproduktionsschritte sind ein nachträglich protokollierter Pfad, der nur das Problem zuverlässig wiederholen soll. Beides befruchtet sich, aber die Ziele unterscheiden sich — zum Schreiben von Testfällen siehe Testfall-Vorlage mit Beispielen.
Die Schritte schreibst du selbst; die Nachweise können automatisch entstehen
Die Schritte muss die Person schreiben, die geklickt hat — nur du weißt, was du getan hast. Umgebung und Nachweise, die mitgeschickt werden, können sich aber selbst füllen:
- Bildschirmaufnahme: aktuellen Tab per Klick aufnehmen und kürzen, damit auch sporadische Bugs einen abspielbaren Nachweis haben.
- Diagnosedaten: Konsolen-Logs auf Fehlerlevel und fehlgeschlagene Netzwerkanfragen (HTTP ≥ 400) werden gesammelt, sensible Parameter automatisch unkenntlich gemacht.
- Automatischer technischer Kontext: URL, Browser, Betriebssystem, Auflösung und Viewport werden für dich eingetragen.
- Annotierte Screenshots: Bereich markieren und Pfeile, Rahmen und Text ergänzen, um den Fehler festzuhalten.
- Teilen oder synchronisieren: einen Freigabelink ohne Registrierung erzeugen oder den Bericht in eine Feishu-Base bzw. einen generischen Webhook schicken.
Weiterlesen
- Bug-Berichtsformat: die Spezifikation der 10 Felder
- Bug-Bericht-Vorlage: kopierfertiges Gerüst mit ausgefülltem Beispiel
- Beispiele für Bug-Titel: 40 gute und schlechte Titel im Vergleich
- Testfall-Vorlage mit Beispielen
- Bugs effektiv melden