中文

通过深度编译器模糊测试实现JavaScript引擎的自动化一致性测试

软件工程 2021-04-16 v1 编程语言

摘要

JavaScript(JS)是一种流行的、平台无关的程序设计语言。为确保JS程序在不同平台间的互操作性,JS引擎的实现应符合ECMAScript标准。然而,由于API行为存在许多微妙的定义且这些定义不断演进,做到这一点颇具挑战。我们提出COMFORT,一种用于检测JS引擎缺陷及偏离ECMAScript标准行为的新型编译器模糊测试框架。COMFORT利用近期基于深度学习的语言模型进展自动生成JS测试代码。与先前的模糊测试器不同,COMFORT利用结构良好的ECMAScript规范自动生成测试数据及测试程序,以暴露开发者可能忽略或手工编写的测试用例遗漏的缺陷。COMFORT随后对生成的测试用例应用差分测试方法以暴露标准一致性缺陷。我们将COMFORT应用于十个主流JS引擎。在200小时的自动化并发测试运行中,我们在所有被测JS引擎中均发现了缺陷。我们已识别出158个独特的JS引擎缺陷,其中129个已得到验证,115个已被开发者修复。此外,21个由COMFORT生成的测试用例已被加入Test262,即官方的ECMAScript一致性测试套件。

关键词

引用

@article{arxiv.2104.07460,
  title  = {Automated Conformance Testing for JavaScript Engines via Deep Compiler Fuzzing},
  author = {Guixin Ye and Zhanyong Tang and Shin Hwei Tan and Songfang Huang and Dingyi Fang and Xiaoyang Sun and Lizhong Bian and Haibo Wang and Zheng Wang},
  journal= {arXiv preprint arXiv:2104.07460},
  year   = {2021}
}

备注

PLDI 2021