[发明专利]一种基于函数调用路径的覆盖率动态跟踪方法及装置有效
申请号: | 201310379892.6 | 申请日: | 2013-08-28 |
公开(公告)号: | CN103473171A | 公开(公告)日: | 2013-12-25 |
发明(设计)人: | 牟永敏 | 申请(专利权)人: | 北京信息科技大学;牟永敏 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京远大卓悦知识产权代理事务所(普通合伙) 11369 | 代理人: | 贺持缓 |
地址: | 100085 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 函数 调用 路径 覆盖率 动态 跟踪 方法 装置 | ||
技术领域
本发明涉及软件测试的覆盖分析技术领域,特别是涉及一种基于函数调用路径的覆盖率动态跟踪方法及装置。
背景技术
以下是本领域中的一些名词解释,其使用范围仅限于本发明:
函数调用关系:函数调用关系是以函数为基本单位,通过分析源程序里函数之间的逻辑关系得来的。
函数调用基本路径集:是源代码按照函数调用关系进行分析得到的全部函数调用路径的集合,也就是函数调用关系图G中的所包含的所有函数调用路径,表示为B(S,C)={P1,P2,…,Pn},其中S是源代码,C是函数调用关系准则,Pi是函数调用路径。
插桩:是指在静态测试阶段,借助向被测程序中插入操作来实现测试目的的方法,其基本原理是被测程序在保持原有逻辑完整性基础上在程序中插入一些探针,这些探针的本质是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用。插桩技术的应用是为了记录软件运行时代码的执行路径,从而了解代码的执行情况,利用插桩信息分析软件代码的覆盖率。
执行路径:源代码的执行路径是指输入参数后编译运行源代码所得到的函数之间的执行顺序。
动态路径:动态路径是指输入测试数据、编译运行经过预处理的源代码所获得的路径,其中包含了函数之间的执行顺序和控制关键字。动态路径是由一系列的桩点数据流组成的,包含函数的起始桩点、结束桩点和控制逻辑 关键字的真假桩点值。
覆盖率:覆盖率是用来度量测试完整性的一个手段,通过覆盖率数据,可以知道测试工作是否充分,测试的弱点在哪些方面,进而指导设计能够增加覆盖率的测试用例,有效地提高测试质量。覆盖率中最常见的是代码覆盖率,而路径覆盖是代码覆盖方法里一种非常严格的覆盖准则。
在实际代码测试中,一个较为复杂的程序包含的路径数目是相当庞大的,要完全达到路径覆盖是不可行的,实现自动化路径覆盖也是困难的。传统路径覆盖方法涉及的路径集庞大,且其针对每条路径至少测试一次的测试方法只停留在理论阶段,存在很大缺陷,无法完全测试出每条路径的问题。
为解决上述问题,文档《基于函数调用的路径覆盖生成技术研究》(张志华,牟永敏.基于函数调用的路径覆盖生成技术研究[J].电子学报,2010,38(8):1808-1811)提出了基于函数调用路径思想,文中给出了静态、动态分析函数调用路径覆盖率的大体思路,但是并未对具体实现做详细的说明。本发明继承了函数调用路径思想,提出了一种适用于白盒回归测试的动态跟踪、分析测试用例覆盖率的方法及装置。
发明内容
本发明所要解决的技术问题是提供一种基于函数调用路径的覆盖率动态跟踪方法及装置,用于解决传统路径覆盖方法的路径集庞大且无法完全测试每条路径的问题。
本发明解决上述技术问题的技术方案如下:一种基于函数调用路径的覆盖率动态跟踪方法,包括:
步骤1,对被测源代码进行插桩预处理,得到函数对象列表和控制关键字对象列表;
步骤2,获取源代码的函数调用基本路径集;
步骤3,执行测试用例,并运行经步骤1插桩后的源代码,获得由源代码的执行路径的桩点数据流组成的动态路径;
步骤4,根据函数对象列表和控制关键字对象列表提供的信息,对步骤3获得的动态路径进行拆分,得到测试用例所覆盖的函数调用路径子集;
步骤5,将函数调用路径子集与函数调用基本路径集进行匹配,确保函数调用路径子集是属于函数调用基本路径集的子集;
步骤6,将所有函数调用路径子集作为一个动态路径集,优化该动态路径集;
步骤7,计算优化后的动态路径集占函数调用基本路径集的比率,得到覆盖率。
本发明的有益效果是:本发明提出了基于函数调用的路径覆盖生成技术,将路径覆盖粒度由语句扩展到函数级别,避免路径的爆炸式增长,在保证充分单元测试的前提下,避免了传统路径覆盖路径集庞大而无法完全测试每条路径的问题,有利于提高自动化测试的可行性。同时,本发明对动态路径集进行了优化,再得出测试用例基于函数调用路径的覆盖率,基于覆盖率分析出未被覆盖的函数调用路径集,有利于指导测试人员针对未被覆盖的函数调用路径设计测试用例。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述步骤1具体包括:
步骤11,选择插桩点;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京信息科技大学;牟永敏,未经北京信息科技大学;牟永敏许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310379892.6/2.html,转载请声明来源钻瓜专利网。