Automatiseren met AI: Test-Driven Development in de Praktijk

Tobias was onlangs op de conferentie Jcon in Keulen. Daar gaf Bouke Nijhuis een demo over het gebruik van AI bij het schrijven code. In dit artikel deelt Tobias de belangrijkste leermomenten en legt hij uit hoe AI en Test-Driven Development (TDD) perfect op elkaar aansluiten.

AI en Test-Driven Development: Efficiëntie Verhogen met Automatisering


 

Wat is Test-Driven Development?

Bij Test-Driven Development schrijf je eerst de testen voordat je de code implementeert om deze testen te laten slagen. Dit zorgt voor een betere structuur en hogere kwaliteit van de code. TDD werkt ook goed in combinatie met pair programming, waarbij de ene persoon de testen schrijft en de ander de implementatie.

Pair Programming met AI

Een interessante uitbreiding van TDD is het gebruik van generatieve AI voor pair programming. Hierbij schrijf jij eerst de testen en laat je AI de implementatie verzorgen totdat alle testen slagen. Dit maakt gebruik van de kennis van de ontwikkelaar voor het opzetten van de structuur en de snelheid van AI voor de implementatie. Het is echter belangrijk om de output van de AI te controleren met de geschreven unit tests.

Praktijkvoorbeeld van AI en TDD

Tijdens een sessie op de conferentie liet een spreker zien hoe hij AI gebruikte om code te genereren op basis van vooraf geschreven testen. Na een vraag uit het publiek over het laten schrijven van implementaties door AI, ging hij aan de slag met de volgende stappen:

  1. Schema maken: Eerst maakte hij een schema van het proces. Zie de afbeelding hieronder.
  2. Handmatig testen: Vervolgens probeerde hij handmatig simpele stukken code te genereren met AI door de testen in ChatGPT te plakken, resultaten te bekijken en de implementatie terug te plakken.
  3. Automatiseren: Omdat dit proces tijdrovend was, bouwde hij een jar bestand om het proces te automatiseren. Dit vereiste meer onderzoek dan verwacht, zoals het filteren van AI-code en het navigeren door projecten

 

Lokale Modellen en Plugins

Om kosten te besparen, gebruikte hij een lokaal taalmodel. Hoewel dit model vaker geen oplossingen kon bedenken, werkte het in veel gevallen goed. Uiteindelijk maakte hij een Maven-plugin die code kon genereren en dependencies in het project kon gebruiken. Deze plugin was in staat eenvoudige stukken code goed te genereren, zoals eenvoudige berekeningen of het toevoegen van een endpoint aan een service.

 

Conclusie

Het was inspirerend om te zien hoe AI gebruikt kan worden om het proces van TDD te automatiseren. Het principe van eerst testen schrijven en vervolgens AI de implementatie laten doen, zorgt voor goede controle over de output. De technologie is vooral nuttig voor eenvoudigere taken en biedt misschien een kijkje in de toekomst van programmeren met AI, als de taalmodellen nog beter worden en dit bijvoorbeeld in copilot of IntelliJ AI assistent beschikbaar is.