Sammanhang: I programvara finns det felfall som förväntas vid specifikations- och designtid, de som påträffas vid utvecklings- och testtid och de som aldrig förutsågs tidigare i produktionen. Är det möjligt att lära sig av de förväntade felen under konstruktionen för att analysera och förbättra motståndskraften mot de oförutsedda i produktionen? Mål: I detta dokument syftar vi till att analysera och förbättra hur programvara hanterar oförutsedda undantag. Det första målet är att upprätta avtal om undantagshantering och ett sätt att bedöma dem automatiskt. Den andra är att förbättra motståndskraften hos programvara genom att omvandla källkoden. Vi utformar en algoritm, så kallad kortslutningstestning, som injicerar undantag under testsvitens utförande för att simulera oförutsedda fel. Det är en typ av felinjektionsteknik tillägnad undantagsbehandling. Denna algoritm samlar in data som används för att verifiera två formella kontrakt som fångar två motståndskraft egenskaper w.r.t. Undantag: kontrakt om källoberoende och ren resiliens. Sedan föreslår vi en kodmodifieringsteknik, kallad "catch stretching", som gör att felåterhämtningskoden (av formen av fångstblock) blir mer motståndskraftig. Vår utvärdering utförs på 9 program med öppen källkod och består i att analysera 241 fångstblock som utförs under testsvitens utförande. Våra resultat visar att 101/214 av dem (47 %) exponerar motståndskraftsegenskaper enligt definitionen i våra undantagsavtal och att 84/214 av dem (39 %) kan omvandlas till mer motståndskraftiga. Vårt arbete visar att det är möjligt att resonera om mjukvarans motståndskraft genom att injicera undantag under testsvitens utförande. Den insamlade informationen gör att vi kan tillämpa en källkodsomvandling som förbättrar motståndskraften mot oförutsedda undantag. Detta fungerar bäst om testsviten tränar det exceptionella programmeringsspråket konstruerar i många olika scenarier.
Cornu m.fl. I REF föreslogs en klassificering av försöksfångstblock vid testtillfället.
Exception handling analysis and transformation using fault injection: Study of resilience against unanticipated exceptions
{'venue': 'Inf. Softw. Technol.', 'journal': 'Inf. Softw. Technol.', 'mag_field_of_study': ['Computer Science']}