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