一种快速获取到达程序指定点测试用例的方法技术

技术编号:24352908 阅读:48 留言:0更新日期:2020-06-03 01:57
本发明专利技术公开了一种快速获取到达程序指定点测试用例的方法,包括:首先在给定的程序中设置一个目标代码点,该目标点代表程序实际运行时出现程序运行错误的位置;利用静态分析技术提取该目标点的dominator语句,dominator语句为到达目标点的过程中所必须经过的中间语句;增强学习技术利用Q‑learning,将其写入一个独立的python文件中;符号执行工具选择KLEE,当KLEE遇到分支决策时,将与包含Q‑learning算法的python文件进行socket通信,当前分支的决策将由Q‑learning决定;若KLEE遵循了Q‑learning算法并且在走完分支后遇到dominator语句,则返回给Q‑learning一个值为正的奖励,否则为负的奖励;Q‑learning将根据得到的奖励值更新决策;若KLEE覆盖到目标点则生成达到相应目标点的测试用例或达到给定时间则终止符号执行工具KLEE。

A method of quickly obtaining test cases at designated points of programs

【技术实现步骤摘要】
一种快速获取到达程序指定点测试用例的方法
本专利技术涉及新型符号执行框架的设计
,将强化学习与传统符号执行过程相结合,解决了符号执行当中的路径爆炸问题,从而能够帮助软件测试人员快速获取到达程序指定点测试用例。
技术介绍
符号执行方法是将程序中的输入变量当作符号处理,在模拟程序执行的同时收集符号化变量上的相关约束信息用于分析程序。和最原始的随机测试用例方法相比较有着更好的分析效率,因为符号执行可以通过对程序特定路径约束的求解,自动生成相应的测试输入。约束的收集是在模拟程序执行时,通过维护符号变量上的状态变化,将不同路径上分支条件组合运算作为路径求解的输入;最后使用约束求解器求解,得到具体路径上的测试输入。然而传统的符号执行技术会带来一些问题,路径爆炸就是其中之一,即符号执行工具在探索路径的过程中由于过多分支所带来呈指数级增长的路径数量,导致大量时间损耗。一种快速获取到达程序指定点测试用例的方法针对实际项目实践中到达定点的问题,如测试工程师获取了包含错误点的输出报告却缺少能够到达该点的对应测试用例。该方法实现了增强学习引导下的符号执行本文档来自技高网...

【技术保护点】
1.一种快速获取到达程序指定点测试用例的方法,其特征在于,包括以下步骤:/n步骤一:在给定程序人工设置目标代码点,所述目标代码点代表程序实际运行时会出现程序运行错误的位置;/n步骤二:在已知给定的目标代码后获取该目标点的dominator语句,利用程序静态分析理论分析得到程序在到达目标代码过程中所必须经过的一系列代码点;/n步骤三:将Q-learning算法写入一个独立的python文件中;/n步骤四:开始符号执行过程,当符号执行工具KLEE遇到分支决策时将和独立的python文件进行通信,分支的决策为走true分支还是false分支由Q-learning决定;当符号执行工具在遵循了Q-lea...

【技术特征摘要】
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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1