Een ontwerp is het fundament van iedere applicatie, tijdens de bouw en de test. Als zodanig komt het ontwerp ook direct of indirect aan de orde in elke training die ons voorbereidt op bouwen en testen. Soms wordt dit vergeten, maar ook tijdens de laatste stappen van het ontwikkelproces blijft een goed ontwerp even belangrijk als het bij aanvang was.
De afgelopen week mocht ik de test foundation-theorie weer uit de doeken doen voor een verse groep leergierigen. In tegenstelling tot vroeger vindt deze lesstof nu in toenemende mate ook zijn weg naar businessanalisten, projectmanagers en gebruikers. Ik vind dat een goede ontwikkeling. Dit vergroot de mate waarin test en testers ondersteund kunnen worden, maar zal hopelijk ook het draagvlak voor gestructureerd testen vergroten en testen nog professioneler maken. Stiekem hoop ik echter op nog meer.
Veel van de aanwezigen stellen het zeer op prijs om te vernemen dat er eenvoudige technieken bestaan die een helder inzicht verschaffen in de mate waarin een verzameling testscenario's op de aanwezige software of systeemspecificaties aansluit. We spreken over de beslissingstabel, een concept dat even oud is als de ict, maar helaas nog altijd geen gemeengoed is in die wereld. Hij is black en white box te gebruiken, maar laten we ons hier beperken tot black.
De tabel zet specificaties en hun onderlinge relaties tegen elkaar af zodat voor iedere mogelijke combinatie een resultaat kan worden voorspeld en iedere mogelijk combinatie dus zo een potentieel testgeval vormt. Maar er is meer.
De tabel verschaft hiermee in de meeste situaties ook een inzicht dat onmisbaar is voor testers in het bepalen van kwaliteit en testbaarheid van de specifiicaties die als basis dienen. Bij het opstellen van een tabel worden niet zelden tekortkomingen en/of tegenstrijdigheden in die specificaties blootgelegd en ontstaat interactie met ontwerpers die leidt tot het optimaliseren van de specificaties. Fouten kunnen zo dus voorkomen worden met behulp van de beslissingstabel, ware het niet dat ze op het moment van interactie tussen tester en ontwerper vaak al in de software zijn doorgedrongen.
We zijn hiermee misschien wel bij het grootste voordeel van de beslissingstabel aanbeland. Deze is namelijk heel erg goedkoop te vervaardigen en daardoor kostenefficienter dan zowat iedere andere testactiviteit. Maar er is nog meer.
Ook de voortgang in het voorbereiden en uitvoeren van de test, wordt met behulp van de tabel in één oogopslag duidelijk en het ondersteunt eenduidige en duidelijke communicatie inzake al de voorgenoemde onderwerpen. Binnen het testteam maar vooral ook daarbuiten. De kwaliteit van de planning van test en project verbetert ook nog eens als deze kan refereren aan beslissingstabellen.
Maar de beslissingstabel heeft natuurlijk ook een tekortkoming. Een cruciale nog wel. Zonder ontwerp wordt het opstellen van een tabel lastig, op zijn minst. De tester bezint eer hij begint maar kan dat alleen effectief als de ontwerper en bouwer dat ook deden. Het ontwerp vormt, in de taal van de beslissingstabellen, bijna een negatieve determinant in het ontwikkelproces. Met andere woorden, het ontwerp is bepalend voor alle er op volgende activiteiten en producten.
Testers toetsen de software aan zijn ontwerp, verifiëren zo je wilt, en als een ontwerp ontbreekt missen bouwer en tester, beiden, een solide fundament. Zij zijn dan zoiets als een aannemer en een bouwinspecteur die beiden de vrije hand krijgen en het dus pas na lange lange tijd eens zullen worden, terwijl de armlastige huizenkoper in een caravan verkommerd. Terug naar hoop voor de toekomst nu.
De blijdschap van veel cursisten, tester, gebruiker en manager tegenwoordig, die kennis nemen van de beslissingstabel, wordt behoorlijk getemperd door de voorwaardelijkheid van het ontwerp. Kennelijk gebeurt er nog altijd meer zonder ontwerp dan met. In tegenstelling tot een aantal jaren geleden echter groeit niet alleen het aantal testers dat hiervan de nadelen ziet. Steeds meer betrokken professies krijgen steeds meer ervaring met het basisproces van automatiseren en testen. Hopelijk zien we op een dag allemaal dat een goede ontwerpfase niet overgeslagen kan worden. Het ontwerpmes snijdt aan twee kanten: een goed ontworpen applicatie is gemakkelijker te bouwen en gemakkelijker en sneller te testen, met beslissingstabellen, dus.