Automatisk fejlsporing

Den automatiske positionering af fejl i software er en aktivitet softwareudvikling detektere fejl, der kan forårsage funktionsfejl i et program . Dens mål er at reducere udviklerens indsats i korrektionsfasen.

Denne forskning kan udføres ved statisk eller dynamisk analyse . Med hensyn til den dynamiske analyse vedrører den studiet af programudførelsesspor .

Denne undersøgelse består i at indsamle data under udførelsen af ​​programmet for at bestemme den sandsynlige placering af fejlen.

Lokalisering baseret på eksekveringsspor

Automatisk fejlsporing er en del af fejlrettelsesprocessen , der inkluderer følgende trin:

  1. bemærk fejlen
  2. reproducere fejlen via automatiserede tests
  3. lokaliser automatisk fejlen på basis af automatiserede tests for at bestemme dens oprindelse. For at gøre dette indsamles følgende data, når du kører testene:
    •  : antallet af tests, der kører den undersøgte enhed, som mislykkedes (f for mislykkedes)
    •  : antallet af tests, der kører den undersøgte enhed, der lykkedes (p for bestået)
    •  : antallet af tests, der ikke kører den undersøgte enhed, som mislykkedes (f for mislykkedes)
    •  : antallet af tests, der ikke udførte den undersøgte enhed, der lykkedes (p for bestået)
  4. rette fejlen .

Data kan indsamles på forskellige granularitetsniveauer, såsom: række , blok, funktion , klasse , se pakke .

Et eksempel på dataindsamling
Test 1 Test 2 Test 3 Test 4
Linje 1 Henrettet Henrettet Henrettet 2 1 0 1
Linje 2 Henrettet Henrettet Henrettet 1 2 1 0
Linie 3 Henrettet Henrettet 1 1 1 1
...
Test resultater Succes Succes mislykkedes mislykkedes

I eksemplet ovenfor udføres række 1 af test 1, 3 og 4, to af disse tests mislykkedes ( ) og en bestod ( ), alle mislykkede tests, der blev udført denne række ( ), og en test, der blev gennemført, udførte ikke denne linje ( ) . Linje 2 udføres af test 1, 2 og 4, en af ​​disse tests mislykkedes ( ) og to bestod ( ), en mislykket test udførte ikke denne linje ( ), og alle vellykkede tests udførte denne linje ( ).

Metrics

Metrics bruges til at beregne en afstand mellem en kodeenhed ( linje , blok, funktion , klasse ) og en fejl . Der er forskellige målinger. Enheder kan derefter sorteres efter disse afstande. De, der er tættest på bugten, indeholder mere sandsynligt bugten , de længere væk er sandsynligvis ikke årsagen til bugten . På baggrund af denne sortering kan udvikleren derefter gennemse de forskellige enheder, der starter med den nærmeste, indtil den defekte enhed findes. Således, hvis metricen er effektiv, finder udvikleren kilden til fejlen hurtigere end ved en manuel søgning.

Den ældste af de almindeligt anvendte målinger er Jaccard (1901), som oprindeligt var beregnet til det botaniske felt , nu bruges i forskellige områder. Den Botanic inspirerede også mange målinger såsom Ochiai (1957) Russel og Rao (1940), Sørensen og Dice (1945), Rogers og Tanimoto (1960), Anderberg (1973) og Single-Matching (2004). Hamming-metricen (1950) blev oprettet til påvisning og korrektion af kodefejl og Goodman og Kruskal-metricen inden for biometri . Feltet med autoadaptive kort introducerede metrics Kulczynski1, Kulczynski2, Hamann og Sokal. Derudover blev flere målinger oprettet direkte til automatisk bugplacering: Tarantula, Ample, Zoltar og Wong1-3.

Liste over målinger

Tabellen nedenfor viser de vigtigste målinger, der bruger data præsenteret ovenfor for fejl lokalisering .

Efternavn Formel Efternavn Formel
Jaccard Rigelig
Sørensen Dice Terninger
Kulczynski1 Kulczynski2
Russell og Rao Tarantel
Enkel matchning Hamann
M1 M2
Rogers & Tanimoto Sokal
Hamming God mand
Ochiai Euclid
Ochiai2 Anderberg
Wong1 Zoltar
Wong3 Wong2
Alternativ: predikatanalyse

