Guided Mutation Testing for JavaScript Web Applications

Shabnam Mirshokraie, Ali Mesbah and Karthik Pattabiraman, IEEE Transactions on Software Engineering (TSE), May 2015. [PDF File].

This is an expanded version of our ICST’13 paper.

Abstract: Mutation testing is an effective test adequacy assessment technique. However, there is a high computational cost in executing the test suite against a potentially large pool of generated mutants. Moreover, there is much effort involved in filtering out equivalent mutants. Prior work has mainly focused on detecting equivalent mutants after the mutation generation phase, which is computationally expensive and has limited efficiency. We propose an algorithm to select variables and branches for mutation as well as a metric, called FunctionRank, to rank functions according to their relative importance from the application’s behaviour point of view. We present a technique that leverages static and dynamic analysis to guide the mutation generation process towards parts of the code that are more likely to influence the program’s output. Further, we focus on the JavaScript language, and propose a set of mutation operators that are specific to web applications. We implement our approach in a tool called MUTANDIS. The results of our empirical evaluation show that (1) more than 93% of generated mutants are non-equivalent, and (2) more than 75% of the surviving non-equivalent mutants are in the top 30% of the ranked functions.