Machine Learning Techniques for Software Quality Assurance: A Survey