22、非确定性有限状态机指定的确定性实现的自适应测试

非确定性有限状态机指定的确定性实现的自适应测试

1. 状态可达性与前导序列

初始状态可通过空输入序列确定性地到达,其前导序列是一个平凡的有限状态机(FSM)。所有状态都是肯定可达的,集合 $K$ 包含了所有状态。所有状态的覆盖是所获得前导序列的所有完整轨迹的并集,即 $U_K = {ε, a_1, a_0c_1b_1, c_0, c_1a_1, c_1, c_0c_1}$。

2. 状态分离器
  • r - 兼容性与交集 :给定一个完整 FSM 的两个状态 $s_1$ 和 $s_2$,若它们是 r - 兼容的,则存在某个完整 FSM 的一个状态,它是这两个状态的约简。这个状态是在不同初始状态下给定机器的两个实例的交集(自积)的初始状态,因为交集表示两个状态的所有公共轨迹。反之,若两个状态是 r - 可区分的,则交集不是一个完整的 FSM。
    • 命题 2 :对于完整 FSM $S = (S, s_0, I, O, h_S)$ 的两个状态 $s_1$ 和 $s_2$ 以及交集 $S/s_1 ∩ S/s_2 = (Q, s_1s_2, I, O, h_{S/s_1∩S/s_2})$,状态 $s_1$ 和 $s_2$ 是 r - 兼容的,当且仅当交集有一个完整的子机。
    • 推论 1 :状态 $s_1$ 和 $s_2$ 是 r - 可区分的,当且仅当交集没有完整的子机,即每个子机在某些状态下有未定义的输入。
  • 规范分离器 :给定 FSM $S$ 的 r - 可区分状态 $s_1$ 和 $s_2$ 以及交集 $S/s_1 ∩ S/s_2$,一个 FSM $P = (P, s_1s_2, I, O, h_P)$,其中 $P = Q ∪ {s_1, s_2}$ 且 $h_P = h_{S/s_1∩S/s_2} ∪ {(ss′, i, o, s_1) | ss′ ∈ Q, o ∈ out(s, i) \ out(s′, i)} ∪ {(ss′, i, o, s_2) | ss′ ∈ Q, o ∈ out(s′, i) \ out(s, i)}$,是状态 $s_1$ 和 $s_2$ 的规范分离器。规范分离器包含了所有分离 r - 可区分状态的轨迹。
  • 分离器 :给定 FSM $S$ 的 r - 可区分状态 $s_1$ 和 $s_2$,规范分离器的单输入无环子机,其中唯一的死锁状态是 $s_1$ 和 $s_2$,并且对于子机中某个状态定义的每个输入,该状态具有规范分离器中以此输入标记的所有输出转换,称为状态 $s_1$ 和 $s_2$ 的分离器,记为 $R(s_1, s_2)$。
概念 定义
规范分离器 由交集扩展而来,包含两个指定的死锁状态 $s_1$ 和 $s_2$,其完整轨迹可区分 $S$ 的两个可能初始状态
分离器 规范分离器的单输入无环子机,唯一死锁状态为 $s_1$ 和 $s_2$

mermaid 流程图如下:

graph TD;
    A[开始] --> B{状态 r - 兼容性};
    B -- r - 兼容 --> C[交集有完整子机];
    B -- r - 可区分 --> D[交集无完整子机];
    D --> E[构造规范分离器];
    E --> F[确定分离器];
3. 遍历集

