Schreibe zuerst die Tests, dann den Code – mit Prompts zur Präzision

Willkommen zu einer praxisnahen Reise in die Prompt-gesteuerte Test-First-Entwicklung: Spezifikationen und Unit-Tests vor dem Code. Wir zeigen, wie gut gestaltete Aufforderungen glasklare Anforderungen, verlässliche Tests und elegant wartbaren Code hervorbringen, inklusive konkreter Fragen, Fallstricke, Ritualen und gemeinsamer Teamroutinen. Teile eigene Erfahrungen, stelle Fragen und abonniere, wenn du kontinuierlich präziser entwickeln möchtest.

Warum Klarheit vor Code zählt

Wenn Erwartungen unausgesprochen bleiben, materialisieren sie sich als Bugs, Nacharbeit und Frust. Indem wir zuerst Spezifikationen und Unit-Tests mit gezielten Prompts herausarbeiten, schaffen wir eine messbare Verständigungsbasis zwischen Produkt, Entwicklung und Qualitätssicherung. Diese gemeinsame Sprache reduziert Auslegungsfehler, beschleunigt Entscheidungen und verankert Qualitätskriterien früh. Das Ergebnis sind kleinere Feedbackzyklen, weniger Überraschungen in späteren Phasen und eine Kultur, die sauberen, überprüfbaren Fortschritt wichtiger nimmt als hastige Implementierung.

Das Gespräch mit der Anforderung

Gute Prompts verwandeln vage Wünsche in überprüfbare Aussagen. Statt nur nach Funktionen zu fragen, lenken wir das Gespräch auf beobachtbares Verhalten, Datenflüsse, Grenzwerte und Beispiele aus der realen Nutzung. Wir ermutigen Stakeholder, Gegenbeispiele zu liefern, beschreiben, was niemals passieren darf, und formulieren Verantwortung pro Komponente. So entsteht eine Sammlung verifizierbarer Sätze, die späteren Unit-Tests bereits inhärent ähneln und Missverständnisse entschlossen aus dem Weg räumen.

Messbare Akzeptanzkriterien

Akzeptanz ist kein Gefühl, sondern eine überprüfbare Eigenschaft. Mit strukturierten Prompts extrahieren wir präzise Kriterien, etwa gegebene Vorbedingungen, klare Auslöser und nachweisbare Ergebnisse. Wir verlangen konkrete Zahlen, deterministische Regeln und nachvollziehbare Quellen. Daraus werden testbare Formulierungen, die Unit-Tests direkt speisen. Das Team sieht früh, woran Erfolg gemessen wird, während Fachseite und Technik dieselben Sätze lesen, dieselben Beispiele teilen und dieselben Nachweise akzeptieren.

Prompts, die Spezifikationen präzisieren

Nicht jeder Prompt führt zu Klarheit. Wir strukturieren Fragen so, dass sie Spezifikationen präzisieren, Ambiguitäten ausleuchten und Domänenwissen konservieren. Dabei kombinieren wir narrative Szenarien mit formaleren Mustern wie Given-When-Then, ergänzen Gegenbeispiele, fordern Begründungen für Regeln und nutzen kontrollierte Vokabulare. Diese Mischung lässt sich wiederverwenden, auditieren und kontinuierlich verbessern. So werden Prompts zu einem Werkzeugkasten, der reproduzierbar robuste Spezifikationen liefert.

Von Spezifikation zu Unit-Test

Testnamen als lebende Dokumentation

Ein guter Testname erklärt Verhalten, nicht Implementierung. Wir formen Namen aus der Domänensprache, betten Input, Auslöser und erwartetes Resultat ein und vermeiden generische Floskeln. Prompts liefern Namensvorschläge nach konsistenten Mustern, markieren fehlende Details und fordern präzisere Benennungen ein. So wird der Testkatalog zur lesbaren Chronik der Produktregeln, hilfreich für Code-Reviews, Onboarding und spätere Architekturentscheidungen, ohne in kryptischen Abkürzungen zu ersticken.

Arrange–Act–Assert automatisch formen

Prompts können Mustertexte für Arrange–Act–Assert generieren, die klar Datenaufbau, Handlung und Erwartung trennen. Wir bestehen auf minimalem Setup, expliziten Vorbedingungen und deterministischen Assertions. Dadurch erkennen Reviewer sofort, welcher Teil wirklich getestet wird. Das reduziert Flickenteppiche in Tests, erleichtert Batch-Änderungen und verhindert, dass unklare Initialisierung Nebeneffekte versteckt. So schaffen wir ein stabiles Fundament, auf dem auch komplexe Fälle verständlich und zuverlässig geprüft werden.

Mocking mit Augenmaß

Mocks sind nützlich, aber gefährlich, wenn sie Verhalten statt Verträge simulieren. Unsere Prompts leiten dazu an, nur externe Grenzen und teure Abhängigkeiten zu isolieren, klare Erwartungen zu definieren und Interaktionen sparsam zu verifizieren. Wir fördern Alternativen wie fakes und in-memory Adapter, wenn sie einfacher und ausdrucksstärker sind. Ergebnis ist ein Testset, das Stabilität bietet, ohne an Implementierungsdetails festzukleben oder Refactorings unnötig zu bremsen.

Red–Green–Refactor mit KI-Unterstützung

{{SECTION_SUBTITLE}}

Rotes Licht als Einladung

