状态转换图简介

基于状态转换的用例设计是软件测试设计的一种传统方法。这种方法具有以下4个特征:

(1)软件测试对象的输出和行为方式不仅受当前输入数据的影响,同时还与软件测试对象之前的执行情况、之前的事件或以前的输入数据等有关。
(2)通过引入状态图(State Diagram)来描述软件测试对象和软件测试数据、对象状态之间的关系。
(3)状态图中的各个状态是通过不同的事件驱动的,如函数的调用。
(4)基于状态图开展的测试称之为状态转换测试。
状态图转化法最早运用于嵌入式测试用例设计。在嵌入式软件中,系统通过某种行为驱动能够从一种状态改变到另一种状态。下面的示例图是关于内存的状态转换图。

状态转换树

上面的状态转换图“循环往复”,不利于初学者理清状态转换关系。下面以视频播放软件作为案例,来给大家介绍一个比较简单易懂的状态转化图,如下图所示。
上图为一个主流程为“开机”-“运行”-“停机”流程结构呈“树状”的状态转换图,也可以称为状态转换树。
从图中可以清晰得看出这个软件的功能是:打开视频播放机,系统处于"开机"状态,单击【运行】键,系统处于"运行"状态;单击【停机】键,播放结束,系统处于停机状态;在"运行"状态单击【快进】键,进入"快进"状态,【快进】键最多可以按4次,分别为2倍数、4倍数、8倍数和16倍数前进;快进状态单击【停止】键返回"运行"状态,停机状态单击【播放】键,重新进入"运行"状态。

状态转换图转为状态转换树的方法

复杂的状态转换图不利于编写完备的测试用例,为此,我们需要将其转换为状态转移树,然后基于状态转换树去设计每个阶段的测试用例。转换的基本思路是:

(1)状态树的节点描述状态图的状态,状态树的枝干描述状态图的事件。
(2)转换树的根节点为状态图的初始状态,转换树的终节点为叶节点。
(3)转换树的每个节点,在状态图中如有直接后续状态,则添加一个枝干和节点(不同的事件应有不同的枝干和节点),直到出现如下情况,可将此节点作为叶节点:
从根节点到新添加的节点的路径上已经出现过相同状态。
或者:
新添加节点是状态图的一个结束状态,且不需要考虑其他状态转换。
来源:"Testing Software Design Modeled by Finite-State Machines", IEEE Transactions on Software engineering, vol.4, no 3, may 1978, p 178-187
状态转换软件测试覆盖率:
(1)覆盖软件测试对象所有的状态;
(2)覆盖软件测试对象所有的事件;
(3)覆盖软件测试对象所有的状态转换至少一次;
(4)覆盖软件测试对象所有的状态、事件和状态转换。
下面讨论视频播放软件状态图是如何转换成状态树的。
下图为该软件的0-switch转换图。有了这棵树,就可以设计测试用例了。从树的根节点到所有叶子节点就是一个测试用例,这样就得到4个测试用例,分别为:
(1)开机->运行->快进->运行;
(2)开机->运行->快进->快进;
(3)开机->运行->停机->运行;
(4)开机->运行->停机。
上面这棵树叫作0-switch展开,也就是最基本的展开法。为了得到更多的测试用例,可以把这棵树的非结束的叶子节点再进行一次展开,也就是1-switch展开,如图2-7所示。
这样,可以得到7个测试用例:
(1)开机->运行->快进->运行->快进;
(2)开机->运行->快进->运行->停机;
(3)开机->运行->快进->快进->运行;
(4)开机->运行->快进->快进->快进;
(5)开机>运行->停机;
(6)开机>运行->停机->运行->停机;
(7)开机>运行->停机->运行->快进。
按照这种方法可以设计2-switch、3-switch……但是,在实际工作中,航空和医疗等特殊领域除外,一般做到1-switch就已经足够了。

