Whiteboxtest

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

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; de 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 blackbox-teststrategie is mogelijk. Zie unittest voor meer opties.

Het voordeel van een whiteboxtest (t.o.v. blackboxtest) is dat de (ook) 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 het testen (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.

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!