This document provides an overview of software testing concepts. It discusses testing as an engineering activity and process. It introduces the Testing Maturity Model which describes stages of test process improvement. Basic definitions are provided for terms like error, fault, failure, test case, test oracle. Software testing principles and the tester's role are described. The origins and costs of defects are discussed. Defect classes are classified into requirements, design, code, and testing defects. The concept of a defect repository to catalog defect data is introduced. Examples of coin problem defects are given to illustrate defect classification.