遍历集的构造基于特定方法,基本思想是计算轨迹遍历的规范 FSM 的状态,并在任何最多有 $m$ 个状态的符合实现 FSM 中轨迹变为循环时终止轨迹。与之前方法的改进在于使用肯定可达状态而非确定性可达状态,从而缩短了遍历集。
- 偏序定义 :给定规范 FSM $S$、所有肯定可达状态集合 $K$ 的覆盖 $U_K$、状态 $s, s′ ∈ K$、前导序列 $P_s$ 和非空轨迹 $β ∈ Tr_S(s)$,在集合 $T(P_s)Pr(β) ∪ U_K$ 上定义偏序 $≤ {s′}$。
- 对于 $ω, ω′ ∈ αPr(β), α ∈ T(P_s)$,若 $|ω| < |ω′|$ 且 $S - after - ω ≤ S - after - ω′ ≤ s′$,则 $ω ≤
{s′} ω′$。
- 对于 $ω ∈ U_K, ω′ ∈ T(P_s)Pr(β)$,若 $ω ≠ ω′$ 且 $S - after - ω ≤ S - after - ω′ ≤ s′$,则 $ω ≤ {s′} ω′$。
- 遍历轨迹 :对于状态 $s ∈ K$,轨迹 $β ∈ Tr_S(s)$ 是前导序列 $P_s$ 的遍历轨迹,当且仅当对于某个集合 $R ∈ R_S$($R_S$ 表示 $S$ 的所有成对 r - 可区分状态的最大集合),有 $\sum
{s′∈R}|C(T(P_s)Pr(β), U_K, s′)| = m + 1$。每个遍历轨迹 $β$ 对应一个集合 $R_β$。
- 遍历集 :前导序列 $P_s$ 的所有可能遍历轨迹的集合是遍历集 $N(U_K, P_s)$。

以一个示例来说明,假设任何实现机器最多有 4 个状态($m = 4$),规范 FSM 的所有状态都是成对 r - 可区分的,$R_S = {{1, 2, 3, 4}}$。对于状态 1,前导序列 $P_1$ 的完整轨迹集仅包含空字 $ε$。通过逐步增加轨迹长度,确定了状态 1 的遍历集 $N(U_K, P_1) = {a_0, a_1, b_0, c_0, c_1}$。同样地,计算出其他前导序列的遍历集:$N(U_K, P_2) = {a_0, b_1, c_1}$,$N(U_K, P_3) = {a_0, a_1, b_0, c_1}$,$N(U_K, P_4) = {a_1, b_1, c_1}$。

4. FSM 测试
  • 测试定义 :一个无环输出完整的 FSM $U = (U ∪ {pass, fail}, u_0, I, O, h_U)$,其中 $pass$ 和 $fail$ 是指定的死锁状态,若 $(u, i, o, fail) ∈ h_U$ 意味着对于某个 $o′ ≠ o$ 和 $β ∈ Tr_U(u - after - io′)$,有 $u - after - io′β = pass$,则它是一个测试。
  • 失败轨迹和通过轨迹 :将测试 $U$ 从初始状态带到失败状态的轨迹称为失败轨迹,记为 $Tr_U^{fail}$;通过轨迹定义为 $Tr_U^{pass} = Tr_U^v \ Tr_U^{fail}$。
  • 测试性质
    • 若实现 FSM $B$ 与规范 FSM $S$ 的交集 $B ∩ U$ 中没有测试 $U$ 处于失败状态的状态,则 $B$ 通过测试 $U$。若任何是 $S$ 约简的 $B ∈ ℑ(S)$ 都通过测试 $U$,则测试 $U$ 对于 $S$ 在 $ℑ(S)$ 中关于约简关系是可靠的。
    • 若交集 $B ∩ U$ 中有测试 $U$ 处于失败状态的状态,则 $B$ 未通过测试 $U$。若任何不是 $S$ 约简的 $B ∈ ℑ(S)$ 都未通过测试 $U$,则测试 $U$ 对于 $S$ 在 $ℑ(S)$ 中关于约简关系是详尽的。
    • 若测试 $U$ 在 $ℑ(S)$ 中关于约简关系既可靠又详尽,则它是完整的。集合 $ℑ_m(S)$ 包含所有最多有 $m$ 个状态的完整确定性 FSM,一个测试若在故障域 $ℑ_m(S)$ 中是完整的,则称为 $m$ - 完整测试。
