基于函数调用路径准则的测试充分性获取方法

文档序号:10724802阅读:198来源:国知局
基于函数调用路径准则的测试充分性获取方法
【专利摘要】本发明提供一种基于函数调用路径准则的测试充分性获取方法,包括:步骤1、采用GQM范式确定测试准则充分性度量指标体系中的指标;步骤2、采用数据包络分析方法作为指标体系中的决策方法,对多个测试准则的测试充分性进行计算和比较。
【专利说明】
基于函数调用路径准则的测试充分性获取方法
技术领域
[0001] 本发明涉及计算机技术领域,尤其涉及一种基于函数调用路径准则的测试充分性 获取方法。
【背景技术】
[0002] 软件测试的质量决定了软件系统是否能够按照需求可靠运行,在测试过程中运用 不同的测试准则得到的测试效果也各不相同,而软件测试充分性是检验软件测试准则优劣 的唯一标准。基于函数调用路径准则,将路径覆盖的分析粒度由语句扩展到函数级别,不仅 使测试工作量成指数降低,同时保证了测试效果。
[0003] 在软件测试中,测试人员应该将软件的输入域中所有的组合进行测试,但这是耗 时耗力不可能实现的。实际测试过程中,测试人员通过选择软件输入域中的一部分子集进 行测试来保障软件的质量,这就是研究测试准则充分性的原因。随后,各个学者在软件测试 的不同阶段和层次中提出了各种各样的测试准则;人们常常在众多的测试准则中难以取 舍。而测试准则之间的比较为测试准则的选择提供了帮助。
[0004] 目前国内外学者针对测试准则的充分性比较提出了很多评判方法。参考文献2中 提出了一种测试准则之间的关系一subsume关系,实际上是通过测试用例集之间的包含关 系来表示测试准则之间的subsume关系。参考文献3中用输入域划分和概率论这两种方法证 明了测试准则之间的subsume关系并不等价于它们的揭错能力。参考文献4提出一种可以揭 示各个测试准则之间揭错能力大小的关系一properly cover。但是这种关系并没有通用 的方法,不能对所有的测试准则进行比较。参考文献5提出了测试准则应在揭错能力、软件 可靠性、测试开销这三个方面进行比较,并将范畴划分测试中的三个测试准则在这三个方 面进行了比较和分析。
[0005] 以上的几种评判标准并没有给出一种定量比较测试准则的方法,也没有考虑软件 测试中对功能覆盖的需求。参考文献6建立了软件充分性度量指标体系和模糊决策模型,定 量计算了软件测试的充分性。参考文献6中建立的是针对整个测试流程的度量指标体系,其 中很多指标不能作为测试准则的充分性的评判因素,如代码走查等。但是其度量指标体系 不尽如人意,导致最终评价结果不够精确。

【发明内容】

