Het maken van software is een moeilijke stiel. Net zoals ongeveer alle andere “stielen”, zal iedereen wel beamen. Eén van de grote oorzaken van die moeilijkheid in softwareontwikkeling komt voort uit het feit dat het zo gemakkelijk is om dingen te hergebruiken. Huh? Ja, inderdaad: want doordat we eenvoudig bestaande stukken kunnen hergebruiken, gaat zowat alle effort in dat wat overblijft: de dingen die nog nooit gemaakt zijn. De nieuwigheden. En zoals iedereen die al eens gebouwd of verbouwd heeft kan bevestigen, zijn het net die nieuwigheden die voor problemen zorgen. Muren metsen, geen probleem. Maar van zodra je een “specialleke” wil: ho maar! Als de aannemer (en architect) het al ziet zitten, dan zal het prijskaartje in elk geval astronomisch zijn.

Dus daarom is software ontwikkeling niet eenvoudig. En daarom is het ook soms een vrij prijzige zaak. Wij doen natuurlijk ons uiterste best om de klant zo veel mogelijk waar voor zijn geld te geven. Maar dat verandert niks aan de situatie: bij het maken van nieuwe dingen (“features” zoals wij die noemen) worden soms fouten gemaakt. En daarom moet software getest worden. Getest worden door de developer, door de product owner, door het QA departement (aka. “de testers”) en uiteindelijk ook door de klant zelf. En hoewel dat bij momenten een tijdrovende zaak kan zijn, is het alternatief erger. Immers, indien de testfase verwaarloosd wordt, zal de software onvermijdelijk meer fouten bevatten. En die fouten zullen veelal opgelost moeten worden (de occasionele “niet blokkerende en niet storende fout” terzijde gelaten). En hoe verder in de “test ketting” (developer > QA > product owner > klant) deze fout ontdekt wordt, hoe meer werk er aan is. De fout moet immers terug door de ketting om uiteindelijk door de developer opgelost te worden. Dit laatste kan je eventueel wel overslaan, maar het is in elk geval te vermijden dat de klant de fout moet opmerken.
Dus hoe vroeger de fout ontdekt wordt, hoe beter. Dat is één ding, maar dan hebben we nog de beruchte “het heeft gewerkt maar nu werkt het plots niet meer”-fouten. Iedereen kan wel inzien dat nieuwe dingen soms eens mislopen. Maar iets dat gewerkt heeft en nu niet meer werkt? Onbegrijpelijk! En dus moeten ook, naast de nieuwe features, de bestaande dingen terug getest worden. Dit wordt “regression testing” genoemd: het controleren of het toevoegen van nieuwe (of wijzigen van bestaande) onderdelen van een applicatie niks kapot gemaakt heeft. Maar dat betekent wel dat hoe groter en uitgebreider een applicatie wordt, hoe meer werk er in het test gedeelte gaat!
Gelukkig zijn ook hier een aantal methoden mogelijk om dit te beperken. En dat zal ik in deel 2 uitleggen…
















