Hi all,

I would like to propose adding [junit-quickcheck](1) to Geode. It's named
after the [Haskell tool](2) and functions more or less as automated testing
for JUnit Theories (if anyone is familiar with those).

Property-based testing means basically that you write a function that tests
some code and checks some conditions you expect to hold true for all
inputs, and then have a computer program test all sorts of weird inputs to
try prove you wrong.

Because the test data is randomly generated, you get to test against more
inputs than you might even think of, and because the seed is saved, the
test is reproducible. If junit-quickcheck finds one failure, it will even
try to narrow down to a smallest example of a test failure.

There are some limitations to this library -- for example, it doesn't tend
to generate strings more than a few hundred characters in length (though
this increases with sample size, so if you kick the sample size up, you can
get into the thousands fairly quickly).

[ScalaCheck](3) is another option that does much the same and seems to have
more functionality (and in particular, it seems to be able to handle state
in tests), but it requires Scala to run and tests are also written in Scala
(though it can test Java code). I don't think there will be much support
for including Scala as a dependency for Geode.

I've put up a Review board request and PR:
https://reviews.apache.org/r/56242/
https://github.com/apache/geode/pull/383


I'd like to hear the community's input.

Thanks,
Galen O'Sullivan

[1]: http://pholser.github.io/junit-quickcheck/site/0.7/
[2]: http://www.cse.chalmers.se/~rjmh/QuickCheck/manual.html
[3]: http://www.scalacheck.org/index.html

Reply via email to