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

这篇具有很好参考价值的文章主要介绍了嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 状态转换测试简介

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

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

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

1.2 系统行为

分三种类型:

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

2 故障类别

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

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

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

2.1 状态

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

2.2 防护

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

2.3 转换

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

2.4 事件

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

2.5 其它

  • 在正交区域使用同步;
  • 规范故障可使用审查清单进行覆盖,如下:
    嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?,# 嵌入式软件测试,嵌入式,嵌入式硬件,嵌入式软件,嵌入式测试

3 状态转换测试技术

3.1 编写状态-事件表

  • 状态图是编写状态-事件表的起点;
  • 编写状态-事件表给出状态与事件的关系;
  • 如下是一个简化的录音机(VCR)状态图:
    嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?,# 嵌入式软件测试,嵌入式,嵌入式硬件,嵌入式软件,嵌入式测试
  • 由上述状态图可编写出状态-事件表:
    嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?,# 嵌入式软件测试,嵌入式,嵌入式硬件,嵌入式软件,嵌入式测试

3.2 编写转换树

  • 状态-事件表被用于编写转换树;
  • 初始状态为转换树的根;
  • 以下为VCR的转换树:
    嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?,# 嵌入式软件测试,嵌入式,嵌入式硬件,嵌入式软件,嵌入式测试

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

  • 借助以上转换树和状态-事件表可编写合法测试用例的测试脚本;
  • 转换树中每一条路径是一个测试用例;
  • 如下是部分从VCR状态图导出的测试用例:
    嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?,# 嵌入式软件测试,嵌入式,嵌入式硬件,嵌入式软件,嵌入式测试

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

  • 可从状态-事件中得到非法的状态-事件组合;
  • 非法的状态-事件是指在该特定状态时,系统没有指定要对该事件做出响应;
  • 部分非法测试用例的测试脚本如下:
    嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?,# 嵌入式软件测试,嵌入式,嵌入式硬件,嵌入式软件,嵌入式测试

3.5 编写测试脚本防护

  • 以下为防护编写的测试用例的测试脚本:
    嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?,# 嵌入式软件测试,嵌入式,嵌入式硬件,嵌入式软件,嵌入式测试

4 广泛性和实用性

4.1 广泛性

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

4.2 故障检测

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

4.3 实用性和可用性

  • 影响实用性的因素:

步进方式;
重置选项;
状态设置;
状态、转换、输入、输出与事件进行唯一性编码;
转换跟踪。文章来源地址https://www.toymoban.com/news/detail-582282.html

到了这里,关于嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 科普:嵌入式代码软件在环(SiL)测试的可靠性

    ​​ : 嵌入式系统、软件在环(SiL)、测试、生命周期 01. 简介 当前,嵌入式系统开发的大趋势为通过软件实现大量的硬件功能,这导致软件的复杂程度显著上升——代码开发成本和风险也成倍增加。复用已有系统中的软件组件是改进嵌入式系统生命周期的一种可能

    2024年04月26日
    浏览(50)
  • 嵌入式软件开发常用的编辑代码工具、比较工具和测试工具的使用说明和操作步骤

    嵌入式软件开发常用的编辑代码工具有: Eclipse Eclipse是一款开源的集成开发环境,支持多种编程语言和插件,适用于多种嵌入式开发平台。以下是Eclipse的使用说明和操作步骤: 步骤1:创建新工程 单击“File”菜单,选择“New”→“Project”选项,选择工程类型和开发平台。

    2024年02月02日
    浏览(87)
  • 系统架构设计师笔记第7期:嵌入式系统及软件

    嵌入式系统是一种特殊的计算机系统,它被设计用于执行特定的功能或控制特定的设备。与一般的计算机系统不同,嵌入式系统通常是嵌入到其他设备或系统中,以完成特定的任务,如家电、汽车、医疗设备、工业控制系统等。嵌入式系统通常具有小型、低功耗、实时性要求

    2024年02月08日
    浏览(47)
  • 【笔记】ARM M3-M4权威指南第二章《嵌入式软件开发介绍》

    2.1 ARM微控制器是由哪些构成的 2.2 开始时需要准备什么 2.2.1 开发组件,C 编译器组件产品如下 2.2.2 开发板 2.2.3 调试适配板(Keil – ULINK;IAR-- I-Jet;STM Value Line Discover;JTAG/SW仿真器/在线仿真器(ICE);开源板 – ARM的CMSIC-DAP和Coocox的CoLink) 2.2.4 软件设备驱动 2.2.5 示例(Samp

    2024年04月13日
    浏览(40)
  • C/C++|物联网开发入门+项目实战|空间读写|非字符空间|返回值内部实现|嵌入式C语言高级|C语言函数的使用(2)-学习笔记(12)

    参考: 麦子学院-嵌入式C语言高级-C语言函数的使用 空间的读写 void fun(char *p); const char *p 只读空间,只为了看 char *p;该空间可能修改,几乎都要变 strcpy(); 定义:char *strcpy(char *dest,const char *src); sprintf(); 作用 1、修改 int * short * long * 2、空间传递 2.1 子函数看看空间里的情况

    2023年04月22日
    浏览(52)
  • 嵌入式软件调试与验证4自动重现和分析嵌入式软件中的Bug

    嵌入式软件的重要性逐年增加。ISO26262标准的最高安全级别要求十个9小时内无故障运行。然而,历史上的一些项目表明,即使进行了全面的测试,多年来仍有许多错误未被发现。航天飞机的控制计算机仅有50万行源代码,却经过了长达8年的测试,每行源代码耗资1000美元,即总

    2024年02月08日
    浏览(43)
  • 《嵌入式 – GD32开发实战指南》第12章 ADC

    开发环境: MDK:Keil 5.30 开发板:GD32F207I-EVAL MCU:GD32F207IK GD32F2系列有 3 个逐次逼近型的ADC,精度为 12 位,有18个多路复用通道,可以转换来自16个外部通道和2个内部通道的模拟信号。其中ADC0 和 ADC1都有 16 个外部通道, ADC2 根据 CPU 引脚的不同通道数也不同,一般都有8 个外部

    2023年04月08日
    浏览(58)
  • 嵌入式软件架构

    总目录链接== AutoSAR入门和实战系列总目录 总目录链接== AutoSAR BSW高阶配置系列总目录 嵌入式软件架构设计意图通常伴随着基于个人经验的假设。软件开发人员可能会从资源受限的基于微控制器的系统的角度来看待架构设计。系统人员可能会从应用处理器的角度考虑架构。如

    2023年04月10日
    浏览(31)
  • 嵌入式软件学习路线(入门)

    大家不要只收藏不关注啊,哪怕点个赞都行哇。😭 刚工作两年,推荐的学习路线只做一家之言,如果有那里有人觉得不合适,可以根据自身的需求寻找更合适的路线,大学的时候学习过单片机,对于单片机也算是入门级,能做一些毕业设计级别的东西,能够应付大学所需。

    2023年04月15日
    浏览(36)
  • 嵌入式硬件和软件哪个好?

    嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件工程师吧! 嵌入式硬件开发工程师主要编写嵌入式系统硬件总体方案和详细方案,要求理解嵌入式系统架构,有一定的C语言基础,熟悉

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包