Isn’t a news, and most everyone agrees that writing tests (before, during or after implementation) is valuable. Hardly anyone agrees on what good, clean tests look like, though; if your tests are a live specification of your codebase, don’t they deserve the same care and attention as your production code? This talk focuses on how to keep your tests readable, simple and maintainable. Specifically we’ll discuss how the “given-when-then” pattern affects the way you factor your code, and showcase the remarkable differences between a sloppy specification and a well-factored one.