title: Whiteboxtest
text: De whiteboxtest (ook wel: glassboxtest) is een teststrategie die gebruikmaakt van kennis van de interne structuur of code van een programma of systeem. En is daarmee heel anders dan de blackboxtest, die geen kennis heeft van de implementatie.
  Bij een whiteboxtest mag de implementatie gemodificeerd worden om effectief  te testen. Een bekend voorbeeld hiervan is het compileren van de code met debug statements (of macro's).
  
  Een bekende vorm van whiteboxtesten is de 'unit test', die meestal wordt uitgevoerd door de programmeurs of systeemontwikkelaars, als integraal deel van het (systeem)ontwikkelproces. In tegenstelling tot wat vaak gedacht wordt, is een whitebox test en een unit-test niet hetzelfde. Een unit-test is een test op het laagste niveau; het kleinst mogelijk stukje code dat getest kan worden; zoals één functie of een klasse. Vaak wordt bij deze (unit)test de whiteboxtest strategie gebruikt. Maar ook de  blackboxteststrategie is mogelijk. Zie unittest voor meer opties.
  
  Voordelen 
  Het voordeel van een whiteboxtest (t.o.v. blackboxtest) is dat (ook) de code, de implementatie, (tijdelijk) aangepast mag worden.  Vaak gebeurt dit door bijvoorbeeld print-statements op te nemen, zodat elke stap gevolgd kan worden. Hierbij is het doel niet te testen of de code correct is, maar het zoeken en oplossen van de fout; het zogenaamde debuggen. Dit is vaak een effectieve werkwijze.
  
  Een ander voordeel van deze aanpak is het testen van (interne) grensgevallen; waar de code anders doorlopen wordt, kunnen extra test uitgevoerd worden.  Bekende voorbeelden van dergelijke grenzen zijn: het eerste en laatste element van een lijst, de maximale index in een array, de grenzen van lussen, etc. Vaak werkt het goed om tijdens de tests ook een aantal willekeurige variabelen mee te geven omdat de code, tijdens het ontwikkelen, vaak ontworpen wordt met de hoogste, laagste de tussenliggende waarde als 'snelle testwaarde'. Als je willekeurige getallen of variabelen kiest, vang je ook onverwachte fouten op.
  
  Noot 
  Ook op een hoger niveau dan de 'unit', kan een whiteboxtest uitgevoerd worden; al komt dat minder vaak voor. Ook is, zeker in code, het verschil vaak moeilijk te zien. Maar elke functie die andere functies aanroept, of klasse die andere klassen gebruikt is te beschouwen als whitebox die is opgebouwd uit andere (black)boxen. Daarmee is dat stukje code geen unit meer in de meest strikte definitie; vaak spreken we dan over 'module'. Het testen van zo'n module kan dan gebeuren in een van de besproken strategieën, inclusief whitebox testen.
  
  Softwaretest