Nowadays, we are witnessing a wide adoption of Machine learning (ML) models in many safety-critical systems, thanks to recent breakthroughs in deep learning and reinforcement learning. Many people are now interacting with systems based on ML every day, e.g., voice recognition systems used by virtual personal assistants like Amazon Alexa or Google Home. As the field of ML continues to grow, we are likely to witness transformative advances in a wide range of areas, from finance, energy, to health and transportation. Given this growing importance of ML-based systems in our daily life, it is becoming utterly important to ensure their reliability. Recently, software researchers have started adapting concepts from the software testing domain (e.g., code coverage, mutation testing, or property-based testing) to help ML engineers detect and correct faults in ML programs. This paper reviews current existing testing practices for ML programs. First, we identify and explain challenges that should be addressed when testing ML programs. Next, we report existing solutions found in the literature for testing ML programs. Finally, we identify gaps in the literature related to the testing of ML programs and make recommendations of future research directions for the scientific community. We hope that this comprehensive review of software testing practices will help ML engineers identify the right approach to improve the reliability of their ML-based systems. We also hope that the research community will act on our proposed research directions to advance the state of the art of testing for ML programs.
翻译:由于最近在深层次学习和强化学习方面取得的突破,我们目睹许多安全关键系统中广泛采用机器学习(ML)模式。现在,我们目睹许多安全关键系统中广泛采用机器学习(ML)模式,由于最近在深层次学习和强化学习方面的突破,许多人现在每天都在与基于ML的系统进行互动,例如亚马逊亚历卡或谷歌之家等虚拟个人助理使用的语音识别系统。随着ML领域的继续发展,我们很可能看到许多广泛的领域,从金融、能源、卫生和交通等,出现了变革性的进展。鉴于基于ML的系统在我们日常生活中日益重要,确保这些系统的可靠性变得极为重要。最近,软件研究人员已开始调整软件测试领域的概念(例如代码覆盖、突变测试或基于财产的测试),以帮助ML工程师发现并纠正ML方案中的错误。随着ML的继续发展,我们可能会看到在广泛的领域,从金融、能源、卫生和运输等领域的系统,发现在测试ML的文献中找到的解决方案。最后,我们发现与ML程序测试有关的文献中存在的差距,并为未来的研究方向提出建议。我们希望,我们将改进ML的软件系统的全面测试社区。