1. Testing is necessary because software defects originating from human errors and mistakes can cause failures in software systems. These failures can harm people, the environment, or a company through financial losses or other damages.
2. Testing aims to find defects before software is used, to promote quality and reduce risks of failures. The need for testing depends on the context, such as safety-critical software requiring more rigorous testing than an e-commerce site.
3. Defects arise from mistakes made during software development and design. Not all defects result in failures, but when a defect is triggered during use, a failure can occur.