Have you used a language with strong static checking? It might change your mind about the central role of testing. I'm not saying tests are never necessary in such languages, but you can expect to spend orders of magnitude less time thinking about them.
Random guesses are a poor substitute for logical certainty.
Random guesses are a poor substitute for logical certainty.