This document provides an overview of software testing techniques and best practices covered in a course on the topic. It discusses the purpose of software testing, including verification, error detection, and validation. It then surveys common software testing methodologies like white box testing, black box testing, and unit testing. The document also includes two case studies, one on test automation and one on testing an intranet system. Finally, it provides a template for a software test plan and discusses several papers on software testing methods and techniques.