software quality assurance challenges