Napisałem skończony moduł maszyny stanowej dla małej gry piłkarskiej, nad którą obecnie pracuję. Zapewnia interfejs do konfigurowania FSM (w zasadzie jego stanów i przejść). Dla każdego stanu można podać funkcje, które będą uruchamiane przy wejściu i wyjściu lub gdy FSM pozostaje w tym samym stanie, funkcje te następnie zwracają niektóre wiadomości. Zapewnia również interfejs reaktywny (Yampa), który zapewnia stan zmieniający się w czasie i zbiera komunikaty, które pojawiają się w czasie. Kod znajduje się tutaj Data/FSM.hs.Haskell: Jak przetestować (reaktywny) FSM z quickcheck?
Szukam dobrego podejścia do testowania tego modułu. Ponieważ jest czysty, pomyślałem o spróbowaniu. Nie jestem doświadczony w szybkiej kontroli, więc każda wskazówka byłaby doceniona! Moje podstawowe zrozumienie do tej pory: można by podać pewne funkcje, które budują FSM mniej lub bardziej losowo, a następnie uruchamiają niektóre (ponownie mniej lub bardziej losowe) przejścia na nich. Ale nie mogę zobaczyć, jak zbudować test w ten sposób ...
Cóż, jakie testy chcesz napisać? Jakie właściwości lub zachowania należy weryfikować? –
Cóż, może problem polega na tym, że tak naprawdę nie wiem ... Dla czegoś prostego jak "dla każdego ważnego fsm, każda skończona lista przejść prowadzi do stanu" Nic "lub stanu" Tylko s ", gdzie s jest stanem w fsm ", ok. Ale bardziej skomplikowane rzeczy, takie jak "dla każdego poprawnego fsm i listy (zmieniających się w czasie) przejść i percepcji, każdy zbiór wiadomości wzdłuż ścieżki przejścia powinien zostać odebrany", nie wiedziałbym, jak to sformalizować. Wiedziałabym, jak skonfigurować testy jednostkowe, ale z szybką kontrolą jestem trochę zagubiony. – martingw
Link jest martwy (https://patch-tag.com/r/martingw/Rasenschach/snapshot/current/content/pretty/Data/FSM.hs) i nie ma archiwum, które można znaleźć – icc97