测试设计之状态转换图相关推荐

  1. [编译原理课设] 自动机的状态转换图表示

    课程设计的要求 要求设计一个具有绘图功能的程序,可以手工以状态转换图的方式绘制自动机: 图形化的自动机可以保存,读取: 根据状态转换图得出自动机的状态转换矩阵: 根据状态转换矩阵,自动绘制出状态转换图 ...

  2. 测试设计-基于规格说明

    1,等价类划分 等价类划分法将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类.然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表组成,从 ...

  3. 软件测试如何识别等价类,测试设计之等价类和边界值

    1  引言 一般来说,软件测试设计方法分为5类:传统的黑盒测试方法.基于质量的测试方法.基于风险的测试方法.基于经验的测试方法以及白盒测试方法.下面分篇介绍下传统的黑盒测试和白盒测试方法. 5种黑盒测 ...

  4. 【软件工程】软件工程中应用的几种图辨析:系统流程图、数据流图、数据字典、实体联系图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图、PAD图、判定表、

    软件工程中应用的几种图辨析:系统流程图.数据流图.数据字典.实体联系图.状态转换图.层次方框图.Warnier图.IPO图.层次图.HIPO图.结构图.程序流程图.盒图.PAD图.判定表.判定树.Ja ...

  5. MBIST:用于嵌入式存储器的可测试设计技术

    MBist技术可以自动实现存储器单元或阵列的RTL级内建自测试电路,MBIST的EDA工具支持多种测试算法的自动实现,可针对一个或多个内嵌存储器自动创建BIST逻辑,并完成BIST逻辑与存储器的连接, ...

  6. 词法分析(一):状态转换图

    词法分析概述 状态转换图 状态转换图是一张有限有向图 结点表示状态,结点用圆圈表示 状态之间存在有向弧,弧上标记有字符或字符集, 表示某一状态接受箭弧上的字符/字符集输入后到达另一状态 一张状态转换图 ...

  7. TICA 2019 基于人工智能的模型驱动测试设计

    阿里QA导读:面对被测系统发生重大的变化,过去的资产如何维护?如何通过人工智能驱动,设计测试自动化解决方案?本次分享将从模型驱动设计,AI如何优化测试用例等维度,介绍一种AI在软件测试领域的实践方案. ...

  8. 基于微信小程序的大学生心理健康测试设计与实现 .docx

    目录 1 绪论 3 1.1 项目开发背景 3 1.2 项目开发意义 3 1.3 项目主要的内容 4 2 相关技术介绍及系统环境开发条件 5 2.1相关技术介绍 5 2.2系统环境开发条件 6 3 系统 ...

  9. Day11-软件测试设计之银行储蓄系统

    银行储蓄系统 需求分析 银行储蓄系统存取款流程如下: 1. 业务员事先录入利率信息.  2. 如果是存款,储户填写存款单,业务员将存款单键 入系统,系统更新储户存款信息(存款人姓名.存款人账号.电话号 ...

最新文章

  1. 为清理助手制作便利工具的技术实现
  2. 企业应用开发平台-GAP平台
  3. myeclipse mysql 乱码_MyEclipse与mysql增改查现乱码解决方案绝对有效
  4. 华为荣耀v20是android10,荣耀V20和荣耀V10买哪个好
  5. scala中循环守卫_Scala中的循环
  6. mac抹掉磁盘重装系统未能与服务器取得联系_Mac重装系统不再难:苹果电脑重装系统教程...
  7. 操作系统实验七(银行家算法)
  8. 有哪些值得长期坚持下去的好习惯?
  9. python去除图片背景(透明色)
  10. 教你微信怎么加更多好友的绝佳方法
  11. 【六袆 - windows11 】Win11无法登录微软账号;Win11无法登录微软账号的解决方法
  12. 【车载】度(角度)和弧度的概念
  13. html格式转换word清除格式,Word2010怎么清除格式?word清除格式(图文)教程
  14. 用计算机弹音乐乐谱小幸运,小幸运——歌词和弦版本钢琴谱
  15. 超全荒地UE4素材网站整理
  16. php配置环境变量方法
  17. 智能打印SDK---官方博客
  18. background-size:cover | contain;
  19. android判断不同手机厂商,打开允许后台运行APP弹窗
  20. Java 8 日期、时间、时间矫正器操作

热门文章

  1. OWASP-安全编码规范
  2. 当按下Alt-F4时阻止关闭Outlook,使其最小化(翻译)
  3. ceac计算机考试试题,计算机ceac考试复习题12套.doc
  4. 什么是市盈率(PE)?
  5. 从程序员到项目经理(16):原来一切问题都是可以解决的
  6. FRABA绝对值编码器 OCD58-EA00B-1213-S0
  7. My dear dalao please daidai wo。
  8. 互联网巨头“赢家通吃”,会产生哪些严重后果?
  9. 【博学谷学习记录】超强总结,用心分享 | 【Lunux】Manjaro手动升级icu依赖库安装MySQL以及Navicat
  10. [博学谷学习记录]超强总结,用心分享|第07节 常用的API-----笔记篇