I'm having fun with quickcheck, but it definitely takes careful thought. You need tests that can be parameterised over a range of inputs.