Een goede vriend, geen IT-er, vroeg ooit aan mij: “Waarom test je eigenlijk software, het is toch geprogrammeerd?”

In deze vraag zit een hardnekkige vooroordeel verborgen, namelijk dat programmeren volledig rationeel is. Hiermee denk je dat programmeurs precies weten wat ze doen, weten wat de effecten zijn van wat ze programmeren, dat er maar één programmeur is of dat deze exact weet wat andere programmeurs doen en vooral: dat programmeurs altijd begrijpen wat de bedoeling is van de klant.

Menselijke beperkingen

Helaas zit het meestal wat anders. Dat valt programmeurs niet te verwijten trouwens. We hebben hier te maken met menselijke beperkingen waar iedereen elke dag last van heeft. Iedereen denkt namelijk dat hij weet wat hij doet, maar beseft niet dat de praktijk altijd anders is dan zijn eigen voorstelling. Je weet nooit hoe iets wat je nu maakt, morgen wordt gebruikt. Kijk bijvoorbeeld hoe “mobiele telefoons” nu worden gebruikt. Je kunt niet altijd voorzien wat anderen gaan doen of wat de effecten daarvan zijn en vooral: mensen denken heel snel dat ze elkaar begrijpen, maar of dat zo is blijkt pas als je iets in de praktijk doet of als je een heel lang gesprek met elkaar voert.

Deze menselijke beperkingen kunnen samengevat worden met:

“je weet niet wat je niet weet”

Dat is simpelweg de reden dat er getest moet worden en dat iedereen moet testen. Als je zelf iets maakt of programmeert moet je testen, als je iemand anders vraagt iets voor jou te doen (denk aan de aannemer die je huis verbouwt) moet je controleren of het geworden is zoals je denkt dat je het hebt uitgelegd. Testen lost dan trouwens niet altijd direct al je vragen en problemen op. Wie test doet aannames en weet ook niet wat ze niet weet. Je beperkt met testen echter wel de kans  dat er tekortkomingen in de software zitten. En door te testen oefen je jezelf in het vinden van tekortkomingen.

Niets menselijks is IT-ers vreemd

We moeten dus rekening houden met onze eigen en andermans menselijke tekortkomingen. Daarom kun je bijvoorbeeld van leveranciers van software niet verwachten dat die alles snappen en overal rekening mee houden. Teleurgesteld of boos worden als er een fout zit heeft weinig zin. Bekijk het van zijn kant: hoe had hij alles kunnen weten?

Als je er van uit kon gaan dat iedereen begrijpt wat de ander bedoelt en dat iedereen precies weet wat hij doet, weet wat de effecten daarvan zijn en weet wat anderen doen èn iedereen houdt rekening met de tekortkomingen van anderen, dan hoefde je inderdaad niet te testen.

Niets menselijks is IT-ers vreemd.