嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?

news2024/11/27 22:24:41

12 | 什么是状态转换测试?如何开展?

  • 1 状态转换测试简介
    • 1.1 基于状态的测试设计技术
    • 1.2 系统行为
  • 2 故障类别
    • 2.1 状态
    • 2.2 防护
    • 2.3 转换
    • 2.4 事件
    • 2.5 其它
  • 3 状态转换测试技术
    • 3.1 编写状态-事件表
    • 3.2 编写转换树
    • 3.3 编写合法测试用例的测试脚本
  • 3.4 编写非法测试用例的测试脚本
    • 3.5 编写测试脚本防护
  • 4 广泛性和实用性
    • 4.1 广泛性
    • 4.2 故障检测
    • 4.3 实用性和可用性

1 状态转换测试简介

  • 嵌入式系统有些表现出基于状态的行为,设计此系统可使用基于状态的建模;
  • 在设计过程中,创建的模型可作为测试设计的基础;
  • 以下将描述基于状态的模型来导出测试用例的技术。

1.1 基于状态的测试设计技术

  • 此技术目标是:验证事件、动作、行为与转台转换之间的关系;
  • 通过此技术,可判定系统基于状态的行为是否满足系统的规范集合。

1.2 系统行为

分三种类型:

  • 简单行为;
  • 连续行为;
  • 基于状态的行为。

2 故障类别

基于状态的行为出现错误的三种原因:

  • 状态图无法表示系统功能规范的正确转换;
  • 状态去的语法不一致或不正确;
  • 从状态图到代码的转换。

以下是状态图和软件中可能发生的故障。

2.1 状态

  • 没有进入转换的状态;
  • 遗漏初始状态,需定义状态图中的所有路径;
  • 额外状态(系统生成比状态图中多的状态);
  • 遗漏状态(系统中没有给出状态图中给出的状态);
  • 破坏性生态(转换到无效状态而导致系统崩溃)。

2.2 防护

  • 防护必须指向转换而不是状态;
  • 完成事件转换上的防护;
  • 初始转换上的防护;
  • 重叠防护;
  • 防护为false但仍有转换发生;
  • 错误的防护实现。

2.3 转换

  • 必须有一个接收状态与一个最终状态;
  • 相互矛盾的转换;
  • 遗漏或错误转换;
  • 遗漏或错误动作。

2.4 事件

  • 遗漏事件;
  • 隐含路径;
  • 一个没有定义的事件做出响应。

2.5 其它

  • 在正交区域使用同步;
  • 规范故障可使用审查清单进行覆盖,如下:
    在这里插入图片描述

3 状态转换测试技术

3.1 编写状态-事件表

  • 状态图是编写状态-事件表的起点;
  • 编写状态-事件表给出状态与事件的关系;
  • 如下是一个简化的录音机(VCR)状态图:
    在这里插入图片描述
  • 由上述状态图可编写出状态-事件表:
    在这里插入图片描述

3.2 编写转换树

  • 状态-事件表被用于编写转换树;
  • 初始状态为转换树的根;
  • 以下为VCR的转换树:
    在这里插入图片描述

3.3 编写合法测试用例的测试脚本

  • 借助以上转换树和状态-事件表可编写合法测试用例的测试脚本;
  • 转换树中每一条路径是一个测试用例;
  • 如下是部分从VCR状态图导出的测试用例:
    在这里插入图片描述

3.4 编写非法测试用例的测试脚本

  • 可从状态-事件中得到非法的状态-事件组合;
  • 非法的状态-事件是指在该特定状态时,系统没有指定要对该事件做出响应;
  • 部分非法测试用例的测试脚本如下:
    在这里插入图片描述

3.5 编写测试脚本防护

  • 以下为防护编写的测试用例的测试脚本:
    在这里插入图片描述

4 广泛性和实用性

4.1 广泛性

  • 测试深度被用于计算测试覆盖率;
  • 有关公式如下:
n:表示转换次数(也用于测试深度)
1次转换覆盖率/0次切换覆盖率 = 执行的转换数/状态模型中的转换总数
2次转换覆盖率/1次切换覆盖率 = 执行的两次转换的序列数/状态模型中两次转换的序列总数
状态-事件覆盖程度 = (状态数-执行的事件对)/(状态数*事件数)

