Nowadays, all software projects are based on a large number of libraries, so they do not have to start from scratch. These libraries evolve over time, whether to add functionality or to simplify their use. These updates are necessary to improve their libraries, but can lead to errors in their clients’ code. Developers are thus faced with the problem of breaking changes and need to be able to inform their clients as soon as possible of the arrival of these changes. To limit the impact of these breaking changes, this Master thesis presents UCov. UCov is a static analysis tool that gives library developers a quick overview of the usage coverage of their tests compared with the coverage of their clients. This lets them to compare which elements of their library are being tested with those being used by their clients and also how they are being used. This will enable developers to improve their test suite according to how their clients use their library, to get a better overview of how their library is used, and also to give their clients the best possible warning of changes that may impact their code, thanks to release notes. In this study, we explain the implementation of UCov and test it on various libraries. The results obtained on these libraries are satisfactory. They enable us to highlight potential breaking changes. They also show that there are elements of the libraries’ APIs that are used by clients but never tested. Finally, these results show that UCov offers developers a new tool enabling them to limit the impact of their breaking changes by gaining a better understanding of how clients use their libraries. / Numera baseras alla programvaruprojekt på ett stort antal bibliotek, så att man inte behöver börja från noll. Biblioteksutvecklare ställs därför allt oftare inför problemet med “breaking changes". Dessa är nödvändiga för att förbättra deras bibliotek, men kan leda till fel i deras kunders kod. Utvecklarna måste därför kunna ge sina kunder så mycket förvarning som möjligt om att det kommer att komma inbrytande ändringar. För att begränsa effekterna av dessa förändringar presenterar denna masteruppsats UCov. UCov är ett statiskt analysverktyg som ger biblioteksutvecklare en snabb överblick över användartäckningen för deras tester jämfört med täckningen för deras klienter. Detta gör det möjligt för dem att jämföra vilka element i deras bibliotek som testas med de som används av deras kunder, och även hur de används. Detta gör det möjligt för utvecklare att förbättra sin testsvit enligt hur deras kunder använder deras bibliotek, för att få en bättre överblick över hur deras bibliotek används, och även för att ge sina kunder bästa möjliga varning för ändringar som kan påverka deras kod, tack vare release notes. I den här studien förklarar vi implementeringen av UCov och testar den på olika bibliotek. Resultaten från dessa bibliotek är tillfredsställande. De gör det möjligt för oss att lyfta fram potentiella brytande ändringar. De visar också att det finns delar av bibliotekens API:er som används av klienter men som aldrig testas. Slutligen visar dessa resultat att UCov erbjuder utvecklare ett nytt verktyg som gör det möjligt för dem att begränsa effekterna av sina skadliga ändringar genom att få en bättre förståelse för hur kunderna använder sina bibliotek.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-343218 |
Date | January 2023 |
Creators | Couturou, Thomas |
Publisher | KTH, Skolan för elektroteknik och datavetenskap (EECS) |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | Swedish |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | TRITA-EECS-EX ; 2023:854 |
Page generated in 0.0025 seconds