Automated testing involves writing tests in code that are automatically executed. As we've seen, there are some things we can do to focus our testing efforts and make those tests more effective. Testing methodologies provide holistic methods towards testing which attempt to address a common goal or theme. Let's look at the two most common methodologies.
We've already talked a bit about test-driven design (TDD). Technically, TDD doesn't facilitate automated testing. Rather, it facilitates better design through a test-first mentality. But, it does help us improve code coverage from tests, write more testable code, and hopefully make better APIs and better designed software.
When nothing else is really known about lower-level details of a system, TDD helps us focus on some of the interface-specific details that could otherwise cause "analysis paralysis." Getting into too much detail when there are so many other great books on TDD is somewhat pointless. But I'll give a short...