Code Coverage Measurement and Fault Localization Approaches

Horváth Ferenc
Code Coverage Measurement and Fault Localization Approaches.
Doktori értekezés, Szegedi Tudományegyetem (2000-).
(2023)

[thumbnail of hf_dissertation.pdf] PDF (disszertáció)
Download (2MB)
[thumbnail of hf_booklet.pdf] PDF (tézisfüzet)
Download (3MB)

Magyar nyelvű absztrakt

A kódlefedettség mérés fontos szerepet játszik az ipari gyakorlatban és a tudományos kutatásokban is. Számos terület függ a kódlefedettségtől, például a teszt esetek generálása, a tesztek priorizálása és a hibalokalizáció is. Ezek közül az értekezés két fő témára fókuszál, és a tézispontok ennek megfelelően két részre oszlanak. Az értekezés első részének 3. fejezete a Java kódlefedettség mérésére szolgáló eszközök (forráskód- és bájtkód alapú) által adott lefedettségi eredmények összehasonlításáról számol be. A kísérleteket 5 népszerű eszközzel, 8 nyílt forráskódú programon és metódus szinten végeztük. Megállapítottuk, hogy a lefedettségibeli különbségek 1,5% és 40% közöttiek és mindkét irányban fellépnek. A különbségeket részletesen is vizsgáltunk az egyes teszt esetek és programelemek szemszögéből. A kódlefedettség számos alkalmazásánál (például a hibakeresésnél) az ilyen szintű finom különbségek komoly zavart okozhatnak. Az egyes tesztesetek között akár 14%-os, a metódusok között pedig több mint 20%-os különbségeket mértünk. Szisztematikusan megvizsgáltuk a különbségek okait, és azt találtuk, hogy a különbségek egy része eszköz-specifikus, míg a többi a mérési megközelítésnek tulajdonítható. Az okok listája iránymutatásként szolgálhat a lefedettségi eszközök felhasználói számára, hogy miként kerüljék vagy hárítsák el a problémákat, ha bájtkód-alapú megközelítést alkalmaznak. Azt is megmértük, hogy a különbségek milyen hatással vannak a kódlefedettség-alapú teszt priorizálásra és azt találtuk, hogy a priorizált listák jelentősen eltértek egymástól. Az alacsony korreláció kockázatot jelent, mert megjósolhatatlan egy adott lefedettségi pontatlanság potenciális felerősödése egy adott alkalmazásban. Az automatikus hibakeresés eszköztámogatása korlátozott, mivel gyakran a legkorszerűbb algoritmusok sem nyújtanak hatékony segítséget a felhasználónak. Általában csupán a gyanús kódelemek rangsorolt listáját kínálják és a hiba jellemzően nem a rangsor elején található. A spektrumalapú hibalokalizáció (a kódlefedettséget és a tesztek eredményeit használja a rangsor kiszámításához) esetén a fejlesztőnek jellemzően több elemet is meg kell vizsgálnia, mielőtt megtalálja a valóban hibásat. Az értekezés második részének 4. fejezete egy olyan megközelítést javasol, amelyben a fejlesztő interakcióba léphet az algoritmussal azáltal, hogy visszajelzést ad a rangsorolt lista elemeiről. Ezzel kihasználjuk a felhasználó tudását a rangsorolt lista aktuális elemének környezetéről, így akár nagyobb kódegységek is átpozícionálhatóak. A megközelítést először szimulált felhasználókkal értékeltük ki, ahol kétféle “bizonytalanságot” modelleztünk: a tudást és magabiztosságot. Az eredmények még erős felhasználói bizonytalanság esetén is figyelemre méltó javulást mutattak a hibalokalizáció hatékonyságában. Ezután a megközelítés hatékonyságát valódi felhasználókkal is vizsgáltuk és az eredmények alapján ígéretesnek bizonyult a módszer. Spektrumalapú hibalokalizáció során a programelemeket egy gyanússági érték alapján rangsorolják, amely bár segítheti a programozót a hiba megtalálásában, de nem ad semmilyen információt a gyanús kódelemekről. Bár történtek kísérletek arra, hogy a folyamatba vezérlési- vagy adatfolyam alapú információkat építsenek be, ezek a skálázhatósági problémák miatt nem jártak sikerrel. Az értekezés második részének 5. fejezete a spektrumalapú hibalokalizáció kiegészítését javasolja függvényhívási láncokkal (azaz a hívási verem pillanatfelvételeivel), amelyeken először elvégezzük a hibalokalizációt, majd az eredményeket visszavezetjük a függvényekre. A valós programokkal végzett kísérletek azt mutatják, hogy a javasolt módszer hatékonysága jelentősen jobb a hagyományos függvényszintű megközelítéshez képest és a számítási többletköltség is kezelhető mértékű.

