Wat als we met automatische tests vooraf kunnen ontdekken dat de API is veranderd? En wat als AI daarna ook nog helpt om de code aan te passen, zonder dat een developer alle logica opnieuw hoeft te schrijven?
Daar draait dit R&D-project om: Test-Driven Development (TDD) combineren met Artificial Intelligence om API-integraties slimmer en robuuster te maken.
Bij Test-Driven Development schrijf je eerst een test die beschrijft wat je van je code verwacht. Pas daarna schrijf je de daadwerkelijke implementatie. Dit zorgt voor scherpere focus, betere testdekking en minder verrassingen achteraf. De werkwijze is eenvoudig:
Laat de test falen:
De functionaliteit bestaat nog niet, dus de test hoort te falen.
Waarom deze stap? Een falende test bevestigt dat de test zinvol is en dat de functionaliteit nog ontbreekt. Zo voorkom je dat je onbedoeld vertrouwt op een test die niets controleert.
Schrijf de minimale code om de test te laten slagen
Bouw precies wat nodig is om aan de test te voldoen niet meer, niet minder.
Herhaal
Breid je testset uit, verbeter je code, en blijf steeds vanuit gedrag en verwachtingen denken.
Beschrijf het gewenste gedrag van de code voordat je iets implementeert, of beschrijf je intertie's aan een AI en laad hem de code genereren
Minder bugs in productie
Door vooraf te testen wat je van je code verwacht, verklein je de kans op fouten achteraf. Je ontdekt problemen eerder en kunt ze gericht oplossen voordat ze live gaan.
Sneller feedback bij API-wijzigingen
Verandert een externe API onverwacht? Dan faalt je test (mits je die regelmatig draait). Met een geautomatiseerd testproces (bijvoorbeeld via een CI-pipeline) krijg je direct feedback zodra er iets verandert aan de API.
Betere documentatie van je businesslogica
Tests leggen vast hoe je code zich hoort te gedragen. Daardoor vormen ze een levendige vorm van documentatie die altijd in sync is met de implementatie.
Voeg AI toe, en je bespaart ontwikkeltijd
AI kan helpen bij het schrijven of aanpassen van code op basis van testresultaten. Zo los je fouten sneller op zonder dat je alle logica zelf hoeft te herschrijven.
We hebben een minimalistische maar realistische setup gemaakt:
Umbraco 15
NUnit testproject: voor het schrijven en draaien van tests
WireMock: om een externe API na te bootsen en wijzigingen te simuleren
ChatGPT: om AI-gegenereerde suggesties te geven op basis van tests en responses
Stel, je gebruikt een externe API die gebruikersdata levert. In de oorspronkelijke situatie krijg je:
{ "id": 1, "name": "John Doe" }
Je model is hierop afgestemd en je test controleert simpelweg of de Name-property beschikbaar is en wordt weergegeven:
Assert.That(user.Name, Is.Not.Null.And.Not.Empty);
Maar dan verandert de API naar:
{ "id": 1, "forename": "John", "surname": "Doe" }
De property name bestaat niet meer en jouw code laat nu een lege waarde zien, zonder foutmelding. Je test faalt, maar waarom?
In dit project bouwen we tests die niet alleen zeggen "het is stuk", maar ook laten zien wat er precies veranderd is.
Bijvoorbeeld:
var doc = JsonDocument.Parse(json);
foreach (var prop in doc.RootElement.EnumerateObject())
{
Console.WriteLine($"Response bevat: {prop.Name}");
}
Assert.That(doc.RootElement.TryGetProperty("name", out _) ||
(doc.RootElement.TryGetProperty("forename", out _) &&
doc.RootElement.TryGetProperty("surname", out _)),
Is.True, "Naamvelden ontbreken in de API-response");
Zo zie je als developer direct of de structuur is gewijzigd en waar je je model moet aanpassen.
Problemen in koppelingen vroegtijdig detecteren, nog vóórdat gebruikers of klanten iets merken
Bestaande tests inzetten als slimme vorm van API-monitoring: zodra de response verandert, krijg je direct feedback
AI inzetten om automatisch aanpassingen voor te stellen – bijvoorbeeld een pull request wanneer een veldnaam verandert
De buildstraat uitbreiden met automatische controles op API-wijzigingen, zodat foutgevoelige releases worden tegengehouden vóór ze live gaan
Ik denk graag met je mee over hoe we voor een naadloze integratie en gestroomlijnde klantervaring zorgen.
Ik ga graag het gesprek met je aan over de mogelijkheden rondom koppelingen in jouw backoffice. Heb je vragen? Kies dan zelf hoe je contact wil opnemen!
Stuur een email +31611200209