Delta-felsökning
Delta Debugging är en metod för att automatisera felsökningen av program med hjälp av ett vetenskapligt tillvägagångssätt med hypotes-försök-resultat-loop. Denna metod utvecklades först av Andreas Zeller vid Saarlands universitet 1999.
I praktiken bygger Delta Debugging-algoritmen på enhetstestning för att automatiskt isolera felorsaker - genom att systematiskt begränsa felinducerande omständigheter tills en minimal uppsättning återstår. Om du till exempel kan tillhandahålla ett testfall som kommer att producera felet du letar efter, kan du mata det till Delta Debugging-algoritmen, som sedan helt enkelt försöker trimma värdelösa funktioner och kodrader som inte behövs för att reproducera buggen, tills ett 1-minimalt program hittas.
Delta Debugging har använts för att isolera felinducerande programinmatning (t.ex. en HTML-sida som får en webbläsare att misslyckas), felinducerande användarinteraktion (t.ex. tangenttryckningarna som får ett program att krascha) eller felinducerande ändringar i programkoden (t.ex. efter ett underkänt regressionstest).
Senare har en del mjukvaruutvecklingsverktyg inspirerats av Delta Debugging, såsom bisect-kommandon för revisionskontrollsystem (t.ex. git-bisect, svn-bisect, hg-bisect, etc.), som istället för att arbeta med programmets kod , tillämpa delta-felsökningsmetoden på kodhistoriken genom att jämföra olika versioner tills den felaktiga ändringen hittas.
Nyligen har nätverksdialogminimering en teknik baserad på deltafelsökning föreslagits för att hitta den minsta delmängden av nätverkstrafik från den ursprungliga dialogrutan, som när den spelas upp fortfarande uppnår samma mål som den ursprungliga dialogrutan
programvara
- delta - ett datorprogram för att minimera "intressanta" filer som testas av deras intresse
- DD.py - en Python-implementering av Delta Debugging; se även dess handledning
- Litium - en Python-implementering av en förbättrad Delta Debugging-algoritm
- C-Reduce , som reducerar källfiler skrivna i C/C++, använder Delta-algoritmerna
- Perses - en språkagnostisk reducering för programminimering, som använder Delta-felsökningsalgoritm.
- DustMite - Ett allmänt datareduktionsverktyg, som främst används för att reducera D -program.
-
Eclipse Plug-Ins
- DDinput - Felinducerande ingång
- DDchange - Felinducerande förändringar
- DDstate - Failure-inducing States
- XMLmate
- Gemensam Lisp-implementering
- Igor - kommandoradsverktyg
Se även
- Andreas Zeller: Why Programs Fail: A Guide to Systematic Debugging , Morgan Kaufmann, ISBN 1-55860-866-4
- Lär dig av kodhistorik En presentation på Google Tech Talk från den ursprungliga uppfinnaren av Delta Debugging
- ^ Zeller, Andreas (1999). "Igår fungerade mitt program. Idag gör det inte det. Varför?". Programvaruteknik — ESEC/FSE '99 . Föreläsningsanteckningar i datavetenskap. Vol. 1687. Springer. s. 253–267. doi : 10.1007/3-540-48166-4_16 . ISBN 978-3-540-66538-0 .
- ^ M. Zubair Rafique; et al. "Minimering av nätverksdialoger och skillnader i nätverksdialoger: två nya primitiver för nätverkssäkerhetsapplikationer" ( PDF) . Under förfaranden för den 30:e årliga konferensen om datorsäkerhetsapplikationer (ACSAC 2014) . ACM.
- ^ danielwilkerson.com
- ^ DustMite, det allmänna datareduktionsverktyget
- ^ "Upptäcka programvarufel via genetiska algoritmer" . 2014-03-05 . Hämtad 22 juli 2015 .
externa länkar
- Delta Debugging-projekt - omfattande samling länkar till delta-felsökningsverktyg och metoder
- Udacity-kurs om mjukvarufelsökning av Andreas Zeller