测试性质 定义
可靠 所有是 $S$ 约简的实现通过测试
详尽 所有不是 $S$ 约简的实现未通过测试
完整 既可靠又详尽

mermaid 流程图如下:

graph TD;
    A[开始] --> B[执行测试];
    B --> C{是否通过测试};
    C -- 通过 --> D[测试可靠];
    C -- 未通过 --> E[测试详尽];
    D & E --> F{是否既可靠又详尽};
    F -- 是 --> G[测试完整];

非确定性有限状态机指定的确定性实现的自适应测试

5. 自适应测试算法

提出了一种用于对最多有 $m$ 个状态的完整确定性实现 FSM $B$ 进行自适应测试的算法。该算法会在 $B$ 是给定规范 FSM $S$ 的约简时给出“通过”判决,否则给出“失败”判决。

算法 2:确定性实现 FSM 的自适应测试
- 输入 :完整 FSM $S$、肯定可达状态集合 $K$、对于每个 $s ∈ K$ 的集合 $Id(s, S)$ 和前导序列 $P_s$、遍历集 $N(U_K, P_s)$、对于每个 $s′ ∈ R_β$ 和 $β ∈ N(U_K, P_s)$ 的集合 $Id(s′, R_β)$,以及表现为确定性 FSM $B$ 的实现(黑盒)。
- 输出 :若 $B$ 是 $S$ 的约简则输出“通过”判决,否则输出“失败”判决,以及包含 $B$ 所有观察轨迹的 FSM $G_B$。

操作步骤如下:
1. 初始化两个轨迹集合 $T_{pass}$ 和 $T_{fail}$ 为空集。
2. 执行分离器
- 当集合 $Id(s, S)$ 中存在未执行的分离器 $R(s, s′)$(对于某个 $s ∈ K$)时:
- 应用复位操作。
- 执行前导序列 $P_s$,直到观察到的轨迹不在 $P_s$ 中或到达前导序列的指定状态 $s$,设观察到的轨迹为 $α$。
- 若轨迹 $α$ 不在 $P_s$ 中,将 $α$ 添加到集合 $T_{fail}$ 并以“失败”判决终止。
- 否则,设 $P_s$ 的观察完整轨迹为 $α_s$,将轨迹 $α_s$ 添加到 $T_{pass}$。
- 标记 $Id(s, S)$ 中与 $R(s, s′)$ 到状态 $s$ 具有相同轨迹集的所有分离器为“已执行”,并执行分离器 $R(s, s′)$,设观察到的轨迹为 $β$。
- 若未到达分离器的指定状态 $s$,将轨迹 $α_sβ$ 添加到 $T_{fail}$ 并以“失败”判决终止。
- 否则,将轨迹 $α_sβ$ 添加到 $T_{pass}$。
3. 执行遍历集
- 当存在未探索的状态 $s ∈ K$ 时:
- 当遍历集 $N(U_K, P_s)$ 中存在未执行的轨迹时,设 $γ$ 为最长未执行遍历轨迹的输入投影。
- 应用复位操作。
- 执行前导序列 $P_s$(并观察 $P_s$ 的完整轨迹 $α_s$)。
- 逐个应用 $γ$ 的输入,直到观察到的轨迹不在 $Tr(S/s)$ 中或该轨迹在 $N(U_K, P_s)$ 中,设观察到的轨迹为 $β$,其输入投影为 $ν$。
- 若轨迹 $β ∉ Tr(S/s)$,将轨迹 $α_sβ$ 添加到 $T_{fail}$ 并以“失败”判决终止。
- 否则(即 $β ∈ N(U_K, P_s)$),标记 $N(U_K, P_s)$ 中输入投影具有前缀 $ν$ 的每个轨迹为“已执行”。
- 当对于 $β$ 的某个前缀 $σ$ 使得 $α_sσ ∈ C(T(P_s)Pr(β), U_K, s′)$($s′ ∈ R_β$),集合 $Id(s′, R_β)$ 中存在未执行的分离器 $R(s′, s′′)$ 时:
- 应用复位操作。
- 执行前导序列 $P_s$(并观察 $P_s$ 的完整轨迹 $α_s$)。
- 应用 $σ$ 的输入投影,设观察到的轨迹为 $η$。
- 将观察到的轨迹 $α_sη$ 添加到 $T_{pass}$。
- 标记 $Id(s′, R_β)$ 中与未执行的分离器 $R(s′, s′′)$ 到指定状态 $s′$ 具有相同轨迹集的所有分离器为“已执行”,并执行该分离器,设观察到的轨迹为 $κ$。
- 若未到达分离器的指定状态 $s′$,将轨迹 $α_sηκ$ 添加到 $T_{fail}$ 并以“失败”判决终止。
- 否则,将轨迹 $α_sηκ$ 添加到 $T_{pass}$。
- 标记状态 $s$ 为“已探索”。
4. 以“通过”判决终止。
5. 导出一个 FSM $G_B$,其轨迹集为 $pref(T_{pass}) ∪ T_{fail}$,使得 $T_{pass}$ 中的每个完整轨迹将 FSM $G_B$ 带到死锁状态“通过”,$T_{fail}$ 中的每个轨迹将 $G_B$ 带到死锁状态“失败”。

