Schaapi

Early detection of breaking changes based on API usage

Bachelor Thesis (2018)
Author(s)

J.S. Abrahams (TU Delft - Electrical Engineering, Mathematics and Computer Science)

Georgios Andreadis (TU Delft - Electrical Engineering, Mathematics and Computer Science)

C.C. Boone (TU Delft - Electrical Engineering, Mathematics and Computer Science)

Florine Dekker (TU Delft - Electrical Engineering, Mathematics and Computer Science)

Contributor(s)

Mauricio Aniche – Mentor

A. Katsifodimos – Coach

Faculty
Electrical Engineering, Mathematics and Computer Science
Copyright
© 2018 Joël Abrahams, Georgios Andreadis, Casper Boone, Florine Dekker
More Info
expand_more
Publication Year
2018
Language
English
Copyright
© 2018 Joël Abrahams, Georgios Andreadis, Casper Boone, Florine Dekker
Graduation Date
03-07-2018
Awarding Institution
Delft University of Technology
Project
['Bachelor End Project']
Programme
['Computer Science']
Related content

GitHub repository for the software artifacts of this thesis.

https://github.com/cafejojo/schaapi
Faculty
Electrical Engineering, Mathematics and Computer Science
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

Library developers are often unaware of how their library is used exactly in practice. When a library developer changes the internals of a library, this may unintentionally affect or even break the working of the library users' code. While it is possible to detect when a syntactic breaking change occurs, it is not as easy to detect semantic breaking changes, where the implicit contract of a functionality changes, sometimes unbeknownst to the library developer. Because library users rarely test the behaviour they expect of the library, neither the library developer nor the library user will be aware of the new behaviour.

As a library developer, you want to be able to see how a change in your library will affect your users before a new version of the library is deployed. More specifically, you want to gain insight into how users use the library, and want to see if and how changes affect users. This will allow you to determine whether the new version of the library is backwards compatible. Finally, after deploying the breaking changes, you want to notify the affected users of the changes and of a solution to the issue.

Schaapi, a tool for early detection of breaking changes based on API usages, addresses these needs. It mines public repositories for projects using a given library, analyses their usage of the API of that library, and generates tests that capture this behaviour. Finally, it offers a continuous integration service that automatically executes these tests against new versions of the library and warns developers of any potentially breaking changes in functionality. The tool has also been validated against real-world data to demonstrate its performance in realistic usage scenarios and to answer a selection of related research questions.

Files

Schaapi_final_upload.pdf
(pdf | 1.69 Mb)
License info not available