In the following chapters, we'll take a look at designing for testability and how we use unittest, doctest, and the pytest package for testing. Automated testing is essential; no program should be considered complete until there are automated unit tests that provide ample evidence to show us that the code works. We'll also look at object-oriented design techniques that make software easier to test.