Deze website gebruikt cookies (en daarmee vergelijkbare technieken) om het bezoek voor u nog makkelijker en persoonlijker te maken. Met deze cookies kunnen wij en derde partijen uw internetgedrag binnen en buiten onze website volgen en verzamelen.
Hiermee kunnen wij en derde partijen advertenties aanpassen aan uw interesses en kunt u informatie delen via social media.
Klik op 'Ik ga akkoord' om cookies te accepteren en direct door te gaan naar de website of klik op om uw voorkeuren voor cookies te wijzigen. Bekijk onze privacyverklaring voor meer informatie.
Perron_INF_Softwarefouten_head_large.jpg
Veiligheid
Hoe verminderen we veiligheidsrisico’s door haperende software?
Software is overal om ons heen. Op de mobiele telefoon in je broekzak, de perronborden op het station en in de kassa van de winkel waar je je boodschappen doet. In onze huidige maatschappij staan we op met software en gaan we ermee naar bed. Van je wekker tot je elektrische tandenborstel en de avonduurtjes op tv. We kunnen haast niet meer zonder. Geen wifi? Paniek! Een error als je net concertkaartjes wilt bestellen? Balen! Een blauw scherm op je computer? Dat is écht niet leuk. Fouten in software kunnen kleine ongemakken, maar ook grote rampen veroorzaken. Hoe kunnen we fouten in software voorkomen?

Fouten in software zijn altijd menselijke fouten. Door (type)fouten in de code, onoverzichtelijkheid door complexiteit en fouten die er van buitenaf in sluipen door hackers en gebruikers, werken softwareprogramma’s niet altijd naar behoren. De risico’s zijn groot: fouten in software kunnen ernstige gevolgen hebben, zoals de crash van twee Boeing 737 Max vliegtuigen in Indonesië en Ethiopië. In dit college legt hoogleraar Software Engineering Tanja Vos uit waarom het zo belangrijk is goed te testen om fouten in software te minimaliseren.

Software engineering

Om problemen door softwarefouten te voorkomen zijn een goed ontwerp en veiligheid van systemen noodzakelijk. 'In de praktijk is hier echter te weinig aandacht voor. De ontwikkeling van software is meestal gericht op de creatieve aspecten van ontwerp en codering.' Ondertussen worden systemen steeds complexer en dat maakt het een uitdaging om ze goed in te richten en te testen. 'Programmeurs moeten leren meer te denken en handelen als een ingenieur, daarin verschilt software engineering van andere engineering disciplines. Voordat je een brug bouwt, ontwerp je die wel drie keer en voer je allerlei wiskundige berekeningen uit. Software wordt vaak geprogrammeerd zonder vooraf een model te maken. Als je dat met een brug doet, stort hij in.'

Softwarekwaliteitscrisis afwenden

Er is daarnaast te weinig aandacht voor het uitgebreid testen van software. 'Sterker nog, als we zo doorgaan zouden we weleens heel dichtbij een softwarekwaliteitscrisis kunnen komen. Een crisis waarin het gebrek aan softwarekwaliteit leidt tot meer kosten aan het corrigeren en herstellen van fouten en de gevolgen ervan, dan de software zelf gekost heeft.' Er moet daarom een cultuur van kwaliteitsdenken ontstaan. 'Die begint in het onderwijs. Het project IMPRESS is erop gericht studenten op te leiden tot software engineers met aandacht voor kwaliteit. Gaming elementen en principes worden ingezet om bij studenten meer bewustwording te creëren rondom de noodzaak van testen. Door middel van multiplayer quizzen wordt het leerproces van de theorie over software engineering bevorderd. Deze gamification met wedstrijdelement zorgt voor het nodige enthousiasme en bovendien ontstaat er zo een collectieve interesse voor het bespreken van bepaalde onderwerpen. Studenten leren ook om programma’s wiskundig te onderbouwen, om zo mogelijke fouten op te sporen. Met explore- en modeltechnieken kun je software uitgebreid in kaart brengen. Bij explore leert de tester het systeem echt goed kennen, waardoor hij fouten kan ontdekken. Vervolgens maakt de tester een model van het systeem, structureert de informatie en onderbouwt de software wiskundig.'

Toekomst van testen

Naast modern onderwijs draagt ook het onderzoek naar geautomatiseerd testen bij aan een betere softwarekwaliteit. 'De makkelijkste manier om software geautomatiseerd te testen is random. We noemen dat ook wel 'monkey testing': het programma probeert alle knopjes in willekeurige volgorde uit en kijkt of die werken. Dit is echter geen garantie dat de software ook precies doet wat hij moet doen. Er wordt daarom gezocht naar een intelligenter testsysteem.'

TESTAR

Een vernieuwende random testtool, mede ontwikkeld door Tanja Vos, is TESTAR: deze tool test software op gebruikersinterface-niveau. 'TESTAR genereert automatisch testreeksen op basis van de acties die mogelijk zijn in een bepaalde gebruikersomgeving, en dat levert hele goede resultaten op. De testtool is sneller en effectiever dan alles handmatig testen. TESTAR vindt ook meer fouten. Maar we willen het programma nog slimmer maken om zo efficiënt mogelijk te kunnen testen. Wat als we acties niet willekeurig kiezen, maar optimaliseren voor bepaalde doeleinden? En kunnen we TESTAR leren wat de beste manier is om acties te selecteren? We onderzoeken hoe artificial intelligence of machine learning te gebruiken is in een testomgeving. De testtool moet kijken naar 'waar ben ik en waar wil ik naartoe'. Acties worden dan niet random, dus willekeurig, maar op een sturende manier geselecteerd. Tot nu toe is random testen echter nog altijd bewezen de meest efficiënte testtechniek.'

Testen zonder mensen

De perfecte software? Die bestaat niet. Software maken blijft mensenwerk, dus er zitten altijd fouten in. Het ideaalbeeld is een geautomatiseerd testsysteem dat zelf bedenkt wat de gebruiker wil kunnen met de software en daar testen op uitvoert. 'Hiervoor moet het systeem echter zelf kunnen denken en dat ligt nog ver in de toekomst. De rol van professionals in het testen blijft dus belangrijk. Bovendien bouwen programmeurs ook het testsysteem, dus zonder mensen kunnen we niet.'

Software testen is belangrijk

Je hebt in dit college geleerd waarom het belangrijk is om software goed te testen. Software is overal om ons heen en we worden er steeds afhankelijker van. Fouten kunnen kleine ongemakken veroorzaken, maar ook grote gevolgen hebben. Systemen worden steeds complexer en dat maakt het een uitdaging om ze goed in te richten en te testen. Het systeem goed leren kennen en structuur aanbrengen in de informatie helpt om goed te testen. Daarnaast is automatisch testen volop in ontwikkeling. Nieuw onderzoek richt zich op intelligentere vormen om software te toetsen en zelflerende systemen te ontwikkelen. Wanneer kan software zelf bedenken wat te testen? Dat ligt nog in de toekomst.

Bekijk het perroncollege: Hoe verminderen we veiligheidsrisico’s door haperende software?