En alternativ tilgang til indsamlingen af ​​eksekverede enheder foreslås af Libit et al., Den består i at analysere prædikaterne i stedet for de udførte enheder (linjer, blokke, klasser ...). Et interessant prædikat kan være en betingelse, en returnering af værdi ... Under udførelsen af ​​testene samles de udførte prædikater såvel som dem, der har en ægte værdi. Disse data bruges derefter i målinger, der sorterer prædikater baseret på deres involvering i mislykkede tests.

Her er en af ​​metrics introduceret af Libit et al. : hvor

og

.

Kombiner målinger

Empiriske undersøgelser har vist, at ingen måling er perfekt. En mulig løsning til at forbedre effektiviteten af ​​automatisk bugsporing er at kombinere metrics. Wang et al. foreslå en søgningsbaseret algoritmemetode , Jifeng Xuan et al. tilbyde en kombination af målinger genereret af maskinlæring .

Sammenligning af målinger

Naish et al. tilbyde en rangordning af målinger på standardiserede data og sammenligne dem med hensyn til ydeevne og pålidelighed. Det viser sig, at de algoritmer, der er foreslået af Naish et al. er et bedre kompromis mellem ydeevne og pålidelighed som Wong3, Zoltar, M2 og Ochiai.

De eksperimentelle resultater af Jifeng Xuan et al. udført på 10 open source-projekter viser, at kombinationen af ​​målinger kan forbedre effektiviteten af ​​buglokalisering med op til 50%. De viser imidlertid også, at de opnåede resultater med Ochiai og Ample er gode. Disse resultater står i kontrast til resultaterne fra Naish et al. fordi ifølge Jifeng Xuan et al. antagelserne fra Naish et al. på dataene gælder ikke for reelle sager.

Værktøjer

Værktøjerne til placeringen af ​​bug er tilgængelige som software i standalone eller plugin til IDE .

Find ud af

Pinpoint er en Java EE- ramme til lokalisering af bugs i distribuerede systemer .

Dens anvendelse er beregnet til lokalisering af bugs i komplekse applikationer, hvor forskellige komponenter, sunde eller defekte, interagerer for at svare på en kundes anmodning. Denne ramme blev oprindeligt udviklet til at overvinde svaghederne ved sporingssystemer med statisk analyse .

Faktisk er behovet for dynamik i komplekse applikationer ( belastningsbalancering , opskalering osv.) Vanskelige at forudsige under en statisk analyse.

Driften foregår i to faser:

  1. Observation af anmodninger fra kunder og af komponenterne i systemet involveret i svarene på disse anmodninger
  2. Analyse og krydskontrol af fejlene fundet i sporene opnået i det foregående trin ved clustering hensyn til komponenterne på oprindelsen af bug .

Analysen gør det muligt at fremhæve komponenten eller kombinationerne af komponenter, der kan være oprindelsen til systemets fejlagtige opførsel.

Flere begrænsninger kan komplicere lokaliseringen af ​​fejl:

  1. I tilfælde af en stærk kobling mellem en defekt komponent og en sund komponent vil Pinpoint betragte de to komponenter som potentielle kilder til fejlen.
  2. Pinpoint antager, at fejl, der vises i systemet, ikke ødelægger sidstnævnte. Det er dog sjældent muligt at være sikker på, at en fejl, der optrådte under en tidligere anmodning, ikke kan påvirke anmodninger til systemet i fremtiden. Således kan en fejl i tjenesten til oprettelse af konto forårsage en fejl for brugeren, når den godkendes med systemet.
  3. Kvaliteten af ​​anmodninger sendt af klienten vurderes ikke. Det er derfor umuligt for Pinpoint at vide, om en fejl skyldes en inkonsekvent anmodning fra klienten eller af en fejl på serveren.
  4. Fejl fanget i farten af ​​systemet under dets udførelse registreres ikke af Pinpoint, selvom udførelsen af ​​svaret på en anmodning påvirkes.

Tarantel

Tarantula er både en metrisk og et værktøj, der først blev foreslået i 2001 af forskere ved Georgia Institute of Technology . Det blev udviklet med det formål at tilvejebringe et enkeltstående program til visning af kodelinjerne i et helt program .

