Viskleken och dess innebörd vad gäller mjukvarutestning

Vid seriös mjukvaruutveckling använder man sig som bekant av tester. Den (konceptuellt) enklaste typen av tester är så kallade enhetstester – man kör sin kod, matar in lite data och kollar om det som kommer ut i andra änden har rätt färg. Detta säkerställer att ett stycke kod gör vad som förväntas. Man kan således lockas att tro att ett program, där varje stycke testats separat med enhetstest, i sin helhet kan antas vara felfritt. Varför är så inte fallet?

Viskleken.
Tag ett koppel vilda battingar, ställ dem på rad och be var och en upprepa något tråkigt ord, typ “russin”. Förutsatt att ingen av battingarna har buggar kommer troligen samtliga att klara uppgiften. Viska nu ett annat ord i örat på batting #1 och be honom/henne viska detsamma i örat på batting #2, som sedan för det vidare, och så vidare (detta kallas viskleken för er som inte gått på dagis). Någon som tror att samma ord kommer ut ur munnen på den sista battingen?

Detta kan tyckas vara ett förenklat exempel, men det funkar ungefär likadant med mjukvara. Även om vi kan anta att data mycket sällan kommer att förvanskas på vägen mellan en komponent och en annan (men det händer!) finns det andra detaljer som är stört omöjliga att testa när man har varje komponent isolerad. Prestanda, exempelvis.