학술논문

面向JavaScript引擎报错机制的类别导向模糊测试方法 / Category-directed Fuzzing Test Method for Error Reporting Mechanism in JavaScript Engines
Document Type
Academic Journal
Source
计算机科学 / Computer Science. 50(12):49-57
Subject
JavaScript
报错机制
错误信息
差分测试
程序变异
Error reporting mechanism
Error message
Differential test
Program mutation
Language
Chinese
ISSN
1002-137X
Abstract
报错机制是JavaScript引擎必不可少的一部分.面对错误的程序,JavaScript引擎报错机制应输出合理的错误信息,指出错误的原因和位置,帮助开发人员修复错误.然而,JavaScript引擎报错机制中存在会阻碍开发人员修复错误的缺陷.文中提出了首个面向JavaScript引擎报错机制的类别导向模糊测试方法CAFJER.给定一个种子程序,CAFJER首先为其选择一个目标类别的错误信息,并进行动态分析得到其上下文信息.其次,CAFJER根据种子程序的上下文信息生成能触发目标类别错误信息的测试用例.然后,CAFJER将生成的测试用例输入不同JavaScript引擎中进行差分测试.若输出的错误信息间有所差异,则说明其中可能存在缺陷.最后,CAFJER自动过滤重复的和无效的测试用例,有效减少了人工的参与.为了验证CAFJER的有效性,将CAFJER与 目前先进的相似方法JEST和DIPROM 进行比较,实验结果表明,CAFJER在JavaScript引擎报错机制中发现的独特缺陷数分别是JEST和DIPROM的2.17倍和26倍.在为期3个月的实验中,CAFJER还向开发者提交了 17个缺陷报告,其中7个已被确认.