Een druk op de knop, een vergelijking met het verwachte resultaat, geslaagd of gefaald. Dat model werkt al vijftig jaar voor software. Voor AI-systemen werkt het niet meer. Dat is geen kwestie van meer testen, maar van anders testen.
Voor AI-systemen botst dat model op een fundamenteel probleem: er bestaat geen vast verwacht resultaat om tegen af te toetsen. Dat lijkt een technisch detail, maar het verandert alles aan hoe je testkwaliteit beoordeelt.
Een testcase heeft een oracle nodig: een manier om te bepalen of de uitkomst correct is. Bij traditionele software is dat eenvoudig: de specificatie beschrijft precies wat de output moet zijn. Bij een machine learning-model is de output een voorspelling, geen berekening. Twee correcte modellen kunnen op dezelfde input een ander, evengoed verdedigbaar antwoord geven.
Een model voorspelt een waarschijnlijkheid, geen zekerheid. "Fout" en "onverwacht" zijn niet hetzelfde.
Dezelfde code, andere trainingsdata, ander gedrag. De testbasis verschuift met elke retraining.
Een test die vandaag slaagt, kan over drie maanden falen, zonder dat er iets aan het model veranderde.
Dat laatste punt is voor de meeste teams het meest onwennige: software die je niet aanraakt, blijft normaal gezien doen wat ze deed. Een model dat je niet aanraakt, kan stilaan minder goed presteren omdat de wereld eromheen verandert. Daarover meer in ons artikel over model drift.
De componenten rond het model (de API die het aanroept, de databank die resultaten opslaat, de interface die ze toont) blijven gewoon deterministische software. Die test je zoals je altijd al testte. Het is enkel het model zelf dat een andere aanpak vraagt. Wie dat onderscheid niet maakt, test óf te weinig op het model, óf veel te veel op de rest.
Bij een klant met een tekstclassificatiemodel voor klantfeedback (positief, neutraal, negatief) bleek een klassieke test met een vaste lijst van "verwachte" classificaties na elke modelupdate voortdurend te falen, zonder dat het model daadwerkelijk slechter presteerde. Elke retraining verschoof net genoeg om exacte matches te breken.
In plaats van te controleren of het model exact het label "neutraal" teruggeeft, controleren we of een logische versterking van het sentiment (traag → zeer traag) de classificatie niet tegen de verwachting in verschuift. Die test overleeft een retraining, een exacte-match-test niet.
We nemen je testaanpak door en tonen je waar "het werkt op mijn testset" tekortschiet.
Plan een gesprek