Property testing is a very helpful form of testing. At its core, it involves doing the following: Generate a "random" value Test whether some property for that value holds I the property holds, "shrink" the value, to try and simplify it, and see if the test still fails So in practice, you can have some idea that your system validates something like the following: forall(list:List),reversed(reversed(list))==list Your property testing framework can test this by generating a bunch of "random" va...