Testing is needed to identify defects, provide confidence, and prevent defects. The objectives of testing include finding defects, providing information, and achieving confidence. Exhaustive testing is impossible, so risk-based testing is used instead of testing all combinations of inputs. Testing activities should start early in the software development life cycle and focus on defined objectives. Defect clusters are used to plan risk-based tests and test cases are regularly revised to overcome the pesticide paradox. The fundamental test process includes test planning, analysis and design, implementation and execution, evaluation and reporting, and closure activities. Independence is important for testing to provide an objective perspective.