Kodelinjerne for det undersøgte program er farvet der i henhold til en formel, der angiver deres grad af mistanke. Ud over farven, der varierer fra grøn for ikke-mistænkte linjer til rød for de mest mistænkelige, angiver en farvetone det antal gange, linjen faktisk er kørt som et resultat af testene.

Disse to stykker information kombineres for at frembringe et display, der angiver graden af ​​mistanke forbundet med hver række.

RIGELIG

AMPLE (for Analyzing Method Patterns to Locate Errors) er et værktøj til lokalisering af bugs i software skrevet i Java udviklet af forskere ved Saarlands Universitet i 2005. Dens tilgang er objektorienteret med klassen som enhed for 'undersøgelse.

Implementeret som et plugin til Eclipse integreres det med rammer som JUnit for at indsamle udførelsesresultaterne for en testpakke.

Driften er baseret på undersøgelsen af ​​opkaldssekvenser mellem de metoder, der blev udført under testene. Ved at sammenligne sekvenserne mellem at køre en vellykket test og en mislykket test leder AMPLE udvikleren til den sandsynlige kilde til problemet. Faktisk er sekvenserne eller stykkerne af sekvenser, der er til stede i de to henrettelser, mindre tilbøjelige til at bære fejl end de metoder, der kun kaldes til den defekte udførelse.

Sekvenserne sammenlignes over en længde k , valgt som en funktion af det ønskede granularitetsniveau. For hver sekvens, der findes i den mislykkede udførelse og fraværende i den vellykkede udførelse, ekstraheres matrixklassen for det objekt, som de manglende opkald foretages på. I slutningen af ​​sammenligningen ordnes klasserne efter det gennemsnitlige antal unikke forekomster i mislykkede henrettelser.

GZoltar

GZoltar er en ramme af lokalisering bug oprindeligt etableret i 2010 og fås som et plugin Eclipse .

Dette værktøj giver en visualiseringsmulighed og bedre integration med udviklermiljøet til Zoltar, en ramme, der oprindeligt blev udviklet af forskere ved Delft University of Technology .

Udviklingen resulterede derefter i software, der producerer tekstoutput samt en ikke-integreret grænseflade i form af XZoltar. GZoltar-koden er beregnet til at blive genbrugt af andre udviklere i form af et bibliotek. Ligesom andre plugins som AMPLE integreres det med Eclipse for at udnytte de resultater, der produceres af testrammer som JUnit .

Det bruger hovedsageligt Ochiai-metricen til at vurdere mistanke om kodelinjer og gengiver derefter grafisk resultatet. Mistænkningsberegningerne foretages af Zoltar ved hjælp af Ochiai-metricen, og resultatet gengives i 3D ved hjælp af OpenGL .

EzUnit

EzUnit er en ramme for fejl lokalisering oprindeligt udviklet i 2007 i form af en Eclipse -plugin .

Det integreres i udviklerens miljø ved at tilbyde lanceringen af ​​skriftlige tests ved hjælp af en testramme som JUnit . EzUnit4, den nyeste version tilbyder en mulighed for at se call grafer .

Knudepunkterne i den producerede graf farves derefter i henhold til graden af ​​mistanke om metodekaldene. Farven varierer fra grøn til rød for at indikere den sandsynlige placering af bugten.

Relaterede artikler

