通过测试移植与差分测试暴露 JavaScript 引擎中的缺陷
软件工程
2020-12-08 v1
摘要
背景。JavaScript 是当今一种流行的编程语言,有多种实现在争夺市场主导地位。尽管存在规范文档和一致性测试套件来指导引擎开发,但缺陷仍会出现并带来重要的实际后果。实现正确的引擎具有挑战性,因为规范有意保持不完整且频繁演进。目标。本文研究利用测试移植和差分测试来揭示 JavaScript 引擎中的功能性缺陷。前者技术在给定的一个引擎上运行另一引擎的回归测试套件。后者技术对现有输入进行模糊处理,然后通过差分预言比较不同引擎产生的输出。方法。我们使用来自五大主要厂商(Apple、Facebook、Google、Microsoft 和 Mozilla)的引擎进行实验,以评估测试移植和差分测试的有效性。结果。我们的结果表明,两种技术都揭示了若干缺陷,其中许多得到了开发者的确认。我们通过测试移植报告了 35 个缺陷(其中 23 个被确认,19 个被修复),并通过差分测试报告了 24 个缺陷(其中 17 个被确认,10 个被修复)。结果表明,这些缺陷大多影响两个引擎——Apple 的 JSC 和 Microsoft 的 ChakraCore(分别有 24 和 26 个缺陷)。总之,我们的结果表明,测试移植和差分测试易于应用,并且在发现复杂软件(如 JavaScript 引擎)中的缺陷方面非常有效。
引用
@article{arxiv.2012.03759,
title = {Exposing Bugs in JavaScript Engines through Test Transplantation and Differential Testing},
author = {Igor Lima and Jefferson Silva and Breno Miranda and Gustavo Pinto and Marcelo d'Amorim},
journal= {arXiv preprint arXiv:2012.03759},
year = {2020}
}
备注
32 pages, 2 figuras