[0006] 针对现有技术中的测试准则的充分性的获取方法存在的问题,本发明要解决的技 术问题是提供一种基于函数调用路径准则的测试充分性获取方法。
[0007] 为了解决上述问题,本发明实施例提出了一种基于函数调用路径准则的测试充分 性获取方法,包括:
[0008] 步骤1、采用GQM范式确定测试准则充分性度量指标体系中的指标;
[0009] 步骤2、采用数据包络分析方法作为指标体系中的决策方法,对多个测试准则的测 试充分性进行计算和比较。
[0010]其中,所述步骤1具体包括:
[0011]步骤11、确定计算机软件测试规范的软件测试的目的:验证软件的实现和需求设 计是否一致;软件缺陷;为软件质量的测量和评价提供依据;
[0012]步骤12、确定与所述测试的目的相对应的软件测试时的度量元:
[0013 ]测试用例对功能点的覆盖情况,对应的度量元为功能点用例覆盖率;
[0014] 测试用例的执行效率,对应的度量元为测试用例的执行效率的度量元:测试用例 集的大小、测试时间、测试用例的揭错率、语句覆盖率、分支覆盖率;
[0015] 采用测试准则测试后软件可靠性,对应的度量元为可靠性。
[0016] 其中,对于可靠性,采用以下公式的J-M模型来进行测试:
[0017] R(t)=e-Φ(Μ-i+1) (1)
[0018] 其中Μ代表软件初始时错误的总数,i代表已经发现并解决的错误的个数,0代表发 现的错误个数和软件失败的概率按规律递减的常数。
[0019] 其中,包括:
[0020]测试用例集的大小、测试时间为负向指标,指标的值越小则测试准则的测试充分 性越尚;
[0021]功能点用例覆盖率、测试用例的揭错率、语句覆盖率、分支覆盖率、可靠性为正向 指标,指标的值越大则测试准则的测试充分性越高。
[0022]其中,所述步骤2具体包括:
[0023]步骤21、确定构建DEA模型的投入-产出为:以指标体系中的负向指标为模型的投 入,且正向指标为模型的产出;
[0024]步骤22、针对每一待测试的测试准则DMU,确定其测试用例的个数%和测试时间V2 作为输入,并确定其功能点用例覆盖率山、测试用例的揭错率U2、语句覆盖率U3、分支覆盖率 U4、可靠性U5作为输出;
[0025]步骤23、通过以下公式计算第j个测试准则的DMUj的充分性可表示为:
[0027] 其中,第m项指标的输入为Xmj,第i项指标的输出为Yi^DMUj的输入输出向量分别表 示为Xj = (Xij,X2j)T,Yj = (Yij,Y2j,,2, ···,!!);其中(山, U2,…,U5)T;
[0028] 步骤24、确定适当的权重Um和Vi,使Ej< 1,j = 1,2,…,n;则DMU0的相对充分性模型 为:
[0030] 其中对DMUo进行评价,Xo代表DMUo的输入,Yo代表DMUo的输出,
[0031]步骤25、求解公式3的上述模型,获得\以及Θ值;Θ代表测试准则的测试充分性;当 Θ = 1时,表明DMUo测试准则相对充分,当θ〈 1时,表明DMUo测试准则相对无效。
[0032]本发明的上述技术方案的有益效果如下:上述方案中提出了一种测试充分性的评 价方法,建立了一种测试准则的度量指标体系并应用DEA模型来定量比较各个准则的测试 充分性。本发明实施例能够通过可信的实验来说明基于函数调用路径准则相较于其他覆盖 准则既具有良好的测试效率又保证了软件的可靠性,是一种充分性比较高的测试准则。然 而,测试准则的测试充分性度量仍存在着不足。度量指标体系中并没有考虑到测试准则对 回归测试的影响。基于函数调用路径准则在软件测试中的优越性应在不同的类型的程序中 进行验证,如嵌入式程序,web程序等。
【附图说明】
[0033]图1为本发明实施例中的一个示例性的源代码;
[0034] 图2为根据图1中的源代码生成的函数调用图;
[0035] 图3为根据图1中的源代码生成的源程序分支图。
【具体实施方式】
[0036] 为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具 体实施例进行详细描述。
[0037] 首先对本发明实施例中所使用概念进行说明以便于理解:
[0038] 函数调用路径:请见参考文献8,在此不再赘述。
[0039] 软件测试准则:请见参考文献9,在此不再赘述。
[0040] 测试用例的揭错率:即利用测试准则生成的测试例进行测试后发现错误数占总 错误数的比例;假设软件初始时共有Μ个错误,根据特定的测试准则生成测试用例集T,运行 Τ后发现了 Ν个错误,测试用例的揭错率为Ν/Μ。
[0041] 功能点用例覆盖率:即利用测试准则生成的测试例进行测试后覆盖的功能点占总 功能点的比例;采用假设软件中有Α个功能点,测试用例集Τ运行将覆盖Β个功能点,功能点 用例覆盖率为B/A。
[0042]本发明实施例的方法包括:
[0043]步骤1、确定测试准则充分性度量指标体系中的指标;
[0044]本发明实施例中采用GQM范式来寻找指标体系中的指标。参考文献GQM范式将研究 的目标分解成可计算的指标,是一种面向目标的度量方法[10] AQM范式主要有三个层次: 目标-问题-度量元。
[0045] 研究软件准则的测试充分性实际上是研究采用特定准则的软件测试的充分性。计 算机软件测试规范给出了软件测试的三个目的如下:
[0046] 1)验证软件的实现和需求设计是否一致;
[0047] 2)通过测试,发现软件缺陷;
[0048] 3)为软件质量的测量和评价提供依据。
[0049] 在利用测试准则进行软件测试时,上述的三个目的对应的问题分别为:
[0050] 1)测试用例对功能点的覆盖情况如何(U1)?该问题对应的度量元为功能点用例覆 盖率(A) 〇
[0051] 2)测试用例的执行效率如何(U2)?该问题对应的度量元为测试用例的执行效率在 于花费少量时间和测试用例,覆盖更多代码,发现较多错误。U2的度量元:测试用例集的大 小(B)、测试时间(C)、测试用例的揭错率(D)、语句覆盖率(E)、分支覆盖率(F)。
[0052] 3)采用测试准则测试后,软件可靠性如何(U3)?该问题对应的度量元为可靠性 (G)。软件的可靠性是一种模糊的概念,人们提出了各种各样的可靠性模型对它进行定量计 算。软件的可靠性模型主要分为两种类型。一种是黑盒评估,通过软件测试过程中收集的 数据进行预测;另一种是白盒评估,将程序看成组件的集合,对其进行综合分析,请参见参 考文献11。本发明实施例中主要研究依据测试准则测试后的软件可靠性,所以软件的可靠 性希望依赖软件测试结果得到而不是程序的内部结构。本发明实施例中采用黑盒评估的方 式对软件的可靠性进行定量计算,采用Jelinski-Moranda(J-M)模型。该模型的可靠性计算 公式为
[0053] R(t)=e-Φ(Μ-i+1) (1)
[0054] 其中Μ代表软件初始时错误的总数,i代表已经发现并解决的错误的个数,#代表发 现的错误个数和软件失败的概率按规律递减的常数。
[0055] 在基于测试准则充分性度量指标体系中,测试用例集的大小(B)、测试时间(C)指 标的值越小则测试准则的测试充分性越高,属于负向指标;功能点用例覆盖率(A)、测试用 例的揭错率(D)、语句覆盖率(E)、分支覆盖率(F)、可靠性(G)指标的值越大则测试准则的测 试充分性越高,属于正向指标。
[0056] 4决策方法的选取
[0057]目前综合评价中有许多决策方法,但其中都涉及到权重,权重的获取总会带有一 些主观因素。本发明实施例中使用数据包络分析(DEA)方法,它最主要的优点是不需要在指 标体系中假设任何权重,是一种比较客观的决策方法。
[0058] 数据包络分析是一种多目标决策方法,请参见参考文献12,它用来衡量目标之间 的相对效率。采用某种测试准则生成测试用例测试源程序的过程可看成一个投入产出的过 程:投入一定大小的测试用例集和一定的时间得到软件的可靠性,功能覆盖情况,找到代码 中的缺陷等。
[0059] DMU是评价的对象,它代表着将投入转换成输出的实体,参见参考文献13。软件的 测试准则具有相同的目标,相同的测试环境因此可看成是一组DMU。
[0060] 4.1建立基于测试准则充分性度量指标的DEA模型
[0061] 构建DEA模型先要确定模型中的投入-产出。在基于测试准则充分性度量指标的 DEA|旲型中,将上述指标体系中的负向指标作为t旲型的投入,将正向指标作为t旲型的广出。 则构建DEA模型中的投入-产出,见表1。
[0062] 表1 DEA模型中的投入-产出
[0064] 假设需要比较η个测试准则的测试充分性,每个测试准则记为DMU。已知每个DMU有 测试用例的个数和测试时间这2种指标作为输入,功能点用例覆盖率、测试用例的揭错率、 语句覆盖率、分支覆盖率、可靠性这5种指标作为输出。设第j个测试准则的第m项指标的输 入为X mj,第i项指标的输出为YihDMUj的输入输出向量分别表示为Χ」= (Χυ,Χ2」)τ,Υ」= (Υυ, Y2j,···,Y5j)T,( j = l,2,…,η);各个指标的权,见表2。
[0065] 表2指标的权
[0067]设V = (h,V2 )T,U = (U!,U2,…,U5)τ,则DMUj 的充分性可表示为:
[0069] 选取适当的权重UjPVi,使Ej彡1,j = 1,2,…,η。如果对DMUo进行评价,设Xo代表 DMUo的输入,Yo代表DMUo的输出,则DMU0的相对充分性模型为:
[0071 ] 求解上述模型,可获得λ」以及Θ值。Θ代表测试准则的测试充分性。当Θ = 1时,表明 DMUo测试准则相对充分,当θ〈 1时,表明DMUo测试准则相对无效。
[0072] 4.2收集信息方法
[0073]收集的信息包括43,(:,0 4^指标的值。下面通过函数调用路径准则收集信息 的例子介绍收集信息的方法。
[0074] 4.2.1功能点用例覆盖率
[0075]得到功能点用例覆盖率,首先从需求文档或者开发文档中获得总的功能点个数。 然后收集测试用例覆盖的功能点个数。
[0076] 参考文献14中认为每个函数为一个功能点,函数调用路径可以理解为系统功能路 径。每条系统功能路径对应了一个系统功能.因此测试用例覆盖的功能点数,可以通过插粧 的方法运行测试用例,计算测试用例执行的函数调用路径数获得。例如要求设计2个功能: 求和(F1)和取平均数(F2)。源程序设计如图1;则根据源程序生成函数调用图如图2所示。
[0077] 图2函数调用图
[0078]根据图2获得三条函数调用路径集P
[0079] PI = {main->add->end}
[0080] P2= {main->average->add->end}
[0081] P3= {main->end}
[0082] 其中PI对应FI系统功能路径,P2对应F2系统功能路径。
[0083]根据P生成测试用例集T。
[0084] T1 = {choice = 1 ,result = 11}
[0085] T2= {choice = 2, result = 5}
[0086] T3= {cho ice = 3, result = 0}
[0087] 分析可得执行T1将覆盖PI路径,执行T2将覆盖P2路径,执行T3将覆盖P3路径。由此 可得到功能点用例覆盖率=覆盖的函数调用路径数/总功能点数= 2/2 = 100%。
[0088] 4.2.2测试用例大小
[0089] 测试用例的大小即T中测试用例的个数N;本发明实施例中N=3。
[0090] 4.2.3测试时间
[0091]执行T所花费的时间;本发明实施例中由具体实验获得。
[0092] 4.2.4测试用例的揭错率
[0093] 将程序的执行结果与预期结果做对比,如果一致则跳过,如果不一致则分析是否 为软件的错误。测试用例的执行结果:resultl代表测试的预期输出,result〗代表测试的实 际输出。
[0094] T1 = {choice = 1 ,resultl = 11 ,result2 = 11}
[0095] T2= {choice = 2 ,resultl = 5 ,result2 = 22}
[0096] T3= {choice = 3 ,resultl = 0 ,result2 = 0}
[0097] 经分析可得T2的预期输出和实际输出不相符。
[0098] 分析源程序中average函数
[0100] average函数本身的功能是求平均数,但是程序中却是求积。导致了程序的缺陷。 测试用例T1,测试出了这个错误;测试用例的揭错率=1/1 = 100%。
[0101] 4.2.5 代码覆盖率(E,F)
[0102] 语句覆盖率:
[0103] T1 覆盖的语句{1,2,3,4,5,6,7,8,9,14,15,16,17,18,19,20,21,22,23,24,25, 26,27,28,36,37,38,39}
[0104] Τ2 覆盖的语句{1,2,3,4,5,6,7,8,9,10,11,12,13,18,19,20,21,22,23,24,25, 29,30,31,32,37,38,39}
[0105] Τ3 覆盖的语句{1,2,3,4,5,6,7,8,9,18,19,20,21,22,23,24,25,29,33,34,35, 36,37,38,39}
[0106] 语句覆盖率:100%。
[0107] 代码中的分支如图3。
[0108] !1覆盖(311〇;^6 = 1的分支,12覆盖(311〇;^6 = 2的分支,13覆盖(311〇;^6! = 1&(311〇;^6!-2的分支。
[0109] 分支覆盖率= 3/3 = 100%。
[0110]目前有很多工具对代码覆盖率进行计算,如java中的Emma、EclEmma、C/C++测试覆 盖率工具Bui 1 seye Coverage等,这些工具都支持对语句覆盖率和分支覆盖率的计算。本发 明实施例中将使用已有的工具进行覆盖率数据信息的收集。
[0111] 4.2.6 可靠性
[0112] 计算J-M模型,模型中的0和Μ的值根据实验数据估计得出。
[0113] 5实验测评
[0114] 论文中将基于函数调用路径准则与其它几种经典的覆盖准则进行比较。其中包 括:语句覆盖准则、分支覆盖准则和条件覆盖准则。
[0115] 5.1测试程序
[0116] 本次实验将采用西门子套件作为测试的源程序。西门子套件主要被应用于对错误 定位技术中定位效果的评价[15]。西门子套件由7个程序组成,其中每个程序只包含一个错 误,而实验需要对含有多个错误的程序进行检测。所以在实验前将西门子套件中所有版本 中的错误注入到一个版本,再对这个版本进行数据收集。将收集的信息输入到Frontier Analyst中,计算出各个测试准则的相对充分性。
[0117] 5.2实验数据 实验收集的数据见表3。
[0119]表3实验数据
[0121]上述实验结果表明,基于函数调用路径准则相对于其他三个覆盖准则有较高的充 分性。
[0122] 实验结果表明,基于函数调用路径准则相较于其他覆盖准则既具有良好的测试效 率又保证了软件的可靠性,是一种充分性比较高的测试准则。论文通过建立一种测试准则 的度量指标体系并应用DEA模型来定量比较各个准则的测试充分性。然而,测试准则的测试 充分性度量仍存在着不足。度量指标体系中并没有考虑到测试准则对回归测试的影响。基 于函数调用路径准则在软件测试中的优越性应在不同的类型的程序中进行验证,如嵌入式 程序,web程序等。
[0123] 本发明实施例中引用的参考文献列表如下,本发明实施例将以下参考文献全文引 用于此:
[0124] [1]李秋英,阮镰,刘斌.软件可靠性测试充分性研究[J].测控技术.2003(11)
[0125] [2]L.A.Clarke ,A.Podgurski,D.J.Richardson,and S.J.Zeil,"A comparison of data flow path selection criteria /'in Proc. Eighth Int.Con$Sof tware Engineering, IEEE Comput.Soc.,London,England,Aug.1985,pp.244-251.
[0126] [3]Frankl P.A formal analysis of the fault-detecting ability of testing methods[J]. IEEE Trans on Software Eng,1993,19(3):202-212.
[0127] [4]P.Frankl and E.Weyuker,"Provable improvements on branch testing," IEEE Trans.Software Eng.,vol.19,no.10,October 1993.
[0128] [5]朱彬,刘玲,缪淮扣.几种范畴划分测试充分性准则的比较[J].计算机科学 ?2004(01)
[0129] [6]孙全洲,杨玲萍,张素芬.软件测试充分性模糊决策方法研究及应用[J].北京 化工大学学报(自然科学版),2007,( S1): 36-40.
[0130] [7]刘继华.软件测试的充分性准则及其评价指标[J].山西师范大学学报(自然科 学版).2012(04)
[0131] [8]MingmingYan,YongminMu,Yujie He,Ang Liu.The Analysis of Function Calling Path in Java Based on Soot.Applied Mechanics and Materials Vols.568-570(2014)ppl479-1487
[0132] [9]伦立军,丁雪梅,李英梅.数据流测试准则之间关系的研究[J].计算机工程与 应用.2005(04)
[0133] [10]李亚红,郝克刚,葛玮.基于GQM模型的软件项目进度的度量过程[J].计算机 应用.2005(06)
[0134] [11]陆文,徐锋,吕建.一种开放环境下的软件可靠性评估方法[J].计算机学报 .2010(03)
[0135] [12]李钦,杨印生,刘心报.集成AHP/DEA模型及其应用[A].计算机模拟与信息技 术会议论文集[C]. 2001
[0136] [13]柳顺,杜树新.基于数据包络分析的模糊综合评价方法[J].模糊系统与数学 .2010(02)
[0137] [14]牟永敏,杨志嘉.基于函数调用路径的软件实现与设计一致性验证[J].中国 科学:信息科学.2014( 10)
[0138] [ 15]李博.软件调试中多错误定位的算法研究[D].大连海事大学2012
[0139] 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员 来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也 应视为本发明的保护范围。
【主权项】
1. 一种基于函数调用路径准则的测试充分性获取方法,其特征在于,包括: 步骤1、采用GQM范式确定测试准则充分性度量指标体系中的指标; 步骤2、采用数据包络分析方法,对多个测试准则进行对比测试。2. 根据权利要求1所述的基于函数调用路径准则的测试充分性获取方法,其特征在于, 所述步骤1具体包括: 步骤11、确定计算机软件测试规范的软件测试的目的:验证软件的实现和需求设计是 否一致;软件缺陷;为软件质量的测量和评价提供依据; 步骤12、确定与所述测试的目的相对应的软件测试时的度量元: 测试用例对功能点的覆盖情况,对应的度量元为功能点用例覆盖率; 测试用例的执行效率,对应的度量元为测试用例的执行效率的度量元:测试用例集的 大小、测试时间、测试用例的掲错率、语句覆盖率、分支覆盖率; 采用测试准则测试后软件可靠性,对应的度量元为可靠性。3. 根据权利要求2所述的基于函数调用路径准则的测试充分性获取方法,其特征在于, 包括: 对于可靠性,采用W下公式的J-M模型来进行测试:其中Μ代表软件初始时错误的总数,i代表已经发现并解决的错误的个数,0代表发现的 错误个数和软件失败的概率按规律递减的常数。4. 根据权利要求2所述的基于函数调用路径准则的测试充分性获取方法,其特征在于, 包括: 巧m用例集的大小、测试时间为负向指标,指标的值越小则测试准则的测试充分性越 局; 功能点用例覆盖率、测试用例的掲错率、语句覆盖率、分支覆盖率、可靠性为正向指标, 指标的值越大则测试准则的测试充分性越高。5. 根据权利要求4所述的基于函数调用路径准则的测试充分性获取方法,其特征在于, 所述步骤2具体包括: 步骤21、确定构建DEA模型的投入-产出为指标体系中的负向指标为模型的投入,且 正向指标为模型的产出; 步骤22、针对每一待测试的测试准则DMU,确定其测试用例的个数Vi和测试时间V2作为 输入,并确定其功能点用例覆盖率化、测试用例的掲错率化、语句覆盖率化、分支覆盖率化、 可靠性化作为输出; 步骤23、通过W下公式计算第j个测试准则的DM&的充分性可表示为:(2) 其中,第m项指标的输入为Xmj,第i项指标的输出为YwDMU撕输入输出向量分别表示为 Xj = (Xij,X2j)T,Yj=(Yij,Y2j,...,Y已 j)T,(j = l,2,…,n);其中V=(Vi,V2)T,U=化i,U2,...,U已 )τ; 步骤24、确定适当的权重Um和Vi,使Ej《1,j = 1,2,…,η;则DMUO的相对充分性模型为:其中对DMUo进行评价,Xo代表DMUo的输入,Υο代表DMUo的输出, 步骤25、求解公式3的上述模型,获得λ拟及Θ值;Θ代表测试准则的测试充分性;当Θ = 1 时,表明DMUo测试准则相对充分,当θ< 1时,表明DMUo测试准则相对无效。
【文档编号】G06F11/36GK106095672SQ201610397166
【公开日】2016年11月9日
【申请日】2016年6月7日 公开号201610397166.0, CN 106095672 A, CN 106095672A, CN 201610397166, CN-A-106095672, CN106095672 A, CN106095672A, CN201610397166, CN201610397166.0
【发明人】牟永敏
【申请人】北京信息科技大学, 牟永敏
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1