Referencer

  1. Paul Jaccard 1901 , s.  547-579
  2. Akira Ochiai 1957 , s.  526–530
  3. Paul F RUSSELL, T Ramachandra Rao og andre 1940 , s.  153–178
  4. T. Sørensen 1948 , s.  1–34
  5. David J. Rogers og Taffee T. Tanimoto 1960 , s.  1115–1118
  6. Michael R Anderberg 1973
  7. R. R. Sokal og CD Michener 1958 , s.  1409-1438
  8. Richard W Hamming 1950 , s.  147-160
  9. Leo A Goodman og William H Kruskal 1954 , s.  732–764
  10. Fernando Lourenco, Victor Lobo og Fernando Bacao 2004
  11. James A. Jones, Mary Jean Harrold og John T. Stasko 2001 , s.  71–75
  12. Valentin Dallmeier, Christian Lindig og Andreas Zeller 2005 , Monterey, Californien, USA, s.  99-104
  13. A Gonzalez 2007
  14. W. Eric Wong et al. 2007 , Washington, DC, USA, s.  449-456
  15. Valentin Dallmeier, Christian Lindig og Andreas Zeller 2005 , Monterey, Californien, USA, s.  99-104
  16. Lee R Dice 1945 , s.  297–302
  17. Brian Sidney Everitt 1978 , New York
  18. Lee Naish, Hua Jie Lee og Kotagiri Ramamohanarao 2011 , New York, NY, USA, s.  11: 1–11: 32
  19. Ben Liblit et al. 2005 , s.  15–26
  20. Rui Abreu et al. 2009 , New York, NY, USA, s.  1780–1792
  21. Lucia Lucia et al. 2014 , s.  172–219
  22. Shaowei Wang et al. 2011 , Washington, DC, USA, s.  556–559
  23. Jifeng Xuan og Martin Monperrus 2014
  24. MY Chen et al. 2002 , s.  595–604
  25. James A. Jones, Mary Jean Harrold og John T. Stasko 2001 , s.  71–75
  26. André Riboira og Rui Abreu 2010 , s.  215–218
  27. T. Janssen, R. Abreu og AJC van Gemund 2009 , s.  662–664
  28. (in) "  GZoltar  " (adgang til 14. december 2014 )
  29. (in) "  EzUnit  " (adgang 14. december 2014 )
  30. (in) "  EzUnit4  " (adgang 14. december 2014 )

