[发明专利]一种基于程序中间结构特征的蜕变关系预测方法在审
| 申请号: | 202110146363.6 | 申请日: | 2021-02-03 |
| 公开(公告)号: | CN112835797A | 公开(公告)日: | 2021-05-25 |
| 发明(设计)人: | 殷昱煜;阮佳杰;李尤慧子;陈慢慢 | 申请(专利权)人: | 杭州电子科技大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06K9/62;G06N20/10 |
| 代理公司: | 浙江千克知识产权代理有限公司 33246 | 代理人: | 周希良 |
| 地址: | 310018 浙江*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 程序 中间 结构 特征 蜕变 关系 预测 方法 | ||
本发明公开了一种基于程序中间结构特征的蜕变关系预测方法。本发明首先将Java程序转换成程序的中间结构;其次对Java程序的中间结构进行分析,并从中提取特征;由此构建数据集;然后将所构建的数据集作为半监督SVM‑Bagging‑KNN的训练集训练二分类预测模型;最后将预测模型用于预测未出现过的Java方法的蜕变关系。本发明引入Bagging算法框架,在一个半监督算法中,在训练弱分类器的过程中引入bagging算法框架,使用强分类器预测训练集中加入的未标记数据的结果的可靠性高,这部分数据结果的高可靠性会使最终预测模型的效率。
技术领域
本发明涉及一种蜕变关系的预测方法,更具体地说,本发明涉及一种基于程序中间结构特征的预测方法。
背景技术
随着经济与社会的发展以及5G时代的到来,越来越多的软件被开发出来。这些软件使我们的生活愈加便利,但是与此同时也会带来巨大的损失。例如,2007年,美国边境和海关控制网络发送了大量错误数据。这导致洛杉矶整个机场关闭了8个小时,在问题解决之前,超过17000架飞机不能起飞,这影响到了很多人的出行计划,对机场也造成很大的损失。这件事的罪魁祸首是一段有Bug的嵌入式软件。在2016年,日本发射了一颗名叫“Hitomi”的X射线天文卫星。但是仅一个月后,“Hitomi”与地面之间的通信发生了严重故障。软件错误导致了超过2.86亿美元的损失。因此保证软件的可靠性显得愈发重要。
软件测试旨在发现软件中存在的缺陷进而提高程序的可靠性,传统的软件测试需要测试人员为待测程序构造大量的测试用例和预期输出,通过对比测试用例的执行结果是否满足其预期输出来验证程序的正确性。但在很多情况下,测试人员无法为待测程序构造预期输出,那么就无法确定测试用例的执行结果是否与预期输出一致,这就是软件测试中存在Oracle问题。由于Oracle问题的存在,传统的软件测试就不能适用于这类软件的测试。
为了缓解软件测试中的Oracle问题,Chen提出了蜕变测试技术。这种方法通过检查程序执行结果之间的关系来测试程序,无需构造预期输出从而缓解了Oracle问题。蜕变关系是蜕变测试的核心也是进行蜕变测试的前提,蜕变关系的构造大部分都依赖于待测程序领域内的专业知识,也就是不同的测试领域需要了解相关领域的知识。现有的蜕变关系通常由领域专家完成,用这种方式来构造蜕变关系,需要耗费大量的人力物力。因此,使用机器学习模型预测蜕变关系来减少构建蜕变关系所需要耗费的时间及成本是大势所趋。
在自动化预测蜕变关系领域中,将程序转化为可视化的中间结构(一种与特定语言无关的表示方式,通过词法、语法和语义分析得到的)并从中提取相应的特征,然后使用机器学习算法预测蜕变关系。这些方法首先将Java方法转换成对应的控制流图。然后从控制流图中提取出节点特征和路径特征组成特征集,最后使用机器学习算法建立一个预测模型。虽然这些方法已经验证可行,但是此方法提取特征的方法以及使用的机器学习算法还有待改进。一个程序的控制流图仅可以反映一个程序的结构,该方法只从一个程序的结构中提取特征,没有从一个程序的语法特征方面进行分析,导致提取出的特征集合不全面,最终导致预测准确率不高。导致预测准确率不高的另一个因素就是机器学习算法的选择。在之前的发明中,已经通过实验证明半监督学习算法的预测准确率要比监督学习高效。但是在之前的发明中,半监督算法所训练的弱分类模型效果并不是很好,虽然有的方法对弱分类器的决策边界处的数据进行重新预测,但是还是没有从根本上解决问题。
发明内容
本发明的目的是针对现有技术的不足,提供一种基于程序中间结构特征的蜕变关系预测方法,基于Java程序的中间结构,将中间结构转化成程序流图(CFG)以及抽象语法树(AST),从程序流图以及抽象语法树中提取相应的特征,并利用机器学习生成一个预测模型,最后使用该预测模型对未知Java程序自动化选择一个或多个可使用的蜕变关系。
本发明所采用的技术方案如下:
步骤1:将Java程序转换成程序的中间结构;
步骤2:对步骤1中Java程序的中间结构进行分析,并从中提取特征;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州电子科技大学,未经杭州电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110146363.6/2.html,转载请声明来源钻瓜专利网。





