与人类学习相似,对于机器学习来说,训练样本的规模和质量至关重要,因此必须精心完成大量的软件测试数据准备工作。机器学习在软件测试中的应用范围较广,主要讨论以下三个方面:
(1)软件测试设计推荐
在测试设计方面,机器学习可以分析挖掘以往的测试数据,发现软件需求、测试需求和测试设计之间的内在关系,通过比对不同测试方案的测试效果,特别是一些失败教训,以向测试人员提供找出更好的测试设计建议,避免重犯类似错误。
(2)使用模式识别
用户使用模式对于诸如图形用户界面测试策略的制定具有重要意义。结合图像和其他用户交互界面处理技术,机器学习可以采集、归纳、分析不同类型用户的使用模式,既可以自动生成和执行覆盖率更高的测试用例,也可以针对用户使用行为对软件质量,比如易用性、易学习性等进行评价。
(3)软件脆弱性测试
对于很多应用系统来说,软件的内部脆弱性是影响系统广泛部署的关键因素。机器学习可以静态分析代码,识别有可能造成软件进入危险状态的潜通路,为程序员改进设计提供依据。