基于机器学习的程序路径可达性判定方法研究与实现

来源 :北京邮电大学 | 被引量 : 0次 | 上传用户:woaiwodeqq
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
结构测试中,不可达路径会浪费大量测试成本,极大降低测试用例的生成效率。若能提前确定路径可达性,则能将有限测试资源充分用于可达路径用例求解。传统的不可达路径判定方法有静态法、动态法和混合法。静态法与编程语言耦合,路径求解代价昂贵;动态法依赖测试数据生成,执行效率低;混合法虽然提高了求解效率,但仍受传统方法的限制。当前没有一种高效且通用的不可达路径判定方法。尤其对大规模程序而言,路径可达性求解难度极大。针对上述问题,本文提出了一种基于机器学习的程序路径可达性判定方法。该方法将路径求解问题转化为路径可达性分类问题,利用机器学习提高判定效率,具有一定通用性。围绕该方法,本文主要做了以下研究:(1)提出一种基于路径约束的程序路径特征提取方法。首先基于符号执行提取路径约束,并采取约束原子化、无效约束删减等方式对约束进行简化,然后进行约束编码,编码约束与关键词词频共同组成特征空间。(2)提出一种基于机器学习的程序路径可达性判定解决方法。首先在预处理阶段生成程序路径,通过区间运算、动态执行、人工确认的方式标注路径可达性。然后进行特征提取及向量化。最后,基于特征进行分类模型训练,获取不同模型的判定效果。通过机器学习的方法判定路径可达性,能够适用于过程内路径与过程间路径,且扩展性相对较好。本文基于上述方法,构建了逻辑回归模型、支持向量机模型、随机森林模型以及三种集成分类模型,选取了 10个开源C语言工程生成程序路径,对路径可达性进行了判定与交叉验证。实验结果表明,上述方法能为上万行的程序提供路径可达性判定,且所有模型判定结果精确率均能达80%以上。
其他文献