Een unittest is een kleine automatische controle die bevestigt dat één klein stukje code, meestal een enkele functie, precies doet wat het moet. Je geeft het een bekende invoer, je benoemt de verwachte uitkomst, en de test slaagt of faalt in een fractie van een seconde. Draai er honderden tegelijk en je krijgt direct te horen of er net iets kapotging.
Stel je voor dat je één lichtschakelaar in een huis test voordat je de bedrading goedkeurt. Je drukt erop en kijkt of de juiste lamp aangaat, de rest van het pand laat je even links liggen. Een unittest is die ene, gerichte controle. Een test voor een “bereken btw”-functie geeft er bijvoorbeeld 100 euro aan en checkt of er 121 uitkomt, en geeft er daarna 0 aan en checkt of er 0 uitkomt. Dit zit één niveau onder een integratietest, die controleert of veel stukjes samenwerken.
Unittests zijn de bouwstenen van de bredere praktijk van unit testing. Ze zijn goedkoop om te draaien, dus ontwikkelaars draaien ze constant, en ze betalen zich vooral terug als code later verandert: breekt een kleine aanpassing per ongeluk de btw-berekening, dan wijst een falende test er meteen naar voordat een klant het merkt. Een goede test is ook een stukje documentatie. Hij beschrijft in gewone code wat de functie hoort te doen, zodat een nieuwe ontwikkelaar aan de tests kan aflezen hoe een onderdeel zich zou moeten gedragen. Het doel is niet om alles te testen. Jagen op 100 procent testdekking verspilt tijd aan triviale code, terwijl de lastige logica die echt stukgaat juist de aandacht verdient.
Bij TopDevs schrijven we unittests voor de logica die echt telt, zoals prijzen en rechten, zodat een toekomstige wijziging de onderdelen waar een klant op rekent nooit stilletjes kan verpesten.