BugsJS: a Benchmark and Taxonomy of JavaScript Bugs
Péter Gyimesi, Béla Vancsics, Andrea Stocco, Davood
Mazinanian, Árpád Beszédes, Ferenc
Rudolf and Ali Mesbah
JavaScript is a popular programming language that is
also error‐prone due to its asynchronous, dynamic, and loosely
typed nature. In recent years, numerous techniques have been
proposed for analyzing and testing JavaScript applications.
However, our survey of the literature in this area revealed that
the proposed techniques are often evaluated on different datasets
of programs and bugs. The lack of a commonly used benchmark limits
the ability to perform fair and unbiased comparisons for assessing
the efficacy of new techniques. To fill this gap, we propose
BugsJS, a benchmark of 453 real, manually validated JavaScript
bugs from 10 popular JavaScript server‐side programs, comprising
444k lines of code (LOC) in total. Each bug is accompanied by its
bug report, the test cases that expose it, as well as the patch
that fixes it. We extended BugsJS with a rich web interface for
visualizing and dissecting the bugs' information, as well as a
programmable API to access the faulty and fixed versions of the
programs and to execute the corresponding test cases, which
facilitates conducting highly reproducible empirical studies and
comparisons of JavaScript analysis and testing tools. Moreover,
following a rigorous procedure, we performed a classification of
the bugs according to their nature. Our internal validation shows
that our taxonomy is adequate for characterizing the bugs in
BugsJS. We discuss several ways in which the resulting taxonomy
and the benchmark can help direct researchers interested in
automated testing of JavaScript applications.
Keywords: JavaScript, bug
database, benchmark, reproducibility, bug taxonomy, BugsJS.
Back