mermaid 流程图如下:

graph TD;
    A[开始] --> B[初始化 T_pass 和 T_fail 为空集];
    B --> C{是否有未执行的分离器};
    C -- 是 --> D[执行分离器操作];
    D --> C;
    C -- 否 --> E{是否有未探索的状态};
    E -- 是 --> F[执行遍历集操作];
    F --> E;
    E -- 否 --> G[以通过判决终止];
    G --> H[导出 FSM G_B];
6. 算法示例与分析

以一个具体示例说明算法 2 的执行过程。假设给定图 1(b) 中的确定性实现 FSM $B$,它是规范 FSM $S$ 的子机,只是缺少了 $S$ 中的某些转换。

  • 执行前导序列和分离器
    • 对于状态 1,前导序列 $P_1$ 是平凡 FSM,将轨迹 $ε$ 添加到 $T_{pass}$。执行 $Id(1, S)$ 中的分离器,如 $R(1, 2)$、$R(1, 3)$ 和 $R(1, 4)$,观察到的轨迹 $b_0$ 和 $a_1a_0$ 也添加到 $T_{pass}$。
    • 对于状态 2,执行前导序列 $P_2$ 观察到轨迹 $a_1$ 并添加到 $T_{pass}$,执行 $Id(2, S)$ 中的分离器,观察到的轨迹 $a_1b_1$ 和 $a_1a_0$ 添加到 $T_{pass}$。
    • 对于状态 3,执行前导序列 $P_3$ 得到轨迹 $c_1a_1$ 并添加到 $T_{pass}$,执行分离器后,将轨迹 $c_1a_1a_0b_1$ 和 $c_1a_1b_0$ 添加到 $T_{pass}$。
    • 对于状态 4,执行前导序列 $P_4$ 得到轨迹 $c_1$ 并添加到 $T_{pass}$,执行分离器后,将轨迹 $c_1a_1$ 和 $c_1b_1$ 添加到 $T_{pass}$。
  • 执行遍历集和分离器
    • 对于状态 1,遍历集 $N(U_K, P_1) = {a_0, a_1, b_0, c_0, c_1}$。应用输入并执行分离器,观察到的轨迹添加到 $T_{pass}$。
    • 对于状态 2、3 和 4,分别执行对应的遍历集和分离器,将观察到的轨迹添加到 $T_{pass}$。

最终,由于 FSM $B$ 是 FSM $S$ 的约简,失败轨迹集合 $T_{fail}$ 为空,算法以“通过”判决终止。得到的无环 FSM $G_B$ 具有轨迹集 $Pref(T_{pass})$,每个完整轨迹将 FSM $G_B$ 带到死锁状态“通过”。

