Diepgaand software testen eenvoudiger gemaakt
Automatische testtechnieken als fuzzing hebben de potentie om software diepgaand en efficiënt te testen. Het toepassen van fuzzing en het verwerken van de resultaten vraagt nu echter nog een forse menselijke inspanning. Innovaties van TNO nemen deze drempels weg.
De softwaretestparadox
Voorkomen is beter dan genezen: veel softwarebedrijven weten dat dit ook voor hun producten geldt. Ze realiseren zich dat het achteraf corrigeren van softwarefouten op de lange termijn veel duurder is dan goed testen vooraf. Toch wordt er in de meeste gevallen niet grondig getest, omdat dit behoorlijk complex is en op korte termijn tijd en geld kost.
In de praktijk richten testers zich vaak op de ‘happy flow’: ze testen vooral op de fouten die ze verwachten. Hierdoor ontstaan blinde vlekken in het testproces en blijven fouten waar testers niet aan denken onopgemerkt.
Willekeurige invoerdata
Tools voor geautomatiseerd testen kunnen het testproces versnellen en blinde vlekken helpen voorkomen. Vooral de techniek ‘fuzzing’ of ‘fuzz-testen’ is veelbelovend. Bij fuzzing wordt software blootgesteld aan onverwachte of willekeurige invoerdata. Deze data worden bijvoorbeeld gegenereerd door genetische algoritmes, die evolutie-principes als kruising, mutatie en selectie op data toepassen. Zo kan software diepgaand en snel op fouten worden getest.
Big tech-bedrijven maken al jaren gebruik van fuzzing. Maar voor het gemiddelde ontwikkelbedrijf ligt de drempel voor het gebruik van deze techniek nog vrij hoog. De configuratie van de tools moet handmatig worden gedaan en is behoorlijk complex. Ook het filteren en interpreteren van de resultaten is ingewikkeld.
Eenvoudiger implementeren en interpreteren
Bij TNO doen we uitgebreid onderzoek naar de mogelijkheden van geautomatiseerd testen, waaronder fuzzing. We onderzoeken hoe de nieuwste wetenschappelijke inzichten op dit gebied kunnen worden vertaald naar nuttige oplossingen voor de praktijk. Hiervoor werken we samen met zowel nationale en internationale academische onderzoeksgroepen als met ontwikkelteams en testers bij branchepartijen.
We hebben verschillende innovaties ontwikkeld die de drempel voor fuzzing verlagen. Zo maken we het makkelijker om:
- fuzzing-tools in te zetten en te configureren;
- software effectiever te testen door gebruik te maken van kennis over die software en hier bijvoorbeeld automatisch een model van te bouwen;
- resultaten van fuzz-testen te filteren en categoriseren, waardoor ze makkelijker te interpreteren zijn;
- fuzzing in te passen in bestaande ontwikkelings- en test-processen.
Hierdoor wordt de techniek van fuzzing beter toepasbaar en bruikbaar voor softwareontwikkelaars en -fabrikanten.
Vroegtijdige foutopsporing met Fuzzing en statisch testen
Fuzzing is een vorm van dynamisch testen, waarbij de software daadwerkelijk wordt uitgevoerd. Dit in tegenstelling tot statisch testen, waarbij alleen de code wordt geanalyseerd en getoetst. Een voordeel van statisch testen is dat dit al vroeg in de ontwikkelfase kan worden toegepast. Het vroeg opsporen van fouten kan veel tijd en kosten besparen.
Dynamisch testen heeft weer andere voordelen: hiermee kunnen bijvoorbeeld functionele fouten, prestatieproblemen en beveiligingslekken worden achterhaald. Ook kan hiermee de gebruiksvriendelijkheid worden getest. Bij TNO onderzoeken we dan ook hoe dynamische testtechnieken zoals fuzz-testen en statisch testen elkaar kunnen versterken.
Veel kansen bij testen API’s
We leggen ons bij TNO vooral toe op het geautomatiseerd testen van Application Programming Interfaces (API’s). Met deze programma’s roep je vanuit de ene softwaretoepassing functionaliteiten aan van een andere softwaretoepassing.
Vrijwel alle moderne software en systemen maken gebruik van API’s, en vaak zijn ze zelfs een cruciaal onderdeel. Tegelijkertijd zijn ze kwetsbaar: fouten in API’s kunnen de stabiliteit van de programma’s die zij met elkaar verbinden in gevaar brengen. Omdat API’s toegang bieden tot gevoelige gegevens en belangrijke functies van de programma’s, zijn ze een logisch doelwit voor cyberaanvallen.
Tegelijk liggen er veel kansen bij het testen van API’s. Ze zijn sterk gestandaardiseerd, waardoor geautomatiseerde API-testinnovaties kunnen worden toegepast op een breed scala aan softwaretoepassingen.
Samenwerken aan de toekomst van softwaretesten en fuzzing
TNO werkt, samen met partners uit de industrie en met academia, onder andere op de volgende manieren aan softwaretesten en fuzzing:
- Workshop software testing en fuzzing;
- Consultancy over testtechnologieën: sterke en zwakke punten en implementatieoverwegingen;
- Ondersteuning business case (inclusief haalbaarheidsstudie of valorisatieonderzoek);
- Techologie-innovatie en toolontwikkeling;
- Maatwerk voor een specifieke klanten of context.
Herken jij de voordelen van diepgaand geautomatiseerd testen van software? Wil je met onze innovaties op het gebied van fuzzing het testproces van jouw software verbeteren en versnellen? Neem dan contact met ons op.
Softwaretest-technieken en -tools
Lees hier meer over ons onderzoek.