Exposing Bugs in JavaScript Engines through Test Transplantation and Differential Testing

by   Igor Lima, et al.

Context. JavaScript is a popular programming language today with several implementations competing for market dominance. Although a specification document and a conformance test suite exist to guide engine development, bugs occur and have important practical consequences. Implementing correct engines is challenging because the spec is intentionally incomplete and evolves frequently. Objective. This paper investigates the use of test transplantation and differential testing for revealing functional bugs in JavaScript engines. The former technique runs the regression test suite of a given engine on another engine. The latter technique fuzzes existing inputs and then compares the output produced by different engines with a differential oracle. Method. We conducted experiments with engines from five major players-Apple, Facebook, Google, Microsoft, and Mozilla-to assess the effectiveness of test transplantation and differential testing. Results. Our results indicate that both techniques revealed several bugs, many of which confirmed by developers. We reported 35 bugs with test transplantation (23 of these bugs confirmed and 19 fixed) and reported 24 bugs with differential testing (17 of these confirmed and 10 fixed). Results indicate that most of these bugs affected two engines-Apple's JSC and Microsoft's ChakraCore (24 and 26 bugs, respectively). To summarize, our results show that test transplantation and differential testing are easy to apply and very effective in finding bugs in complex software, such as JavaScript engines.


page 1

page 2

page 3

page 4


Automated Conformance Testing for JavaScript Engines via Deep Compiler Fuzzing

JavaScript (JS) is a popular, platform-independent programming language....

JEST: N+1-version Differential Testing of Both JavaScript Engines and Specification

Modern programming follows the continuous integration (CI) and continuou...

Academic Search Engines: Constraints, Bugs, and Recommendation

Background: Academic search engines (i.e., digital libraries and indexer...

Universal Fuzzing via Large Language Models

Fuzzing has achieved tremendous success in discovering bugs and vulnerab...

GDsmith: Detecting Bugs in Graph Database Engines

Graph database engines stand out in the era of big data for their effici...

On the Unusual Effectiveness of Type-aware Mutations for Testing SMT Solvers

We propose type-aware operator mutation, a simple, but unusually effecti...

Testing Database Engines via Pivoted Query Synthesis

Relational databases are used ubiquitously. They are managed by database...

Please sign up or login with your details

Forgot password? Click here to reset