Waarom is software leren testen zo belangrijk?
Testen gaat hand in hand met programmeren, maar wordt in opleidingen niet direct aangeleerd. Dat vormt een risico voor de softwarekwaliteit, stelt hoogleraar Software Engineering Tanja Vos. 'Testen is onlosmakelijk verbonden met programmeren. Die vaardigheid wordt in het leertraject echter vaak pas geïntroduceerd wanneer een student al redelijk kan programmeren. Met als gevolg dat testen geen vanzelfsprekend onderdeel van programmeren is en dat er dus vaak niet of te weinig getest wordt. Dat kan uiteindelijk leiden tot software van matige of slechte kwaliteit. De kosten van het corrigeren en herstellen van fouten, en de gevolgen van die fouten, kost daardoor vaak meer dan de software zelf gekost heeft.'
Testen vanzelfsprekend maken
'Testen moet direct bij de eerste programmeercursus aangeleerd worden,' stelt Tanja Vos. 'Starters kunnen eerst handmatig testen. Zodra ze kunnen programmeren moeten ze ook leren testprogramma’s te schrijven. Eerst eenvoudig en dan steeds complexer. Zo wordt testen vanzelfsprekend.' Vaak testen we van nature al of iets werkt. Kijk naar de Europese Codeweek, daar zijn allerlei projecten die jonge kinderen in aanraking brengen met programmeren en digitale vaardigheden op een leuke en aantrekkelijke manier. 'Kinderen leren bijvoorbeeld een robot te bouwen. Wanneer je een robot bouwt, dan check je ook of hij doet wat je wil dat hij doet. Alleen noemen we het dan vaak geen testen, dat moeten we veel bewuster gaan doen.'
Gestructureerd testen
De manier waarop kinderen testen of iets werkt is wel fundamenteel anders dan het gestructureerd testen dat een goede softwarekwaliteit waarborgt. 'Een gebrek aan ervaring en het toepassen van testen zorgt ervoor dat we niet verder komen dan kijken 'doet de robot het?'. Wanneer beginnende studenten een programma schrijven dat eenvoudige cijfers vermenigvuldigt, testen ze bijvoorbeeld 5x5. En het werkt, er verschijnt 25 op het scherm. Maar je moet veel meer testen dan dat. Zo bleek dat een implementatie met Russisch vermenigvuldigen, die de studenten geprogrammeerd hadden, niet werkte wanneer het vermenigvuldiggetal een negatief getal was. Je moet dus niet alleen 5x5 testen, maar ook 0x5 en -1x5 en 2x-1,' legt Tanja Vos uit.
Testen leuk maken
Software testen kan saai klinken. 'Je hebt immers net een leuk programmaatje gemaakt. Om daarna alleen maar allerlei waarden in te voeren en het resultaat te checken klinkt minder spannend. Je zou het liefste weer door willen met je volgende creatie,' zegt Tanja Vos. 'Door testen direct te introduceren in de opleiding wordt het een vast onderdeel van het programmeren. Het schrijven van code is vaak meer gericht op de creatieve en innovatieve kant van het vak. Als testen daar als onlosmakelijk onderdeel bij hoort, en wordt gezien als de enige manier om echt goede software te schrijven, dan wordt testen vanzelf ook als minder saai ervaren. Testen is dan de uitdaging om de beste code te schrijven!' Een andere manier om testen leuk te maken en studenten te motiveren is door middel van games. 'Met project IMPRESS willen we testen leuk en uitdagend te maken. Met games worden studenten uitgedaagd om een softwareprogramma gestructureerd te controleren. Dat gebeurt in twee teams. Het ene team verdedigt de code door te testen en waar nodig te repareren. Zij schrijven een programma om fouten op te sporen. Het andere team valt aan en stopt allerlei fouten in de code. Op deze manier leren de studenten de basisconcepten van het testen.'
Leren testen in de toekomst
Het programmeeronderwijs staat nog wel voor uitdagingen. Eén van de problemen is dat er niet genoeg oefenmateriaal beschikbaar is voor studenten en dat zij te weinig feedback krijgen. Hoe zorg je er dan voor dat testen een vast onderdeel wordt van het programmeren? 'In project SERF werken de Open Universiteit en de Technische Universiteit Eindhoven samen om een open en online opgavenbank voor programmeeronderwijs te onderzoeken en realiseren. Die opgavenbank wordt gestructureerd op basis van vooronderstelde voorkennis bij studenten, waardoor onderwijsinstellingen de opgaven makkelijk kunnen inpassen in het onderwijs. De opgaven worden ondersteund door tools die automatisch nakijken en directe feedback geven op het werk van studenten. Aan andere programmeeropleidingen is het straks de uitdaging om de opgaven uit te breiden en meer tools te ontwikkelen voor SERF.'