当前位置: 首页 > 专利查询>浙江大学专利>正文

一种程序路径的层次化匹配方法、装置、设备及存储介质制造方法及图纸

技术编号:37983442 阅读:12 留言:0更新日期:2023-06-30 09:58
本发明专利技术公开了一种程序路径的层次化匹配方法、装置、设备及存储介质。本发明专利技术的方法首先对被测程序进行静态分析,创建并遍历控制流程图,搜索出所有路径。其次分割路径为最小子路径,并放入最小子路径库,组合子路径,建立循环节点库。然后得出循环产生式,以表示循环节点,建立路径标准库。最后搜集执行路径进行路径匹配与结果分析。本发明专利技术的装置包括静态分析模块、搜索路径模块、建立库模块与路径匹配分析模块。本发明专利技术的设备包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序。本发明专利技术满足了不同强度下的覆盖要求,并且在标准路径中表示循环次数不确定的情况,同时支持不确定次数的执行路径与路径标准库中的路径进行匹配。行匹配。行匹配。

【技术实现步骤摘要】
一种程序路径的层次化匹配方法、装置、设备及存储介质


[0001]本专利技术属于计算机信息处理与软件工程测试领域,特别涉及一种程序路径的层次化路径匹配方法、装置、设备及存储介质。

技术介绍

[0002]软件生命周期是指从软件的产生直到报废的过程,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试、测试、验收、运行、维护升级到废弃等阶段。在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。衡量软件测试完备性的指标往往是各种层面上的代码覆盖率,其中路径覆盖是一种较为严密的覆盖指标,可以显示程序在经过测试后,程序路径被覆盖的情况。
[0003]在软件测试中,满足路径覆盖的软件测试要保证程序中每条路径都被覆盖。这就要求测试人员首先要知道程序运行了哪些路径,还有哪些路径未被覆盖。因此,匹配程序的执行路径与程序的标准路径是一项必要的工作。然而,由于程序控制流的复杂性与多样性,尤其是循环结构的存在,使得程序路径匹配出现了一些缺陷。
[0004]程序中的循环结构往往会提升程序的复杂度。如图1的单循环控制流图所示,由于循环次数的不确定性,使得程序标准路径的表示以及执行路径与标准路径的匹配都较为困难。而真实的程序中也经常会出现如图3与图4中的串行循环与嵌套循环结构,这些结构会使程序更加复杂。目前,业内采用圈复杂度来表示程序路径的个数,这种表示方式是在程序对应的控制流图中,计算节点个数N与边的个数E,圈复杂度的数值V=E

N+2。
[0005]由于圈复杂度表示的其实是程序中分支的个数,因此,其路径定义为:如果此路径中路过的所有分支中,有任何一条分支是之前所有路径都未单独路过的,该路径就是一条新的路径。通过静态分析得到所有的程序路径,放入标准路径库中。传统的路径匹配方式严格对比执行路径与标准路径的元素序列(此处的元素指构成路径的最小单位。例如,语句,程序块等),只有执行路径与标准路径中的元素相同,元素个数与顺序也相同,才视为路径匹配成功。但这样的匹配方式存在一些问题。例如,图2所示的程序流图中,有两条标准路径:“entry

b1

b2

b3

b5

b6

b1

b7

exit”与“entry

b1

b2

b4

b5

b6

b1

b7

exit”这两条路径后(分别记作路径a与路径b),若执行路径为“entry

b1

b2

b3

b5

b6

b1

b2

b4

b5

b6

b1

b7

exit”(记作路径c),执行路径将不能与路径标准库中的路径匹配,即使将路径c拆分后匹配,也很难说是与路径a或是路径b匹配,或是都匹配到了。为了解决这个问题,许多路径准则被提出,部分常用准则如表1所示。路径准则是用于规定标准路径的法则,然而,只要执行路径与标准路径的匹配仍然采用传统的路径匹配方式,无论采用哪种准则,都会存在某些执行路径难以匹配的缺陷。
[0006]表1路径准则与匹配方法缺陷
[0007][0008]本专利技术提出的路径匹配方式可以解决以上问题,以便更好地完成软件测试中例如用例生成或bug定位等任务。

技术实现思路

