In the world of software, solutions are getting more and more complex, including test programs and production software. The rudimentary practice of testing software with black box testing methods, such as error guessing in the production environment, may have worked in the past but the future looks different, especially with highly complex software. Writing software that is expected to run incessantly introduces new issues that need to be considered, including will the new modifications introduced change the behavior of the current software; did we test everything; and how do we implement tests efficiently? With the pressure to reduce development time, it is not uncommon for parts of the software to be outsourced to different teams, only to be integrated in a later stage of a project. Because of this it is essential that a modification done by one development team does not affect the work of another. This presentation will discuss the concepts of unit tests, integration tests, and test coverage and best practices for overcoming the obstacles to deliver high quality software.