Unit testing is de praktijk van het controleren van de kleinste testbare onderdelen van een programma, meestal afzonderlijke functies of klassen, in isolatie. Een unit test roept de code aan met bekende invoer en vergelijkt het resultaat met de verwachte uitvoer. Omdat databases en netwerken worden vermeden, wordt de test in milliseconden uitgevoerd en wijst hij bij een fout naar één oorzaak.
Wat telt als een unit
Een unit is het kleinste stuk gedrag dat je op zichzelf kunt controleren. In de meeste codebases is dat een functie, een methode of een kleine klasse. Het woord doet er minder toe dan de grens: een unit test mag geen actieve database, netwerkoproep of andere service nodig hebben om een resultaat te geven.
Hoe ziet een unit test eruit
Een typische unit test bestaat uit drie delen. Je stelt de invoer in, roept de code aan en controleert het resultaat. Een test voor een prijsberekening kan een winkelmandje en een kortingscode meegeven en het totaal controleren. Als het totaal onjuist is, geeft de falende test de naam van de functie waar je naar moet kijken.
Hoe verschillen unit tests van integratietests
Unit tests controleren één onderdeel afzonderlijk. Integratietests controleren of meerdere onderdelen samenwerken, bijvoorbeeld je code en een echte database. End-to-end tests bedienen het hele product zoals een gebruiker dat zou doen.
| Unit test | Integratietest | End-to-end test | |
|---|---|---|---|
| Bereik | Één functie of klasse | Meerdere componenten | Heel product |
| Snelheid | Milliseconden | Seconden | Seconden tot minuten |
| Afhankelijkheden | Vervangen of vermeden | Echt of dichtbij echt | Echt |
| Een fout vertelt je | Precies waar | Welke grens | Dat er iets stukging |
| Typisch aandeel van een suite | Grootste | Midden | Kleinste |
Deze vorm wordt vaak de testpiramide genoemd: veel snelle unit tests onderaan, minder trage tests daarboven.
Wat moet je unit testen
Test logica die fout kan gaan: berekeningen, validatieregels, parsing, toestandswijzigingen en randgevallen zoals lege invoer, zeer grote waarden en onverwachte typen. Sla code over die alleen data doorgeeft, en sla tests over die de implementatie regel voor regel herhalen. Een test die bij elke refactoring breekt zonder een echte bug te vangen, kost tijd en beschermt niets.
Wat zijn mocks
Een mock of stub vervangt een afhankelijkheid, zoals een betalingsprovider, zodat de unit afzonderlijk getest kan worden. Gebruik ze bij echte grenzen en houd ze eenvoudig. Veel mocking duidt er vaak op dat de code verstrengeld is, en de test controleert dan de mocks in plaats van het gedrag. Als een afhankelijkheid goedkoop en deterministisch is, gebruik dan de echte.
Hoe helpen unit tests bij AI-geschreven code
Coding agents schrijven code sneller dan iemand die aandachtig kan lezen, waardoor een snelle en betrouwbare testsuite de specificatie wordt waaraan de agent moet voldoen. Goede unit tests vertellen een agent wat correct betekent voor elke functie, en ze vertellen een reviewer snel wanneer een wijziging iets heeft gebroken. Ze vervangen geen oordeel: een agent kan tests schrijven die slagen terwijl ze het verkeerde controleren, daarom zijn testdekking en vertrouwen twee verschillende dingen. Combineer unit tests met zorgvuldige review van AI-gegenereerde code, en gebruik regressietesten om gedrag in de loop van de tijd te beschermen.
Wat dit betekent als je inhuurt
Engineers die tests schrijven naast de feature leveren code op die je veilig kunt aanpassen. In onze vetting werken kandidaten twee sessies van zestig minuten in een echte codebase, één met AI-tools uit en één met hun eigen agents aan, en beide scorecards laten zien hoe ze hun eigen wijzigingen verifiëren. Als je engineers zoekt die testdiscipline inbouwen in hun oplevering, bekijk dan backend engineers, vanaf €5.600 per maand voor een fulltime engineer.
Korte antwoorden
Wat is het verschil tussen unit testing en integratietesting?
Unit tests controleren één functie of klasse in isolatie. Integratietests controleren of meerdere componenten samenwerken, zoals je code en een database.
Hoeveel unit tests zijn genoeg?
Genoeg om logica te dekken die kan falen, inclusief randgevallen. Een dekkingspercentage najagen telt minder dan het testen van gedrag waar je op vertrouwt.
Moet AI-gegenereerde code unit tests hebben?
Ja. Tests geven de agent een definitie van correct en geven reviewers een snel signaal dat een wijziging niets heeft gebroken.
Vervangen unit tests handmatig testen?
Nee. Ze vangen logicafouten snel op, maar exploratieve en visuele controles hebben nog steeds een persoon nodig.
