区分序列/UIO/特征集示例

news2024/11/28 14:49:28

区分序列/UIO/特征集示例

从确定性有限状态机进行测试:检查状态

概述
让我们假设我们有一个状态集 S 的 FSM M。还假设我们知道通过转换 t 达到的当前状态是 s 或 s0。
我们如何确定 t 到达了哪个状态?

分离状态
输入序列 w 将两个状态 s 和 s0 分开,如果: 对 w 的响应在 s 和 s0 中不同。
更正式地说,我们要求:
在这里插入图片描述
方法
我们想要区分模拟被测系统的未知 FSM MI 的状态。
相反,我们设计了区分 M 状态的序列。
我们可以在检查 MI 的状态时使用这些。我们可能会使用以下之一:
一个区别序列A distinguishing sequence。
独特的输入/输出序列Unique input/output sequences。
一个特征集A characterising se。
理想情况下,测试检查序列(验证它们区分 MI 的状态)

区分序列
输入序列 D 是一个可区分序列,如果:
对于每对状态 s,s0 of M 使得 s /= s0,我们有 λ∗(s, D) /= λ∗(s0, D)。
这意味着:响应 D 产生的输出标识了 M 的状态。要检查转换 t 的最终状态,在 t 之后跟随 D 就足够了。

使用区分序列
在这里插入图片描述

在该示例中,aa 形成一个可区分序列,因为:
从状态 s0 输出序列是 01
从状态 s1 输出序列为 11
从状态 s2 输出序列为 10

如果我们想检查转换 t = (s2, s1, b/0) 我们产生一个测试序列:
以诸如 b/1 的前导码开始,它将 M 带到 t 的起始状态。 接下来是来自 t 的输入/输出对 b/0。然后从结尾应用区分序列aa,得到a/1 a/1
连接这些,我们得到测试序列:b/1 b/0 a/1 a/1。

寻找区别序列
一些 FSM 没有区分序列。
没有有效的算法来决定 FSM 是否具有可区分序列(或生成可区分序列序列,当它们存在时)。但是,我们可以使用简单的搜索技术(例如广度优先)

独特的输入输出序列Unique Input Output Sequences (UIO)
输入/输出序列 x/y 是状态 s 的 UIO,如果:
y = λ∗(s, x) 并且对于 M 的每个状态 s0 使得 s /= s0 我们
有 λ∗(s0, x) /= λ∗(s, x)
这意味着输入 x 标识状态 s,因为:如果 y 是响应 x 产生的,我们一定处于状态 s,否则我们一定处于不同的状态。
注意:可区分序列标识所有状态,但 UIO 可能仅标识一个状态。

UIO 示例
在这里插入图片描述
在示例中,a=0 为状态 s0 形成一个 UIO:
从状态 s0 输出序列为 0
从状态 s1 输出序列为 1
从状态 s2 输出序列为 1
请注意,a 不是可区分序列。

使用 UIO 测试转换transitions
为了测试转换 t = (s2, s0, a/1) 我们可以建立一个测试顺序如下:
到达初始状态 t 的前导码 b/1;
转换的输入/输出对 a/1。
最后,为转换的结束状态 (a/0) 选择的 UIO。
这给出了测试序列 b/1 a/1 a/0。

特征集Characterising Sets
一组 W 的输入序列是 M 的特征集,如果:
对于 M 的每对状态 s, s0 使得 s /= s0 我们有某些 w 属于 W,使得 λ∗(s, w) /= λ∗(s0, w)(即 w 区分这些状态)。
这意味着:对于每对状态,都有一些输入(W 区分它们的序列)。

使用特征集
如果我们知道来自 W 的每个输入序列触发的输出,我们就可以识别状态。
要检查转换 t = (si, sj, x/y) 我们可以分别在 t 后面跟上 W 的每个元素。因此,使用特征集会导致对转换进行多次测试。
注意:每个最小 FSM 都有一个特征集——而这些可以在多项式时间内找到。

