在示例中,我试图建模模型的复杂性随着 FSM 中采取的每一步而呈指数增长。然而,FSM 增长的规则很容易用代码描述,但无法手动建模。使模型难以手动创建的原因是随着 FSM 的进展,每个节点都可能发生大量转换。状态的数量不是很多,但转换的数量是巨大的!
我一直在尝试使用 ModelJUnit,但据我所知,这个工具只支持完全预定义的模型。
所以我的问题是,是否有任何基于模型的测试工具支持为被测系统动态创建 FSM,如上所述?
在示例中,我试图建模模型的复杂性随着 FSM 中采取的每一步而呈指数增长。然而,FSM 增长的规则很容易用代码描述,但无法手动建模。使模型难以手动创建的原因是随着 FSM 的进展,每个节点都可能发生大量转换。状态的数量不是很多,但转换的数量是巨大的!
我一直在尝试使用 ModelJUnit,但据我所知,这个工具只支持完全预定义的模型。
所以我的问题是,是否有任何基于模型的测试工具支持为被测系统动态创建 FSM,如上所述?
你的问题很典型。一个例子是控制器/软件,它确定车辆中换档器的位置——位置 PRND 需要从杠杆的电气转换中确定。如果您考虑跳过转换和发生的电气故障,您将获得一个大/无限的空间。这种软件具有最高的安全级别,因为它可能会导致意外的扭矩。
ModelJUnit、NUnit 等工具可用于教育/工具开发目的。您可以研究代码、编辑代码并实现自己的实验算法。
另一方面,未经修改,他们无法解决您提到的问题:状态空间/过渡爆炸等。这就是为什么专业工具使用非常复杂的方法来处理大/无限空间的原因:
它们通常可以在无限模型上产生需求覆盖率、mc/dc 等结果,因为算法不需要在探索期间扩展整个空间。您可以查找的工具示例如下: