The final point you will want to pay attention to is pain. If
your tests start to become painful, there is something wrong. The tests should
enable development, not slow it down. If you are in a situation where you start
to think that you could move faster without writing the tests, look for some
technique errors or bad design in the production code. Get a peer to review the
code. Correctly managed design and tests enable a fast sustained speed of
development while poor testing techniques cause development to slow down to a
point where testing is abandoned. At that point, it is back to painstaking,
time-intensive manual testing.