特征集示例
在这个 FSM 中,{a, b} 是一个特征集,因为:
在这里插入图片描述
在这里插入图片描述
结果
对于这个例子,如果我们正在检查一个转换 t 的最终状态,我们分别在它后面跟上 a 和 b。
因此,我们使用两个测试进行转换。
如果在 t 之后对 a 的响应是 1,而在 t 之后对 b 的响应是 0,则转换必须将实现带到对应于 s2 的状态。

概括
如果我们只对资助输出故障感兴趣,那么简单地执行 M 的所有转换(transition tour)就足够了。
如果我们希望能够发现状态转移错误,那么我们需要使用区分状态的技术。
我们探索了三种备选方案:可区分序列、UIO 和特征集。
接下来我们会遇到一个同样寻找额外状态的方法

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

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

相关文章

C++进阶之继承

文章目录 前言一、继承的概念及定义1.继承概念2.继承格式与访问限定符3.继承基类与派生类的访问关系变化4.总结 二、基类和派生类对象赋值转换基本概念与规则 三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员六、复杂的菱形继承及菱形虚拟继承七、…

图论试题2020

n-m 2 16 Pk(Kn)k(k-1)…(k-n1)。 C:A2对角线元素aii2等于对应顶点vi的度数,所以对角线元素之和等于边数的两倍。 A的所有特征值的平方和等于A2的对角线元素之和。 B 完全图没有顶点隔,实际上也只有以完全图为生成子图的图没有顶点隔。 连通…

Qt6 C++基础入门1 定时器与QTimer

定时器 定时器图片流水灯案例 实现效果:构建一个界面,点击开始按钮轮流播放文件夹下图片,点击停止按钮停止播放 构建页面,上部是一个没有内容的 label 下面是开始和暂停按钮,各自的名称分别为 startBtn 和 stopBtn 先保…

6.事件绑定

目录 1 事件对象的属性 2 事件绑定方式 3 在事件中赋值 4 事件传参 1 事件对象的属性 target是触发该事件源头的组件,currentTarget是当前事件所绑定的组件,比如现在有一个父组件包着子组件,你给父组件绑定事件,由于事件…

ps磨皮插件专用智能磨皮插件Portraiture4

Portraiture是一款智能磨皮插件,为Photoshop和Lightroom添加一键磨皮美化功能,快速对照片中皮肤、头发、眉毛等部位进行美化,无需手动调整,大大提高P图效率。全新4版本,升级AI算法,并独家支持多人及全身模式…

从0到1深入剖析微服务架构,阿里人十年经验浓缩成一份笔记

前言 数字化经济的快速发展和云计算给底层IT系统带来的巨大变革正是当下微服务架构快速发展的时代背景。Gartner预计,从2018年到2022年,PaaS将成为未来的主流平台交付模式,而PaaS平台需要更加灵活的云原生应用架构做技术支撑,微服…

图论与算法(3)图的深度优先遍历

