Code Coverage Measurement and Fault Localization Approaches

Horváth Ferenc
Code Coverage Measurement and Fault Localization Approaches.
Doctoral thesis (PhD), University of Szeged.
(2023)

[thumbnail of hf_dissertation.pdf] PDF (thesis)
Download (2MB)
[thumbnail of hf_booklet.pdf] PDF (booklet)
Download (3MB)

Abstract in Hungarian

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ű.

Abstract in foreign language

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.

Item Type: Thesis (Doctoral thesis (PhD))
Creators: Horváth Ferenc
Hungarian title: Forráskód lefedettség mérő és hiba lokalizációs módszerek
Supervisor(s):
Supervisor
Position, academic title, institution
MTMT author ID
Beszédes Árpád
Dr., habil., egyetemi docens, Szoftverfejlesztés Tanszék SZTE / TTIK / INF
10022619
Subjects: 01. Natural sciences > 01.02. Computer and information sciences > 01.02.01. Computer sciences, information science and bioinformatics > 01.02.01.11. Software engineering, operating systems, computer languages > 01.02.01.11.03. Software Design & Development
01. Natural sciences > 01.02. Computer and information sciences > 01.02.01. Computer sciences, information science and bioinformatics > 01.02.01.11. Software engineering, operating systems, computer languages > 01.02.01.11.08. Software quality management
01. Natural sciences > 01.02. Computer and information sciences > 01.02.01. Computer sciences, information science and bioinformatics > 01.02.01.18. Human computer interaction and interface, visualization and natural language processing > 01.02.01.18.01. Human computer interaction
01. Natural sciences > 01.02. Computer and information sciences > 01.02.01. Computer sciences, information science and bioinformatics > 01.02.01.21. Scientific computing, simulation and modelling tools
Divisions: Doctoral School of Computer Science
Discipline: Engineering > Information Technology
Language: English
Date: 2023. July 24.
Item ID: 11593
doi: https://doi.org/10.14232/phd.11593
Date Deposited: 2023. Feb. 01. 16:10
Last Modified: 2024. May. 10. 09:35
Depository no.: B 7239
URI: https://doktori.bibl.u-szeged.hu/id/eprint/11593
Defence/Citable status: Defended.

Actions (login required)

View Item View Item