Testgetriebene Entwicklung mit KI-Agenten

Lernen Sie Best Practices für die Kombination von TDD mit KI-Coding-Agenten wie Windsurf und Claude 3.5 Sonnet, um Ihre Softwareentwicklungspipeline zu automatisieren und zu optimieren.

Testgetriebene Entwicklung mit KI-Agenten

Was ist TDD (Testgetriebene Entwicklung)?

Im Kern dreht sich TDD um einen zyklischen Prozess, bekannt als Red-Green-Refactor. Der Zyklus beginnt mit der „Red“-Phase, in der ein Entwickler einen automatisierten Testfall schreibt, der ein gewünschtes Feature oder Verhalten definiert. Dieser Test wird absichtlich so geschrieben, dass er zunächst fehlschlägt, da der entsprechende Code noch nicht existiert. Dieses anfängliche Scheitern ist entscheidend, weil es sicherstellt, dass der Test tatsächlich die gewünschte Funktionalität prüft und Fehler erkennt, sobald der Code implementiert ist.

Die darauffolgende „Green“-Phase besteht darin, den minimalen Code zu schreiben, der notwendig ist, damit der zuvor fehlgeschlagene Test besteht. Dieses Prinzip ermutigt Entwickler, sich auf die unmittelbaren Anforderungen zu konzentrieren, einen sauberen Code zu pflegen und Overengineering zu vermeiden.

Abschließend konzentriert sich die „Refactor“-Phase darauf, die Struktur, Lesbarkeit und Wartbarkeit sowohl des Testcodes als auch des Produktionscodes zu verbessern, während sichergestellt wird, dass alle bestehenden Tests weiterhin bestehen. Refactoring sorgt dafür, dass die Codebasis gesund und anpassungsfähig für zukünftige Änderungen bleibt, ohne Regressionen einzuführen — der bestehende Testbestand dient dabei als Sicherheitsnetz.

Wie automatisieren Sie Ihre TDD-Pipeline vollständig?

Viele Faktoren beeinflussen die Leistung von KI-Agenten beim Programmieren – vom LLM-Modell bis zur Strukturierung Ihres Codes und Ihrer Entwicklungspipeline. Wir haben herausgefunden, dass TDD mit Windsurf und Claude 3.5 Sonnet effektiv ist. Hier ist eine Beispielaufgabe, die im TDD-Verfahren umgesetzt wurde.

Was benötigen Sie?

Bevor wir mit dem Programmieren beginnen, benötigen wir Folgendes:

Ausreichende Tests

Stellen Sie sicher, dass Sie bereits Tests gemäß TDD haben und diese den größten Teil des für den KI-Agenten logischen und hilfreichen Problemumfangs abdecken. Sie müssen nichts für den KI-Agenten ändern oder anpassen. Wenn Ihre Tests und deren Namenskonventionen auf einem Standard basieren, ist das von Vorteil. Der KI-Agent sieht sich als ersten Schritt diese Tests an, um mit der Implementierung zu beginnen.

Hier ein Beispiel für einen Test, der prüft, ob ein Dokument korrekt in MongoDB eingefügt wurde:

MongoDB test example

Schnittstellen

Ein Interface in Java (oder einer anderen Programmiersprache) ist eine Struktur, die vorgibt, wie Klassen aufgebaut sein und welche Methoden sie implementieren sollen. Um den KI-Agenten noch gezielter zu steuern, empfiehlt es sich, ein Interface für Ihr Repository zum Einfügen von Dokumenten zu erstellen:

Java interface example Java interface code

Konkrete Aufgabenbeschreibung

Zuletzt benötigen wir eine konkrete Aufgabenbeschreibung. Meistens können Sie dafür JIRA- oder GitHub-Issues verwenden, in denen Sie die Aufgabe definieren. Das ist unsere:

Task description screenshot

Starten Sie mit Vibe Coding

