[发明专利]一种单元测试中软件故障自动定位方法有效
申请号: | 201210127772.2 | 申请日: | 2012-04-27 |
公开(公告)号: | CN102708052B | 公开(公告)日: | 2017-10-20 |
发明(设计)人: | 王雅文;宫云战;韩春晓;黄俊飞;金大海;唐容;蔡敏 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京汇泽知识产权代理有限公司11228 | 代理人: | 刘淑敏 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 单元测试 软件 故障 自动 定位 方法 | ||
技术领域
本方法涉及软件测试中的故障定位技术,尤其涉及一种单元测试中软件故障自动定位方法,通过执行测试用例,根据执行结果与预期的测试结果是否一致,对软件中存在的故障进行自动定位。
背景技术
软件故障是一种动态行为,出现软件故障时若无适当措施加以及时处理,便会产生软件失效。单元测试中尽可能早的发现和排除尽可能多的故障,便会减少和避免后期浪费太多的不值得的时间。
目前关于软件故障定位技术的研究,大多是根据执行结果是否通过,以程序语句作为覆盖节点进行统计分析。当程序代码较多时,语句分析的计算量较大,造成大量时间耗费,且未考虑故障的传播对定位的干扰,影响故障定位的准确率。
发明内容
有鉴于此,本发明的主要目的在于提供一种单元测试中软件故障自动定位方法,以克服现有软件故障定位方法中以语句节点为覆盖单位、计算量大而且没有考虑到语句节点之间的联系的缺陷,降低语句分析的计算工作量,并且考虑到语句节点之间的逻辑关系,提高故障定位的效率。
为达到上述目的,本发明的技术方案是这样实现的:
一种单元测试中软件故障自动定位方法,该方法包括:
A、采用一组满足覆盖需求的测试用例,执行被测程序,判断测试用例的执行结果是否和预期结果一致;
B、根据各测试用例对应的执行路径,分析路径上的边信息,确定由路径上的边组成的可疑空间;
C、统计可疑空间中各条边被通过和未通过的测试用例覆盖的次数,计算指定执行模式下,各条边的可疑度;
D、由上述步骤得到的边的可疑度计算其相邻语句节点的可疑度;
E、根据相邻语句节点的可疑度大小对故障节点进行排序,并依次映射到被测程序中生成故障定位报告,辅助用户检查故障。
其中:所述步骤A包括:
A1、基于两种执行模式进行故障定位,分别是全用例执行模式和部分用例执行模式;
A2、采用全用例执行模式时,将一组测试用例全部执行,根据执行结果是否和预期一致,将用例划分为互不相容的两部分,即通过的测试用例和未通过的测试用例,并记录对应执行路径包含的边信息;
A3、采用部分用例执行模式时,随机选择测试用例集合中的某个用例开始执行,判断执行结果是否和预期结果一致,直到有测试用例的执行结果和预期不一致时停止测试,将此时执行过的测试用例分为两部分,即前m个通过的测试用例和第m+1个未通过的测试用例,获取对应的执行路径;
A4、执行结果包括如下内容:函数具有返回值,记录其返回结果;关键的中间变量和全局变量,记录其返回值;含有文件操作时,记录生成的文件目录和内容信息;含有数据库操作时,记录生成的数据库目录和内容信息。
所述步骤B包括:
B1、可疑空间由指定执行模式下某些测试用例对应的执行路径包含的边组成,是判断故障发生的最大范围,取可疑空间的边进行后续步骤的可疑度计算,不同的执行模式,可疑空间则不同。
其中,所述步骤B1进一步包括:
B11、全用例执行模式下,所有未通过的测试用例对应的执行路径包含的边集合一定存在故障,将此作为最大的可疑空间,用来进行该执行模式在后面步骤的可疑度计算;
B12、部分用例执行模式下,第m+1个未通过的测试用例对应的执行路径一定存在故障,将此路径上的边集合作为该执行模式下的可疑空间;
所述步骤C包括:
C1、全用例执行模式下,遍历可疑空间,统计出覆盖了边的测试用例的个数,结合通过和未通过的测试用例总个数,采用Tarantula方法对边计算可疑度,计算如下:
其中:为所有未通过的测试用例个数;
为所有通过的测试用例个数;
为通过的测试用例中,其对应的执行路径包含了边的用例个数;
为未通过的测试用例中,其对应的执行路径包含了边的用例个数;
C2、部分用例执行模式下,对步骤B12得到的可疑空间,即未通过的测试用例对应的执行路径上的边集合遍历,统计前m个通过的测试用例中,覆盖了指定边的用例个数,利用下面公式计算其可疑度:
;
其中,为第m+1个测试用例对应的执行路径上的某条边;
为所有通过的测试用例个数;
为通过的测试用例中,其对应的执行路径包含了边的用例个数。
所述步骤D包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210127772.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:程序路径中确定函数调用的上下文环境影响的方法
- 下一篇:一种电箱挂锁防护装置