defect life cycle in software testing