Debugging-Tools nach Kategorie – und was sie jeweils voraussetzen
Stepper und Inspektoren
Die Ausführung anhalten und den Zustand betrachten.
Setzt voraus, dass Sie den Fehler auf Kommando auslösen können.
Logs und Tracing
Im Nachhinein sehen, was passiert ist – auch in der Produktionsumgebung.
Setzt voraus, dass Sie vorher das Richtige geloggt haben.
Profiler
Herausfinden, wohin Zeit oder Speicher fließen.
Setzt voraus, dass das Problem ressourcenbedingter Natur ist.
Sie alle setzen voraus, dass Sie den Fehler bereits erreicht haben. In genau dieser Annahme verschwinden die Stunden, die das Debuggen wirklich kostet.
Der fehlende Schritt
Eine zuverlässige Reproduktion ist das wertvollste Artefakt beim Debuggen – und zugleich dasjenige, das am seltensten existiert. Ohne sie raten Sie; mit ihr wird jedes andere Werkzeug sofort wirksam.
Zuverlässig wird eine Reproduktion dadurch, dass sie als Schrittfolge mit einem erwarteten Ergebnis festgehalten ist und nicht nur im Kopf einer Person existiert. Festgehalten lässt sie sich erneut ausführen, an andere weitergeben und über die Fehlerbehebung hinaus aufbewahren.
Warum das mit einem Coding-Agenten noch stärker ins Gewicht fällt
Wenn ein Agent die Behebung übernimmt, wiegt eine vage Beschreibung deutlich schwerer als bei einem Menschen. Ein Mensch kann aus einem Screenshot erschließen, was Sie gemeint haben. Ein Agent braucht die Schrittfolge und die Abweichung explizit ausformuliert – bei allem darunter behebt er mit voller Überzeugung das Falsche.
Die richtige Reihenfolge beim Vorgehen
Bei einem Fehler, den Sie nicht sofort erklären können, gibt es eine Reihenfolge, die schneller zum Ziel führt als das Verfolgen Ihrer ersten Hypothese – vor allem, weil sich Ihre erste Hypothese meist auf den Code bezieht, die Antwort aber oft woanders liegt.
Tritt er auch aus einem völlig sauberen Zustand heraus auf. Wenn nicht, liegt es an übrig gebliebenem Zustand, und am Code ist nichts in dem Sinne falsch, wie Sie denken.
Tritt er auch in einer anderen Umgebung auf. Wenn nicht, ist der Unterschied zwischen den Umgebungen der Fehler, und Sie können aufhören, das Diff zu lesen.
Tritt er jedes Mal auf. Wenn nicht, geht es um Timing oder Nebenläufigkeit – womit die meisten deterministischen Erklärungen ausscheiden, die Sie gerade prüfen wollten.
Drei Fragen, ein paar Minuten – und jede Antwort schließt eine ganze Klasse von Ursachen aus. Die meiste Zeit beim Debuggen geht dafür drauf, eine Klasse zu untersuchen, die eine dieser Fragen sofort ausgeschlossen hätte.
Bewahren Sie die Reproduktion danach auf
Der Fall, den Sie gebaut haben, um den Fehler zu sehen, ist zugleich die Prüfung, die seine Rückkehr verhindert. Die meisten Teams löschen ihn zusammen mit dem Branch – und genau deshalb taucht derselbe Defekt in sechs Monaten wieder auf, ohne dass ihn jemand wiedererkennt.
Terminal
npm install -g @testsprite/testsprite-cli
testsprite setup
Dasselbe Setup finden Sie im TestSprite-Dashboard, falls Sie lokal nichts installieren möchten. Der restliche Funktionsumfang der CLI findet sich im CLI-Repository.
Die GitHub App ist ein Webhook, den Sie im TestSprite-Dashboard einrichten. Er lauscht auf das Deployment-Event, das Ihre Pipeline ohnehin erzeugt – an Ihrem Repository ändert sich also nichts.
GitHub Actions bringt diesen Schritt in Ihren eigenen Workflow, konfiguriert vom Terminal aus.
Wie TestSprite den fehlenden Schritt liefert
TestSprite macht aus einer Reproduktion ein Artefakt. Sie beschreiben die Schrittfolge und den Zustand, der am Ende gelten soll; TestSprite führt das Ganze gegen Ihre deployte Anwendung aus und meldet, was tatsächlich passiert ist. Genau das ist der Schritt, den jedes andere Debugging-Tool bei Ihnen voraussetzt.
Beim Setup wird der Verifizierungs-Skill in Ihren Coding-Agenten installiert, sodass er diese Belege selbst erzeugen und lesen kann, statt darauf zu warten, dass Sie sie weiterreichen. Bei einem sporadischen Fehler ergibt das wiederholte Ausführen desselben Falls eine Rate – und die grenzt die Ursache weit schneller ein als die nächste Hypothese.
Und die Reproduktion überdauert die Fehlerbehebung. Sie bleibt im Projekt und läuft bei jeder Änderung mit, sodass derselbe Defekt nicht unbemerkt zurückkehren kann, wenn der Branch gemergt und das Gespräch dazu verschwunden ist.
Welches ist das am meisten unterschätzte Debugging-Tool?
Eine schriftlich festgehaltene Reproduktion. Sie kostet fünf Minuten und sorgt dafür, dass alles andere funktioniert.
Wie debugge ich einen sporadisch auftretenden Fehler?
Führen Sie dieselbe Schrittfolge mehrfach aus und halten Sie die Rate fest. Ein Fehlschlag in einem von vier Durchläufen deutet meist auf Timing oder übrig gebliebenen Zustand hin – das grenzt die Sache erheblich ein.
Reichen Logs aus?
Sie sagen Ihnen, was der Code entschieden hat, nicht, was auf Nutzerseite tatsächlich passiert ist. In der Lücke dazwischen steckt ein großer Teil der Defekte.
Kann ein Agent das Debugging für mich übernehmen?
Er kann Ursachen und Korrekturen vorschlagen. Die laufende Anwendung beobachten kann er nur, wenn ihm etwas diese Fähigkeit verleiht – und genau dieser Schritt fehlt in den meisten Setups.
Was sollte ich bei einem neuen Fehler zuerst tun?
Reproduzieren Sie ihn und schreiben Sie die Schrittfolge auf. Alles Weitere geht danach schneller – auch, jemanden um Hilfe zu bitten.
Die Reproduktion ist das Werkzeug.
Debugging-Tools setzen voraus, dass Sie den Fehler bereits auslösen können, und genau dorthin zu gelangen, kostet die Zeit. Schreiben Sie die Reproduktion auf, behalten Sie sie über die Behebung hinaus und geben Sie allen, die den Fehler beheben, die Schrittfolge und die Abweichung an die Hand statt einer Beschreibung.