一种单元测试中软件故障自动定位方法

文档序号:6366189阅读:585来源:国知局
专利名称:一种单元测试中软件故障自动定位方法
技术领域
本方法涉及软件测试中的故障定位技术,尤其涉及一种单元测试中软件故障自动定位方法,通过执行测试用例,根据执行结果与预期的测试结果是否一致,对软件中存在的故障进行自动定位。
背景技术
软件故障是一种动态行为,出现软件故障时若无适当措施加以及时处理,便会产生软件失效。单元测试中尽可能早的发现和排除尽可能多的故障,便会减少和避免后期浪费太多的不值得的时间。目前关于软件故障定位技术的研究,大多是根据执行结果是否通过,以程序语句作为覆盖节点进行统计分析。当程序代码较多时,语句分析的计算量较大,造成大量时间耗 费,且未考虑故障的传播对定位的干扰,影响故障定位的准确率。

发明内容
有鉴于此,本发明的主要目的在于提供一种单元测试中软件故障自动定位方法,以克服现有软件故障定位方法中以语句节点为覆盖单位、计算量大而且没有考虑到语句节点之间的联系的缺陷,降低语句分析的计算工作量,并且考虑到语句节点之间的逻辑关系,提闻故障定位的效率。为达到上述目的,本发明的技术方案是这样实现的
一种单元测试中软件故障自动定位方法,该方法包括
A、采用一组满足覆盖需求的测试用例,执行被测程序,判断测试用例的执行结果是否和预期结果一致;
B、根据各测试用例对应的执行路径,分析路径上的边信息,确定由路径上的边组成的可疑空间;
C、统计可疑空间中各条边被通过和未通过的测试用例覆盖的次数,计算指定执行模式下,各条边的可疑度;
D、由上述步骤得到的边的可疑度计算其相邻语句节点的可疑度;
E、根据相邻语句节点的可疑度大小对故障节点进行排序,并依次映射到被测程序中生成故障定位报告,辅助用户检查故障。其中所述步骤A包括
Al、基于两种执行模式进行故障定位,分别是全用例执行模式和部分用例执行模式;
A2、采用全用例执行模式时,将一组测试用例全部执行,根据执行结果是否和预期一致,将用例划分为互不相容的两部分,即通过的测试用例和未通过的测试用例,并记录对应执行路径包含的边信息;
A3、采用部分用例执行模式时,随机选择测试用例集合中的某个用例开始执行,判断执行结果是否和预期结果一致,直到有测试用例的执行结果和预期不一致时停止测试,将此时执行过的测试用例分为两部分,即前m个通过的测试用例和第m+1个未通过的测试用例,获取对应的执行路径;
A4、执行结果包括如下内容函数具有返回值,记录其返回结果;关键的中间变量和全局变量,记录其返回值;含有文件操作时,记录生成的文件目录和内容信息;含有数据库操作时,记录生成的数据库目录和内容信息。所述步骤B包括
BI、可疑空间由指定执行模式下某些测试用例对应的执行路径包含的边组成,是判断故障发生的最大范围,取可疑空间的边进行后续步骤的可疑度计算,不同的执行模式,可疑空间则不同。其中,所述步骤BI进一步包括
Biu全用例执行模式下,所有未通过的测试用例对应的执行路径包含的边集合一定存 在故障,将此作为最大的可疑空间,用来进行该执行模式在后面步骤的可疑度计算;
B12、部分用例执行模式下,第m+l个未通过的测试用例对应的执行路径一定存在故障,将此路径上的边集合作为该执行模式下的可疑空间;
所述步骤C包括
Cl、全用例执行模式下,遍历可疑空间,统计出覆盖了边ft.的测试用例的个数,结合通过和未通过的测试用例总个数,采用Tarantula方法对边计算可疑度,计算如下
NcM)
Nf
suspicious degree(g.) = —~——
1 Nfigj) [
Nf Nv
其中:Nf为所有未通过的测试用例个数;
N,为所有通过的测试用例个数;
NeM为通过的测试用例中,其对应的执行路径包含了边@的用例个数;
NeM)为未通过的测试用例中,其对应的执行路径包含了边@.的用例个数;
C2、部分用例执行模式下,对步骤B12得到的可疑空间,即未通过的测试用例对应的执行路径上的边集合遍历,统计前m个通过的测试用例中,覆盖了指定边的用例个数,利用下面公式计算其可疑度
suspicious deg me (g.) = I - ■■■■■■■■■■■■■■■■■■■■■■■;
'1 Nv
其中,e,为第m+i个测试用例对应的执行路径上的某条边;
N,为所有通过的测试用例个数;
权利要求
1.一种单元测试中软件故障自动定位方法,其特征在于,该方法包括 A、采用一组满足覆盖需求的测试用例,执行被测程序,判断测试用例的执行结果是否和预期结果一致; B、根据各测试用例对应的执行路径,分析路径上的边信息,确定由路径上的边组成的可疑空间; C、统计可疑空间中各条边被通过和未通过的测试用例覆盖的次数,计算指定执行模式下,各条边的可疑度; D、由上述步骤得到的边的可疑度计算其相邻语句节点的可疑度; E、根据相邻语句节点的可疑度大小对故障节点进行排序,并依次映射到被测程序中生成故障定位报告,辅助用户检查故障。
2.根据权利要求I所述的单元测试中软件故障自动定位方法,其特征在于,所述步骤A包括 Al、基于两种执行模式进行故障定位,分别是全用例执行模式和部分用例执行模式; A2、采用全用例执行模式时,将一组测试用例全部执行,根据执行结果是否和预期一致,将用例划分为互不相容的两部分,即通过的测试用例和未通过的测试用例,并记录对应执行路径包含的边信息; A3、采用部分用例执行模式时,随机选择测试用例集合中的某个用例开始执行,判断执行结果是否和预期结果一致,直到有测试用例的执行结果和预期不一致时停止测试,将此时执行过的测试用例分为两部分,即前m个通过的测试用例和第m+1个未通过的测试用例,获取对应的执行路径; A4、执行结果包括如下内容函数具有返回值,记录其返回结果;关键的中间变量和全局变量,记录其返回值;含有文件操作时,记录生成的文件目录和内容信息;含有数据库操作时,记录生成的数据库目录和内容信息。
3.根据权利要求I所述的单元测试中软件故障自动定位方法,其特征在于,所述步骤B包括 BI、可疑空间由指定执行模式下某些测试用例对应的执行路径包含的边组成,是判断故障发生的最大范围,取可疑空间的边进行后续步骤的可疑度计算,不同的执行模式,可疑空间则不同。
4.根据权利要求I所述的单元测试中软件故障自动定位方法,其特征在于,所述步骤BI进一步包括 Biu全用例执行模式下,所有未通过的测试用例对应的执行路径包含的边集合一定存在故障,将此作为最大的可疑空间,用来进行该执行模式在后面步骤的可疑度计算; B12、部分用例执行模式下,第m+l个未通过的测试用例对应的执行路径一定存在故障,将此路径上的边集合作为该执行模式下的可疑空间。
5.根据权利要求I所述的单元测试中软件故障自动定位方法,其特征在于,所述步骤C包括 Cl、全用例执行模式下,遍历可疑空间,统计出覆盖了边ft.的测试用例的个数,结合通过和未通过的测试用例总个数,采用Tarantula方法对边计算可疑度,计算如下
6.根据权利要求I所述的单元测试中软件故障自动定位方法,其特征在于,所述步骤D包括 D1、全用例执行模式下,对所有未通过的测试用例对应的执行路径包含的边的相邻节点进行分析,取节点的所有入边可疑度的最大值与所有出边可疑度的最大值的平均值,作为该节点的可疑度; D2、部分用例执行模式下,对未通过的测试用例对应的执行路径上的边的相邻节点进行分析,取节点的入边可疑度与出边可疑度的平均值,作为该节点的可疑度; D3、对于只有出边或者只有入边的节点(比如程序入口节点或程序出口节点),其出边可疑度或入边可疑度作为该节点可疑度;对于控制流图上没有统计到的节点,可疑度记为零。
7.根据权利要求I所述的单元测试中软件故障自动定位方法,其特征在于,所述步骤E包括 E1、故障定位报告,包含以下内容对语句节点按照上述步骤得到的节点可疑度数值大小进行排序,每ー项包括节点可疑度数值,节点名称和标号,节点对应在被测程序中的语句行号;E2、毎次取可疑度最高的节点,映射到被测程序中的语句,将语句用高亮颜色显示,便于用户检查,直到 找出故障位置。
全文摘要
本发明提供了一种单元测试中软件故障自动定位方法,包括A、采用一组满足覆盖需求的测试用例,执行被测程序,判断测试用例的执行结果是否和预期结果一致;B、根据各测试用例对应的执行路径,分析路径上的边信息,确定由路径上的边组成的可疑空间;C、统计可疑空间中每条边被通过和未通过的测试用例覆盖的次数,计算指定执行模式下,每条边的可疑度;D、由边的可疑度计算其相邻语句节点的可疑度;E、按照可疑度的大小对故障节点进行排序,并依次映射到被测程序中生成故障定位报告,辅助用户检查故障。采用本方法,能够降低语句分析的计算工作量,并且考虑到语句节点之间的逻辑关系,提高故障定位的效率。
文档编号G06F11/36GK102708052SQ20121012777
公开日2012年10月3日 申请日期2012年4月27日 优先权日2012年4月27日
发明者唐容, 宫云战, 王雅文, 蔡敏, 金大海, 韩春晓, 黄俊飞 申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1