4.2 故障检测

  • 测试深度是指测试基于状态的行为所需的最少工作;
  • 测试效果与故障检测的关系:
故障类别合法测试用例非法测试用例边界值分析更深层次的测试
额外状态++++
遗漏状态+---
破坏性状态*-+/-+/-+
重复防护--+/--
防护为false的转换--+-
相互矛盾的转换+---
遗漏或错误转换++++/-
遗漏或错误动作+--+/-
遗落或错误事件+--+/-
隐含路径-+++/-
-:检测出故障的希望很渺茫
+:检测出故障的概率很大
+-:检测出故障的概率很小
*:进行更深层次的测试可能不足以检测出破坏性状态

4.3 实用性和可用性

  • 影响实用性的因素:

步进方式;
重置选项;
状态设置;
状态、转换、输入、输出与事件进行唯一性编码;
转换跟踪。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/769646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【100天精通python】Day5:python 基本语句,流程控制语句

目录 1. 条件语句 1.1 if语句 1.2 if-else语句 1.3 if-elif-else语句 2 循环语句 2.1 for循环 2.2 while循环: 3 跳转语句 3.1 break语句 3.2 continue语句 3.3 pass语句 4 异常处理语句(try-except语句) 5 语句嵌套 5.1 条…

将maven库中没有的jar包导入本地库后编译还提示缺这个jar包

Maven本地仓库有对应的jar包但是报找不到 问题原因 第一,你本地仓库对应的包文件夹下有_remote.repositories这个文件; 第二,你的项目现在连接不到下载这个包的仓库; 以上两点就是本地明明有对应的jar包,但项目中还…

SpringBoot项目中WEB页面放哪里--【SB系列之008】

SpringBoot系列文章目录 SpringBoot 的项目编译即报错处理–SB系列之001 —第一部的其它章节可以通过001链接 SpringBoot项目中WEB页面放哪里–【SB系列之008】 SpringBoot项目中WEB与Controller的联系–【SB系列之009】 ———————————————— 文章目录 SpringBoo…

VulnHub靶机-Socnet

文章目录 实验环境信息收集存活主机探测端口服务探测目录扫描反弹shell建立代理 内网探测漏洞发现漏洞利用 权限提升总结 实验环境 靶机地址: https://www.vulnhub.com/entry/boredhackerblog-social-network,454/靶机ip:192.168.56.101 攻击机&#x…

银河麒麟系统挂载的home文件夹无执行权限

银河麒麟系统挂载的home文件夹里放可执行程序,脚本无法运行,最后修改/etc/fstab文件如下所示就可以了 修改完重启电脑就可以执行可执行程序了

Thymeleaf + Layui+快速分页模板(含前后端代码)

发现很多模块写法逻辑太多重复的&#xff0c;因此把分页方法抽取出来记录以下&#xff0c;以后想写分页直接拿来用即可&#xff1a; 1. 首先是queryQrEx.html&#xff1a; <!DOCTYPE html> <html xmlns:th"http://www.w3.org/1999/xhtml"> <head>…

专业信用修复!揭阳市企业信用修复办法,企业修复好处及失信危害,申请条件

本文小编将为大家介绍2023年揭阳市企业信用修复办法指导及信用修复意义、好处等内容&#xff0c;详情如下&#xff0c;如果有广州市、深圳市、江门市、佛山市、汕头市、湛江市、韶关市、中山市、珠海市、茂名市、肇庆市、阳江市、惠州市、潮州市、揭阳市、清远市、河源市、东莞…

Nautlius Chain主网正式上线,模块Layer3时代正式开启

Nautilus Chain是在Vitalik Buterin提出Layer3理念后&#xff0c; 对Layer3领域的全新探索。作为行业内首个模块化Layer3链&#xff0c;我们正在对Layer3架构进行早期的定义&#xff0c;并有望进一步打破公链赛道未来长期的发展格局。 在今年年初&#xff0c;经过我们一系列紧张…

RTD2555T RTD2556T(Typec) eDP屏显示介绍