1. 遍历的意义 1.1 图的遍历 图的遍历是指按照一定规则访问图中的所有顶点,以便获取图的信息或执行特定操作。常见的图遍历算法包括深度优先搜索(DFS)和广度优先搜索(BFS)。 深度优先搜索(DFS&#xff0…

UART串口通信实验

不管是单片机开发还是嵌入式 Linux 开发,串口都是最常用到的外设。 可以通过串口将开发板与电脑相连,然后在电脑上通过串口调试助手来调试程序。 还有很多模块,比如蓝牙、GPS、GPRS等都使用串口与主控进行通信。 UART简介 串口全称串行接口…

vb6 Webview2微软Edge Chromium内核执行JS取网页数据测速

微软Edge Chromium内核执行JS获取网页数据测试 ExcuteScript eval(document.body.innerHTML) from : https://www.163.com 采集的网页HTM字符串占用字节空间1.2MB ExcuteScript回调事件中取得JS执行结果,用时 54 毫秒 其中JSON转字符13.5209毫秒 jSON数据长度: 增…

ChatGPT更新说明(20230524)

原文传送门:ChatGPT — Release Notes 更新说明(5月24日) 简要:iOS应用在更多国家可用,Alpha测试中的共享链接,Bing插件,iOS上的历史记录禁用 ChatGPT iOS应用在更多国家可用 好消息&#xf…

Elasticsearch:如何使用集群级别的分片分配过滤(不包括节点)安全地停用节点

当你想停用 Elasticsearch 中的节点时,通常的过程不是直接销毁节点。 如果你这样做,那么你就有数据丢失的风险,这不是你想要对应该是可靠的数据库做的事情。 这样做的问题是,节点很可能会通过 Elasticsearch 处理的恰当命名的分片…

Character.AI成为新晋AI聊天应用爆款;谷歌推出 Google Slides AI 图像生成

🦉 AI新闻 🚀 Character.AI:首周下载量超越ChatGPT,成为新晋AI聊天应用爆款 摘要:Character.AI是一款受欢迎的人工智能聊天应用,用户可以自由创建AI角色,并与它们聊天。该应用于2023年5月23日…

C#,码海拾贝(32)——计算“实对称三对角阵的全部特征值与特征向量的”之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 矩阵类 /// 作者&#xff1a;周长发 /// 改进&#xff1a;深度混淆 /// https://blog.csdn.net/beijinghorn /// </summary> public partial class Matrix {…

【Mysql】 表的约束

文章目录 【Mysql】 表的约束空属性默认值列描述zerofill主键自增长唯一键外键综合案例 【Mysql】 表的约束 上一个博客记录的是mysql中的类型&#xff0c;这篇博客记录的是mysql中的表的约束&#xff1b;即列字段对插入数据的约束 空属性 俩个值&#xff1a; null (默认) 和…

Vue3 + ElementPlus实战学习——模拟简单的联系人列表管理后台

文章目录 &#x1f4cb;前言&#x1f3af;demo 介绍&#x1f3af;功能分析&#x1f9e9;数据的展示与分页功能&#x1f9e9;编辑功能&#x1f9e9;删除功能 &#x1f3af;部分代码分析&#x1f3af;完整代码&#x1f4dd;最后 &#x1f4cb;前言 这篇文章介绍一下基于 Vue3 和…

DataSpell第一次安装使用教程

官网&#xff1a; Download DataSpell: The IDE for Data Scientists (jetbrains.com) 双击.exe文件开始安装 安装过程就一直点击下一步就好&#xff0c;遇到方框需要勾选的全部勾上。 注意尽量别安装在C盘&#xff0c;我安装在了D盘。 获取jihuoma&#xff1a;(484条消息)…

MySql学习1:安装

前言 学习教程&#xff1a;黑马程序员 MySQL数据库入门到精通&#xff0c;从mysql安装到mysql高级、mysql优化全囊括 目前的打算是跟着教程学习基础部分&#xff0c;进阶和运维部分以后可能会学习。 安装 关于如何安装mysql可以跟着视频里的操作&#xff0c;但是对于我这种…

盘点一个AI你画我猜的小工具

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 寻声暗问弹者谁&#xff0c;琵琶声停欲语迟。 大家好&#xff0c;我是Python进阶者。 一、前言 前几天在【ChatGPT&AI破局俱乐部】知识星球发现了一…

【Python】Python系列教程-- Python3 字典(十四)

文章目录 前言创建空字典访问字典里的值修改字典删除字典元素字典键的特性字典内置函数&方法 前言 往期回顾&#xff1a; Python系列教程–Python3介绍&#xff08;一&#xff09;Python系列教程–Python3 环境搭建&#xff08;二&#xff09;Python系列教程–Python3 VS…

【Java】Java(四十七):单元测试

文章目录 1. 概述2. 特点3. 使用步骤4. 相关注解5. 疑惑: 有了main函数 为啥还要 单元测试6. 后记 1. 概述 JUnit是一个 Java 编程语言的单元测试工具。JUnit 是一个非常重要的测试工具 2. 特点 JUnit是一个开放源代码的测试工具。提供注解来识别测试方法。JUnit测试可以让…