抽象状态机顺序网络的测试生成
1. 基于模型检查的抽象状态机测试生成
为了构建满足某些覆盖标准的测试套件,人们定义了多种方法。这里使用一种基于模型检查器生成反例能力的技术,具体步骤如下:
1. 根据期望的覆盖标准从规范中导出测试谓词集合 ${tpi}$。
2. 将规范转换为模型检查器的语言。
3. 对于每个测试谓词 $tpi$,证明陷阱属性 $\square¬tpi$(其中 $\square$ 表示“总是”)。若模型检查器找到一个使 $tpi$ 为真的状态 $s$,它会停止并返回一个通向 $s$ 的状态序列作为反例,此序列即为覆盖 $tpi$ 的测试。若模型检查器遍历整个状态空间都未找到使陷阱属性为假的状态,则称该测试谓词不可行并将其忽略。最坏的情况是,由于状态爆炸问题,模型检查器在未遍历完整个状态空间且未找到陷阱属性的违反情况(即未产生任何反例)时就终止了,此时用户无法确定陷阱属性是真(即测试不可行)还是假(即存在到达目标的序列)。
这里使用基于模型检查器 SPIN 的 Asmeta 框架及其 ATGT 工具。
2. 抽象状态机的顺序网络
关注由相互传递控制的独立子系统组成的系统,同一时间只有一个子系统处于活动状态。通常,为描述这类系统,会为每个子系统开发一个模型,同时需要一个协调模型来表示整个系统的执行,即根据子系统的本地决策激活/停用子系统模型。
以 Web 应用为例,同一时间只有一个网页处于活动状态,活动页面决定下一个要显示的页面,协调工作由 Web 浏览器和 Web 服务器完成,它们负责关闭当前页面并显示下一个页面(在页面之间传递控制)。
超级会员免费看
订阅专栏 解锁全文
172万+

被折叠的 条评论
为什么被折叠?