RTD2555T是新一代HDMI2DP转eDP的IC&#xff0c;主要应该用Typec便携式显示器驱动芯片&#xff0c;搭配LDR6282等PD IC实现2个Typec口正反插&#xff0c;充电等&#xff0c;支持按键菜单操作&#xff0c;支持串口通信控制等功能定制。

【stable diffusion】保姆级入门课程01-Stable diffusion(SD)文生图究竟是怎么一回事

目录 学前视频 0.本章素材 1.什么是文生图 2.界面介绍 2.1切换模型的地方 2.2切换VAE 2.3功能栏 2.4提示词 1.提示词的词性 2.提示词的语法 3.提示词的组成 4.提示词的权重调整 2.5参数调整栏 1.采样方法 2.采样迭代步数 3.面部修复 4.平铺图 5.高清修复 6.…

数据中心机房建设,务必确定这13个关键点

下午好&#xff0c;我的网工朋友。 关于机房、机架的相关内容&#xff0c;给你们说了不少。 今天再给你补充个知识点&#xff0c;机房建设&#xff0c;要怎么做。 熟悉机房建设的网工朋友可能都知道&#xff0c;一个全面的数据中心机房建设工程一般包括&#xff1a; 综合布…

多线程——互斥和同步

多线程—互斥和同步 文章目录 多线程—互斥和同步多线程互斥互斥量mutex互斥量的接口初始化互斥量静态分配动态分配&#xff1a;pthread_mutex_init初始化互斥量 销毁互斥量int pthread_mutex_destroy销毁互斥量 互斥量加锁和解锁pthread_mutex_lock加锁pthread_mutex_trylock非…

IPv4 与 IPv6:网络性能和带宽的比较

网络连接已经成为我们生活中不可或缺的一部分&#xff0c;而IP地址是网络连接中最基本和最重要的部分。IPv4和IPv6是两种常用的IP地址协议&#xff0c;它们之间有着很大的差异。 首先&#xff0c;让我们了解一下IPv4和IPv6的基本概念。IPv4是互联网上使用最广泛的IP地址协议&am…

(栈队列堆) 剑指 Offer 30. 包含min函数的栈 ——【Leetcode每日一题】

❓ 剑指 Offer 30. 包含min函数的栈 难度&#xff1a;简单 定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中&#xff0c;调用 min、push 及 pop 的时间复杂度都是 O ( 1 ) O(1) O(1)。 示例: MinStack minStack new MinStack()…

Hadoop——HDFS的Java API操作(文件上传、下载、删除等)

1、创建Maven项目 2、修改pom.xml文件 <dependencies><!-- Hadoop所需依赖包 --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.0</version></dependency&…

linux之Ubuntu系列(四)用户管理 用户和权限 chmod 超级用户root, R、W、X、T、S

r(Read&#xff0c;读取)&#xff1a;对文件而言&#xff0c;具有读取文件内容的权限&#xff1b;对目录来说&#xff0c;具有浏览目 录的权限。 w(Write,写入)&#xff1a;对文件而言&#xff0c;具有新增、修改文件内容的权限&#xff1b;对目录来说&#xff0c;具有删除、移…

DNS基础知识(前端工程师必备知识)

DNS 在工作中&#xff0c;经常切换本地和服务器&#xff0c;添加各种解析。遇到DNS引起的一些问题。发现网上资料很混乱&#xff0c;用心整理写了下&#xff0c;希望对大家有帮助。 DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;&#xff0c;最初&…

ipad可以使用其他品牌的手写笔吗?平价ipad手写笔推荐

我是一个拥有多年数码经验的爱好者&#xff0c;我知道一些关于电容笔的知识。我认为&#xff0c;苹果原装的电容笔与普通的电容笔最大的不同之处&#xff0c;就是其所带来的压感不同。由于“重力压感”的特殊性&#xff0c;我们能很快地把色彩填充到画面中。除此之外&#xff0…

tql!红队批量脆弱点信息搜集工具

功能如下 指纹识别:调用“三米前有香蕉皮“前辈工具&#xff0c;他的工具比finger好用 寻找资产中404&#xff0c;403&#xff0c;以及网页中存在的其他薄弱点&#xff0c;以及需要特定路径访问的资产 后续会把nuclei加进来 目前只有windows可以用 关注【Hack分享吧】公众号&a…