2-4U基于状态模型的测试.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2-4U基于状态模型的测试

状态机模型与 基于状态的测试 本节要点 几种常用的状态机模型 UML中的Statechat Diagram; FSM; EFSM; 基于状态变迁树的测试用例生成方法; 状态机模型的来源 来源于分析和设计(UML); 来源于程序代码分析(EFMS); 状态机模型 状态机是描述系统(软件)状态以及状态变迁过程的数学模型,由一系列的状态、状态的转移和事件组成。 状态机表示一个模型元素在其生命周期中的情况:从该模型元素的开始状态起,响应事件,执行动作,引起转移到新状态,又在新状态下如此动作,直到终结状态。 状态(state):表示模型元素在生存周期的一种状况,如满足某些条件,进行某种活动等。初始状态、终结状态。 转移(transition):表示模型元素在不同状态之间的联系。在事件触发下,一个状态可以转移到另一个状态; 事件(event):一个有意义的出现(Occurrence)的说明。该出现在某个事件和空间点发生,并且立即触发一个状态的转移。 动作(Action):一个可执行的原子计算,导致状态的变更或返回一个值。 活动(Activity):在状态机中的一个非原子的操作,由一系列动作组成。 例子:Unix进程的状态和转移 状态机的错误模型(1) 状态错误:程序实现的状态与需求不一致 错误状态:模型元素不可能出现的状态; 不可达状态:从初始状态出发,不能达到的状态; 状态重叠:两个状态之间存在某种重叠,使得模型元素同时出现两种状态; 转移错误:模型元素在状态变迁中的错误 丢失转换:对一个有效的事件没有响应; 不正确的转换:实现中的一个事件使得模型元素变迁到一个不正确的结果状态; 潜行路径:出现一个非法的状态转换; 状态机的错误模型(2) 事件错误 事件丢失:对一类事件没有处理; 不正确的事件:一个事件所代表的出现与定义不同; 多余的事件/陷阱门:接受了没有在需求中定义的事件; 非法消息失效:没有正确处理一个非法消息; 活动/动作错误 丢失动作:对一个转换,实现没有产生任何动作; 不正确动作:对一个转换,实现产生了错误的动作; FSM 状态机模型定义 FSM可以定义为一个四元组:M=∑,S,T,s0; 其中∑是状态机接受的输入集合;S是状态机的状态集合;T是转换集合,T=∑?S?S,e,s1,s2表示状态机处于一个起始状态s1∈S时,接收到一个输入e∈∑,那么状态机的状态将变成s2∈S;s0∈S是状态机M的初始状态; FSM是最为基本的状态机模型; 例子:一个整数栈的状态机模型 一个整数栈,其栈深为5;其主要的操作有pop(), push(int), top(); 栈对操作的约束为:栈空时执行pop()操作无效;栈满时执行push()操作无效; 该栈的状态由栈中已有的整数的数目决定; 例:栈的状态图(FSM) 例:栈的状态图(FSM) 输入集合为:pop,push;初始状态为S0; 状态集合为:{S0,S1,S2,S3,S4,S5}; S0:size=0; S1:size=1; S2:size=2; S3:size=3; S4:size=4; S5:size=5; 转换集合为: pop,S0,S0; push,S0,S1;push,S1,S2; push,S2,S3; push,S3,S4; push,S4,S5; push,S5,S5; pop,S1,S0; pop,S2,S1; pop,S3,S2; pop,S4,S3; pop,S5,S4; 基于状态变迁树的测试用例生成方法 从FSM转化为状态变迁树的基本方法 1、将初始状态作为根节点; 2、从初始状态出发广度优先遍历整个FSM; 将被遍历的节点作为当前节点的的子节点; 若被遍历的节点在从根节点到本节点的路径上出现过,则中止该节点的遍历; 从状态变迁树的根节点出发,到每一叶子节点的路径构成一个测试用例。其中路径上所有的转换构成输入序列,路径上所有的节点构成Oracle的一部分。 例子:一个购物机的例子 一个简化的投币购物机的工作流程 1、投入两个硬币,可以买东西; 2、多了不卖,把多余的硬币退还给顾客; 3、用户可以要求退还硬币。 C++的实现(仅定义部分) class CCoinBox { unsigned totalQtrs; // total quarters collected unsigned curQtrs; // current quarters collected unsigned allowVend; // 1 = vending is allowed public: CCoinBox() { Reset(); } void AddQtr(); // add a q

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档