您好,欢迎访问三一刀客
第八讲:基于状态的软件测试技术0C202SoftwareTesting8-1Chapter8提纲概述状态转换图状态图基于状态的测试测试步骤产生测试用例覆盖分析总结8-20C202SoftwareTestingChapter8概述-什么是基于状态的测试?基于状态的软件测试技术是一种基于模型测试(Model-basedTesting,MBT)。MBT利用系统需求模型和特殊功能模型,有效地自动生成测试测试用例的技术。一种定义明确的有限状态机(FiniteStateMachine)常用来帮助描述系统的行为。对于面向过程、面向对象的软件开发过程均适用。8-30C202SoftwareTestingChapter8概述-MBT?MBT带来的最大好处是对于可用有限状态机或其变种,生成测试用例只需遍历状态机。此外,MBT还带来其它许多益处:增强开发人员与测试人员之间的沟通、尽早暴露规范与设计中的不明确之处、自动生成很多无重复的有用的测试的能力、减轻由于变化了的需求带来的更新测试集的工作、提高评估回归测试的能力等。8-40C202SoftwareTestingChapter8概述MBT技术带来的所有益处都在一个假设条件下,即所建立的被测系统的状态机“正确地”描述系统的行为。所以,模型的质量决定着MBT技术的成败。8-50C202SoftwareTestingChapter8提纲概述状态转换图状态图基于状态的测试测试步骤产生测试用例覆盖分析总结8-60C202SoftwareTestingChapter8状态转换图状态转换图(StateTransiationDiagram,STD)作为一种图形化标记用来描述计算机系统。在20世纪50年代中期,G.H.Mealy和E.F.Moore同时引入了两种状态转换图的基本模型,这两种模型在硬件设计领域一直发挥着重要的作用。8-70C202SoftwareTestingChapter8状态转换图对系统行为进行模拟、验证及测试。状态转换图是一个简单有向图,图中的节点代表系统的状态,箭头代表状态之间的转换。发展:对复杂软件系统的描述,层次结构(hierarchy)、适时(timing)和通信如:Harel/UML状态图8-80C202SoftwareTestingChapter8有限自动机定义:一个Mealy有限自动机是一个六元组(S,I,O,,,s0),其中S为有限状态集,I为有限输入字符表,O为有限输出字符表,:S×I→S为状态转换函数,:S×I→O为输出函数,s0∈S为初始状态。函数和函数分别描述了有限自动机接受一个输入后转换成的新状态和输出结果。8-90C202SoftwareTestingChapter8受限栈的自动机模型受限栈的有限自动机模型。该受限栈最多只能从集合{a,b}中压入两个元素。图中有7个状态(节点),以栈中元素来标识(ε表示空栈)。短箭头表明ε为初始状态。输入字符表为集合{pusha,pushb,pop,top},其中pusha和pushb,分别表示向栈中压入a或b,pop表示栈顶元素出栈,top表示返回栈顶元素。8-100C202SoftwareTestingChapter80C202SoftwareTesting8-11Chapter8等价有限自动机正规式正规集有限自动机如果2个有限自动机(正规式)对应的正规集是相同的,那么它们是等价的。8-120C202SoftwareTestingChapter8举例:求FA所对应的正规式R03124a,baaa,ba,bbb解:03124a,baaa,ba,bbbxyεεεFA正规式Chapter8024a|baaa|ba|bbbxyεεε0a|baa(a|b)*bb(a|b)*xyεChapter8则:R=(a|b)*(aa|bb)(a|b)*0a|baa(a|b)*bb(a|b)*xyε0a|bxyε(aa|bb)(a|b)*xy(a|b)*(aa|bb)(a|b)*Chapter8两个正规式等价若两个正规式e1和e2所表示的正规集相同,则说e1和e2等价。记作e1=e2例如:01=101(01)=(10)1(01)=(01)Chapter80C202SoftwareTesting8-17Chapter88-180C202SoftwareTestingS1:Idle/StartStateS3:DisplayAmountNeededS4:DeliverSoda,ReturnChangeS5:ReturnMoneyS2:DisplayAmountPowerOnPowerOfffNotenoughMoneyMoneyInputMoneynotenoughEnoughMoneyCancelFakeMoneyCancelEnoughMoneySbSeChapter8六元组(S,I,O,Δ,Γ,S0)状态集,S={S1,S2,S3,S4,S5};输入字符或事件集,I={EM,NEM,CL,FM,ε},其中,EM表示足额的钱,NEM表示不足额的钱,CL表示取消操作,FM表示假币,ε表示空输入;输出字符表,O={Soda,Change,FM},其中,Soda表示碳酸水,Change表示零钱,FM表示假币;8-190C202SoftwareTestingChapter8δ={δi|1≤i≤11},δi列举如下:δ1(S1,EM)=S2,δ2(S1,NEM)=S2,δ3(S1,FM)=S5,δ4(S2,EM)=S4,δ5(S2,NEM)=S3,δ6(S2,CL)=S5,δ7(S3,EM)=S4,δ8(S3,NEM)=S3,δ9(S3,CL)=S5,δ10(S4,ε)=S1,δ11(S5,ε)=S18-200C202SoftwareTestingChapter8γ={γi|1≤i≤5},γi列举如下:γ1(S1,FM)=FM,γ2(S2,EM)=Soda,γ3(S3,EM)=Soda,γ4(S2,CL)=Change,γ5(S3,CL)=Change,s0=Sb8-210C202SoftwareTestingChapter8提纲概述状态转换图状态图基于状态的测试测试步骤产生测试用例覆盖分析总结8-220C202SoftwareTestingChapter8状态图状态转移图无层次结构,状态数目与转移数目随着系统复杂性增加而呈指数增加趋势,导致状态杂乱难以理解。为了解决STD图的缺陷,Harel状态图对状态转换图、有限状态机进行了扩展。8-230C202SoftwareTestingChapter88-240C202SoftwareTestingSTUEFH/CFE/BG/A(a)STUEFE/BG/A(b)DH/CChapter8HAREL状态图的属性“或”(OR)状态一个超态可以分解为任意多个OR子状态,当一个对象处于超态时,它必须处于其中的一个而且是唯一的一个“或”子状态。8-250C202SoftwareTestingUVt0t1SChapter8“和”(AND)状态一个超态可以分解为任意多个AND子状态,当一个对象处于超态时,它必须处于每一个活性的“和”子状态(对象正处于的状态称为活性状态)。8-260C202SoftwareTestingXYt0t1ARSt1t3ZBt2CChapter8状态的聚类与细化描述一个状态与其子状态的关系:聚类(至底向上)、细化(至顶向下)。聚类减少状态图中转换的数量。为了看清状态转换内部细节情况,细化将超态按照需要分解、展开。8-270C202SoftwareTestingChapter88-280C202SoftwareTestingSTUEFH/CFE/BG/A(a)UEF(b)DH/CSTUEFE/BG/A(c)DH/C聚类细化Chapter8历史态状态图中的历史态(HistoryState)给出了超态最近被访问的状态。历史态分为“浅”历史态与“深”历史态。“浅”历史态H是表示最近进入的并与其处于同级的状态“深”历史态H*表示最近访问的处于任意深度级别上的子状态。8-290C202SoftwareTestingChapter88-300C202SoftwareTestingABKCEDFGHABKCEDFGH*(a)(b)Chapter8正交性(Orthogonality)正交性本质上是一个AND分解,但注重描述“AND”状态之间或组件之间的同期并发情况。8-310C202SoftwareTestingEGFkehgBCf[in(G)]eIADYHnempB,EHIC,EB,FB,GC,GC,Fkhgm|pegenpkm|ppehpepef(a)(b)Chapter8状态图中的事件广播8-320C202SoftwareTestingEGFkegnBCf[G]eJADIHm/en/fChapter8从状态图变换到STD为了导出测试用例,将层次化的状态图变换为“平面”版的状态转换图。8-330C202SoftwareTestingWYXjekg(a)UVf[in(Y)]eApRTU,WV,WU,XU,YV,YV,Xkjgegekejef(b)ApChapter8UML状态图Harel状态图最初是为面向功能的系统开发的,后来做少量修改后用在面向对象的系统。UML状态图为对象管理服务,是在Harel的状态图的基础上扩展了一些新特征。UML状态图中,根据变量所具有的值以及值的数据类型,对象可能处于不同的状态。8-340C202SoftwareTestingChapter8两种状态图的比较8-350C202SoftwareTesting属性Harel状态图UML状态图内嵌与正交状态支持支持单个转移代表从不同子状态的相同的事件。支持支持事件广播支持支持Chapter88-360C202SoftwareTesting属性Harel状态图UML状态图历史状态支持支持子状态机支持支持重叠状态(一个子状态属于一个以上的父状态)支持无Chapter88-370C202SoftwareTesting属性Harel状态图UML状态图伪状态(代表转换路径中的瞬间点)无,但其连接符进行同样操作支持Fork(分叉)与Join(合并)方法用Fork与Merge用伪状态实现事件可以带有参数无支持Chapter80C202SoftwareTesting8-38属性Harel状态图UML状态图自由转移当一个退出转移离开组合边界时,发生不一致情况通过定义一个自由边界退出转移,防止了自由转移实现同期的方法有限的方法:用IS_IN参数;广播通讯多种方法:广播通讯;Fork(分叉);Join(合并);利用被传播的事件;用IS_IN操作;用synch伪状态对于事件处理由最外层状态机负责由最内层状态机负责Chapter8提纲概述状态转换图状态图基于状态的测试测试步骤产生测试用例覆盖分析总结8-390C202SoftwareTestingChapter8基于状态的测试用状态图来描述事件序列,或称为用例场景,并由此产生测试用例。白盒测试技术是以代码覆盖为标准来决定测试用例产生数量、测试结束标准;评价标准是状态、转移覆盖及对于不正常、不相关事件的考虑,并也以此决定测试用例产生数量、测试结束条件。8-400C202SoftwareTestingChapter8测试步骤8-410C202SoftwareTesting图形化规格说明书(GraphicalSpecification)中介规格说明书(IntermediateSpecification)测试说明书(TestingSpecification)层次化状态图(HierarchicalStatechart)平面状态图(FlatState-transitionDiagram)测试说明书(Test
本文标题:状态测试
链接地址:https://www.111doc.com/doc-4894127 .html