Hi Andy,

Lately I've been exploring the world introduced to me by watching the John 
> Hughes' quickcheck video from
> clojure west. Awesome stuff!
>
> Eventually I found the "testing for fun and profit"[1] paper which left me 
> wanting to test my apps using
> a model based system like the paper describes. It looks like 
> test-check-knossos[2] takes a stab at applying
> knossos[3] to this problem.
>
> However the examples in that repo don't capture the the aspect of using 
> state to generate test commands to be
> executed against the system. It's just a random stream of :take/:reset 
> operations whereas the registry example
> in the paper seems to require that the function which generates the 
> sequence of test commands has access to
> the state of the system under test at the start of each command.
>
> So is there a missing clojure library here? Is anybody working on 
> something that allows this style of model
> testing? If not, would it make sense for someone writing one to leverage 
> knossos in any way?
>
> Cheers,
> Andy
>
> [1]: http://people.inf.elte.hu/center/fulltext.pdf
> [2]: https://github.com/philandstuff/test-check-knossos
> [3]: https://github.com/aphyr/knossos
>
 
I've begun to work on such a tool not long ago. Thomas Arts, who gave a 
talk at
our local FP user group meetup [mλ], inspired me to try out the approach 
you're
describing in Clojure. After some experiments I got the library to a state 
where
it could generate test cases for java.util.HashSet. I looked for prior art 
in
the area of concurrency and detection of race conditions. That's when I
discovered Philip Potter's Knossos-based approach [pp]. I find it very
interesting but I haven't yet had time to try it out. It'd be great to have 
it
integrated, though.

I demonstrated the tentative API in [gist], where some simple properties of
HashSet and Clojure vector are checked. The gist also shows how an exemplary
failure looks, including shrinking. I'll try to get the implementation to a
reasonable state and push it to GitHub soon.

Feedback is very welcome!

Cheers,
Jan Stępień

[mλ]: http://www.meetup.com/Munich-Lambda/events/202278902/
[pp]: http://vimeo.com/100976693
[gist]: https://gist.github.com/jstepien/6153312613db1589f1ec

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to