用于并行程序蜕变测试的蜕变关系优先级排序方法

文档序号:10488872阅读:312来源:国知局
用于并行程序蜕变测试的蜕变关系优先级排序方法
【专利摘要】用于并行程序蜕变测试的蜕变关系优先级排序方法。应用蜕变测试技术于并行程序的软件测试,先对构造的蜕变关系进行优先级排序,旨在尽早地发现程序中的错误,从而提高解决存在于软件测试中的Oracle问题的效率。该优先级排序策略利用蜕变关系产生的衍生测试用例及原始测试用例,以它们之间的相似度为依据估计其执行程序所覆盖路径的相似度,进而估计蜕变关系基于已有测试用例的检错范围,并基于此对蜕变关系进行优先级排序。具体步骤如下:(1)评估蜕变关系的各个进程检错能力;(2)设置各个进程的权值,以反映蜕变关系的各个进程检错能力,对评估其对整个程序检错能力所占的权重;(3)评估蜕变关系的程序检错能力,并确定各个蜕变关系的优先级;(4)检测程序。
【专利说明】
用于并行程序蜕变测试的蜕变关系优先级排序方法
技术领域
[0001] 本发明涉及计算机软件测试领域,设计了一种针对并行程序的蜕变关系优先级排 序方法,可用于提高蜕变测试技术应用于并行程序的测试效率。
【背景技术】
[0002] 并行程序由于具有高效的问题解决能力,因此,在实际的问题中得到了广泛的应 用,如油气勘探、生物信息处理,以及互联网服务等。在诸多并行程序开发方式中,最常用的 当属使用消息传递环境扩展串行程序的方式,该方式能够减少额外编程负担,提高并行程 序开发的效率。典型的消息传递环境有:并行虚拟机、消息传递接口、Express,以及CM信息 传递库等。其中,前两种是公用软件,且具有很好的兼容性。随着网络技术的快速发展和单 处理机性能的不断提高,消息传递接口和并行虚拟机也成为最流行的消息传递库。与串行 程序相比,并行程序更加复杂,且可靠性要求更高。这意味着,对并行程序的测试非常必要。
[0003] 软件测试通过分析或执行程序,以发现程序中存在的错误,是提高软件质量的重 要手段。传统的测试技术多通过比较测试用例的执行结果与预期输出,以判断程序的正确 性。但是,在很多情况下,测试人员很难甚至无法得到某测试用例的预期输出,该问题被称 为Oracle问题。为了解决这类问题,Chen等提出了蜕变测试。该方法基于已有的测试用例, 通过蜕变关系构造衍生的测试用例,并考察这些测试用例的执行结果是否满足某一特定的 关系。如果不满足,那么,该程序包含错误。由于不需要被测程序的预期输出,因此,蜕变测 试具有广阔的应用前景。
[0004] 记被测程序为P,该程序的输入为X,输出为f(x)。对于η个程序输入Χ1,Χ2, · · ·,xn(n >1),其对应的程序输出分别为汽11),以12),...,以^0。这11个程序输入可能具有一定的关 系,记为R。如果程序P正确,那么,与之对应的程序输出也将具有一定的关系,记为R f,W
[0005] Rixl^x2,.,.,X11) => Rf (/(χ,),/(λ-,),...,/(?)) (.1)
[0006] 称(R,Rf)为P的蜕变关系。
[0007] 基于蜕变关系的测试,称为蜕变测试。在蜕变测试中,给定的测试用例,称为原始 测试用例;基于该测试用例,利用关系R生成的测试用例,称为原始测试用例的衍生测试用 例。
[0008] 对于功能为计算正弦函数的程序,由于sin(x) = sin(180-x)反映了程序不同输入 之间的关系,因此,是该程序的一条蜕变关系。对于一个原始测试用例x = 46.8,其程序输出 为PU) =0.7213。如果难以确定sin(46.8)的真实值,那么,将无法判断这一程序输出是否 正确。但是,可以通过该原始测试用例及其蜕变关系sin( X) = sin(180-X),生成一个衍生的 测试用例X'= 180-46.8 = 135.,2再用X'执行该程序。如果P(x')矣PU),即不满足蜕变关系 sin(x) =sin(18〇-x),那么,该程序将存在错误。
[0009] 自提出以来,蜕变测试得到了学者们的高度关注,并取得了丰硕的成果。Hu等的实 验结果表明,蜕变测试的成本低,并具有很强的检错能力。Chen等考察了多种蜕变关系,指 出不同的蜕变关系具有不同的检错能力,使得选择合适的蜕变关系,成为蜕变测试的关键。 Mayer等通过具体的程序,给出了评价蜕变关系性能的4条准则。为了能够循环地产生原始 测试用例,Wu等人提出了迭代蜕变测试算法(MT)。但该算法具有较高的复杂性,基于路径 分析,Dong等人对MT做了进一步改进。此外,为了说明蜕变测试的充分性,Dong等基于路径 分析技术,提出了 3种蜕变测试准则。但是,上述工作均针对串行程序。
[0010] 经查阅相关文献,目前还不存在应用蜕变测试技术于并行程序时关于蜕变关系优 先级排序的方法,这严重影响了蜕变测试在并行程序的应用。

【发明内容】

[0011] 本发明首先考察蜕变关系的程序检错能力;然后,基于此对蜕变关系进行排序。
[0012] 本发明所要解决的技术问题:克服现有技术的不足,将并行程序的设计理念与蜕 变测试的原理相结合,根据测试用例间的相关性,提出一种蜕变关系优先级排序方法,优先 选取程序检错能力强的蜕变关系,尽早发现错误,提高测试效率。
[0013] 本发明的技术方案:提出了一种用于并行程序的蜕变关系优先级排序方法。
[0014] 其特征在于步骤如下:
[0015] 步骤1:考察蜕变关系的进程检错能力
[0016] 容易理解,对于相同的测试用例,不同的蜕变关系生成了不同的衍生测试用例。不 同的测试用例覆盖的路径往往不同,而错误往往存在于这些路径上,因此,不同的蜕变关系 具有不同的检错能力,且衍生测试用例覆盖的路径与原测试用例差异大的蜕变关系,具有 更强的检错能力。
[0017] 假如某测试用例覆盖的路径为P= 1,2,3,5,6,8,数字1,2,...为程序的一个节点, 可以是一或多条语句。存在两个蜕变关系衍生的测试用例覆盖的路径分别为p' = 1,2,3,5,7,8与p〃 = 1,2,4,5,7,8。将两条路径均包含的节点个数与包含节点数较多的路径 对应的节点个数的比值作为它们的相似度。那么,P'与P覆盖路径的相似度为呦? = |,P〃 6 与P覆盖路径的相似度为= 因此,后者的路径差异度大于前者。此时,蜕变关系MR1 只能检测位于节点{1,2,3,5,6,7,8}上的错误;而MR2却能够检测位于节点{1,2,3,4,5,6, 7,8}上的错误。与MR1相比,MR2具有更强的检错能力。
[0018] 对于并行程序而言,程序的一条路径由多个子路径构成。此时,路径差异度的估 计,可以通过子路径差异度的估计实现。由于不同进程涉及的变量可能不同,因此,子路径 差异度的估计,可以通过涉及变量的差异实现。事实上,在进行优先级排序之前,并没有蜕 变关系衍生测试用例的路径覆盖信息。前已指出,相似的测试用例往往覆盖相似的路径。鉴 于此,本发明通过测试用例间,进程所涉及变量的相似度,估计它们在该进程中覆盖的子路 径的相似度,进而估计这些子路径的差异度,最后评估蜕变关系的进程检错能力。
[0019] 步骤2:评估蜕变关系的程序检错能力
[0020] -个并行程序尽管包含多个进程,但是,不同进程出错的概率并不完全相同。比 如,一个包含代码行数多的进程,往往比包含代码行数少的进程具有更大的出错概率。鉴于 此,本发明指出评估蜕变关系对整个程序的检错能力时,应对不同的进程设置不同的权值, 以反映蜕变关系的各个进程检错能力,对整个程序检错能力的权重。该权重的取值可根据 进程包含的代码行数或(和)路径个数等确定。
[0021] 本发明提出的评估蜕变关系的程序检错能力的方法如下:记蜕变关系MRs对于程 序P的检错能力为Cs(),MR s对进程Pi的检错能力为Cf,以及进程Pi的权值为ω i,则 e。,n为进程数。
[0022] 步骤3:蜕变关系的优先级排序
[0023]根据步骤2得到的蜕变关系的程序检错能力,按优先级从高到低的顺序排序蜕变 关系。具体方法如下:
[0024] [1]:从待排序的蜕变关系集中选择一个蜕变关系并移除;
[0025] [2]:基于步骤2评估出的该蜕变关系的程序检错能力,确定其在已取出的蜕变关 系中的优先级;
[0026] [3]:判断待排序的蜕变关系集是否为空,若为空,排序结束,否则,重复[1]与[2]。
[0027] 本发明的主要贡献在于:(1)提出评估蜕变关系的进程检错能力的方法;(2)提出 评估蜕变关系的程序检错能力的方法;(3)提出蜕变关系优先级排序的方法。
【附图说明】
[0028]图1本发明的总体流程图 [0029] 图2示例程序进程0的源代码 [0030] 图3示例程序进程1和2的源代码 [0031] 图4示例程序进程3的源代码
【具体实施方式】
[0032]本发明用以排序蜕变关系,旨在应用蜕变测试技术于并行程序的软件测试,尽早 地发现程序中的错误,从而提高解决存在于软件测试中的Oracle问题的效率。该优先级排 序策略利用蜕变关系产生的衍生测试用例及原始测试用例,以它们之间的相似度为依据估 计其执行程序所覆盖路径的相似度,进而估计蜕变关系基于已有测试用例的检错范围,并 基于此对蜕变关系进行优先级排序。
[0033]该部分结合具体附图,对本发明的实施方式做详细说明。所提出方法的流程图如 图1所示,具体实施步骤亦根据该图拟定,下面对本发明的技术方案做进一步详细描述。 [0034]步骤1:考察蜕变关系的进程检错能力
[0035] 由于一个并行程序由多个进程组成,因此,蜕变关系对并行程序的检错能力,取决 于其对每一进程的检错能力。为了考察蜕变关系的进程检错能力,首先说明程序的输入变 量对进程的影响关系。为此,引入如下2个概念。对于并行程序P,包含的进程记为Po, P1,…, Pn-l,其中,η为进程的个数。此外,记程序的输入X=(X1,X2,···,Xm),其中,m为程序输入包含 的变量个数。考虑进程P 1,如果某程序输入变量^直接影响匕的至少一个子路径,那么,称Xk 直接影响Pi。如果Pi有通信语句接收来自另一进程,记为Pj,的中间变量y,且y直接影响Pi的 至少一个子路径,y的值在进程P冲受输入变量Xi影响,那么,称Xi间接影响Pi。
[0036] 对于某一进程,比较测试用例和基于某蜕变关系衍生的测试用例的相似度。一般 的,如果二者包含的直接或间接影响该进程的不同变量越多,那么,这2个测试用例覆盖的 该进程子路径的差异度越大,从而该蜕变关系对该进程的检错能力越强。此外,不同的变量 影响进程关系,对蜕变关系检错能力的影响不同,且直接影响进程的变量,比间接影响具有 更高的比重。
[0037]基于此,接下来给出如下的蜕变关系进程检错能力估计方法。考虑进程P1,假设有 m'个程序的输入变量直接影响该进程,此外,P1还有若干通信语句接收来自其它进程的k个 中间变量。由于影响(中间)变量共有m'+k个,因此,评估蜕变关系的进程检错能力(记 細时,每-直接影响P綱序输入变量的贡献度为士,对于这m,个变量,如果衍生白勺 测试用例与原测试用例有α个不同,那么,(^的值增加^。考虑第1个中间变量,1 = 1, 2,…,!^,影响该中间变量的程序输入变量有扮个,此时,评估蜕变关系的进程检错能力时, 这β?个输入变量中,每一变量的贡献度为对于这玢个变量,如果衍生的测试用例 与原测试用例有γ个不同,那么,(^的值增加°
[0038]步骤2:评估蜕变关系的程序检错能力
[0039] -个消息传递并行程序尽管包含多个进程,但是,不同进程出错的概率是并不完 全相同。比如,一个包含代码行数多的进程,往往比包含代码行数少的进程具有更大的出错 概率。鉴于此,评估蜕变关系对整个程序的检错能力时,应对不同的进程设置不同的权值, 以反映蜕变关系对进程的检错能力,对整个程序检错能力的权重。该权重的取值可根据进 程包含的代码行数或(和)路径个数等确定。
[0040] 记蜕变关系MRs对于程序P的检错能力为CS(),MR S对进程P1的检错能力为C:n,以及进 程Pi的权值为ω i,则_
m为进程数。
[0041 ]步骤3:蜕变关系的优先级排序
[0042]现在给出蜕变关系的优先级排序方法。记并行程序P的所有蜕变关系形成的集合 为MR ={MR1,MR2,…,MRs },其中,S为蜕变关系的个数。步骤如下:
[0043]步骤301:从MR中寻找优先级最高的蜕变关系
[0044] 为此,考虑MRs,根据衍生测试用例与原测试用例变量之间的差异度,计算1?8对进 程Pi的检错能力,记为Cf。基于进程P i的权值,记为ω i,计算MRW于程序P的检错能力,记为
CsqJW 〖最高的蜕变关系为1MR,那么,
[0045] (?.
[0046] 步骤302:从MR中寻找优先级次高的蜕变关系
[0047] 如果某蜕变关系衍生的测试用例,与1MR衍生的测试用例穿越的路径差异度很小, 那么,该蜕变关系衍生的测试用例新覆盖的程序元素将很少。因此,寻找优先级次高的蜕变 关系时,不仅需要考虑蜕变关系的衍生测试用例与原测试用例之间变量的差异度,还需要 考虑其与 1MR衍生的测试用例之间变量的差异度。对于MR-1MR中的蜕变关系MRs衍生的测试 用例,根据该测试用例与 1MR衍生的测试用例变量之间的差异度,计算MRW于程序P的检错 能力,记为Csl。记优先级次高的蜕变关系为 2MR,那么,
[0048] 2/V//? = arg max min{C°,Cv!} ⑶
[0049] 步骤303:确定其它蜕变关系的优先级
[0050] 采用与步骤2类似的方法。记最高、次高、…、第I高优先级的蜕变关系分别为1MR, 2MR, ... ,1MRc3对于施-0??中的蜕变关系MRs衍生的测试用例,根据该测试用例与 iMR衍生 的测试用例变量之间的差异度,计算MRW于程序P的检错能力,记为Csl。那么,第1+1高优先 级的蜕变关系为:
[0051 ] ;+1MR=arg ^axs, min(Csn4Cist,….(4).
[0052] 步骤304:判断継是否为空 /=1
[0053]若为空,转向步骤4;否则,重复步骤303,直到所有的蜕变关系都分配优先级为止。 [0054] 步骤4:检测程序
[0055]从排序好的蜕变关系集中选择优先级最高的蜕变关系检测程序,并从集合中移 除,若发现程序有错,则操作结束;否则,重复步骤4选择下一个优先级最高的蜕变关系检测 程序,直至蜕变关系集合为空。
[0056]步骤5:实例分析
[0057]选择程序Max-triangle作为被测程序,其代码在附图中,基于变异分析,评价所提 方法的性能。该程序的功能是,求4个输入变量的最大数,并计算前3个输入变量能构成三角 形时的面积,程序的输入为X ={ X,y,z,w}。该程序包含3个进程,其中,进程1求X,y和z构成 三角形的面积,并将结果传递给进程0;进程2求y, 2和《的最大数,并将结果传递给进程0;基 于进程2的结果,进程0进一步求取X的最大数,并输出该最大数以及由前3个变量构成三角 形时的面积。
[0058]本发明从如下2方面反映蜕变关系的检错能力:(1)基于蜕变关系衍生的测试用例 集的变异得分,体现蜕变关系的检错范围;(2)基于蜕变关系衍生的测试用例集的平均变异 得分,体现蜕变关系的检错效率。这里,测试用例集的变异得分指它们杀死的变异体数目占 非等价变异体总数的比例;平均变异得分指,平均一个测试用例所可获得的变异得分。
[0059 ]根据程序Max-tr iangIe的功能,构造3个銳变关系,如表1所列。 「00601 妄1 ?痒Mn Y-tri· Αησ? p的邮亦类蓉
[0062] 由表1可知,相比原始测试用例{x,y,z,w},蜕变关系MRi衍生的测试用例中输入变 量X,y存在差异;MR2衍生的测试用例中输入变量X,z存在差异;MR 3衍生的测试用例中输入变 量y,z存在差异。
[0063] 应用
【发明内容】
中所提方法,计算表1中蜕变关系对各个进程的进程检错能力。结果 如表2所列。
[0064]表2蜕变关系对各个进程的进程检错能力
[0066] 由表2可知,(1)对于进程0,MR3的进程检错能力要低于MRjPMR2的;(2)对于进程I, 三个蜕变关系的进程检错能力相同;(3)对于进程2,MR 3的进程检错能力要高于MRjPMR2的。
[0067] 采用数据语句变更(DSA)、算术符号替代(ARO)等几种基本的变异算子,生成程序 Max-triangle的10个变异体,使得每一进程子路径至少出现一个错误。这些变异体的信息 如下:
[0068]变异体1:进程0中语句12与语句13的代码互换;
[0069]变异体2:进程1中语句8替换为"ρ = 10;" ;
[0070] 变异体3:进程 1 中语句 11 替换为"p = (sqrt(3.0)*x*x)+4.0;" ;
[0071] 变异体4:进程1中语句15替换为"p = (z*p)*2.0;";
[0072] 变异体5:进程1中语句19替换为"ρ = (ζ*ρ)+2.0;" ;
[0073] 变异体6:进程1中语句23代码中的72"替换为"*2" ;
[0074]变异体7:进程1中语句25替换为"p = (x+y+z)*2;" ;
[0075] 变异体8:进程2中语句6替换为"χ = ++χ;" ;
[0076] 变异体9:进程2中语句8替换为"χ = ζ;" ;
[0077] 变异体10:进程2中语句10替换为"x = y;"。
[0078] 选择原始的测试用例时,采用特殊值结合随机值的方法,使得原始的测试用例中 包括有最大数位于输入X中的任一变量,以及前3个变量构成的三角形为等边三角形、等腰 三角形、一般三角形和不构成三角形类型,其中,等腰三角形及不等边三角形又分为直角三 角形和非直角三角形等2类。因为直角三角形的面积容易计算,因此,前3个变量构成直角三 角形的测试用例选择很少。
[0079]基于上述准则,选择20个原始的测试用例,其中,有4个不能构成三角形,3个构成 等边三角形,8个构成等腰三角形,5个构成一般三角形。基于这些原始的测试用例,采用表1 的蜕变关系,得到衍生的测试用例。统计在不同进程下,每个蜕变关系衍生的测试用例的变 异得分和平均变异得分,结果如表3所列。
[0080]表3蜕变关系衍生测试用例集的变异得分和每一测试用例的平均变异得分(% )
[0082]由表3可知,(1)对于进程0,三个蜕变关系衍生的测试用例集具有相同的变异得 分,均为100%,但是,使用蜕变关系MRjPMR2衍生的每一测试用例的平均变异得分分别为 60%和55%,远高于使用蜕变关系MR3衍生的每一测试用例;(2)对于进程I,三个蜕变关系 衍生的测试用例集也具有相同的变异得分33.3%,均低于进程0,但是,使用蜕变关系MR^ MR2和MR 3衍生的每一测试用例的平均变异得分分别为8.3%、8.3%和10%,不同的蜕变关系 相差不大;(3)对于进程2,蜕变关系MRjPMR 2衍生的测试用例集的变异得分远低于MR3,对于 每一测试用例的平均变异得分,也是如此。
[0083]表2及表3说明本发明提出的蜕变关系进程检错能力估计方法是可行的。
[0084]这里采用变异分析,评价蜕变关系的检错能力。将进程中植入变异体的个数与整 个程序的比,作为该进程的权值W1。由于程序Max-triangle植入的变异体一共10个,其中, 进程0植入1个,进程1植入6个,进程2植入3个,因此,这3个进程的权值分别为:rV= ^,W1 = 2 IU 3 和% = jy)
[0085]将本发明提出的蜕变关系优先级排序方法应用于程序Max-triangle中,基于原测 试用例,各蜕变关系对程序的检错能力为cra=( ' =¥,£^=g,因此,銳变关系MR3的优先级 30 30 最高。进一步,基于MR3衍生的测试用例和原测试用例,计算MR^MR2的检错能力。由于相比 M R 3衍生的测试用例,M R i和M R 2衍生的测试用例变量中,X,y,z均发生改变,因此, (」=(、'=(:7 + 7 + 7)x77 + + K xτ + xTTi = 5 5 ,从而服1和厭2的程序检错能力不变。 这说明,选择銳变关系MR3检测程序Max-triangle之后,MRi和MR2对程序Max-triangle的检 错能力相同,从而可以从它们中随机选择一个,作为次高优先级的蜕变关系。至此,蜕变关 系优先级排序完成。
[0086]基于前面20个原测试用例,按所排序的蜕变关系检错程序Max-triangle,依次执 行每一蜕变关系生成的衍生测试用例集,考察变异得分的变化。该变化通过变异得分的增 加量和平均增加量体现。这里,变异得分的增加量指,某蜕变关系生成的衍生测试用例所杀 死的之前处于存活状态的变异体数占非等价变异体总数的比例;平均增加量指,平均一个 测试用例获得的变异得分的增加量。在此外,通过随机顺序获得某一检错程序的蜕变关系 序列作对比,依次执行每一蜕变关系生成的衍生测试用例集,记录变异得分的变化。结果如 表4所列。
[0087]表4衍生的测试用例集对变异得分的影响
[0089]由表4可知,(1)从本发明方法和随机方法得到的蜕变关系序列分别选择优先级最 高的蜕变关系检错程序后,前者所得的变异得分为60%,高于后者的40%,且前者每个测试 用例取得的平均变异得分为15.5%,要比后者高;(2)从本发明方法和随机方法得到的蜕变 关系序列分别选择优先级最高的蜕变关系检错程序后,前者所得的变异得分为70%,而后 者仅为60%,且前者每个测试用例所取得变异得分的平均增量为2.5%,同样高于后者的 2%; (3)对于两种方法得到的蜕变关系序列,所有蜕变关系均检错程序后,取得的变异得分 均达到70 %。
[0090]由此可以看出,相比随机排序得到的蜕变关系序列,按照本发明方法所得的序列 依次选择蜕变关系,生成的衍生测试用例执行程序所得到的变异得分上升的速度更快,且 位于排序后序列前面的蜕变关系所生成的衍生测试用例中,每个测试用例所能杀死的之前 存活的变异体效率更高。上述实验结果表明,本发明提出的蜕变关系优先级排序方法是有 效的。
【主权项】
1. 评估蚁变关系的进程检错能力的方法,其特征如下: 由于一个并行程序由多个进程组成,因此,蚁变关系对并行程序的检错能力,取决于其 对每一进程的检错能力;为了考察蚁变关系的进程检错能力,首先说明程序的输入变量对 进程的影响关系;为此,引入如下2个概念;对于并行程序P,包含的进程记为Ρο,Ρι,…,Pn-1, 其中,η为进程的个数;此外,记程序的输入乂=^1,义2,-',^),其中,111为程序输入包含的变 量个数;考虑进程Pi,如果某程序输入变量a直接影响Pi的至少一个子路径,那么,称a直接 影响Pi;如果Pi有通信语句接收来自另一进程,记为門,的中间变量y,且y直接影响Pi的至少 一个子路径,y的值在进程P冲受输入变量XI影响,那么,称XI间接影响Pi; 对于某一进程,比较测试用例和基于某蚁变关系衍生的测试用例的相似度;一般的,如 果二者包含的直接或间接影响该进程的不同变量越多,那么,运2个测试用例覆盖的该进程 子路径的差异度越大,从而该蚁变关系对该进程的检错能力越强;此外,不同的变量影响进 程关系,对蚁变关系检错能力的影响不同,且直接影响进程的变量,比间接影响具有更高的 比重; 基于此,接下来给出如下的蚁变关系进程检错能力估计方法;考虑进程Pi,假设有m'个 程序的输入变量直接影响该进程,此外,Pi还有若干通信语句接收来自其它进程的k个中间 变量;由于影响Pi的(中间)变量共有m'+k个,因此,评估蚁变关系的进程检错能力(记为Cl) 时,每一直接影响Pi的程序输入变量的贡献度为对于运m'个变量,如果衍生的测试用 例与原测试用例有α个不同,那么,Cl的值增加;考虑第1个中间变量,1 = 1,2,-,,k,影 响该中间变量的程序输入变量有βι个,此时,评估蚁变关系的进程检错能力时,运βι个输入 变量中,每一变量的贡献度为;;于运01个变量,如果衍生的测试用例与原测试用 例有丫个不同,那么,Cl的值增加。2. 评估蚁变关系的程序检错能力的方法,其特征如下: 一个消息传递并行程序尽管包含多个进程,但是,不同进程出错的概率是并不完全相 同;比如,一个包含代码行数多的进程,往往比包含代码行数少的进程具有更大的出错概 率;鉴于此,评估蚁变关系对整个程序的检错能力时,应对不同的进程设置不同的权值,W 反映蚁变关系对进程的检错能力,对整个程序检错能力的权重;该权重的取值可根据进程 包含的代码行数或(和)路径个数等确定; 记蚁变关系11?3对于程序?的检错能力为〔3<\11?3对进程?1的检错能力为玲6,^及进程口1 的权值为ωι,贝η为进程数。3. 蚁变关系的优先级排序方法的方法,其特征在于如下步骤: 步骤3.1:从待排序蚁变关系集MR中寻找优先级最高的蚁变关系;为此,考虑MRs,根据衍 生测试用例与原测试用例变量之间的差异度,计算MRs对进程Pi的检错能力,记为Cf ;基于 进程?1的权值,记为ω 1,计算11?3对于程序?的检错能力,记为〔3<\那么记优先 级最局的脱变关系为imr,那么,樹步骤3.2:从MR中寻找优先级次高的蚁变关系;如果某蚁变关系衍生的测试用例,与iMR 衍生的测试用例穿越的路径差异度很小,那么,该蚁变关系衍生的测试用例新覆盖的程序 元素将很少;因此,寻找优先级次高的蚁变关系时,不仅需要考虑蚁变关系的衍生测试用例 与原测试用例之间变量的差异度,还需要考虑其与iMR衍生的测试用例之间变量的差异度; 对于MR-iMR中的蚁变关系MRs衍生的测试用例,根据该测试用例与iMR衍生的测试用例变量 之间的差异度,计算MRs对于程序P的检错能力,记为CS1;记优先级次高的蚁变关系为2MR,那 么, (3) 步骤3.3:确定其它蚁变关系的优先级;义用与步骤2类似的方法;记最局、次局、…、第I 高优先级的蚁变关系分别为1MR,2MR,...,IMR;对于MR-a'MJ?中的蚁变关系MRs衍生的测试 用例,根据该测试用例与1MR衍生的测试用例变量之间的差异度,计算脈对于程序P的检错 能力,记为〔SI;那么,第1+1局优先级的蚁变关系为;(4) 步骤3.4:判断MR-?''Α祝是否为空;若为空,结束操作;否则,重复步骤3.3,直到所有的 1=\ 蚁变关系都分配优先级为止。
【文档编号】G06F11/36GK105843744SQ201610256250
【公开日】2016年8月10日
【申请日】2016年4月22日
【发明人】巩敦卫, 王金鑫, 田甜, 姚香娟, 党向盈, 杨苏
【申请人】中国矿业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1