私は現在働いている小さなサッカーゲームのための有限状態機械モジュールを書いた。これは、FSM(基本的に状態と遷移)を設定するためのインタフェースを提供します。各状態について、入力および終了時に、またはFSMが同じ状態のままで放置される機能を提供することができます。これらの関数はいくつかのメッセージを返します。また、時変状態を生成し、時間の経過と共に発生するメッセージを収集するリアクティブインターフェイス(Yampa)も提供します。コードはここにData/FSM.hsです。Haskell:quickcheckで(反応性の)FSMをテストするには?
私はこのモジュールをテストするための良いアプローチを探しています。純粋なので、私はquickcheckを試してみることを考えました。私はクイックチェックで経験していないので、任意のヒントが評価される!これまでの私の基本的な理解:FSMを多かれ少なかれランダムに構築し、その上でいくつかの(ややランダムな)遷移を実行するいくつかの機能を提供します。しかし、私はそのようなテストをどのように構築するのかよく分かりません。
どのようなテストを書きたいですか?どのプロパティまたはビヘイビアを検証する必要がありますか? –
まあ、おそらく問題は私が本当に知っているのではない...あらゆる有効なfsmのような単純なものに対しては、遷移の有限リストは状態「Nothing」または状態「Just s 'sは状態fsmで "、大丈夫です。しかし、「すべての有効なfsmと(時変)遷移と認識のリスト、移行パスに沿ったすべてのメッセージ収集をリストアップする」などのより複雑なものは、これを正式化する方法はわかりません。私はそれのためのユニットテストを設定する方法を知っているだろうが、クイックチェックと私は少し失われています。 – martingw
リンクが無効です(https://patch-tag.com/r/martingw/Rasenschach/snapshot/current/content/pretty/Data/FSM.hs)。見つからないアーカイブはありません – icc97