[0009]针对以上问题,本专利技术提出了一种层次化的路径匹配方法、装置、设备及存储介质,目的是允许测试人员根据测试需求灵活指定路径覆盖标准,并方便地将执行路径与标准路径进行匹配,以分析路径覆盖情况。以便更好地完成例如测试用例生成或bug定位等软件测试任务。
[0010]根据本专利技术的第一方面,一种程序路径的层次化路径匹配方法的技术方案为如下几个步骤:
[0011]S1,对被测程序进行静态分析,创建相应的控制流程图。
[0012]S2,遍历控制流图,搜索出所有路径。
[0013]所述路径的条数等于该程序的圈复杂度,即,对于每一个循环,只考虑“进循环”与“不进循环”两种情况下的路径区别,而不考虑循环次数。
[0014]S3,建立最小子路径库。
[0015]分割步骤2中的路径为最小子路径,将所有最小子路径放入最小子路径库,建立最小子路径库。
[0016]S4,组合子路径,建立循环节点库。
[0017]程序中每一个循环均是一个循环节点。每个循环节点可替代表示该循环内所有路径,即以该循环入口为起点,以该循环出口为终点的任意一条路径。这些路径均是由至少一条最小子路径串接而成的。
[0018]S5,得出循环产生式,以表示循环节点。
[0019]为了方便执行路径与标准路径的匹配,循环节点需要由最小子路径的序列来表示,若该循环节点内嵌套有其它循环节点,则内部的循环节点与最小子路径共同表示该循环节点。产生式就是说明该循环节点由哪些路径表示的式子,在该步骤上,列出每个循环节点的所有产生式。
[0020]S6,建立路径标准库。
[0021]路径标准库的建立依据是针对路径的覆盖强度需求。不同的需求下,路径标准库中的路径也不同,以满足特定覆盖需求。
[0022]S7,搜集执行路径。
[0023]将该程序的所有执行路径放入执行路径集合。此处的执行路径由控制流图中的基本快序列表示。
[0024]S8,路径匹配与结果分析。
[0025]在执行路径中从前向后搜索,以最小子路径为搜索单位,将执行路径表示为最小子路径序列;利用循环节点的产生式,转化执行路径中循环多次的部分;将转化后的执行路径与路径标准库中的路径进行匹配;最后计算路径覆盖率等指标,分析被测程序的路径覆盖情况。
[0026]根据本专利技术的第二方面,提出了一种程序路径的层次化路径匹配的装置,包括:
[0027]静态分析模块,用于对被测程序进行静态分析,创建相应的控制流程图。
[0028]搜索路径模块,用于遍历控制流图,搜索出所有路径。
[0029]建立库模块,用于将搜索出的路径分割为最小子路径,并放入最小子路径库,建立子路径库,并组合子路径,建立循环节点库,最后依据路径的覆盖强度需求,建立路径标准库。
[0030]路径匹配分析模块,用于将该程序的所有执行路径放入执行路径集合,进行路径匹配;并分析被测程序的路径覆盖情况。
[0031]根据本专利技术的第三方面,提出了一种程序路径的层次化路径匹配的设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现上述所述的程序路径的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序路径的层次化路径匹配方法,其特征在于包括如下步骤:S1,对被测程序进行静态分析,创建相应的控制流程图;S2,遍历控制流图,搜索出所有路径;S3,分割步骤S2中的路径为最小子路径,将所有最小子路径放入最小子路径库,建立最小子路径库;S4,组合子路径,建立循环节点库;S5,得出循环产生式,以表示循环节点;S6,针对路径的覆盖强度需求,建立路径标准库;S7,搜集执行路径,将该程序的所有执行路径放入执行路径集合;S8,路径匹配与结果分析;在执行路径中从前向后搜索,以最小子路径为搜索单位,将执行路径表示为最小子路径序列;利用循环节点的产生式,转化执行路径中循环多次的部分;将转化后的执行路径与路径标准库中的路径进行匹配;计算路径覆盖率,分析被测程序的路径覆盖情况。2.根据权利要求1所述的一种程序路径的层次化路径匹配方法,其特征在于:在步骤S2中,所述路径的条数等于该程序的圈复杂度。3.根据权利要求2所述的一种程序路径的层次化路径匹配方法,其特征在于:对于每一个循环,只考虑“进循环”与“不进循环”两种情况下的路径区别,而不考虑循环次数。4.根据权利要求1所述的一种程序路径的层次化路径匹配方法,其特征在于:在步骤S4中,程序中每一个循环均是一个循环节点。5.根据权利要求4所述的一种程序路径的层次化路径匹配方法,其特征在于:所述每个循环...

【专利技术属性】
技术研发人员:郭中豪陈祥献许馨月王志豪陈思农
申请(专利权)人:浙江大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1