Testing improves confidence about your code. It doesn’t prove that
code is correct.
Testing is a vehicle for both software design and software
documentation.
Creating and executing tests should not be an afterthought. It
should be an activity that goes hand-in-hand with code development.
Tests are themselves code. Thus, test code should follow the same
overarching design principles as functional code (e.g. DRY, modular,
reusable, commented, etc).