【技术实现步骤摘要】
一种快速获取到达程序指定点测试用例的方法
本专利技术涉及新型符号执行框架的设计
,将强化学习与传统符号执行过程相结合,解决了符号执行当中的路径爆炸问题,从而能够帮助软件测试人员快速获取到达程序指定点测试用例。
技术介绍
符号执行方法是将程序中的输入变量当作符号处理,在模拟程序执行的同时收集符号化变量上的相关约束信息用于分析程序。和最原始的随机测试用例方法相比较有着更好的分析效率,因为符号执行可以通过对程序特定路径约束的求解,自动生成相应的测试输入。约束的收集是在模拟程序执行时,通过维护符号变量上的状态变化,将不同路径上分支条件组合运算作为路径求解的输入;最后使用约束求解器求解,得到具体路径上的测试输入。然而传统的符号执行技术会带来一些问题,路径爆炸就是其中之一,即符号执行工具在探索路径的过程中由于过多分支所带来呈指数级增长的路径数量,导致大量时间损耗。一种快速获取到达程序指定点测试用例的方法针对实际项目实践中到达定点的问题,如测试工程师获取了包含错误点的输出报告却缺少能够到达该点的对应测试用例。该方法实现了增强 ...
【技术保护点】
1.一种快速获取到达程序指定点测试用例的方法,其特征在于,包括以下步骤:/n步骤一:在给定程序人工设置目标代码点,所述目标代码点代表程序实际运行时会出现程序运行错误的位置;/n步骤二:在已知给定的目标代码后获取该目标点的dominator语句,利用程序静态分析理论分析得到程序在到达目标代码过程中所必须经过的一系列代码点;/n步骤三:将Q-learning算法写入一个独立的python文件中;/n步骤四:开始符号执行过程,当符号执行工具KLEE遇到分支决策时将和独立的python文件进行通信,分支的决策为走true分支还是false分支由Q-learning决定;当符号执行工 ...
【技术特征摘要】
1.一种快速获取到达程序指定点测试用例的方法,其特征在于,包括以下步骤:
步骤一:在给定程序人工设置目标代码点,所述目标代码点代表程序实际运行时会出现程序运行错误的位置;
步骤二:在已知给定的目标代码后获取该目标点的dominator语句,利用程序静态分析理论分析得到程序在到达目标代码过程中所必须经过的一系列代码点;
步骤三:将Q-learning算法写入一个独立的python文件中;
步骤四:开始符号执行过程,当符号执行工具KLEE遇到分支决策时将和独立的python文件进行通信,分支的决策为走true分支还是false分支由Q-learning决定;当符号执行工具在遵循了Q-learning的分支决策后走到dominator语句后,返回给Q-learning一个正的反馈,否则为负,此时Q-learning会根据拿到的反馈更新算法决策;
步骤五:当符号执行工具到达指定目标点或者运行超时,KLEE结束运行,并生成到达指定点的测试用例。
2.根据权利要求1所述的快速获取到达程序指定点测试用例的方法,其特征在于,步骤一中,所述目标代码点在实际项目中,为输出报告中程序出错的位置。
3.根据权利要求1所述的快速获取到达程序指定点测试用例的方法,其特征在于,步骤二中,所述dominator语句为程序在到达指定目标点前,必须经过一系列点的集合。
...
【专利技术属性】
技术研发人员:吴劼,张枨宇,蒲戈光,
申请(专利权)人:华东师范大学,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。