Ein roter Test ist eine Einladung zum Lernen. Wir formulieren absichtsvoll klare, aussagekräftige Fehlermeldungen, damit die nächste Änderung zielgenau ansetzt. Prompts helfen, die minimal notwendige Implementierung zu beschreiben, Alternativen zu skizzieren und Risiken zu markieren. So entsteht ein fokussierter Schritt, der nur das Nötige tut, Datenflüsse entwirrt und Nebenwirkungen vermeidet. Missverständnisse sinken, weil das Scheitern verständlich, reproduzierbar und öffentlich nachvollziehbar wird.

Grün ohne Abkürzungen

Grün bedeutet korrekt, nicht dekorativ. Wir widerstehen der Versuchung, Sonderfälle blind zu kodieren, und prüfen mit Prompts, ob neue Logik wirklich alle spezifizierten Pfade abdeckt. Vorschläge für alternative Implementierungen vergleichen wir an denselben Tests, nicht an Gefühlen. Dadurch wächst Vertrauen in die Lösung, während das Design genügsam bleibt. Wir halten die kleinste funktionierende Änderung fest und bewahren so Beweglichkeit für den unmittelbar folgenden Aufräumschritt.

Qualitätssicherung im Teamalltag

Test-First gelingt als Mannschaftsleistung. Wir pflegen gemeinsame Prompt-Sammlungen, standardisieren Teststile, integrieren CI-Pipelines mit Metriken und visualisieren Risiken früh. Pairing und kurze Schreibsitzungen für Spezifikationen fördern Alignment. Pull-Requests beginnen mit Tests, nicht mit Code. So entsteht eine Kultur, in der jeder Beitrag überprüfbar an vereinbarte Kriterien gebunden ist, Wissen skaliert und Ausfälle schneller entdeckt werden. Qualität wird Gewohnheit, nicht Ausnahme.

Gemeinsames Prompt-Backlog

Ein lebendiges Prompt-Backlog sammelt bewährte Frageketten, Musterfälle und typische Grenzbedingungen pro Domäne. Wir verlinken es in Tickets, aktualisieren es nach Retrospektiven und kuratieren Varianten für unterschiedliche Zielgruppen. Neue Teammitglieder finden sofort Sprache, Beispiele und Teststile vor. Dieses wiederverwendbare Wissen beschleunigt Spezifikationsphasen, erhöht Konsistenz und beendet einsame Dokumente. Das Backlog wird zum kollektiven Gedächtnis, das Projekte verbindet und Entscheidungen nachvollziehbar dokumentiert.

CI, Metriken und Alarmglocken

Kontinuierliche Integration macht Versprechen messbar. Wir tracken Testabdeckung aussagekräftig, nicht fetischhaft, beobachten Flakiness, messen Durchlaufzeiten, detektieren langsame Suites und pflegen Quarantäne-Listen. Prompts generieren Berichte, die Ursachen statt Symptome zeigen, und schlagen Prioritäten für Wartung vor. Alarmglocken sind laut, aber konstruktiv: Sie verknüpfen Ausfälle mit Verantwortlichen, Dokumenten und Commits. So wird Qualität sichtbar, handelbar und schrittweise verbessert, statt nur wöchentlich beklagt.

Wissensweitergabe durch Beispiele

Beispiele überzeugen mehr als Folien. Wir sammeln kleine, gut kommentierte Testfälle, die typische Fallen erklären: Datumsgrenzen, Rundungen, Unicode, konkurrierende Zugriffe. Prompts helfen, die Geschichte hinter jedem Beispiel zu erzählen, inklusive Kontext, Entscheidung und Alternativen. Diese Sammlung landet in Readmes, Brown-Bag-Sessions und Onboarding-Pfaden. So verbreiten sich gute Praktiken organisch, neue Kolleginnen finden schnell Tritt, und Teams erhalten eine greifbare Bibliothek erprobter Lösungen.

Fallstudie: Eine Preisberechnung, die nie lügt

Erste Iteration: Rabatte und Steuern

Wir fragten nach Prioritäten zwischen Rabatt und Steuer, ob fixe und prozentuale Nachlässe kombinierbar sind, und wann Mindestwarenwerte gelten. Daraus entstanden Tests für Reihenfolgen, Rundungen pro Zeile und Gesamtsummen. Die erste Implementierung deckte nur die definierten Pfade ab, nichts darüber hinaus. Trotz Minimalismus verschwanden bereits widersprüchliche Beträge. Stakeholder erkannten den Nutzen messbarer Regeln und lieferten bereitwillig zusätzliche Beispiele für heikle Konstellationen.

Erweiterung: Rundungsregeln und Währungen

Mit neuen Prompts präzisierten wir Bankers Rounding, Währungspräzision pro Land und Aggregationsstrategien. Tests kontrollierten Umrechnungen, Rabattkaskaden und Steuerfreigrenzen in mehreren Zonen. Unsere Implementierung wechselte auf eine Geldbibliothek, nachdem Tests Schwächen der Fließkommarechnung offenlegten. Nichts ging live ohne grüne Suite. Die Metriken zeigten sinkende Regressionsraten und spürbar weniger Supportfälle. Der Händler gewann Vertrauen, weil der Nachweis jederzeit reproduzierbar war.

Betrieb: Regressionen verhindert

Später überraschten neue Aktionen mit zeitlich begrenzten Regeln. Statt Panik zu schieben, erweiterten wir nur die Prompts und Tests. Rote Fälle zeigten exakt, wo Logik ergänzt werden musste. Nach kleinen Implementierungsschritten blieb alles grün. Das Team dokumentierte Entscheidungen im Testkatalog, die Fachseite nutzte dieselben Beispiele in Schulungen. Aus einem früheren Risikoherd wurde ein Vorzeigebereich, der Änderungen begrüßte, statt sie ängstlich zu blockieren.