首页> 外文会议>IEEE/ACM International Conference on Software Engineering >JEST: N+1 -version Differential Testing of Both JavaScript Engines and Specification
【24h】

JEST: N+1 -version Differential Testing of Both JavaScript Engines and Specification

机译:JEST:N + 1- javascript引擎和规范的差分测试

获取原文

摘要

Modern programming follows the continuous integration (CI) and continuous deployment (CD) approach rather than the traditional waterfall model. Even the development of modern programming languages uses the CI/CD approach to swiftly provide new language features and to adapt to new development environments. Unlike in the conventional approach, in the modern CI/CD approach, a language specification is no more the oracle of the language semantics because both the specification and its implementations (interpreters or compilers) can co-evolve. In this setting, both the specification and implementations may have bugs, and guaranteeing their correctness is non-trivial.In this paper, we propose a novel $N+ 1$-version differential testing to resolve the problem. Unlike the traditional differential testing, our approach consists of three steps: 1) to automatically synthesize programs guided by the syntax and semantics from a given language specification, 2) to generate conformance tests by injecting assertions to the synthesized programs to check their final program states, 3) to detect bugs in the specification and implementations via executing the conformance tests on multiple implementations, and 4) to localize bugs on the specification using statistical information. We actualize our approach for the JavaScript programming language via JEST, which performs $N+1 -$ version differential testing for modern JavaScript engines and ECMAScript, the language specification describing the syntax and semantics of JavaScript in a natural language. We evaluated JEST with four JavaScript engines that support all modern JavaScript language features and the latest version of ECMAScript (ES11, 2020). JEST automatically synthesized 1,700 programs that covered 97.78% of syntax and 87.70% of semantics from ES11. Using the assertion-injected JavaScript programs, it detected 44 engine bugs in four different engines and 27 specification bugs in ES11.
机译:现代编程遵循连续集成(CI)和连续部署(CD)方法而不是传统的瀑布模型。即使是现代编程语言的开发也使用CI / CD方法迅速提供新的语言功能,适应新的开发环境。与传统方法不同,在现代CI / CD方法中,语言规范不再是语言语义的Oracle,因为规范及其实现(解释器或编译器)都可以共同发展。在此设置中,规范和实现都可能有错误,并保证其正确性是非 - 中继。在本文中,我们提出了一种新的N + 1 $ -Version差异测试来解决问题。与传统的差异测试不同,我们的方法包括三个步骤:1)自动综合由给定语言规范的语法和语义引导的程序,2)通过向合成程序注入断言来生成一致性测试,以检查其最终计划状态。 3)通过在多个实现上执行一致性测试和4)来检测规范和实现中的错误,并使用统计信息将错误本地化。我们通过JEST实现我们的JavaScript编程语言的方法,它对现代JavaScript引擎和ECMAScript执行$ N + 1-$ Version差分测试,该语言规范描述了自然语言的JavaScript语法和语义。我们评估了SCE的四个JavaScript引擎,支持所有现代JavaScript语言功能和最新版本的ECMAScript(ES11,2020)。 Jest自动综合了1,700个程序,涵盖了Syntax的97.78%和87.70%的ES11中的语义。使用断言注入的JavaScript程序,它在ES11中检测到四种不同的引擎中的44个引擎错误和27个规格错误。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号