This document introduces automated testing as a way to test software in a less time-consuming and error-prone manner than manual testing. It discusses challenges with manual testing like not testing all code paths and missing unintended effects. Automated testing involves writing code to test other code, allowing testing of all code paths more thoroughly. Test-driven development is introduced as an approach where tests are written before code to specify its behavior, with the code then written to pass those tests. Benefits of testing like loose coupling and avoiding unnecessary code are discussed. Frameworks for writing automated tests are also introduced.