Bibliografi

  • (en) Rui Abreu , Peter Zoeteweij , Rob Golsteijn og Arjan JC van Gemund , "  A Practical Evaluation of Spectrum-based Fault Localization  " , J. Syst. Softw. , New York, NY, USA, Elsevier Science Inc., vol.  82, nr .  11,november 2009, s.  1780–1792 ( ISSN  0164-1212 , DOI  10.1016 / j.jss.2009.06.035 , læs online )
  • (en) Michael R Anderberg , klyngeanalyse til applikationer ,1973
  • (da) Mike Y. Chen , Emre Kiciman , Eugene Fratkin , Armando Fox og Eric Brewer , "  Pinpoint: Problem Determination in Large, Dynamic Internet Services  " , Proceedings of the 2002 International Conference on Dependable Systems and Networks , Washington, DC, USA , IEEE Computer Society, dSN '02,2002, s.  595–604 ( ISBN  0-7695-1597-5 , læs online )
  • (en) Valentin Dallmeier , Christian Lindig og Andreas Zeller , "  Letvægtsbuglokalisering med AMPLE  " , Proceedings of the Sixth International Symposium on Automated Analysis-driven Debugging , New York, NY, USA, ACM, aADEBUG'05,2005, s.  99-104 ( ISBN  1-59593-050-7 , DOI  10.1145 / 1085130.1085143 , læs online )
  • (en) Lee R Dice , "  Målinger af mængden af ​​økologisk sammenhæng mellem arter  " , Ecology , JSTOR, vol.  26, nr .  3,1945, s.  297–302
  • (en) Brian Sidney Everitt , Grafiske teknikker til multivariate data , New York, Nordholland,1978( ISBN  0-444-19461-4 )
  • (en) A Gonzalez , automatiske fejldetekteringsteknikker baseret på dynamiske invarianter ,2007
  • (en) Leo A Goodman og William H Kruskal , "  Foranstaltning til krydsklassifikation *  " , Journal of the American Statistical Association , Taylor \ & Francis, bind.  49, nr .  268,1954, s.  732–764
  • (da) Richard W Hamming , "  Fejldetektering og fejlkorrektionskoder  " , Bell System Technical Journal , Wiley Online Library, bind.  29, nr .  21950, s.  147-160
  • Paul Jaccard , "  Comparative study of floral distribution in a portion of the Alps and Jura  ", Bulletin del la Société Vaudoise des Sciences Naturelles , vol.  37,1901, s.  547-579
  • (en) A. James , Jean Mary og T. John , "  Visualization for Fault Localization  " , Proceedings of the Workshop on Software Visualization (SoftVis), 23. internationale konference om software engineering ,Maj 2001, s.  71–75
  • (en) T. Janssen , R. Abreu og AJC van Gemund , “  Zoltar: A Toolset for Automatic Fault Localization  ” , Automated Software Engineering, 2009. ASE '09. 24. IEEE / ACM International Conference om ,november 2009, s.  662-664 ( ISSN  1938-4300 , DOI  10.1109 / ASE.2009.27 )
  • (en) Ben Liblit , Mayur Naik , Alice X Zheng , Alex Aiken og Michael I Jordan , "  Skalerbar statistisk bugisolering  " , ACM SIGPLAN Notices , ACM, bind.  40, nr .  6,2005, s.  15–26
  • (da) Fernando Lourenco , Victor Lobo og Fernando Bacao , Binærbaserede lighedsforanstaltninger for kategoriske data og deres anvendelse i selvorganiserende kort  " , JOCLAD ,2004
  • (en) Lucia Lucia , David Lo , Lingxiao Jiang , Ferdian Thung og Aditya Budi , "  Udvidet omfattende undersøgelse af associeringsforanstaltninger til fejllokalisering  " , Journal of Software: Evolution and Process , bind.  26, nr .  22014, s.  172–219 ( ISSN  2047-7481 , DOI  10.1002 / smr.1616 , læs online )
  • (da) Lee Naish , Hua Jie Lee og Kotagiri Ramamohanarao , "  En model til Spectra-baseret softwarediagnose  " , ACM Trans. Softw. Eng. Metodol. , New York, NY, USA, ACM, bind.  20, nr .  3,august 2011, s.  11: 1-11: 32, artikel nr .  11 ( ISSN  1049-331X , DOI  10.1145 / 2000791.2000795 , læs online )
  • (ja) Akira Ochiai , "  Zoogeografiske undersøgelser af soleoidfisk, der findes i Japan og dets nærliggende regioner  " , Bull. Jpn. Soc. Sci. Fish , vol.  22, nr .  9,1957, s.  526–530
  • (en) Paul F RUSSELL , T Ramachandra Rao og andre , “  Om habitat og sammenslutning af arter af anopheline larver i det sydøstlige Madras.  ” , Journal of the Malaria Institute of India , bind.  3, n o  1,1940, s.  153–178
  • (da) André Riboira og Rui Abreu , "  The GZoltar Project: A Graphical Debugger Interface  " , Testing - Practice and Research Techniques , Springer Berlin Heidelberg, forelæsning Notes in Computer Science, vol.  6303,2010, s.  215-218 ( ISBN  978-3-642-15584-0 , DOI  10.1007 / 978-3-642-15585-7_25 , læs online )
  • (da) David J. Rogers og Taffee T. Tanimoto , ”  Et computerprogram til klassificering af planter  ” , Science , American Association for the Advancement of Science, bind.  132, n o  3434,21. oktober 1960, s.  1115–1118 ( ISSN  1095-9203 , PMID  17790723 , DOI  10.1126 / science.132.3434.1115 , læs online )
  • (en) Wang Shaowei , D. Lo , Jiang Lingxiao , Lucia og Chuin Hoong , "  Søgningsbaseret fejllokalisering  " , Automated Software Engineering (ASE), 2011 26. IEEE / ACM International Conference on ,november 2011, s.  556-559 ( ISSN  1938-4300 , DOI  10.1109 / ASE.2011.6100124 )
  • (en) RR Sokal og CD Michener , "  En statistisk metode til evaluering af systematiske forhold  " , University of Kansas Science Bulletin , bind.  38,1958, s.  1409-1438
  • (en) T. Sørensen , "  En metode til etablering af grupper med lige amplitude i plantesociologi baseret på artens lighed og dens anvendelse på analyser af vegetationen på danske commons  " , Biol. Skr. , Vol.  5,1948, s.  1–34
  • (da) W. Eric Wong , Yu Qi , Lei Zhao og Kai-Yuan Cai , "  Effektiv lokalisering af fejl ved hjælp af kodedækning  " , Forløb fra den 31. årlige internationale computer- og applikationskonference - bind 01 , Washington, DC, USA, IEEE Computerselskab, cOMPSAC '07,2007, s.  449–456 ( ISBN  0-7695-2870-8 , DOI  10.1109 / COMPSAC.2007.109 , læs online )
  • (en) Jifeng Xuan og Martin Monperrus , "  At lære at kombinere flere placeringsmålinger til fejllokalisering  " , Forløb fra den 30. internationale konference om vedligeholdelse og udvikling af software ,2014( læs online )


<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">