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

Christoffer Quist Adamsen

dblp:165/9632 · DBLP profile ↗
← Back
5ranked-venue papers
5as 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 · 5 · 5 first-author

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
5 papers
Program analysis · 32% Software testing · 30% Concurrent programming · 23%
Network and information security
2 papers
Web and mobile security · 100%

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

TopicWeightPapersLastEvidence papers
Web and mobile security
web application security
0.422018
Practical AJAX race detection for JavaScript web applications · ESEC/SIGSOFT FSE 2018
Repairing event race errors by controlling nondeterminism · ICSE 2017
Program analysis
dynamic analysis
0.422018
Practical initialization race detection for JavaScript web applications · Proc. ACM Program. Lang. 2017
Practical AJAX race detection for JavaScript web applications · ESEC/SIGSOFT FSE 2018
Program analysis › static analysis
bug detection
0.312018
Practical AJAX race detection for JavaScript web applications · ESEC/SIGSOFT FSE 2018
Concurrent programming › concurrency bug detection
data race detection
0.312018
Practical AJAX race detection for JavaScript web applications · ESEC/SIGSOFT FSE 2018
Debugging and program repair
automated program repair
0.312017
Repairing event race errors by controlling nondeterminism · ICSE 2017
Concurrent programming
concurrency bugs
0.312017
Repairing event race errors by controlling nondeterminism · ICSE 2017
Concurrent programming › concurrency bugs
event races
0.312017
Repairing event race errors by controlling nondeterminism · ICSE 2017
Program analysis › concurrent program analysis
event-race detection
0.312017
Practical initialization race detection for JavaScript web applications · Proc. ACM Program. Lang. 2017
Software testing
web application testing
0.312017
Practical initialization race detection for JavaScript web applications · Proc. ACM Program. Lang. 2017
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
Debugging and program repair
fault localization
0.112017
Practical initialization race detection for JavaScript web applications · Proc. ACM Program. Lang. 2017

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

dynamic analysis · 0.9controlled execution · 0.7source code instrumentation · 0.6event scheduling control · 0.6approximate execution · 0.3adverse execution · 0.3call graph inference · 0.2event injection · 0.2end-to-end test suites · 0.2
YearPublicationVenuePosition
2018 Practical AJAX race detection for JavaScript web applications
abstract
Asynchronous client-server communication is a common source of errors in JavaScript web applications. Such errors are difficult to detect using ordinary testing because of the nondeterministic scheduling of AJAX events. Existing automated event race detectors are generally too imprecise or too inefficient to be practically useful. To address this problem, we present a new approach based on a lightweight combination of dynamic analysis and controlled execution that directly targets identification of harmful AJAX event races.
Christoffer Quist Adamsen, Anders Møller, Saba Alimadadi, Frank Tip
ESEC/SIGSOFT FSE1
2017 Repairing event race errors by controlling nondeterminism
abstract
Modern web applications are written in an event-driven style, in which event handlers execute asynchronously in response to user or system events. The nondeterminism arising from this programming style can lead to pernicious errors. Recent work focuses on detecting event races and classifying them as harmful or harmless. However, since modifying the source code to prevent harmful races can be a difficult and error-prone task, it may be preferable to steer away from the bad executions. In this paper, we present a technique for automated repair of event race errors in JavaScript web applications. Our approach relies on an event controller that restricts event handler scheduling in the browser according to a specified repair policy, by intercepting and carefully postponing or discarding selected events. We have implemented the technique in a tool called EventRaceCommander, which relies entirely on source code instrumentation, and evaluated it by repairing more than 100 event race errors that occur in the web applications from the largest 20 of the Fortune 500 companies. Our results show that application-independent repair policies usually suffice to repair event race errors without excessive negative impact on performance or user experience, though application-specific repair policies that target specific event races are sometimes desirable.
Christoffer Quist Adamsen, Anders Møller, Rezwana Karim, Manu Sridharan, Frank Tip, Koushik Sen
ICSE1
2017 Practical initialization race detection for JavaScript web applications
abstract
Event races are a common source of subtle errors in JavaScript web applications. Several automated tools for detecting event races have been developed, but experiments show that their accuracy is generally quite low. We present a new approach that focuses on three categories of event race errors that often appear during the initialization phase of web applications: form-input-overwritten errors, late-event-handler-registration errors, and access-before-definition errors. The approach is based on a dynamic analysis that uses a combination of adverse and approximate execution. Among the strengths of the approach are that it does not require browser modifications, expensive model checking, or static analysis. In an evaluation on 100 widely used websites, our tool InitRacer reports 1085 initialization races, while providing informative explanations of their causes and effects. A manual study of 218 of these reports shows that 111 of them lead to uncaught exceptions and at least 47 indicate errors that affect the functionality of the websites.
Christoffer Quist Adamsen, Anders Møller, Frank Tip
Proc. ACM Program. Lang.1
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
ISSTA1
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
ISSTA1