Tillämpning av felinjicering på Blueberry3D Andreas Ögren
Felinjiceringstekniker •Två huvudsakliga tekniker –Injicering av felkällor •Testar felhanteringsmekanismerna på fel som kommer från yttre källor, t.ex. användare och databaser –Injicering av feltillstånd •Testar felhanteringsmekanismerna på interna fel som uppstår t.ex. som följd av programmeringsfel eller felkällor
Blueberry3D •Realtidssystem för konstruktion och visualisering av virtuella utomhusmiljöer i 3D •Tre komponenter –Blueberry3D Viewer –Blueberry3D Editor –Blueberry3D SDK
Fraktalbaserad visualisering Liten databas - Enkel design - Naturlig terräng MultiGen-Paradigm Vega Blueberry3D är en visualiserings- komponent i simulatorsystem •Problem: De tillängliga datorresurserna är inte tillräckliga för att visualisera all terräng i realtid •Lösning: Visualisera endast närliggande terräng med hög detaljrikedom och minska detaljerna med avståndet från observatören –För detta används fraktaler i Blueberry3D
Testfall •Blueberry3D databas och API testas genom injicering av felkällor •Testprogram har implementerats för att automatiskt testa injicering av slumpvisa felkällor ett stort antal gånger –1445 tester på databasen –800 tester på API:et
Resultat •Resultatet delas in i fyra händelser: –Normalt: Exekveringen har fullföljts utan problem –Avbrutet: Exekveringen har avbrutits pga att en timer har utlösts. –Ohanterat undantag: Ett undantag för vilket det inte har implementerats någon hantering har uppstått –Hanterat undantag: Ett undantag för vilket det har implementerats hantering har uppstått
Resultat på databasen Det visade sig att ca 800 av de avbrutna testfallen härstammade från en och samma programmodul. Felhanteringen i denna modul skiljde sig från övriga moduler och har nu förbättrats
Resultat på API:et Av alla de 311 API testerna som avbrutits var alla hanterade undantag. Av 800 tester hade 489 genererat en störning som programmet kunde hantera utan att avbryta exekveringen
Slutsats •Automatisk testning är en bra investering trots den tid det tar för implementationen •Test med felkällor är ett bra test av felhanteringsmekanismerna •Test med feltillstånd behövs endast för system med mycket hårda krav på stabilitet •Test av själva programmet måste fortfarande göras som tidigare