This document discusses building an effective automated test suite. It recommends including unit tests, integration tests, acceptance tests, and UI tests. Unit tests are fast but don't verify interactions between units or desired system features. Integration tests ensure dependencies work as expected but test a narrow part of the system. Acceptance tests exercise the full system excluding the UI. UI tests verify user interaction but are slow and unreliable. Together, these different types of tests provide comprehensive coverage of a system.