Testing is necessary for software because:
1) Humans make mistakes and defects can be introduced during development that can later cause failures, from minor issues to potentially serious consequences like environmental damage or injury.
2) Defects are more expensive to fix the later they are found, so testing aims to find defects early.
3) Not all defects will necessarily lead to failures, but failures can be caused by defects from development or the environment, as well as human errors, so testing is needed to improve quality and reduce risks.