【发布时间】:2012-01-22 13:40:19
【问题描述】:
我为我目前正在从事的一个小型足球比赛编写了一个有限状态机模块。它提供了一个用于设置 FSM 的接口(基本上是它的状态和转换)。对于每个状态,您可以提供将在进入和退出时触发的函数,或者当 FSM 保持相同状态时,这些函数会返回一些消息。它还提供了一个反应接口 (Yampa),它产生随时间变化的状态并收集随时间发生的消息。代码在这里Data/FSM.hs。
我正在寻找一种测试此模块的好方法。由于它是纯的,我想尝试一下快速检查。我对快速检查没有经验,所以任何提示都将不胜感激!到目前为止,我的基本理解是:提供一些或多或少随机构建 FSM 的函数,然后在它们上运行一些(或多或少随机)转换。但我不太明白如何以这种方式构建测试......
【问题讨论】:
-
好吧,你想写什么样的测试?需要验证哪些属性或行为?
-
好吧,也许问题是我真的不知道......对于像“对于每个有效的 fsm,任何有限的转换列表都会导致状态 'Nothing' 或状态 'Just s' 其中 s 是 fsm 中的一个状态”,好的。但是更复杂的东西,例如“对于每个有效的 fsm 和(随时间变化的)转换和感知列表,应该拾取转换路径上的每个消息集合”,我不知道如何将其形式化。我会知道如何为此设置单元测试,但是通过快速检查我有点迷茫。
-
@icc:已经有一段时间了 :-) - 修复了链接。
-
将近 5 年了 :)
标签: testing haskell quickcheck frp