Unit Tests

Foto van Sohrab Salimi
Sohrab Salimi
3 min. Leestijd
Deze inhoud is vertaald met AI. Bekijk origineel

Unit Tests (ook wel moduletests of componententests genoemd) worden ingezet bij softwareontwikkeling. Het doel ervan is om te controleren of afzonderlijke softwarecomponenten werken en functioneren zoals bedoeld.

Waarom zijn Unit Tests zinvol?

De volgende taken worden in het kader van kwaliteitsborging door Unit Tests uitgevoerd:

  • Unit Testing spoort fouten en onbedoelde wijzigingen in de functionaliteit van software op.
  • Bij feature-uitbreidingen tonen unittests onbedoelde effecten op het bestaande systeem aan.
  • Dankzij unittests vallen fouten al tijdens de ontwikkeling op, waardoor faalkosten vermeden kunnen worden.
  • Door het vroegtijdig vinden en oplossen van fouten wordt de ontwikkeling van de software versneld.
  • Unittests kunnen (vooral wanneer ze geautomatiseerd verlopen) aanzienlijk sneller worden uitgevoerd dan handmatige tests. Daardoor worden ontwikkelingsfasen sneller doorlopen en worden releasecycli korter.
  • Unit Tests helpen bij de documentatie van het systeem, doordat ze de beoogde functies en reacties van de geteste module inzichtelijk maken. Als de objecten zinvol benoemd worden (Clean Code), zijn aanvullende documentatiemaatregelen overbodig.

Geautomatiseerd Unit Testing

Bij softwareontwikkeling volgens agile methoden worden in het kader van testgedreven ontwikkeling en Refactoring vaak Unit Tests uitgevoerd om snel fouten te vinden en de kwaliteit te verbeteren. Om ervoor te zorgen dat het testen geen extra werk oplevert en kostenefficiënt kan worden uitgevoerd, verlopen Unit Tests geautomatiseerd dankzij zogenaamde testautomatisering.

Oorspronkelijk werd deze vorm van automatisering voorgesteld door Kent Beck als een klein framework dat het maken van geautomatiseerde unittests moest ondersteunen. Hieruit ontstond het SUnit-framework voor verschillende programmeertalen, waaruit zich later het JUnit-framework voor JavaScript ontwikkelde.

Test-frameworks roepen de afzonderlijke testklassen aan en voeren hun componententests uit. Meestal worden de testresultaten door test-frameworks als grafische samenvatting weergegeven.

Waar komt het op aan bij het ontwikkelen van unittests?

Als jij en je team jullie eigen unittests willen schrijven, let dan op de volgende punten:

  • De tests moeten onafhankelijk van elkaar functioneren, zodat de testresultaten elkaar niet beïnvloeden. Als dat het geval is, speelt ook de volgorde van de tests geen rol.
  • Unittests moeten kort en gemakkelijk te begrijpen zijn en altijd slechts één eigenschap testen.
  • De tests moeten volledig geautomatiseerd zijn, zodat ze zo vaak mogelijk uitgevoerd kunnen worden.
  • Unittests moeten alleen de werkelijk relevante code testen (dus bijvoorbeeld geen getters of setters) en zijn gegroepeerd rond een testfixture (niet rond een klasse).
  • Unit Tests moeten - vooral in het kader van testgedreven ontwikkeling - vóór de te testen code geschreven worden. Deze extra implementatie-inspanning moet bij de planning van nieuwe features en functies altijd worden meegenomen.

Hoe werken unittests?

De meeste tests volgen een vergelijkbare basisopzet:

  • Een begintoestand wordt geïnitialiseerd.
  • De te testen operatie wordt uitgevoerd.
  • Het resultaat wordt vergeleken met een uit de specificatie afgeleide verwachte waarde.

Door wie worden unittests geschreven?

In sommige bedrijven zijn de softwareontwikkeling en de kwaliteitsborging nog gescheiden, waardoor de Unit Tests niet door de ontwikkelaars zelf worden geschreven.

Werkt jouw bedrijf volgens agile methoden, dan moet de volledige verantwoordelijkheid voor het ontwikkelen en functioneren van de software bij hetzelfde team blijven. Oftewel: het team dat de code voor de software schrijft, ontwikkelt ook het Unit Testing daarvoor.

Conclusie over Unit Testing

Hoewel met Unit Testing alleen de verwachte fouten in applicaties gevonden kunnen worden (want alleen daarvoor worden de tests geschreven), heeft het zich ontwikkeld tot een belangrijke maatregel voor kwaliteitsborging van software. Vooral het geautomatiseerd testen van units versnelt het proces van het vroegtijdig vinden en oplossen van fouten en ondersteunt met name in de agile softwareontwikkeling iteratief werken, prototyping en de continue verbetering van producten.

Meer over dit onderwerp

A/B-testen

Vind hier de basisprincipes van A/B Testing op je website. We leggen je de basis uit en helpen je op weg met agile testen

DevOps

Dit artikel legt de voordelen en uitdagingen uit bij de invoering van DevOps en wat het betekent om DevOps in je organisatie te gebruiken.

Praat met onze assistent Praat met onze assistent