您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 软件测试方法与实践讲义-第八章
2020年2月23日软件测试讲义1第八章基于状态的软件测试技术2020年2月23日第八章基于状态的软件测试技术2主要内容8.1状态转换图8.2状态图8.2.1Harel状态图的属性8.2.2从状态图变换到STD8.2.3UML状态图8.3基于状态的测试8.2.1测试步骤8.2.2产生测试用例8.2.3覆盖分析2020年2月23日第八章基于状态的软件测试技术3回归测试简介基于状态的软件测试技术是一种基于模型的测试技术(Model-BasedTesting,MBT)。MBT利用系统需求模型和特殊功能模型,自动生成有效的测试用例。一种定义明确的有限状态机常用来帮助描述系统的行为。从测试角度看,MBT技术带来的最大的好处是针对可用的有限状态机或变种,生成测试用例需要遍历状态机。MBT技术带来的所有益处都在一个假设条件下,即所建立的被测系统的状态机“正确地”描述了系统的行为;换句话说,模型的质量决定着MBT技术的成败。2020年2月23日第八章基于状态的软件测试技术4回归测试简介状态转换图(StateTransitionDiagram,STD)作为一种图形化标记用来描述计算机系统。20世纪50年代中期,G.H.Mealy和E.F.Moore同时引入了两种状态转换图的基本模型,这两种模型在硬件设计领域一直发挥着重要的作用。近些年来,两种模型得到广泛扩展,增加了对诸如层次结构(Hierarchy)、适时(Timing)和通信这些方面的表达能力,使得可以使用这两种模型对复杂的软件系统进行建模。2020年2月23日第八章基于状态的软件测试技术58.1状态转换图1.Mealy自动机的定义Mealy和Moore奠定了有限自动机的理论。一个Mealy有限自动机是一个六元组(S,I,O,δ,r,s0),其中:S—为有限状态集;I—为有限输入字符表;O—为有限输出字符表;δ:S×I→S为状态转换函数;r:S×I→O为输出函数;s0∈S为初始状态。2020年2月23日第八章基于状态的软件测试技术68.1状态转换图1.Mealy自动机的定义Moore的有限自动机和Mealy有限自动机类似,只是输出函数r被r’:S→O所代替,也就是说,输出是和状态有关而不是和转换有关。从上述形式化定义,可以看到状态转换图(STD)是一个简单的有向图,其中节点表示状态,表示在不同时刻的不同输入值组合;标有触发事件和条件的箭头表示转换,转换是由输入引起的状态转换,状态转换图可以帮助理解系统的行为。2020年2月23日第八章基于状态的软件测试技术78.1状态转换图2.自动售货机的例子在自动售货机中。Bill和Coin处可以投入纸币和硬币;Display是一个液晶显示器,可以显示投入的金额或还须投入的金额;Button处是多个按钮,可以选择不同的饮料;Change处递出找回的零钱,而Dispenser处递出饮料。2020年2月23日第八章基于状态的软件测试技术88.1状态转换图2.自动售货机的例子S1:Idel/StarStateS2:DisplayAmountS5:ReturnMoneyS3:DisplayAmountNeededS4:DeliverSoda,ReturnChangePoweroffPoweronMoneyInputCancelEnoughMoneyCancelEnoughMoneyFakeMoneyNotEnoughMoneyMoneyNotEnough2020年2月23日第八章基于状态的软件测试技术98.1状态转换图2.自动售货机的例子•S={S1,S2,S3,S4,S5}•I={EM,NEM,CL,FM,ε}•O={Soda,Change,FM}•δ={δi|1≤i≤11}δ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,ε)=S1•r={ri|1≤i≤11}r1(S1,FM)=FM,r2(S2,EM)=Soda,r3(S3,EM)=Soda,r4(S2,CL)=Change,r5(S3,CL)=Change•S0=Sb2020年2月23日第八章基于状态的软件测试技术108.2状态图1.状态图的概念状态转换图是无层次结构,状态数目与转移数目随着系统复杂性的增加呈指数增长趋势,导致状态杂乱,难以理解。为了解决STD图的缺陷,Harel提出了状态图(Statechart),Harel的状态图是状态转换图、有限自动机的扩展。状态图表示系统行为,提供可视化形式,以模块化风格描述其状态和转移。状态图用来控制和组织详细信息,如果这些信息采用表格形式表示,则所能提供的清晰度将降低。2020年2月23日第八章基于状态的软件测试技术118.2状态图1.状态图的概念STUEH/CG/AE/BFF状态转换图STUEH/CG/AE/BFDH/C表示事件H触发,执行动作C。状态图D是由S和T合并而成的超级状态。2020年2月23日第八章基于状态的软件测试技术128.2状态图2.Harel状态图的属性状态图提供层次结构可减少系统建模复杂性,支持内容抽象、并发、正交性、全局通信机制、历史状态,具有简洁性、表达能力强、可进行状态分解。(1)“或(OR)”状态:一个超态可以分解为任意多个OR子状态,当一个对象处于超态时,它必须处于其中的一个或者是唯一的一个“或”子状态。UVt1t0S2020年2月23日第八章基于状态的软件测试技术138.2状态图2.Harel状态图的属性(2)“与(AND)”状态:一个超态可以分解为任意多个AND子状态,当一个对象处于超态时,它必须处于每一个活性的“与”子状态(对象正处于的状态称为活性状态)。XYt1t0ARSt3t1BZt2C2020年2月23日第八章基于状态的软件测试技术148.2状态图2.Harel状态图的属性(3)聚类与细化:聚类(Clustering)是自底向上的概念,而细化(Refining)是自顶向下的概念。二者都是描述一个状态和子状态的关系。聚类是减少状态图中转换的数量。为了看清状态转换内部的细节情况,超态可以按照需要分解,展开,这个过程称为细化。STUEH/CG/AE/BFF2020年2月23日第八章基于状态的软件测试技术158.2状态图2.Harel状态图的属性STUEH/CG/AE/BFDUEH/CFD聚类后的状态图细化后的状态图2020年2月23日第八章基于状态的软件测试技术168.2状态图2.Harel状态图的属性(4)历史态:状态图的历史态(HistoryState)给出了超态最近被访问的状态。历史态分为“浅”历史态和“深”历史态。简单地说,“浅”历史态H表示最近进入的并与其处于同级的状态,而“深”历史态H*表示最近访问的处于任意深度级别上的子状态。2020年2月23日第八章基于状态的软件测试技术178.2状态图2.Harel状态图的属性(4)历史态ABEEDHKABEEDH*K2020年2月23日第八章基于状态的软件测试技术188.2状态图2.Harel状态图的属性(5)正交性:正交性本质上是一个AND分解,但注重描述AND状态之间和组件之间的同期并发情况。对于一个Y状态有两个正交组件组成:A和D,由AND运算关联。处于状态Y等价于既处于状态A又处于状态D。那么我们可以通过将A和D中的两个状态合成表示目前Y所处于的子状态。2020年2月23日第八章基于状态的软件测试技术198.2状态图3.从状态图变换到STD为了导出测试用例,需将层次化的状态图变换为“平面”版的状态转换图。UVXYWRAegjkepf[in(Y)]T2020年2月23日第八章基于状态的软件测试技术208.2状态图3.从状态图变换到STDApU,XU,WV,WV,XV,YU,Yjejkegegkef2020年2月23日第八章基于状态的软件测试技术218.2状态图4.UML状态图DavidHarel发明的状态图最初是为面向功能的系统开发的,后来做少量的修改后用在面向对象系统。UML状态图为对象管理服务,是在Harel的状态图的基础上扩展了一些新特性。属性Harel状态图UML状态图内嵌与正交状态支持支持单个转移代表从不同子状态的相同的事件支持支持事件广播支持支持历史状态支持支持2020年2月23日第八章基于状态的软件测试技术228.2状态图4.UML状态图属性Harel状态图UML状态图子状态机支持支持重叠状态支持无伪状态无,但其连接符同样操作支持Fork与Join方法利用Fork和Merge用伪状态实现事件可以带参数无支持自由转移退出转移离开组合边界时,不一致通过定义自有边界退出转移实现同期的方法有限的方法,广播通信多种方法对于事件的处理有最外层状态机负责由最内层状态机负责2020年2月23日第八章基于状态的软件测试技术238.3基于状态的测试1.基于状态的测试概念定义基于状态的测试是一种基于模型的测试技术,也就是通过建立描述系统行为的状态机,来自动生成测试用例。和白盒测试的区别基于状态的测试一般是用状态图来描述事件序列,或称为用例场景,并由此产生测试用例。白盒测试技术是以代码覆盖为标准来决定测试用例产生数量、测试结束标准;基于状态的测试评价标准是状态、转移覆盖及对不正常、不相关事件的考虑,并由此决定测试用例产生数量和测试结束条件。2020年2月23日第八章基于状态的软件测试技术248.3基于状态的测试2.测试步骤图形化的规格说明书中介规格说明书测试说明书层次化的状态图平面状态图测试说明书使用标记表示特殊状态转移使用通用方法产生测试用例2020年2月23日第八章基于状态的软件测试技术258.3基于状态的测试2.测试步骤(1)创建图形化的规格说明书需求的图形化表示模型包括数据流图(DFD)、实体关系图(ERD)、状态图(Statechart)、状态转换图(STD)、对话图和类图,它们可以作为需求分析工具。用这些图对问题域进行建模,对于复杂的系统行为、语义进行描述,或者用于创建新系统的概念表示法。另外,图形有助于分析者和客户在需求方面形成一致的、综合的理解,可以发现需求的错误。2020年2月23日第八章基于状态的软件测试技术268.3基于状态的测试2.测试步骤(2)产生中介规格说明书选用图形规格说明书的目的是要方便生成测试说明书。其中状态转换图和状态图是两种常用的图形化技术。考虑到测试不正常和不相关事件,可能需要在状态转化图添加特殊状态转移标记;对于层次化状态图,需要将其转换成状态转移图即平面化。2020年2月23日第八章基于状态的软件测试技术278.3基于状态的测试2.测试步骤(3)生成测试规格说明书上面中介规格说明书是一种有向图。其中一个节点为始点(可能是哑节点),一个节点为终点(也可能是哑节点)。遍历从始点到终点的所有路径,包括有效路径和无效路径。每条路径对应于一个测试序列。有效路径是指对于一系列有效输入,系统相应的一系列相应;无效路径是指对于一系列无效输入,系统相应的一系列“意外”处理。2020年2月23日第八章基于状态的软件测试技术288.3基于状态的测试3.产生测试用例(1)ATM系统需求用户必须能从ATM卡的任一有效账户上提取现金,提取的金额是20的整数倍;用户必须能在ATM卡的任一有效账户上存款,指放入信封里的现金或支票;用户必须能在ATM卡的任两个有效账户之间进行货币转账;用户必须能查询ATM卡的任一有效账户上的存款余额。2020年2月23日第八章基于状态的软件测试技术298.3基于状态的测试3.产生测试用例(2)绘出状态图S1:ReadyS2:AskingforPINS9:Asking“Continue?”S5:PerformingWithdrawalS6:PerformingDepositT15:PoweroffT1:PoweronS3:AbsobingthecardS4:aski
本文标题:软件测试方法与实践讲义-第八章
链接地址:https://www.777doc.com/doc-3906375 .html