Bevisbaserad Testning - Bevistekniker som gör det möjligt att testa komplicerade algoritmer automatiskt

Det är ofta problematiskt att testa de allra mest komplexa komponenter i ett datasystem helt automatiskt, eftersom beskrivningen av vad dessa komponenter ska göra är minst lika komplex som komponenterna själva. Testningen blir då inte tillräckligt pålitlig. I detta projekt undersöker vi möjligheten att använda en teknik från matematisk logik, s.k. "induktion", för att möjliggöra pålitlig testning av dessa komplexa komponenter. I ett matematiskt bevis kan man med hjälp av induktion bryta ner ett komplext påstående till ett flertal enklare påståenden: s.k. "basfall", som täcker de allra enklaste fallen, och s.k. "stegfall", som beskriver hur man kan öka komplexiteten i ett påstående med ett litet snäpp. Vi har upptäckt att samma teknik kan användas för att bryta ner ett komplext påstående om beteendet hos ett dataprogram till ett flertal enklare påståenden, som i sin tur kan testas separat. Detta möjliggör pålitlig testning av dessa dataprogram, som tidigare inte var möjligt. Exempel på dataprogram som kan testas med denna metod, och som tidigare inte kunde testas pålitligt, är automatiska teorembevisare och modellcheckare (som används för att hitta fel i mjukvara och hårdvara), kompilatorer (som används dagligen av mjukvarukonstruktörer), och kortaste-vägsökningsprogram (som används i t.ex. GPS). Projektet kommer att (1) undersöka och kategorisera den typ av dataprogram och datasystem där denna metod kan tillämpas, (2) ta fram datoriserat stöd till mjukvaruutvecklare som vill tillämpa metoden som garanterar att alla fall är täckta, och (3) kvantifiera med hjälp av experiment hur effektiv testning blir med hjälp av den nya metoden, jämfört med befintliga metoder.

Startdatum 2014-01-01
Slutdatum Projektet är avslutat: 2017-12-31

Publicerad: to 31 maj 2018.