Vibe Coding bedeutet, dass Sie Ihren Bedarf in einfachem Englisch (oder sogar per Sprachbefehl) beschreiben und die KI den Code in Echtzeit generiert. Im Blog gehen wir ausführlich auf Vibe Coding ein. Hier das Prompt, das ich in Windsurf verwendet habe, um die Aufgabe für mich zu erledigen:

Prompt example for Windsurf

Implementieren Sie die folgende Abfrage als Kombination aus einer oder mehreren benannten Abfragen und Java-Code.

Finden Sie alle Fahrer, die mindestens X Fahrten mit einer Bewertung über 5 in einem bestimmten Zeitraum abgeschlossen haben und niemals eine Bewertung unter 3 Sternen erhalten haben.

Hinweis:
Sie müssen keine einzelne Abfrage finden, um diese Aufgabe zu lösen (Sie können eine Kombination aus Java-Code und benannten Abfragen verwenden), aber Sie müssen die ORM-Performance im Auge behalten, d. h. stellen Sie sicher, dass Ihre Lösung auch dann noch hinreichend schnell ist, wenn Sie viele Entitäten haben. In der Diskussionsrunde sollten Sie erklären können, welche Probleme bei schlecht geschriebenen Abfragen auftreten können.

@Ass1_2_2Test.java#L35-60 das sind die entsprechenden Tests. Die Implementierung befindet sich in @DriverDAO.java#L34-63

Die Erwähnung der Dateien ist beim Vibe Coding der wichtigste Aspekt. Jetzt können Sie sich zurücklehnen und dem KI-Agenten bei seiner Arbeit zusehen. Er hat die Klasse implementiert, die Tests ausgeführt und wiederholt, bis alle Tests bestanden wurden:

AI Agent coding flow

Häufig gestellte Fragen

Was ist Testgetriebene Entwicklung (TDD)?

Testgetriebene Entwicklung (TDD) ist ein Ansatz in der Softwareentwicklung, bei dem automatisierte Tests vor dem eigentlichen Code geschrieben werden. Der Prozess folgt einem Red-Green-Refactor-Zyklus: Schreiben eines fehlgeschlagenen Tests (Red), Implementieren des Codes, um den Test zu bestehen (Green), und anschließendes Refactoring des Codes, während alle Tests weiterhin bestehen.

Wie können KI-Agenten die TDD-Pipeline automatisieren?

KI-Agenten wie Windsurf, insbesondere in Kombination mit Modellen wie Claude 3.5 Sonnet, können die Codegenerierung automatisieren, Tests ausführen und iterative Verbesserungen vornehmen, sodass der TDD-Prozess schneller und effizienter wird.

Was sind die Voraussetzungen für die Automatisierung von TDD mit KI-Agenten?

Um TDD mit KI-Agenten zu automatisieren, benötigen Sie eine umfassende Testsuite, klar definierte Schnittstellen und spezifische Aufgabenbeschreibungen. Standardisierte Testbenennungen und eine klare Dokumentation helfen dem KI-Agenten, optimale Ergebnisse zu erzielen.

Was ist Vibe Coding?

Vibe Coding ist ein KI-gestützter Ansatz, bei dem Entwickler Anforderungen in einfachem Englisch (oder per Sprache) beschreiben und die KI in Echtzeit Code generiert, bis alle Tests bestehen und die Lösung den Anforderungen entspricht.

Yasha ist ein talentierter Softwareentwickler mit Spezialisierung auf Python, Java und Machine Learning. Yasha schreibt technische Artikel über KI, Prompt Engineering und Chatbot-Entwicklung.

Yasha Boroumand
Yasha Boroumand
CTO, FlowHunt

Steigern Sie Ihre Entwicklung mit KI-Agenten

Entdecken Sie, wie die KI-Flow-Engineers und Coding-Agenten von FlowHunt Ihren Entwicklungsprozess für maximale Effizienz und Innovation automatisieren können.

Mehr erfahren