Testdrevet udvikling med AI-agenter

Testdrevet udvikling med AI-agenter

Lær bedste praksis for at kombinere TDD med AI-kodeagenter som Windsurf og Claude 3.5 Sonnet for at automatisere og effektivisere din softwareudviklingspipeline.

Hvad er TDD (Testdrevet udvikling)?

I sin kerne kredser TDD om en cyklisk proces kendt som Red-Green-Refactor. Cirklen starter med “Red”-fasen, hvor en udvikler skriver en automatiseret testcase, der definerer en ønsket funktion eller adfærd. Denne test er bevidst skrevet til at fejle i starten, fordi den tilsvarende kode endnu ikke findes. Denne indledende fejl er afgørende, da den sikrer, at testen faktisk tester den tilsigtede funktionalitet og kan fange fejl, når koden implementeres.

Den efterfølgende “Green”-fase går ud på at skrive den mindste mængde kode, der er nødvendig for at få den tidligere fejlede test til at bestå. Dette princip opmuntrer udviklere til at fokusere på det umiddelbare krav defineret af testen, opretholde en ren kodebase og forhindre over-engineering.

Endelig fokuserer “Refactor”-fasen på at forbedre struktur, læsbarhed og vedligeholdelsesvenlighed af både testkoden og produktionskoden, mens man sikrer, at alle eksisterende tests fortsat består. Refaktorering sikrer, at kodebasen forbliver sund og tilpasningsdygtig til fremtidige ændringer uden at introducere regressioner, hvor det eksisterende test-suite fungerer som sikkerhedsnet under denne fase.

Hvordan automatiserer du din TDD-pipeline fuldt ud?

Der er mange faktorer, der påvirker AI-agenters ydeevne under kodning. Lige fra LLM-modellen til, hvordan du strukturerer din kode og din udviklingspipeline. Vi har fundet ud af, at TDD er effektivt med Windsurf og Claude 3.5 Sonnet. Følgende er en eksempelopgave, der er implementeret i TDD.

Hvad skal du bruge?

Inden vi begynder at kode, skal vi bruge følgende:

Nok tests

Sørg for, at du allerede har tests efter TDD-principper, og at de dækker det meste af problemets omfang, som du mener er logisk og hjælpsomt for AI-agenten. Du behøver ikke ændre eller tilpasse noget for AI-agentens skyld. Hvis dine tests og deres navngivning følger en standard, er det endnu bedre. Som første skridt vil AI-agenten se disse tests for at starte implementeringen.

Her er et eksempel på en test, jeg har, der tester, om et dokument er blevet korrekt indsat i MongoDB:

MongoDB test example

Interfaces

Et interface i Java (eller ethvert andet programmeringssprog) er en struktur, der definerer, hvordan klasser skal se ud, og hvilke metoder de skal implementere. For at guide AI-agenten yderligere kan det være nyttigt at oprette et interface for dit repository til at indsætte dokumenter:

Java interface example Java interface code

Specifik opgavebeskrivelse

Endelig har vi brug for en specifik opgavebeskrivelse. Normalt kan du bruge JIRA eller GitHub issues, hvor du definerer opgaven. Dette er vores:

Task description screenshot

Start Vibe Coding

Vibe coding betyder, at du beskriver, hvad du har brug for på almindeligt dansk (eller endda stemmekommandoer), og AI genererer koden for dig i realtid. Vi går i dybden med Vibe Coding i denne blog. Her er prompten, jeg brugte i Windsurf til at løse opgaven for mig:

Prompt example for Windsurf

Implementér følgende forespørgsel som en kombination af en eller flere navngivne forespørgsler og Java-kode.

Find alle chauffører, der har gennemført mindst X ture med en vurdering over 5 i et givent datointerval og aldrig har modtaget en vurdering under 3 stjerner.

Bemærk:
Du behøver ikke finde én enkelt forespørgsel til at løse denne opgave (du kan bruge en kombination af Java-kode og navngivne forespørgsler), men du skal have ORM-ydeevne i tankerne, dvs. sørg for, at din løsning også er rimelig hurtig, hvis du har mange entiteter. Under diskussionssessionen skal du kunne forklare, hvilke typer problemer der kan opstå med dårligt skrevne forespørgsler.

@Ass1_2_2Test.java#L35-60 dette er de tilsvarende tests. Det er implementeret i @DriverDAO.java#L34-63

At nævne filerne er det vigtigste, når du arbejder med vibe coding. Nu kan du læne dig tilbage og se AI-agenten udføre sin magi. Den implementerede klassen, kørte testene og gentog processen for at få testene til at bestå:

AI Agent coding flow

Ofte stillede spørgsmål

Hvad er testdrevet udvikling (TDD)?

Testdrevet udvikling (TDD) er en softwareudviklingsmetode, hvor automatiserede tests skrives før den egentlige kode. Processen følger et Red-Green-Refactor-cyklus: skriv en fejlede test (Red), implementer kode for at få testen til at bestå (Green), og refaktorer derefter koden, mens alle tests fortsat består.

Hvordan kan AI-agenter automatisere TDD-pipelinen?

AI-agenter som Windsurf, især når de kombineres med modeller som Claude 3.5 Sonnet, kan automatisere kodegenerering, køre tests og udføre iterative forbedringer, hvilket gør TDD-processen hurtigere og mere effektiv.

Hvad er forudsætningerne for at automatisere TDD med AI-agenter?

For at automatisere TDD med AI-agenter skal du have et omfattende sæt tests, klart definerede interfaces og specifikke opgavebeskrivelser. Standardiseret testnavngivning og klar dokumentation hjælper AI-agenten med at opnå optimale resultater.

Hvad er Vibe Coding?

Vibe Coding er en AI-drevet tilgang, hvor udviklere beskriver krav på almindeligt dansk (eller via stemme), og AI'en genererer kode i realtid og itererer, indtil alle tests består og løsningen opfylder kravene.

Yasha er en talentfuld softwareudvikler med speciale i Python, Java og maskinlæring. Yasha skriver tekniske artikler om AI, prompt engineering og udvikling af chatbots.

Yasha Boroumand
Yasha Boroumand
CTO, FlowHunt

Boost din udvikling med AI-agenter

Oplev, hvordan FlowHunts AI-flowingeniører og kodeagenter kan automatisere din udviklingsproces for maksimal effektivitet og innovation.

Lær mere

AI Prototype Udvikling
AI Prototype Udvikling

AI Prototype Udvikling

AI Prototype Udvikling er den iterative proces med at designe og skabe foreløbige versioner af AI-systemer, hvilket muliggør eksperimentering, validering og res...

5 min læsning
AI Prototyping AI Development +3
Mente du (DYM)
Mente du (DYM)

Mente du (DYM)

Opdag hvordan 'Mente du' (DYM) i NLP identificerer og retter fejl i brugerinput, såsom tastefejl eller stavefejl, og foreslår alternativer for at forbedre bruge...

9 min læsning
NLP Did You Mean +5
Modeldrift
Modeldrift

Modeldrift

Modeldrift, eller modelnedbrydning, refererer til faldet i en maskinlæringsmodels forudsigende præstation over tid på grund af ændringer i det virkelige miljø. ...

7 min læsning
AI Machine Learning +4