Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Gianluca Mezzetti

dblp:96/10107 · DBLP profile ↗
← Back
8ranked-venue papers
2as first author
0since 2021 · last 2018
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 4 · 2 first-authorTheory of computation · 3

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
2 papers
Software testing · 64% Programming languages and type systems · 18% Program analysis · 18%

Topics — the 6 heaviest of 6, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › type systems
dynamic typing
0.212016
Analyzing test completeness for dynamic languages · ISSTA 2016
Software testing
test coverage
0.212016
Analyzing test completeness for dynamic languages · ISSTA 2016
Program analysis › type analysis
type error detection
0.212016
Analyzing test completeness for dynamic languages · ISSTA 2016
Software testing › mobile application testing
android app testing
0.212015
Systematic execution of Android test suites in adverse conditions · ISSTA 2015
Software testing
mobile application testing
0.212015
Systematic execution of Android test suites in adverse conditions · ISSTA 2015
Software testing › test execution
test suite execution
0.212015
Systematic execution of Android test suites in adverse conditions · ISSTA 2015

Methods — techniques the papers use, named apart from their topics

call graph inference · 0.2event injection · 0.2end-to-end test suites · 0.2
YearPublicationVenuePosition
2018 Type Regression Testing to Detect Breaking Changes in Node.js Libraries
abstract
The npm repository contains JavaScript libraries that are used by millions of software developers. Its semantic versioning system relies on the ability to distinguish between breaking and non-breaking changes when libraries are updated. However, the dynamic nature of JavaScript often causes unintended breaking changes to be detected too late, which undermines the robustness of the applications. We present a novel technique, type regression testing, to automatically determine whether an update of a library implementation affects the types of its public interface, according to how the library is being used by other npm packages. By leveraging available test suites of clients, type regression testing uses a dynamic analysis to learn models of the library interface. Comparing the models before and after an update effectively amplifies the existing tests by revealing changes that may affect the clients. Experimental results on 12 widely used libraries show that the technique can identify type-related breaking changes with high accuracy. It fully automatically classifies at least 90% of the updates correctly as either major or as minor or patch, and it detects 26 breaking changes among the minor and patch updates.
Gianluca Mezzetti, Anders Møller, Martin Toldam Torp
ECOOP1
2017 Regular and context-free nominal traces
Pierpaolo Degano, Gian-Luigi Ferrari 0002, Gianluca Mezzetti
Acta Informatica3
2016 Type unsoundness in practice: an empirical study of Dart
abstract
The type system in the Dart programming language is deliberately designed to be unsound: for a number of reasons, it may happen that a program encounters type errors at runtime although the static type checker reports no warnings. According to the language designers, this ensures a pragmatic balance between the ability to catch bugs statically and allowing a flexible programming style without burdening the programmer with a lot of spurious type warnings. In this work, we attempt to experimentally validate these design choices. Through an empirical evaluation based on open source programs written in Dart totaling 2.4 M LOC, we explore how alternative, more sound choices affect the type warnings being produced. Our results show that some, but not all, sources of unsoundness can be justified. In particular, we find that unsoundness caused by bivariant function subtyping and method overriding does not seem to help programmers. Such information may be useful when designing future versions of the language or entirely new languages.
Gianluca Mezzetti, Anders Møller, Fabio Strocco
DLS1
2016 Analyzing test completeness for dynamic languages
abstract
In dynamically typed programming languages, type errors can occur at runtime. Executing the test suites that often accompany programs may provide some confidence about absence of such errors, but generally without any guarantee. We present a program analysis that can check whether a test suite has sufficient coverage to prove a given type-related property, which is particularly challenging for program code with overloading and value dependent types. The analysis achieves a synergy between scalable static analysis and dynamic analysis that goes beyond what can be accomplished by the static analysis alone. Additionally, the analysis provides a new coverage adequacy metric for the completeness of a test suite regarding a family of type-related properties. Based on an implementation for Dart, we demonstrate how such a hybrid static/dynamic program analysis can be used for measuring the quality of a test suite with respect to showing absence of type errors and inferring sound call graph information, specifically for program code that is difficult to handle by traditional static analysis techniques.
Christoffer Quist Adamsen, Gianluca Mezzetti, Anders Møller
ISSTA2
2015 Systematic execution of Android test suites in adverse conditions
abstract
Event-driven applications, such as, mobile apps, are difficult to test thoroughly. The application programmers often put significant effort into writing end-to-end test suites. Even though such tests often have high coverage of the source code, we find that they often focus on the expected behavior, not on occurrences of unusual events. On the other hand, automated testing tools may be capable of exploring the state space more systematically, but this is mostly without knowledge of the intended behavior of the individual applications. As a consequence, many programming errors remain unnoticed until they are encountered by the users. We propose a new methodology for testing by leveraging existing test suites such that each test case is systematically exposed to adverse conditions where certain unexpected events may interfere with the execution. In this way, we explore the interesting execution paths and take advantage of the assertions in the manually written test suite, while ensuring that the injected events do not affect the expected outcome. The main challenge that we address is how to accomplish this systematically and efficiently. We have evaluated the approach by implementing a tool, Thor, working on Android. The results on four real-world apps with existing test suites demonstrate that apps are often fragile with respect to certain unexpected events and that our methodology effectively increases the testing quality: Of 507 individual tests, 429 fail when exposed to adverse conditions, which reveals 66 distinct problems that are not detected by ordinary execution of the tests.
Christoffer Quist Adamsen, Gianluca Mezzetti, Anders Møller
ISSTA2
2013 Towards Nominal Context-Free Model-Checking
Pierpaolo Degano, Gian-Luigi Ferrari 0002, Gianluca Mezzetti
CIAA3
2012 Types for Coordinating Secure Behavioural Variations
Pierpaolo Degano, Gian-Luigi Ferrari 0002, Letterio Galletta, Gianluca Mezzetti
COORDINATION4
2012 Nominal Automata for Resource Usage Control
Pierpaolo Degano, Gian-Luigi Ferrari 0002, Gianluca Mezzetti
CIAA3