JavaScript 一致性测试的系统性生成
软件工程
2021-08-17 v1 编程语言
摘要
JavaScript 实现使用大型手写测试套件针对 ECMAScript 标准进行一致性测试。这不仅是一种繁琐的方法,而且仅依赖自然语言规范来区分行为,而隐藏的实现细节也会影响行为并引入差异。我们提出通过对 polyfill(尚未广泛支持的较新 JavaScript 语言特性的就地替代实现)进行动态符号执行来生成一致性测试。随后我们将这些生成的测试在多个 JavaScript 实现上运行,采用多数投票来识别正确行为。为促进 polyfill 代码的测试生成,我们引入了一种适用于 JavaScript 动态特性的结构化符号输入模型。在我们的评估中,我们在广泛使用的 core-js polyfill 中发现 17 处差异,并将解释器代码的分支覆盖率提升了至多 15%。由于 polyfill 通常在标准化之前就已编写,我们的方法将以更少的精力维护并扩展标准化测试套件。
引用
@article{arxiv.2108.07075,
title = {Systematic Generation of Conformance Tests for JavaScript},
author = {Blake Loring and Johannes Kinder},
journal= {arXiv preprint arXiv:2108.07075},
year = {2021}
}