Hoe weet je of het altijd werkt?

Bij het opstellen van een recept kun je, als het mislukt, altijd nog de schuld geven aan de kok, of aan de ingrediënten. In het geval van een programma kan dat niet: de computer doet precies wat is het programma beschreven staat. Dit moet werken voor alle geldige invoer.

Het aantal mogelijkheden loopt bij een programma al snel volledig uit de hand. Zelfs voor het optellen van twee getallen tussen 0 en 1000 heb je al een miljoen combinaties. In computers werken we met getallen die veel groter zijn, en met invoer die uit lange reeksen bestaat.

Dit betekent dat het volledig testen van een programma, voor alle mogelijke invoercombinaties, volstrekt onbegonnen werk is. Zoals Edsger Dijkstra zei: met het testen van een programma kun je soms de aanwezigheid van een fout detecteren, maar nooit de afwezigheid.

Als je een programma gemaakt hebt, en het heeft voor één voorbeeld laten zien dat het werkt, kun je daaruit niet concluderen dat het altijd, voor alle invoer, en in alle omgevingen, zal werken. We zullen later zien hoe we hier op een praktische manier mee om kunnen gaan. Bij programmeren moet altijd de vraag of je oplossing altijd zal werken, in je gedachten zijn.