Absztrakt (kivonat) idegen nyelven

Code coverage measurement plays an important role in white-box testing, both in industrial practice and academic research. Several areas are highly dependent on code coverage as well, including test case generation, test prioritization, fault localization, and others. Out of these areas, this dissertation focuses on two main topics, and the thesis points are divided into two parts accordingly. The first part consists of one thesis point that discusses the differences between methods for measuring code coverage in Java and the effects of these differences. The second part focuses on a fault localization technique called spectrum-based fault localization that utilizes code coverage to estimate the risk of each program element being faulty. More specifically, the corresponding two thesis points are discussing the improvement of the efficiency of spectrum-based approaches by incorporating external information, e.g., users’ knowledge, and context data extracted from call chains.

Mű típusa: Disszertáció (Doktori értekezés)
Publikációban használt név: Horváth Ferenc
Magyar cím: Forráskód lefedettség mérő és hiba lokalizációs módszerek
Témavezető(k):
Témavezető neve
Beosztás, tudományos fokozat, intézmény
MTMT szerző azonosító
Beszédes Árpád
Dr., habil., egyetemi docens, Szoftverfejlesztés Tanszék SZTE / TTIK / INF
10022619
Szakterület: 01. Természettudományok > 01.02. Számítás- és információtudomány > 01.02.01. Számítástudomány, információtudomány és bioinformatika > 01.02.01.11. Szoftvermérnökség, operációs rendszerek, gépi nyelvek > 01.02.01.11.03. Szoftvertervezés és -fejlesztés
01. Természettudományok > 01.02. Számítás- és információtudomány > 01.02.01. Számítástudomány, információtudomány és bioinformatika > 01.02.01.11. Szoftvermérnökség, operációs rendszerek, gépi nyelvek > 01.02.01.11.08. Szoftverek minőségirányítása
01. Természettudományok > 01.02. Számítás- és információtudomány > 01.02.01. Számítástudomány, információtudomány és bioinformatika > 01.02.01.18. Ember-számítógép kölcsönhatás és interfész, vizualizáció és természetes nyelv feldolgozása > 01.02.01.18.01. Ember-számítógép kölcsönhatás
01. Természettudományok > 01.02. Számítás- és információtudomány > 01.02.01. Számítástudomány, információtudomány és bioinformatika > 01.02.01.21. Tudományos számítási, szimulációs és modellező eszközök
Doktori iskola: Informatika Doktori Iskola
Tudományterület / tudományág: Műszaki tudományok > Informatikai tudományok
Nyelv: angol
Védés dátuma: 2023. július 24.
EPrint azonosító (ID): 11593
A feltöltés ideje: 2023. feb. 01. 16:10
Utolsó módosítás: 2023. okt. 20. 11:25
Raktári szám: B 7239
URI: https://doktori.bibl.u-szeged.hu/id/eprint/11593
Védés állapota: nem védett (Nem idézhető amíg nem kap DOI számot.)

Actions (login required)

Tétel nézet Tétel nézet