Why should we even do testing?
mikealche.com
mikealche.com
Class hierarchies, method layout, pattern use. These things are all invisible at a high level, but testing can make those patterns surface easily and can encodes lots of semantic expectations about what the code is for.
It's much easier to make a change when you can force a test to fail and single step through the test, rather than setup a local environment, try to create a reproduction and then setup a trail of breakpoints to get the system into some "known" state.