基于类型推断的JavaScript引擎模糊测试方法研究.pdf

基于类型推断的JavaScript引擎模糊测试方法研究.pdf

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
摘要 摘要 JavaScript 是一种基于原型的动态弱类型脚本语言。作为弱类型语言,JavaScript 程序中不能指定每个变量的类型,其执行器——JavaScript 引擎在执行到相应的语句 时才能对变量的类型进行判断。由此,许多在强类型语言中可以规避的类型异常都可 能被隐藏,难以发现问题所在。在对JavaScript 引擎进行测试时,如何高效地产生代 码覆盖率高的测试用例,并且更快地发现其隐含的缺陷,这些问题都亟待解决。 因此,本文提出了一种基于类型推断的JavaScript 引擎模糊测试方法。具体研究 内容如下: (1)为了避免测试用例中位置靠前的代码存在异常导致程序过早退出执行,提 高代码覆盖率和原始语料的利用率,将原始语料库中的代码拆分为JavaScript 中的函 数,称为预备测试用例。 (2 )为了有效地调用这些函数,并进一步提升预备测试用例的代码覆盖率,本 文提出了一种参数类型推断方法。首先对函数的每个参数遍历函数体,统计每种数据 类型的类型推断因子数,统计得分最高的数据类型即推定为该参数的数据类型。然后 据此生成实际参数和函数的调用表达式,即得到了具有高代码覆盖率且能高效触发 JavaScript 引擎崩溃缺陷的测试用例。最后根据类型推断结果,对测试用例进行具有 引导性的精确变异,提高了通过满足边界条件进一步提升代码覆盖率和触发更多 JavaScript 引擎缺陷的可能。 (3 )为了验证上述方法的有效性,本文实现了原型系统JSTIFuzz ,并使用该原 型系统进行了参数类型推断效果评估实验、代码覆盖率提升效果评估实验和模糊测试 效果评估实验。实验结果表明,使用JSTIFuzz 对函数的参数进行类型推断,最高比 随机传参的类型精确率高10.8 倍。并且JSTIFuzz 能使测试用例的代码覆盖率最高提 升30.33%,使JavaScript 引擎的代码覆盖率最高提升8.81%. 在以同等的原始语料库 作为输入,并在相同的时间及环境下,JSTIFuzz 可以在测试集上比其他模糊测试工具 触发JavaScript 引擎更多的崩溃缺陷。最后,在针对各JavaScript 引擎最新版本进行 的为期100 个小时的模糊测试中,本文发现并提交了Rhino 、JerryScript 、QuickJS 和 Hermes 等4 个JavaScript 引擎的崩溃缺陷共6 个,其中有2 个已被确认。 I 目录 目录 摘要I ABSTRACTIII 目录V 第一章 引言 1 1.1 研究背景与意义 1 1.1.1 JavaScript 语言及其引擎简介 1 1.1.2 JavaScript 引擎的测试及其问题2 1.1.3 研究的目的和意义3 1.2 国内外研究现状4 1.3 本文研究内容5 1.4 本文组织结构6 第二章 软件测试相关理论与技术7 2.1 代码克隆检测技术7 2.1.1 余弦相似度算法7 2.1.2 基于文本向量化的克隆检测技术8 2.1.3 基于哈希算法的克隆检测技术9 2.2 软件测试方法9 2.2.1 基于断言的测试方法9 2.2.2 模糊测试方法 10 2.3 测试用例变异方法 11 2.3.1 基于字节的测试用例变异方法 11 2.3.2 基于语法树的测试用例生成和变异方法 13 2.4 本章小结 14 第三

文档评论(0)

136****6583 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7043055023000005

1亿VIP精品文档

相关文档