This document provides an overview of different types of software testing and when testing should begin and end. It describes various types of testing including functional, system, end-to-end, sanity, regression, acceptance, load, install/uninstall, recovery, compatibility, exploratory, performance, usability, security, alpha and beta testing. It notes that testing is best started early in the development process and continues through deployment, and that there are no set criteria for when to stop testing, as testing is an ongoing process, but management decisions and bug rates can help determine when to end a testing cycle.