首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于深度学习的JS转译器缺陷检测方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:大连理工大学

摘要:本发明属于软件测试技术领域,尤其涉及一种用于检查JS转译器缺陷的技术,具体为一种基于深度学习的JavaScript转译器缺陷检测方法。本发明方法可以对JavaScript转译器进行缺陷检测,通过深度学习学习测试用例的语法特性并生成新的测试用例,避免了以往检测过程中需要开发人员手动编写测试用例或传统方法生成大量无用的语法盲的测试用例,大大的节省了时间的同时提高了测试效率。

主权项:1.一种基于深度学习的JS转译器缺陷检测方法,其特征在于,具体步骤如下:步骤1:按照关键词搜索法收集GitHub上指定语法的代码库通过关键字搜索法,使用GitHub提供的API按照star数量从多到少收集语料库;然后使用JS引擎将JS文件中引入的外部模块导入到当前文件中以避免引用错误,最后使用代码静态检查工具进行语法检查,筛选出语法正确的代码保存到语料库中;语法检查分为两遍,第一遍找到符合指定语法标准的代码文件,第二遍从第一遍检查后的文件中找到语法正确的代码文件;步骤2:对语料库进行预处理首先将JS测试用例转换为AST,再统一修改标记名;标记名包括函数名、类名、变量名和属性名,修改变量名和属性名的时候略过JavaScript的保留字和内置函数,然后将字符串变量统一修改为“string”;对于JS中能将字符串内容作为一般JS脚本执行eval函数进行特殊处理,将eval函数的字符串参数,提取成单独的代码段插入原有的程序中;其次将AST上的注释内容删除,最后将AST再转换为JS程序;步骤3:训练模型使用LSTM进行训练,LSTM模型需要将每个训练文本转换为一个整数序列作为神经网络的输入;为此,首先需要构建一个词汇表,通过在词汇表中查找标记,将每个指令、常量和变量映射为整数;使用字节对编码标记化方法构建词汇表,具体为:首先计算训练数据中每个单词的频率,然后根据单词频率将每个单词分成块或子单词;最终将每个子词或标记映射到要存储在词汇表中的整数;在构建成功词汇表后,将JS程序一一映射为整数序列来更新LSTM网络,得到训练后的模型;步骤4:检测是否达到测试时间限制;如果没有达到,则转到步骤5,使用深度学习模型指导测试用例生成;若已达到,则停止测试;其中,测试时间限制可由测试人员根据需求进行设置,不包含步骤1-3中构建语料库和训练模型的时间;步骤5:生成测试用例:通过加载训练后的模型生成新的代码片段;从现有语料库选定包含不同语法特性的短小代码片段作为样本头输入到模型中,然后要求深度学习网络根据这些字符串生成下一个令牌;采用top-k采样方案,从top-k令牌中随机选择一个令牌;然后将生成字符追加到现有字符并作为下一轮网络更新的输入;当花括号“{”和“}”匹配,或语言模型生成专用终止符号“EOF”,或合成程序的字数超过初始设置的最长字符阈值时,该生成过程终止;对于生成的测试用例进行静态语法检查,去除完全不包含指定语法的测试用例和包含错误语法的测试用例;步骤6:使用转译器转译测试用例:在转译过程中,如果转译器报错,收集报错信息,错误信息的首行记录了bug类型和bug内容,以此作为索引值,触发bug的测试用例作为索引内容,记录在bug字典中;步骤7:语法检测:对于成功转换的测试用例,使用静态语法检查工具来检查代码,如果检查结果中包括了语法规范错误的报错信息,证明转译器未能正确地将测试用例转换为指定语法的代码,将此类报错信息作为索引值,测试用例作为索引内容载入bug字典中;步骤8:语义检测:对于转换后的代码,转译器可能在转换过程中改变代码的语义,需要使用JS引擎等运行转换前后代码,比较转译语义;如果在转译前后代码的语义不同,则可能转译器中包含bug;并以语义转换错误作为索引值,测试用例作为索引内容载入bug字典中;步骤9:约简测试用例:在抽象语法树的层次上对测试用例进行缩减;具体来说,借助抽象语法树转换工具将测试用例转换为抽象语法树,以非终结符为界定单元将代码分割为一个个代码块,如果删除某个代码块不影响bug触发则证明该代码块可以被缩减,最后得到一个能够触发bug的最小代码块。

全文数据:

权利要求:

百度查询: 大连理工大学 一种基于深度学习的JS转译器缺陷检测方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。