虽然软件开发和测试过程的自动化势在必行,但困难依然重重。我们还远没有达到全面自动化所需的技术水平。**即使是当今最先进的软件测试环境,机器学习是帮助批量处理代码集,在不需要解耦的情况下测试和解决大数据问题。**如果测试过程中出现错误,基于ML的多层结构化测试也会提醒相关用户标记问题,并继续完成自动测试过程。
许多公司一直以来有成千上万的测试需要运行。代码的一个微小改动可能花费数个小时或者数天测试才能获得反馈结果。虽然通常来说测试越多质量越好, 但是同时意味着反馈更慢。
迄今为止,谷歌和脸书已经研发了机器学习算法用于处理输入变化然后只运行最可能失败的测试。这就是预测性测试选择。这个技术令人乍舌的地方在于你只需运行10%~20%的测试,却能达到90%的可信度–整体测试不会失败。一个在代码合并后需要运行5小时的测试套件,在代码合并前只需要30分钟,只运行跟源码修改相关度最高的测试。另一个场景是把一小时的测试运行时间减少到6分钟。
马樱博士《基于机器学习的软件缺陷预测技术研究》
软件缺陷预测对于软件质量保证而言是一个重要的活动,能够使用它来对有缺陷的软件模块进行风险预警。目前常用的技术有逻辑回归分析,判别分析和人工神经网络等各种方法。本文立足于机器学习,主要讲述了机器学习中基于主动学习的软件预测缺陷,重点描述了马樱博士的科研成果——两阶段主动学习法,该方法对之前传统的软件预测技术进行了改进和研发,提高了软件缺陷预测的效率。
半监督学习犹如直推式半监督方法,基于图理论的半监督方法等。今后的研究可以比较各种半监督方法的预测性能
在软件进行预测或者进行机器学习的时候,由于一些不关键数据等各种原因往往会产生噪音,导致实验数据偏斜,我们仍然需要攻克这一难关,使得噪音对预测的影响接近于无
在软件开发过程中,自动测试和手动测试的之间平衡是QA测试的未来。
依赖 测试和 非测试 结合起来
模板与遗传算法结合
字节码级修复优点多,缺点是语义信息丢失