Software engineering is an evolutionary process in which you develop applications as an evolutionary system and you modify and refactor the application continuously. You should be able to modify the functionality of an application and refactor its code at any time without breaking any parts of the application. When you develop applications as an evolutionary product and modify the application code, it should not break any parts of the applications. You might need to adopt some good engineering practices to ensure the quality of your applications. Automated testing is an important engineering practice that can be used to ensure the quality of software systems. In an automated testing process, you write unit tests against the smallest piece of testable software in the application, called a unit, to determine whether the functionality of each individual unit behaves exactly as you have intended. In this chapter, you learn how to write unit tests in Go.