买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:浙江大学
摘要:本发明公开了一种基于符号执行和路径数缩减的MCDC覆盖用例生成方法。本发明首先解析待测程序的源代码,收集每个需要覆盖的判定表达式以及判定表达式中的各个条件;其次对源代码插桩,修改判定语句的源代码,使得程序在执行过程中能够记录MCDC覆盖率信息,且执行逻辑保持不变;然后对程序运行静态分析,根据程序控制流图,获得程序各个基本块的可达判定集合;最后对插桩后的程序进行符号执行,根据覆盖率信息和静态分析结果,对符号执行的路径进行合并和剪枝。本发明通过对程序插桩,结合静态程序分析与动态路径合并的方法,在符号执行过程中,通过路径合并与剪枝,缩减路径数量,旨在提高测试用例生成速度,精简测试用例的规模。
主权项:1.一种基于符号执行和路径数缩减的MCDC覆盖用例生成方法,其特征在于该方法包括以下步骤:S1.解析待测程序的源代码,收集每个需要覆盖的判定表达式以及判定表达式中的各个条件;S2.对源代码插桩,修改判定语句的源代码,使得程序在执行过程中能够记录MCDC覆盖率信息,且执行逻辑保持不变;S3.对程序运行静态分析,根据程序控制流图,获得程序各个基本块的可达判定集合;S4.对插桩后的程序进行符号执行,根据覆盖率信息和静态分析结果,对符号执行的路径进行合并和剪枝,减少路径数量,精简用例规模;其中步骤S2中的插桩过程引入三个桩函数:INIT函数:输入判定的编号,标记程序执行判定语句的开始,用于初始化;ConditionHook函数即CHOOK函数:输入条件表达式的编号,真值,返回表达式真值;DecisionHook函数即DHOOK函数:输入判定表达式的编号,判定表达式,返回判定表达式的真值;程序每次运行至判定语句时,先调用INIT函数,初始化一个比特向量,再调用CHOOK,DHOOK函数,根据条件、判定表达式的真值改写比特向量,以获得覆盖信息;其中步骤S4中当一条路径执行到判定语句,符号执行引擎则派生出若干条路径,分别探索不同的程序分支;符号执行引擎将路径存储在路径池中,并选取一条路径继续执行;当符号执行引擎从路径池中选取一条由某一判定表达式派生出来的路径时,存在以下三种情况:情况1:该判定语句未完成MCDC覆盖,且该路径对应的真值序列没有其它路径覆盖到,称路径对该判定有覆盖率贡献,继续执行路径;情况2:该路径对应的真值序列已经被其他路径访问过,但满足以下任意条件:条件1.路径在执行过程中曾对某一或某些判定有覆盖率贡献;条件2.路径的可达判定中存在未覆盖的判定;则合并由该判定派生出来的所有满足上述条件的路径;情况3:该路径没有在访问过的判定语句上有覆盖率的贡献,并且其可达判定均已完成MCDC覆盖,则终止该路径。
全文数据:
权利要求:
百度查询: 浙江大学 一种基于符号执行和路径数缩减的MC/DC覆盖用例生成方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。