模型检查与基于模型测试的全面解析
一、模型学习算法概述
在系统测试领域,模型学习算法是重要的研究方向。许多学者提出了不同的学习算法:
- 有人为无复位且强连通的系统创建了学习算法。
- Berman和Roos为计数器机器接受的上下文无关语言子类提出了学习算法。
- Freund等人在平均情况下,基于单次长路径行走给出了学习有限自动机的算法。
- Maler和Pnueli研究了无限字符串集合的学习问题。
- 还有人研究了正则树语言的学习以及定时系统的学习。
在众多算法中,Angluin算法存在成员查询和等价查询之间的权衡。在处理封闭且一致的表格时,可通过成员查询比较相等行的行标签在更多后缀上的情况,这可能揭示不一致性,从而分离先前相等的行,增加状态数量,进而节省等价查询。这一思想在相关研究中得到了实践。
二、自适应模型检查(AMC)
(一)AMC简介
当测试的系统是黑盒时,可先使用学习技术构建系统模型,再进行模型检查。自适应模型检查(AMC)方法将学习黑盒模型和验证模型相结合,与之前的黑盒检查方法类似。它主要解决系统模型不准确的问题,对初步模型进行模型检查,若发现反例则与系统进行比较,结果要么是系统不满足属性,要么是对模型进行自动细化。
AMC算法的流程如下:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,str