一句话:提出开源变异测试工具 Mutode,利用 npm 生态为 JavaScript/Node.js 应用注入变异以评估测试套件有效性。
论文关注 JavaScript 与 Node.js 生态中变异测试工具匮乏的问题:npm 上托管着超过 70 万个包、每周下载量超 50 亿次,软件复用带来巨大便利的同时也传播了缺陷与故障软件,而现有变异测试框架很少覆盖 Node.js 运行时与基于 npm 的应用。作者首先回顾了针对 JavaScript 与 Node.js 的变异算子先前工作,进而提出 Mutode——一个利用 npm 包生态的开源变异测试工具,可向程序注入变异体并运行应用测试套件,判定变异体被杀死还是存活,从而评估测试套件有效性。为验证效果,作者在 npm 排名前 20 且具备自动化测试套件的模块中选取 12 个进行了实证评估。
Mutation testing is a technique in which faults (mutants) are injected into a program or application to assess its test suite effectiveness. It works by inserting mutants and running the application’s test suite to identify if the mutants are detected (killed) or not (survived) by the tests. Although computationally expensive, it has proven to be an effective method to assess application test suites. Several mutation testing frameworks and tools have been built for the various programing languages, however, very few tools have been built for the JavaScript language, more specifically, there is a lack of mutation testing tools for the Node.js runtime and npm based applications. The npm Registry is a public collection of modules of open-source code for Node.js, front-end web applications, mobile applications, robots, routers, and countless other needs of the JavaScript community. The over 700,000 packages hosted in npm are downloaded more than 5 billion times per week. More and more software is published in npm every day, representing a huge opportunity to share code and solutions, but also to share bugs and faulty software. In this paper, we briefly describe prior work for mutation operators in JavaScript and Node.js, and propose Mutode, an open source tool which leverages the npm package ecosystem to perform mutation testing for JavaScript and Node.js applications. We empirically evaluated Mutode effectiveness by running it on 12 of the top 20 npm modules that have automated test suites.
DOI 原文 ·
@inproceedings{paperbot4819,
title = {Mutode: generic JavaScript and Node.js mutation testing tool},
author = {Diego Rodríguez-Baquero and Mario Linares-Vásquez},
booktitle = {ISSTA},
year = {2018},
doi = {10.1145/3213846.3229504}
}