Abstract
Semantic versioning is widely used by library developers to indicate whether updates contain changes that may break existing clients. Especially for dynamic languages like JavaScript, using semantic versioning correctly is known to be difficult, which often causes program failures and makes client developers reluctant to switch to new library versions. The concept of type regression testing has recently been introduced as an automated mechanism to assist the JavaScript library developers. That mechanism is effective for detecting breaking changes in widely used libraries, but it suffers from scalability limitations that make it slow and also less useful for libraries that do not have many available clients. This paper presents a model-based variant of type regression testing. Instead of comparing API models of a library before and after an update, it finds breaking changes by automatically generating tests from a reusable API model. Experiments show that this new approach significantly improves scalability: it runs faster, and it can find breaking changes in more libraries.
Original language | English |
---|---|
Title of host publication | ESEC/FSE 2019 - Proceedings of the 2019 27th ACM Joint Meeting European Software Engineering Conference and Symposium on the Foundations of Software Engineering |
Editors | Sven Apel, Marlon Dumas, Alessandra Russo, Dietmar Pfahl |
Number of pages | 11 |
Publisher | Association for Computing Machinery |
Publication date | Aug 2019 |
Pages | 409-419 |
ISBN (Electronic) | 9781450355728 |
DOIs | |
Publication status | Published - Aug 2019 |
Event | 27th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC/FSE 2019 - Tallinn, Estonia Duration: 26 Aug 2019 → 30 Aug 2019 |
Conference
Conference | 27th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC/FSE 2019 |
---|---|
Country/Territory | Estonia |
City | Tallinn |
Period | 26/08/2019 → 30/08/2019 |
Keywords
- JavaScript
- Semantic versioning