背景
从计算机科学诞生开始,其主要目标一是计算(用计算机对大量数据进行处理),二是自动化(用计算机代替机械重复的人工劳动)。在半个多世纪后的今天,我们惊讶地发现,引导计算机科学发展的仍然是这两个范畴:大数据和人工智能(AI)。文章源自玩技e族-https://www.playezu.com/194495.html
而自动化测试,是人工智能领域下的一个应用方向,和无人驾驶、机器人等一样,都是AI技术的应用场景。从技术的发展角度看,自动化测试一共经历了四代发展变化。从最早提出自动化测试思想,到如今将AI引入自动化测试,贯穿其发展的核心诉求就是希望能有效的解决自动化测试中的时间与人力成本问题。文章源自玩技e族-https://www.playezu.com/194495.html
文章源自玩技e族-https://www.playezu.com/194495.html在过去很长一段时间内,自动化测试都局限于传统的测试脚本驱动。无论是游戏开发人员使用的Lua接口,还是类似Xcode的UITest,抑或是通过ADB/minicap对Android设备进行简单操控的PythonScript,其本质都是人为定义规则的自动化操作模拟。传统方式尽管工作量大,但实现门槛较低,容易上手,容易调试,也容易修改,在很长一段时间里都是自动化测试的主流方案。相关主流方案的差异通常也只限于自动化脚本接口或规则定义形式的不同。文章源自玩技e族-https://www.playezu.com/194495.html
然而,这种人工定义规则的方案都存在一些很明显的问题:版本迭代频繁。每次版本变化往往需要重新修改、调整脚本。对于较为复杂或具有一定随机性(例如游戏对局)的场景,难以通过简单的脚本调整对其提供支持。实际上,对于随机性极强的游戏产品,通常不会对游戏对局过程进行太多测试。文章源自玩技e族-https://www.playezu.com/194495.html
部分测试脚本需要产品本身提供对应的操作接口,用于获取游戏内部数据。而这种专用测试接口通常不会在正式发布版本中提供,因此对于真正上线的产品,难以用自动化脚本进行测试,只能靠人工测试。这一点可以说是导致自动化测试工具至今无法大规模商业化、产品化的核心原因。文章源自玩技e族-https://www.playezu.com/194495.html
AI与自动化测试文章源自玩技e族-https://www.playezu.com/194495.html
从20世纪50年代到20世纪70年代初,人工智能的研究处于“推理期”。1981年,Werbos提出了多层感知器,引入了反向传播(BP)算法,此后,神经网络得到了快速发展;1986年,决策树的机器学习算法被J.R.Quinlan提出,也就是ID3算法;1995年,Vapnik和Cortes提出了支持向量机(SVM),其被作为一种能使机器学习取得重大进展的方法而得到推广;2005年,三层的NN模型强势崛起,诸多专家在理论和实践上彻底激活了深度学习。2012年,Hinton课题组首次参加ImageNet图像识别比赛,通过CNN网络——AlexNet夺得冠军,CNN网络吸引了众多研究者关注;2015年,深度残差网络(ResNet)被提出,在众多比赛中表现突出;2016年,由谷歌旗下的DeepMind公司研发的阿尔法围棋(AIphaGo)战胜了当时的围棋世界冠军李世石,成为第一个击败人类职业围棋选手、第一个战胜围棋世界冠军的人工智能机器人,引起世界舆论的哗然。越来越多的技术领域开始尝试结合AI技术进行开发。至今,AI技术已经在图像处理、语音识别、艺术创作、自动驾驶等许多方面有了成熟的技术与稳定的应用。文章源自玩技e族-https://www.playezu.com/194495.html
在2015年和2016年GoogleDeepMind发表多篇游戏自动控制的论文,以及AlphaGo在棋类游戏上有了战胜人类的先例之后,腾讯互动娱乐事业群的TuringLab团队开始思考如何利用最新的AI技术解决上述问题,并将其融入自动化测试工具中。从2017年到今天,通过多个产品的实验和腾讯内部多个部门的协作,TuringLab团队成功地开发出一套基于深度学习的自动化AI测试框架,并应用在多款世界知名游戏产品的日常测试上。文章源自玩技e族-https://www.playezu.com/194495.html
AI技术的核心思想是利用已有的历史数据,训练出一个较好的AI网络,通过已经训练好的AI网络来处理当下的输入数据。与传统的编程方法不用,通过AI算法训练出来的网络模型通常会有更好的泛化性。而在传统的自动化测试中,项目测试的维护成本很高,只要版本更新或功能发生变动,就有可能产生大量的维护工作。引入AI技术后,其带来的泛化性可以有效地减少自动化测试的维护成本,在AI模型中编程可以不做改动,或者直接增加训练数据就可以很好的完成测试需求。文章源自玩技e族-https://www.playezu.com/194495.html