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 underspecifications 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. Most of our unit testing needs should now be covered, in fact. Go ahead and utilize what we’ve learned in your own project. As you encounter trickier generators, you might still find them hard to debug. But the next chapter should have you covered, as we will be learning about shrinking.

Get hands-on with 1200+ tech skills courses.