与之前的预设测试套件方法相比,该算法使用肯定可达状态构建遍历集,使得遍历集的轨迹更短。例如,之前的方法仅为确定性可达状态构建遍历集,对于图 1 中的规范 FSM,测试套件会包含所有长度为 3 的输入序列并附加相应的分离器,总长度超过 $5⋅3^3$。

7. 定理证明

定理 1 :给定最多有 $m$ 个状态的确定性 FSM $B = (B, b_0, I, O, h_B)$,使用算法 2 对 FSM $B$ 相对于给定规范 FSM $S$ 进行自适应测试。若 $B$ 是 $S$ 的约简,则算法 2 产生“通过”判决;若 $B$ 不是 $S$ 的约简,则产生“失败”判决。

证明
- 若 $B$ 是 $S$ 的约简 :根据算法构造,每个观察到的轨迹都是 $S$ 的轨迹,并且是测试的通过轨迹,因此不会产生“失败”判决,只能产生“通过”判决。
- 若 $B$ 不是 $S$ 的约简 :假设对于前导序列 $P_s$($s ∈ K$)的观察完整轨迹 $α_s$ 以及每个观察到的轨迹 $α_sσ ∈ C(T(P_s)Pr(β), U_K, s′)$($β ∈ N(U_K, P_s)$,$s′ ∈ R_β$),都没有产生“失败”判决。可以证明存在 $s ∈ K$ 和 $β ∈ N(U_K, P_s) ∩ Tr(B - after - α_s)$,使得对于前导序列 $P_s$ 的观察完整轨迹 $α_s$,存在一个序列集合 $M = {μ_1, …, μ_{m + 1}} ⊆ ∪_{s′∈R_β}C(T(P_s)Pr(β), U_K, s′)$,具有特定性质。由于 $B$ 最多有 $m$ 个状态,存在 $1 ≤ j < r ≤ m + 1$ 使得 $B - after - μ_j = B - after - μ_r$。根据偏序定义和算法执行情况,会出现矛盾,即会产生“失败”判决。

综上所述,该自适应测试算法能够有效地对确定性实现 FSM 进行测试,判断其是否为规范 FSM 的约简,并且通过使用肯定可达状态优化了测试过程。

演示了为无线无人机电池充电设计的感应电力传输(IPT)系统 Dynamic Wireless Charging for (UAV) using Inductive Coupling 模拟了为无人机(UAV)量身定制的无线电力传输(WPT)系统。该模型演示了直流电到高频交流电的转换,通过磁共振在气隙中无线传输能量,以及整流回直流电用于电池充电。 系统拓扑包括: 输入级:使用IGBT/二极管开关连接到全桥逆变器的直流电压源(12V)。 开关控制:脉冲发生器以85 kHz(周期:1/85000秒)的开关频率运行,这是SAE J2954无线充电标准的标准频率。 耦合级:使用互感和线性变压器块来模拟具有特定耦合系数的发射(Tx)和接收(Rx)线圈。 补偿:包括串联RLC分支,用于模拟谐振补偿网络(将线圈调谐到谐振频率)。 输出级:桥式整流器(基于二极管),用于将高频交流电转换回直流电,以供负载使用。 仪器:使用示波器块进行全面的电压和电流测量,用于分析输入/输出波形和效率。 模拟详细信息: 求解器:离散Tustin/向后Euler(通过powergui)。 采样时间:50e-6秒。 4.主要特点 高频逆变:模拟85 kHz下IGBT的开关瞬态。 磁耦合:模拟无人机着陆垫和机载接收器之间的松耦合行为。 Power GUI集成:用于专用电力系统离散仿真的设置。 波形分析:预配置的范围,用于查看逆变器输出电压、初级/次级电流和整流直流电压。 5.安装与使用 确保您已安装MATLAB和Simulink。 所需工具箱:必须安装Simscape Electrical(以前称为SimPowerSystems)工具箱才能运行sps_lib块。 打开文件并运行模拟。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值