没有合适的资源?快使用搜索试试~ 我知道了~
启发式测试用例选择方法
50《理论计算机科学电子札记》66卷第2期(2002)网址:http://www.elsevier.nl/locate/entcs/volume66.html16页启发式驱动的测试用例选择J.C. Burguillo,M.Llamas,M.J.费南德斯1DepartamentodeIngenier'ıaTelem'ticaUniversidad de Vigo西班牙维戈T.罗伯斯2DepartamentodeIngenier'ıaTelem'ticaUniversidadPolit'ecnicade Madrid马德里,西班牙摘要我们提出了一种方法来测试,结合正式的方法与实际的标准,接近测试工程师 它可以被看作是一个框架,以评估和选择测试套件使用正式的方法,辅助非正式的推理。我们还介绍了丰富的过渡系统存储在测试阶段获得的信息的形式主义,并适应经典的测试生成技术,以利用新的形式主义的可能性。1介绍在协议工程的上下文中,测试生成算法用于从给定的规范中获得一组测试用例,旨在检测不符合实现的错误。然而,保证详尽覆盖所需的测试用例数量可能太大,即使是有限的。因此,执行所有潜在测试用例可能不可行。因此,在实际情况下,有必要在测试执行阶段之前选择所有可能的测试用例的子集最初生成的测试用例集的减少在文献中被称为测试用例选择。测试用例的选择不应该随机进行。应该应用适当的策略来获得有价值的测试用例集合,1电子邮件:[jrial,martin,manolo]@det.uvigo.es2电子邮件地址:robles@dit.upm.es2002年由ElsevierScienceB出版。 诉 操作访问根据C CB Y-NC-N D许可证进行。BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES51它应该检测尽可能多的不一致的实现对于软件测试,有一些标准可用,如等价分区中的划分[12]或协议测试中的测试建议选择[9]。另一方面,测试用例的选择不应该仅仅基于系统为了选择最有价值的测试用例,还应该使用相应规范形式体系之外的其他这样的信息可以考虑实现者犯下的最频繁的错误、最有害的错误、实现特征的最困难、关键的基本功能等。在形式描述技术领域,已经提出了一些解决测试用例选择问题的建议,关键结果可以在[6,15,16,17]中找到T. Robles [13]引入了测试用例集合的风险、成本和效率的概念,本文将重新讨论这些概念。这种方法是基于估计,从测试工程师它形式化和简化了测试用例的选择,并可应用于大多数实际问题。这种方法类似于[15]中提出的方法因此,本文提出了一种方法来评估和选择测试用例,从实际的标准,接近测试工程师我们的目标是提供可实施的,计算上可行的标准。此外,我们希望所提出的方法易于测试工程师配置,他们可以通过引入逻辑学来提供他们的经验,以促进系统中关键方面的测试,或系统中更容易出错的特定部分接下来的两节将讨论作为我们经验基础的理论背景。第2节给出了一些关于支持表示框架和形式化测试的一般定义和符号,第3节介绍了我们的测试用例选择方法。最后,第4节总结了所描述的工作和一些结论。2一般定义和符号在接下来的段落中,我们将讨论与测试和测试用例选择相关的基本理论概念和注意事项。首先,我们简要介绍了标记迁移系统。然后,我们提供了一些基本概念,从形式测试。在此之后,我们引入了风险,覆盖率,成本和效率作为支持策略,以帮助测试工程师沿着测试用例的选择。2.1标签转换系统标签转换系统(LTS)将是描述过程行为的基本模型,例如规范,实现和测试。定义1一个带标号的变迁系统是一个4元组Stat,L,T,s0>其中Stat是可数的非空状态集合;L是可数的BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES52∈⇒⇒∈ −→/∈联系我们标签; TStat(L)(一)Stat是转换的可数集合,i表示一个特殊的内部作用量,在某些模型中称为τ [11]; s0∈Stat是初始状态。元素(s,µ,sJ)T表示为s µ sJ。我们使用从转换关系导出(构造)的以下符号(集合):s=sJ:s = sJ或s−i−. →sJs = a<$sJ:<$s1,s2∈Stat使得s =<$s1−a→s2=<$sJs = σ <$sJ:<${s1,.,sn−1}Stat,迹σ = a1. an使 得 s = a1<$s1=···<$sn−1= an<$sJ 。 s =σ:sJ∈Stat使得s = σsJs/= σ:/sJ∈Stat使得s=σsJTr(P): {σ∈L|P = σ}Init(P):{a∈L|P = a<$} σ后的P:{sJ|P = σ sJ}Ref(P,σ): {A}|<$sJ∈(Pafterσ)and<$a∈A,sJ/= a<$}路径(P):{∈T|P−n→sJ,sJ∈Stat}符号L(分别为T)表示使用L(分别为T)中的元素构造的字符串(序列,迹)的集合。 迹σ L是L上的可观察动作的有限序列,其中,顺序特殊标签i L表示不可观察的内部动作,用于对非确定性进行建模。因此,= 0表示空转换或仅包括内部动作的转换序列(即,痕迹没有内部行动)。我们用t来表示变迁t出现在路径中。我们用树或图来表示LTS,其中节点表示状态,边表示转换。给定LTSP=,我们写P=σ来表示从P的初始状态的转换,并且必须被视为语法糖。当一个给定的状态不接受进一步的操作(即死锁状态)时,我们将其标记为停止。Tr(P)是进程P接受的迹的集合,Init(P)是P接受的来自L的标签的集合,Ref(P,σ)是P在迹σ之后的拒绝的集合。最后,Path(P)是P所接受的转移序列的集合。我们用LTS(L)表示LLTS对用于描述分布式和并发系统的语言的语义进行建模,如LOTOS [8],CSP [1]或CCS [11]等。BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES532.2形式化测试概念关于测试,重要的是定义一个关系,以建模实现与其规范的一致性在文献中有几个关系可以选择[14]。由于我们想将我们的框架与其他方法进行比较并重用现有的理论,因此我们选择了[2,14]中描述的一致性关系conf它的优点是,只有规范中包含的行为必须被测试,减少了测试空间。关系conf定义如下:定义2(条件:conf)设I,S∈LTS(L),我们说IconfS当且仅当对每个迹σ∈Tr(S)和对每个子集A∈L下面的命题成立:如果A∈Ref(I,σ),则A∈Ref(S,σ)如果σi ∈Tr(I),我们假设Ref(I,σ)为空。为了决定一个测试用例是否成功,我们使用判定。参考文献[10]提出了三种可能的判定:通过(通过,当观察到的行为满足测试时),未通过(未通过,当观察到的行为是无效的规范行为时)和不确定(inc,观察到的行为到目前为止是有效的,但无法完成测试)。这些概念的形式化如下[14]:定义3(测试用例)测试用例tc是一个5元组,使得是一个具有有限行为的确定性转移系统,v:Stat→{fail,pass,inc}是一个分配判决的函数。定义4(测试套件)测试套件或测试集合ts是测试用例的集合:ts∈PowerSet(LT St(L))测试用例的执行由测试用例与被测实现(IUT)的并行同步执行来建模这样的执行继续,直到不再有交互,即,陷入僵局。这种死锁可能是因为测试用例tc达到最终状态,或者当tc和IUT的组合达到不接受tc执行的操作的状态时出现。当且仅当测试用例的判决在达到死锁时通过时由于实现可能具有不确定性行为,因此使用相同IUT对相同测试用例的不同执行可能会达到不同的最终状态,从而导致不同的判决。一个实现通过测试用例tc,当且仅当所有tc的执行都产生一个通过判决。这意味着我们应该多次执行每个测试用例以获得最终判决,理想情况下是无限次。测试生成算法根据规范提供测试套件。理想情况下,当且仅当实现符合时,它必须通过测试套件。不幸的是,在实践中,这样的测试套件将有无限多的测试用例。因此,在现实世界中,我们必须将自己限制在(有限大小的)测试套件中,这些测试套件只能检测不一致性,但不能检测一致性。BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES表5454误差加权传奇I:测试中的实现;e:I中的事件;ts:测试套件;S:对应于I的质量标准。这样的测试套件称为声音。2.3风险、覆盖范围、成本和效率在接下来的几段中,我们将介绍错误权重或风险、覆盖率、成本和效率的概念,这些概念将支持对要传递给实现的测试用例为了分析测试实现后获得的覆盖率,我们必须考虑几个因素。一方面,测试用例是从一个形式化的对象中派生出来的。e. 正式规格。因此,在测试一个实现之后,我们得到了规范中行为的特定覆盖级别。 另一方面,覆盖率取决于实现本身,因为,给定一个正式的规范,所选择的实现技术(即,编程语言或编程工具)将或多或少地倾向于出错。表1提出了一些先验评估错误在给定实现中的影响的方法,这些方法将用于选择适当的测试套件。RI(e)为(可能的)错误分配权重,即估计在实施事件e时犯错误所涉及的风险。它是从两个值计算的:事件e被错误实现的机会的估计(EI(e)),以及系统其余部分中相应错误的影响的估计(II(e))。RI(S)估计实现不符合相应规范的可能性,并衡量错误地执行S。MRI(e,ts)表示可以通过使用测试套件ts的测试过程检测到的事件e的风险量,MRI(S,ts)表示可以使用测试套件ts检测到的实现I的风险量。单个测试用例的风险度量是一种特殊的情况,其中套件ts由单个测试用例组成注意,根据上述定义,MRI(e,ts)≤RI(e)和MRI(S,ts)≤RI(S)。我们需要的基本数学模型通过假设误差之间的独立性而大大简化。然而,在实践中,目标参数范围事件RI(e)=EI(e)×II(e)(0,∞)执行RI(S)(0,∞)测量,事件MRI(e,ts)[0,∞)测量、实施MRI(S,ts)[0,∞)BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES55R(e)表2覆盖率参数目标参数范围事件KI(e,ts)=MRI(e,ts)我实现KI(S,ts)=MRI(S,ts)[0, 1][0, 1]RI(S)表3费用参数目标参数范围事件CI(e)=PI(e)+XI(e)(0,∞)实现CI(S,ts)(0,∞)错误不是相互独立的,因为程序中的错误语句作为一种解决方案,误差之间的相关性在我们的模型中被反映为误差权重值,即我们通过参数II(e)来建模这种相互依赖性然后,测试工程师将使用可用的误差统计数据和他们自己的专业知识来估计误差之间的相关性,从而相应地定义II(e)这可以被看作是一个方便的数学基础和需要考虑在实际情况下的误差相关请注意,无论是否得到底层数学模型或显式参数的支持,正确获得故障之间的相关性对于充分利用本文讨论的方法至关重要根据上面的参数,我们将覆盖率定义为测试套件的检测能力度量与风险度量之间的商(表2)。 KI(e,ts)表示使用测试套件ts的事件e的覆盖率,而KI(S,ts)表示使用测试套件ts的实现I的覆盖率,对应于规范S。当在IUT上执行测试套件ts时,我们会检查一些估计的错误可能性是否已具体化为实际错误。如果出现错误,应该纠正。相反,如果没有发现错误,我们的信心就会增加。给定两个测试套件ts1和ts2,使用上述参数,我们可以比较它们的覆盖率,从而比较它们检测IUT中错误的能力然而,在比较测试套件时,还有一个因素应该考虑在内:所需的资源。 为了估计这方面,我们引入了一个新的参数:成本(c.f.表3)。CI(e)将测试事件e的成本估计为在测试用例中实现该事件的成本(PI(e))和在该实现上执行该事件的成本(XI(e))之和。CI(S,ts)表示使用从规范S生成的测试套件ts测试实现I的成本。使用成本值,我们可以更好地区分几个测试套件。因此,下一步将是将上面定义的参数与BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES56∞✁我获取另一个参考,以便于选择测试用例。为此,我们将从S(FI(S,ts))获得的测试套件ts的效率定义为该套件的覆盖率与使用其测试I的相关成本之间的商。F(S,ts)=KI(S,ts)CI(S,ts)这个新参数的值在范围[0,)内当覆盖范围增加和成本降低时,其值我们需要一个过程来计算上述的概率值,同时考虑到我们的表示形式,即标记转换系统。我们试图从系统实现的形式规范中评估其一致性。因此,我们将在实施规范中的所有事件时参考所涉及的风险通过这种方式,我们可以将IUT的风险公式化为其事件的风险值之和S11✉✉I2✁✉❆a ai✁✉ ✉ ✉拉瓜❆❆✉停止停止停止停止图1.一、I1和I2S✉发送✉我✉发送电子邮件地址S发送邮件✁✉我拉吉吉❆❆✉停止图二、S和I是递归过程另一方面,由于不确定性,实际的测试用例需要多次执行才能获得对测试过程的信心例如,考虑图1中的规范S及其实现I1和I2。虽然实现I1等于S,并且总是接受S声明的事件a,但实现I2有时会执行内部操作,然后拒绝事件a。显然,后一种实现不符合S。如果我们正在测试一个物理实现,它可能表现为I1或I2,我们将需要从初始状态执行多次a,以发现它是否符合S。每一次事件a被接受,我们就增加了对实现的信心。相反,如果我们得到一个单一的拒绝,✁BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES57我我我∈可以保证IUT不符合要求。换句话说,测量风险值随着测试过程而变化此外,递归行为的存在使得测试依赖于通过测试的递归级别。我们将那些自实例化的行为因此,递归级别将是行为被实例化的次数。例如,图2中的规范S包含递归行为并且永不停止。同样,为了检查S的物理实现,它的行为与图2中的I一样,我们可能需要执行多次事件发送,以检测有时这样的事件被拒绝。因此,在测试事件时涉及的风险测量沿着递归的连续级别(即连续事件实例化)传播考虑到这两个方面,我们可以分解LTS中每个事件的风险(即,分配给事件中的错误的权重)为:Σ∞Σ∞RI(e)=Rr,n(e)≤∞r=1n=1其中Rr,n(e)表示使用给定测试用例在递归级别r进行第n次测试时事件e的风险然后,测试套件ts的风险检测能力变为:ΣMRI(S,ts)=RceNRr,n(e)tc∈tse∈E(tc)r=1 n=0例其中Rce和Ne(r)分别是事件e已被测试的最深递归级别如果测试用例具有树结构,那么我们可以为测试用例的每次成功运行获得几个可能的值。因此,我们可以利用现有的统计数据先验地衡量风险2.4先验值和后验值由于IUT是一个行为未知的实体,因此我们希望测试的内容与实际测试的内容之间可能存在这些差异可能是由于:• 非确定性:由于实现中的非确定性行为,在第一次尝试中,我们可能无法测试我们感兴趣的行为。因此,可能需要多次执行测试用例,直到我们得到适当的结果。新的执行修改覆盖率值。• 失败:如果我们检测到一个不符合要求的实现,它可能无法达到预期的覆盖率,因为一些测试用例可能由于实现中的错误而无法执行因此,我们可以确定[7]两类成本和覆盖值:BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES58∈∈→• 先验值,当我们估计风险度量和执行测试用例的成本时获得,假设所有可能的实现响应,如相应规范所定义。• 后验值,在执行测试用例tc之后获得。3测试用例选择现在,我们将讨论我们的测试用例选择方法,它基于经典方法,如下所述。但首先,我们引入了丰富的转换系统,作为一种跟踪结构信息的方法,这些结构信息是了解已经测试过的规范的那些部分所必需的3.1丰富的过渡系统当我们尝试在一个实现上执行几个测试用例时,最好能够访问在这个过程中获得的风险、成本和覆盖率的值。为此,如上所述,我们需要有关递归级别和测试迭代的信息。此外,如果这些值是可用的,我们可以根据从已经执行的测试用例中获得的结果来选择新的测试用例为了维护测试用例执行后收集的信息,我们定义了一种新型的转换系统[5]:定义5(丰富转换系统)丰富转换系统(ETS)是由S=表示的5元组,使得是一个标号变迁系统,N(t,r)是变迁t∈T在递归层r∈ [1,∞)上执行的次数.标记集L上的富集跃迁系统的集合由ETS(L)表示。LTS(L)的可用符号和定义被扩展到ETS(L),在底层转移系统上定义它们与经典LTS不同,ETS是动态的,即对于每个转换t T,函数N(t,r)沿着测试过程改变其值。当我们在从规范S生成的实现I上执行测试用例时,丰富规范SEETS(L)中的事件随着每个递归级别中的执行次数而通过这种方式,我们保留了有关哪些行为或特定部件尚未进行充分测试的信息。请注意,从描述为ETS的规格中,我们可以轻松获得风险和覆盖范围值。我们假设每个过渡都有自己的风险值。我们还假设测试工程师提供的用于测量风险fMR(e,r,n)[0,RI(e此函数将提供在给定递归级别中为单个执行所这个函数必须是收敛的,并且单个事件e的所有风险度量的r和n之和必须小于或等于该事件的风险BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES59✁✁∈∈我2r+n❆示例1合适的风险度量函数可以定义为MRr,n(e)=RI(e) 对于r,n≥1到目前为止,我们一直在考虑过渡系统,而没有任何关于哪些部分可以递归调用,哪些部分对应于主进程等的额外信息换句话说,当我们遍历一个普通的LTS时,我们不知道哪些状态是从其他状态递归访问使用ETS,我们将每个转换都视为一个潜在的过程(即作为递归调用的潜在目的地每次我们到达一个以前访问过的状态时,我们都假设我们已经为下一次转换增加了一个递归级别通过这种方式,我们只需要检查我们访问了一个状态多少次,就可以获得递归的级别SE✉a,(0,0,.)第一章✁❆tc1,失败✉一1,失败tc2,失败✉一1,失败S双✉a,(2,1,0,.)第一章✁❆b,(0,0,...)✁c,(0,0,...) Bcb,(1,0,...)✁(1,0,.)✉✁✁S❆❆✉停止第2章失败一✉通过✁✉S双❆❆✉停止✉通过图3.第三章。S、tc1、tc2和Sbis例2假设我们有图3中出现的递归规范SEETS(L)。 函数N(t,r)出现在每个转换的相应标签旁边。 我们已经将函数N(t,r)表示为一个序列,其中第一个元素是我们在第一个递归级别中执行转换的次数,第二个元素对应于第二个递归级别等等。最初,序列中的所有值都是零,因为我们还没有执行任何测试还假设我们有一个物理对象I,它正确地实现了规范中描述的行为,即: I = SE,我们希望执行图3中描述的测试用例tc1和tc2。Sbis表示SEETS(L)在执行两项测试案例。事件a已经在第一级递归中测试了两次,每个测试用例一次。此外,此事件还在第二级递归中进行了测试,该递归对应于tc1的最后一次转换。其余事件在初始递归级别中只执行一次✁BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES60∈⊆Σ⊆EEEE3.2风险驱动的测试用例选择在测试生成和选择方面,我们首先采用了经典的测试算法,并对其进行了修改,以考虑风险和覆盖范围值。选择的表4生成S的测试用例给定S ETS(L),我们递归地构造测试用例tc:=如下:Σ{a; tca|a∈ AMR}(i) 构造集合CS:={Init(SJ)} |S = SJ}(ii) 在所有可能的集合AInit(S)中,选择集合AMRhav-MRr,n(e)设置最大值e∈AI卡(A)满足其中一个以下内容:(a) <$C∈CS:AMRC/=<$且v(tc)=失败,或(b) 且AMR=Init(S)且v(tc)=pass,或(c) AMR=0且v(tc)=通过(iii) 递归地构造tca作为测试用例,Σ{i; S}|S = a<$SJ}(*)当表示测试用例时,表示分支,a;s是短符号对于过渡(即,−a→s)。在我们的情况下(cf.表4)。我们修改了Tretmans算法,以选择(考虑[14]中表达的条件)使平均风险测量最大化的集合AMRInit(s关于测试生成过程和ETS形式主义,在我们生成任何测试用例之前,我们制作了一个 SE∈ ETS(L)的副本,并将其命名为Sbkp。在生成过程中,我们将使用Sbkp而不是SE。然后,每次选择一个新的集合AMR,拷贝Sbkp中的N(t,r是在执行时进行相应更新例如,如果由于递归,在生成的测试用例中第二次选择了相同的转换,则N(t,r)的相应值将反映出我们现在处于递归的第二级这些值在Sbkp中更新,并被视为先验值(参见第2.4节)。换句话说,先验值随着测试用例在副本上的生成而更新,并且它们以动态的方式指导测试用例的构造一旦一个测试用例已经完全生成,我们恢复原来的ETS规范,以前的SE,并执行测试用例。在测试用例执行之后,根据后验获得的执行顺序更新SE中的N(t,r)的值。这个循环(即,使用先验值的测试生成,测试执行以获得后验值,其被用作下一次迭代的初始值)被重复,直到具有期望的覆盖或成本的测试用例被执行。BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES61给定S∈ETS(L),ip,lmax,sx=s0. S的测试用例tc是:tc:={a; tca|PathTr(λopt)= a.σJ}其中,r ={r ∈ Path(sx):|ϕ|≤ ip}满足:1. MRI(S,ωopt)≥MRI(S,ω opt),ωopt∈Γ.2. |TC| ≤ lmax3. 使用PathTr(tc)=σ.a,我们分配判决:a) 若L∈Ref(S,σ),则v(tc)=pass;b) 若{a} ∈Ref(S,σ),则v(tc)=inc;c) 如果{a}/∈Ref(S,σ)则v(tc)=fail;1+α.N增加其中,Rollini是没有inc判决的初始子路径Rollend,Rollend是MRI(S,N)=MRini(S,N)+MRend(S,N),除以N=MRini. Ninc可以选择,Ninc是已经出现的判决inc的数量我们计算:Σ从第一次inc裁决结束subpath。α∈[0,1]是一个参数,MRini(S,N)=特拉尼尼Rr,n(t)我MRend(S,N)=Σ第一章Rr,n(t)tca是从状态sy生成的测试用例,使得sx−a→sy。得到了通过这种方式,我们动态地构建测试用例来覆盖那些到目前为止测试不充分这种方法最近已经用案例研究[4]进行了说明,并在[5]中进行了广泛的然而,表4中的算法具有两个缺点:(i) 不必要的成本增量:该算法生成测试用例的树结构引入额外的分支,以涵盖非决定性的行为。当执行这样的测试用例时,他们可能会检查已经测试过的实现的某些部分,而其他部分可能没有被充分覆盖,从而产生额外的成本并降低效率。(ii) 部分选择与全局选择:在测试用例生成过程中,AMR的选择这意味着,可能存在这样的情况,即所选择的过渡之前没有经过测试,但会导致对全球风险影响较小的行为。表5使用预测生成测试用例因此,我们希望补充生成测试用例的可能性BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES62∈E∈∈||≤2N∈为:具有树形结构,例如,表4中列出了一些测试用例,生成的测试用例旨在检查到目前为止测试得很差的某些行为。当某些特定部件的覆盖率仍然较低时,表5中所示的算法可用于后续测试阶段在这样的表中,函数PathTr(P)返回跟踪σTr(P),该跟踪是沿着路径σ Tr(P)获得的。同样,在测试用例生成期间,我们必须使用副本(Sbkp)来修改其先验N(t,r)值。这个新算法的主要特性是:(i) 我们引入了一个预测参数(ip)和一个最大长度(lmax)。(ii) 从状态sJStat(S),我们评估所有可能的转移路径的风险路径(sJ),使得 ϕIP,即, 长度小于预测参数的路径。(iii) 我们选择的路径,先验地,衡量更多的风险。 关于风险度量,我们注意使用参数α[0,1]的判决的存在。这个参数允许惩罚那些可能没有结论性结论但产生成本的测试用例 如果α = 0,则不考虑存在不确定的判决。 如果α = 1,我们减少先验风险度量,计算包含在不确定序列中的风险并将其值除以(1 + Ninc)。典型的初始值可以是α= 0。5.(iv) 一旦选择了tagopt,我们就取它的第一个转换t并更新S中N(t,r)的值来模拟它的执行,前进到下一个状态并重复步骤2,直到测试用例tc达到所需的长度。改变预测参数ip,我们可以在生成测试用例时调整精度。在ip= 1的情况下,我们具有与表4中呈现的算法中相同的信息。当ip=∞时,我们将选择(先验)最佳测试用例。当增加ip的值时,我们必须付出的代价是从给定状态评估所有可能路径所需的计算成本和固有的风险度量计算。我们的经验表明,ip值在3到5左右是非常可行的,具体化也是现实的。示例3图4显示了规格S。其事件的估计风险值为:Ra= 2,Rb= 1,Rc=5,Rd= 3 yRe= 1。 考虑到没有递归,我们选择下一个函数来衡量风险:fMR(e,n)=RI(e)该功能满足:Σ∞Σ∞nRI(e)RI(e)=n=1RI(e)=n=1fMR(e,n)=2Nn=1因此,在每一次执行中,我们都测量了事件的部分风险,我们可以测量的全局风险等于事件的失败风险使用表4中出现的算法,我们可以为集合A选择集合{a}、{d}或{a,d}中的一个。它们各自的风险度量BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES63/打开/关闭BEES公司简介tc1,失败✉tc2,失败✉a/dda/第一章✁❆❅第二章1,失败1,失败✁ ❆✁ ❆✁✉停止❆❆✉停止✉停止✉通过✉通过• fMR(a,1)=2/2=1• fMR(d,1)= 3/2= 1。5见图4。 S,tc1和tc2•fMR(a,1)+fMR(d,1) =1+1。5 =1。25卡片({a,d})2因此,使用该算法,我们将选择A ={d}。按照表4中描述的步骤,我们获得了测试用例tc1,如图4所示。另一方面,我们将使用具有预测参数i p = 2的表5的预测算法。在Sbkp的初始状态下,我们必须计算所有长度为ip = 2的转移序列,并确定它们的风险度量。有三种 情况:(i) a;b:风险估计为fMR(a,1)+fMR(b,1)=2/2 +1/2=1。5(ii) a;c:风险估计为fMR(a,1)+fMR(c,1)=2/2 +5/2=3。5(iii) d;e:风险度量fMR(d,1)+fMR(e,1)= 3/ 2+ 1/ 2 = 2由于第二种选择中存在更大的风险度量,我们取它的第一个过渡,先验地修改Sbkp中N(t,r)的值为此过渡,前进到下一个状态并重复该过程。在第一个过渡之后,只有两种可能性b或c,都是长度1.我们继续确定其风险度量,即:fMR(b,1)=1/2=0。5和fMR(c,1)=5/2=2。五、因此,我们选择b的转换,获得图4中的测试用例tc2。对于tc 1的先验全局风险度量是MRI(S,tc1)= 2,并且对于tc2是MRI(S,tc2)= 3。五、第二个测试案例在风险度量方面明显优于第一个。因此,如果过渡的选举是用一定程度的预测,我们可以采取的信息,丰富的过渡系统所提供的意见。4结论本文提出了一种形式化方法支持的测试方法,其中还包括非形式化的测试方法,以引入测试工程师的经验来评估测试过程的成本。我们的经验告诉我们,这种基于错误权重和成本值的方法提供了一种为✁CeeCBURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES64不同的测试用例分配值的方法,BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES65允许根据不同的标准对它们进行分类,同时考虑到所需的覆盖面和支助费用。测试生成可以由这些算法来指导,以获得上下文适应的测试套件。这个建议最近已经通过一个实际案例研究进行了实验:在分布式无线环境中测试移动拍卖协议[4]。LOTOS被选为支持的形式语言。尽管如此,这里讨论的思想并不是LOTOS特有的,而是适用于广泛的形式化技术,具有相当的表达能力。引用[1] Brookes,S. D.,霍尔,C.A.R.,罗斯科,A.W.:一种沟通顺序过程的理论。ACM杂志31,1984年[2] Brinksma,E.:一个测试的推导理论。方案规范、测试和验证VIII,63-74。一九八八年[3] Brinksma,E.,Tretmans J.,Verhaard,L.:测试选择框架。方案规范、测试和验证,Xi。 Elsevier Science Publishers B.V. 233-248,1991年。[4] Burguillo,J.C., 弗南德斯,M.J., 去吧F.J. Llamas,M. 启发式驱动的测试用例选择:一个案例研究。第11届欧洲形式方法会议(FME2002)。2002年7月22日 至 24 日 , 丹 麦 哥 本 哈 根 ( 论 文 已 接 受 , 将 由 LNCS 出 版 http ://www.diku.dk/FME/[5] Burguillo-Rial,J.C.:Cntribucio'naFasedePruebadeSistema'sConcurrentesyDistribuidosmedianteT'ecnicasdeDescri pci'onFormal. 博士D. 西班牙维哥大学论文(西班牙文),2001年。[6] 海林克湖,Tretmans,J.:一致性测试中的形式化方法:一种概率修正。芽孢杆菌中Baumgarten,H.J. Burkhardt,and A. Giessler,editors,Int. 通信系统测试研讨会IX,Chapman Hall,1996,261-276。[7] Huecas,G.:在普鲁巴斯的埃耶库西基金会的一个正式基金会里,我有一份捐款。博士D. 论文(西班牙文),Uni versidadPoli tecnicadeMadrid,西班牙,1995年。[8] 信息处理系统-开放系统互连:LOTOS:基于观测行为时间顺序的形式描述技术。IS 8807,ISO,1989。[9] 信息处理系统.开放系统互连:互连测试方法和框架. IS 9646,ISO,1991。[10] ITU-T:建议Z.500。一致性测试的形式化方法框架。ISO ITU-T,1997年5月。[11] 米尔纳,R.:通信和并发。伦敦普伦蒂斯-霍尔国际展览BURGUILLO,LLAMAS,FERNA'NDEZ,ROBLES66[12] 迈尔斯,G.L.:软件测试的艺术约翰威利父子公司,一九七九年[13] Robles,T.:Ciclo Software en Ingenier'ıa de Protocolos中的函数的函数。博士D. 论文(西班牙文),Uni versidadPoli tecnicadeMadrid,西班牙,1991年。[14] Tretmans,J.:标签转换系统的一致性测试:实现关系和测试生成。 计算机网络和ISDN系统,29:49-79,1996。[15] Velthuys,R.J.,施耐德,J.M.,Zoerntlein,G.:一种基于结构信息开发的测试衍生方法。方案规范、测试和验证XII,1992年。[16] Zju,J.,Vuong,S.T.:基于广义度量的通信协议测试选择与形式描述技术和协议规范、测试和验证。FORTE X/PSTV XVII.IFIP 1997.[17] Zju,J.,Vuong,S.T.,Chanson,S.T.:嵌入式系统测试覆盖率评估。第11届通信系统测试国际研讨会1998年
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功