Wrapping Up

Here's a summary of what we learned in this chapter.

We'll cover the following

Summary

Through properties-driven development, we’ve extrapolated properties from a vague spec and tested our happy-paths in a test-first approach. While a useful metric to show whether code has been tested, code coverage isn’t great to assess test quality. We’ve learned how to compensate using negative testing in a fuzzing-inspired approach, as well as how playing with properties by relaxing constraints can uncover all kinds of bugs and under specifications that could prove problematic.

What’s next

We’ve done all this while learning about the most complex generators this course contains. We should now have a pretty good idea of what can and can’t be done well with stateless properties. Go ahead and utilize what we’ve learned in your own projects. As you encounter trickier generators, you might still find them hard to debug. But the next chapter should have you covered, where we’re going to be learning about shrinking.

Get hands-on with 1200+ tech skills courses.