Best practices for effective defect management in software testing