[发明专利]一种面向Java函数调用路径的测试过程跟踪方法及系统有效
申请号: | 201510012676.7 | 申请日: | 2015-01-12 |
公开(公告)号: | CN104536895B | 公开(公告)日: | 2017-06-09 |
发明(设计)人: | 牟永敏 | 申请(专利权)人: | 牟永敏;北京信息科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京远大卓悦知识产权代理事务所(普通合伙)11369 | 代理人: | 贺持缓 |
地址: | 100083 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 java 函数 调用 路径 测试 过程 跟踪 方法 系统 | ||
1.一种面向Java函数调用路径的测试过程跟踪方法,其特征在于,包括:
基于Soot技术分析被测Java代码,提取Java代码的函数调用关系,并根据提取的函数调用关系,生成函数调用路径;
将预设的测试用例输入被测Java代码,再对Java代码进行插装,获取Java代码的动态路径;以及
匹配Java代码的函数调用路径和动态路径,以实现路径跟踪;
其中,获取Java代码的动态路径后,从动态路径的集合中去除重复路径,并从测试用例库中删除重复路径对应的测试用例;
所述去除重复路径,具体包括:
计算动态路径集合中所有动态路径数据流序列的长度,按长度不同分成不同的子集合;
从动态路径子集合中选择一条动态路径装点数据流序列依次与其他动态路径装点数据流序列进行一一匹配;以及
如果匹配完的路径得到的最长公共子序列的长度与路径的长度相同,则表明这两条路径是相同的,其中一条是重复的,故将重复的路径去除,否则表明两条路径不是重复路径,进行下一条动态路径的匹配。
2.根据权利要求1所述的一种面向Java函数调用路径的测试过程跟踪方法,其特征在于,所述生成函数调用路径具体包括:根据Java代码的函数调用关系,获得局部函数调用关系图,并基于局部函数调用关系图,使用全局函数调用关系图生成算法获得全局函数调用关系图,得到全局函数的函数调用路径。
3.根据权利要求2所述的一种面向Java函数调用路径的测试过程跟踪方法,其特征在于,以邻接表存储方式存储局部函数调用关系图和全局函数调用关系图。
4.根据权利要求1所述的一种面向Java函数调用路径的测试过程跟踪方法,其特征在于,所述获取Java代码的动态路径具体包括:
运行插装后的Java代码,收集局部函数所对应的开始装点信息和结束装点信息以及局部函数内存在函数调用的分支语句处的开始装点信息和结束装点信息,并以HashMap的形式存储;所述开始装点信息和结束装点信息为函数名或函数名所对应的8位16进制数;
在以HashMap的形式存储的过程中,以每个函数的开始装点和结束装点作为HashMap的key值,以该开始装点和结束装点对应的函数名作为HashMap的Value值,且以控制关键字的真假装点作为HashMap的key值,控制关键字作为value值;
根据HashMap中装点信息与函数名的映射关系,将装点信息一一转换成对应的由函数名组成的动态路径。
5.根据权利要求1所述的一种面向Java函数调用路径的测试过程跟踪方法,其特征在于,所述匹配Java代码的函数调用路径和动态路径还包括:若匹配成功,则判断动态路径是否已经匹配完,若是则记录已测试路径、未测试路径、重复路径及相应重复冗余测试用例,并计算函数调用路径覆盖率,否则进行下一条动态路径的匹配。
6.根据权利要求1至5中任一所述的一种面向Java函数调用路径的测试过程跟踪方法,其特征在于,该测试过程跟踪方法还包括进行测试过程管理,且该测试过程管理包括:将测试用例与其运行后的动态路径进行映射,以及将已跟踪到的动态路径和未跟踪到的动态路径分别存储。
7.一种面向Java函数调用路径的测试过程跟踪系统,其特征在于,包括:
函数调用路径生成模块,用于基于Soot技术分析被测Java代码,提取Java代码的函数调用关系,并根据提取的函数调用关系,生成函数调用路径;
动态路径生成模块,用于将预设的测试用例输入被测Java代码,再对Java代码进行插装,获取Java代码的动态路径;以及
路径跟踪模块,用于匹配Java代码的函数调用路径和动态路径,以实现路径跟踪;
其中,获取Java代码的动态路径后,从动态路径的集合中去除重复路径,并从测试用例库中删除重复路径对应的测试用例;
所述去除重复路径,具体包括:
计算动态路径集合中所有动态路径数据流序列的长度,按长度不同分成不同的子集合;
从动态路径子集合中选择一条动态路径装点数据流序列依次与其他动态路径装点数据流序列进行一一匹配;以及
如果匹配完的路径得到的最长公共子序列的长度与路径的长度相同,则表明这两条路径是相同的,其中一条是重复的,故将重复的路径去除,否则表明两条路径不是重复路径,进行下一条动态路径的匹配。
8.根据权利要求7所述的一种面向Java函数调用路径的测试过程跟踪系统,其特征在于,还包括测试过程管理模块,用于将测试用例与其运行后的动态路径进行映射,以及将已跟踪到的动态路径和未跟踪到的动态路径分别存储。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于牟永敏;北京信息科技大学,未经牟永敏;北京信息科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510012676.7/1.html,转载请声明来源钻瓜专利网。