The purpose of testing Types of testing: iterative terminal Identify syntax and logic errors Selecting and using suitable test data: normal boundary invalid erroneous Refining algorithms