京公网安备 11010802034615号
经营许可证编号:京B2-20210330
导读:光看标题,你可能会以为今天会聊一个休闲的话题,不不,今天我们将要认真聊的,是一个严肃的软件工程话题:自动化测试。具体来说,是手机游戏的自动化测试。不是别家的游戏,正是腾讯游戏,保证半点也没有标题党。(坚持看完有福利)
作者:木羊同学
来源:大数据DT(ID:hzdashuju)
学过软件工程的同学应该都知道,软件工程是一门老师都可能随时不知道自己到底在讲什么的计算机专业课。不过,这不是本篇的重点。
软件工程告诉我们很多重要的事,其中一件事是软件都有一个生命周期。没错,一说软件开发,我们都会很自然想到写代码,但软件工程告诉我们,写代码远不是软件开发的全部工作,甚至还不一定是最重要的工作。
按照软件工程的说法,开发软件你得首先和客户谈笑风生,这叫需求分析,接着就是各种写不完的文档和开不完的研究会,都弄好以后,差不多就可以把“码农”找过来,把满头青丝编成代码。
你以为这就完了?没有!从软件编码到软件正式上线部署之间,有一个非常重要的阶段,叫软件测试,俗称Debug。Debug完了软件该上线了吧?NoNoNo,城里人的套路深着呢,还有QA和QC在前面等着。等着干嘛呢,翻来覆去地花式折腾你的程序,目标只有一个,加油努力把程序玩脱。
照一些软工书本的说法,软件开发最重要的是需求,其次是测试,接着可能是什么三姑六婆,至于程序员死了都要爱的写代码环节,在软工书里经常是三甲不入的,没啥存在感。
当然了,理想很丰满,现实很骨感,干了一辈子程序员,从没见过活着的QA、QC的也大有人在。所以,象牙塔里的软工老师,讲着讲着能把自己绕晕也不足为奇,这里就不展开了。
但是有一点,虽然大公司、小公司、以及不同流派的开发团队,在软件工程上的玩法各不相同,但有一点毫无疑问,软件测试是软件开发必不可少的环节。前面说过,软件测试就是花式折腾程序,直到折腾出毛病来。
听着是不是挺有意思?但真的走一遍你就会发现,这事费时费事还费脑子。软件测试有一个经典的环节,叫设计测试用例。什么意思呢?简单来说,你不是要花式折腾程序吗,花式虐狗还得先写一本《花式虐狗手册》呢,测试用例就是花式折腾程序的手册。
测试用例可不好设计,测试用例最希望的目标是做到路径全覆盖,也就是把程序所有可能的流程都测一遍。
这是非常烧脑的,光这么说可能感受不直观,接下来我们要讲游戏怎么进行软件测试,这里那就拿游戏作为例子好了,譬如说农药,现在要你设计一套路径全覆盖的测试用例,就是要你把所有角色的所有技能在所有可能的场景全都组合试一遍,就是这个难度,而且这还只是一小部分,因为农药除了竞技,还有社交、氪金等等别的各种功能,全都需要覆盖一遍。
现在应该可以看出来,软件测试并不简单,一套设计良好的测试用例,背后往往需要对软件的种种缺陷有深刻的认识。这就是为什么软工的书讲到软件测试,往往都会提出一个有点反直觉的观点:测试用例应该尽可能安排资深的专家来设计。
折腾软件听起来简单,写程序有门槛,测程序谁还不会对吧。但是,真要做到路径全覆盖,还真不是这么简单。随着软件规模越来越大,逻辑越来越复杂,传统的手工测试成本自然也随之暴涨,已经到了纯手工几乎不可能完成的地步。这个时候,软件测试人员想到了一个办法。
玩游戏感觉难度太高怎么办?开挂。那测试游戏也感觉难度太高怎么办?没错,同样也是开挂。软件测试人员开发出一种技术,叫自动化测试技术。当然了,虽然名字上叫“技术”,其实一开始也是测试人员零敲碎打甚至一拍脑门的产物。
根据《AI自动化测试》这本书的介绍,自动化测试技术的发展大致可分为四个阶段:
第一个阶段叫“录制-回放”技术,名字听起来好像很厉害,其实就是利用按键精灵或者之类的软件先记录键盘和鼠标的操作,然后不断重放进行测试。这套技术的优点很明显,简单易学,缺点也很明显,软件稍一改版,譬如稍微调整了一下某个按钮的位置,原先录制好的内容就完全作废了。
第二个阶段叫脚本化的自动化测试。脚本化意思就是要写脚本来测软件了,这应该是现在软件测试工作最常见的做法。不过和软件测试脚本和写软件一样,如果每次都从头开始,很快就会发现很多功能其实高度类似,大量时间都是在做重复性的工作。那怎么办呢?于是就有了第三个阶段。
第三个阶段叫测试框架。测试框架就是把测试脚本框架化,框架的好处不必多说了,在自动化测试中,框架也具有同样好处。有了测试框架,就可以把主要的时间精力,放在新增功能和核心功能的编写上面,能够显著提升了测试脚本的编写效率。
如果依据软件开发的经验,应该说自动化测试到了这个阶段,理论上就能难取得什么新突破了,实践上能做的工作主要就是对现有框架进行各种优化升级,或者开发新框架。那自动化测试的第四个阶段还能玩出什么新花样呢?答案就是真·自动化测试。
第四个阶段叫AI自动化测试。从自动化测试的前面三个阶段可以看出,虽然自动化测试名叫“自动化”,但实际上还是有许多工作需要人来完成,譬如说自动化测试的脚本就必须人来编写。
如果能够把这部分工作也“自动化”了,那岂不就是真正的自动化?想法很好,毕竟偷懒是IT技术发展的源动力,一样工作偷懒了,就样样工作都想偷懒。可是,可能吗?以前是不太可能,现在随着AI技术的进步,“不太可能”也随之变成了“也许可能”。
下面我们开始介绍如何基于AI技术对游戏类软件进行自动化测试。关于AI技术,我前面写过很多的文章,所以在开始之前,我想分享一个关于AI技术的观点。
技术的发展,尤其是计算机技术的发展,一定都是有一个不断发展成熟的过程,都是从一个“也许可能”开始,步履蹒跚跌跌撞撞,甚至可能会中途夭折,但都必须熬过这个艰难的过程,最终才能百炼成钢。
这几年AI技术很热,很多人已经着急地开始讨论用AI来取代人工,但在我看来,AI技术也并不例外,也需要经历那么一个跌跌撞撞的过程,选择了AI技术,并不意味着就选择了万事大吉,在通往应用的路上,还有大大小小无数的坑在等着勇敢的先驱们去填满。
现在的AI技术还正站在那个“也许可能”的起点上,更多地是告诉我们还有一种可能的选项。下面,我们就来一起看看,AI技术给游戏类软件测试带来怎样的可能选项。
说到游戏,行业内的同学第一个想到的应该都是最能“用心创造快乐”的腾讯互娱,有好几作爆款手游。最近腾讯互娱事业群的TuringLab实验室出了一本书,叫《AI自动化测试》,书里提到了一点不快乐的事。什么事不快乐呢?就是前面一直在说的软件测试。
手游也是软件,当然也需要进行软件测试,最常规的做法就是前面介绍的用自动化脚本测试。但编写测试现代手游的自动脚本,有三点难题:
还有一点书里没提,但我觉得这应该也算是一大难题。腾讯互娱素来有“养蛊”的传统,同一类游戏题材,通常会选择让自家的多个制作团队同时独立开发竞品游戏,这一策略在市场上大获成功,但不难想象会给背后的测试团队带来多大的工作压力。
毕竟人无论多努力,时间和精力都是有瓶颈的,但机器没有,所以,腾讯互娱开始探索用AI技术来完成手游测试工作的自动化道路。
要实现真·自动化测试手游,首先需要解决三大问题。
第一个大问题是手游的“读写”问题,这是一切工作的基础。手游是安装在手机上的,必须得先找到一些方法能够对手机进行各种操作。
这个问题相对容易,Android操作系统就自带了调试工具,此外还有许多好用的第三方工具包,譬如OpenSTF发布的minicap和minitouch,基于ADB实现了对Android手机运行App的实时截屏和触屏操作,这就首先为自动化测试手游解决了“读写”问题。
第二个问题是“读”的问题。玩手游被亲切地称为“擦玻璃”,这是有原因的,游戏的画面呈现,和对游戏角色的操作,都是在同一块屏幕上进行的。
minicap虽然实现了截屏,但是哪一部分是画面,哪一部分又是操作呢?单就游戏画面来说,至少还能细分成两个部分,状态画面和奖励画面。这不是规范叫法,这里我是借用了强化学习的部分概念。
强化学习里有一个智能体(Agent)的概念,不妨理解成玩游戏时你操作的游戏角色,智能体要干什么呢?三件事,观察周围环境,采取一些行动,争取得到最高的奖励。
观察周围环境,术语叫做状态(State),譬如说竞速类游戏,当前是在形势在直路上,还是准备进入弯道。那奖励是什么呢?最容易能想到的就是游戏得分,不过,在一些游戏,譬如前面所举的竞速类游戏,还有一些其它的实时奖励,比如当前的车速等等。
强化学习就是通过观察状态,分析出当前应该采取什么行动(术语称为“策略”),从而获得最高奖励。这个过程称为策略优化。而要找到最优策略,必须将状态-行动-奖励以三元组的形式保存下来作为训练样本。这就要求必须首先从画面中获取状态画面和奖励画面。
对于这个问题,《AI自动化测试》介绍了如何使用基于深度学习的图像处理算法,来完成场景覆盖性测试和游戏场景图像物体识别。
▲强化学习使用的各个区域示意图,来源:《AI自动化测试》图3-8
第三个问题是操作的问题。解决了第二个问题,我们就获取了手游的各种信息,那接下来应该进行什么动作操作呢?这是软件测试最关键的问题,也是自动化测试最难解决的问题。对于这个问题,《AI自动化测试》给出了两种思路,第一种就是前面已经提到的强化学习,另一种名字就比较新鲜了,叫“模仿学习”。
什么叫模仿学习呢?很简单,就是现在争议非常大的“云通关”。模仿学习是这么玩游戏的,现在要我玩一款游戏,但我首先做的不是上手去玩,而是先到B站刷高手通关视频,一直刷一直刷,一直刷到我认为已经把所有细节都印入脑海了,我就开始凭着记忆去玩游戏。
可想而知的是,很多的操作我虽然不清楚是为什么,也就是很多人说的失掉了探索游戏的乐趣,但我多半能很快通关。这就是模仿学习想要达到的结果。
好了,前面大致介绍了游戏自动化测试所会遇到的问题,和《AI自动化测试》给出的解决思路,但读完你肯定感觉和我一样,就算这些方法真的对路,不过要一一从头实现实在太麻烦。
还记得我前面说的话吗,偷懒是IT技术发展的源动力,腾讯互娱显然也知道这个道理,已经推出了一款名叫GAME AI SDK的自动化测试平台,提供了许多已经封装好了的工具,来逐一解决前面提到的这些问题。
关于这部分内容,可以仔细阅读《AI自动化测试》这本书,GAME AI SDK正是本书的作者TuringLab团队的作品。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数字化市场调研体系中,大数据与小数据是两类核心调研数据形态,分别对应海量行为统计与精准样本深度调研。行业普遍存在认知误 ...
2026-08-07数据透视表是Excel、WPS中最核心的数据分析工具,凭借快速汇总、分组统计、动态筛选的优势,被广泛应用于销量统计、业绩复盘、数 ...
2026-08-07 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“哪些指标在所有行业都适用”“哪些指标只对电商有意义”“二者如何搭 ...
2026-08-07在商品销量、市场需求、营收规模等业务数据中,季节性波动是最普遍、最核心的数据特征。零售快消、食品餐饮、家电服饰、电商行业 ...
2026-08-06在流量红利消退、市场竞争白热化的商业环境中,传统依托经验、跟风投放、广撒网式的营销模式,逐渐暴露出成本高、精准度低、转化 ...
2026-08-06 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“什么是指标”“指标和维度有什么区别”“如何定义指标值的计算规则和 ...
2026-08-06【核心关键词】知识、设备、工程师、数字化、建模、算法、工业大数据、数据分析、控制算法、机器学习、深度学习、业务目标、工 ...
2026-08-05增长率是数据分析、业务报表、可视化看板中最核心的指标之一,常用于衡量营收、销量、用户量、流量等业务数据的涨跌幅度与发展趋 ...
2026-08-05小陈是某电商平台的数据分析师。老板交给他一个任务:“我们平台的注册用户已经突破1000万了,想了解一下用户的平均月消费金额。 ...
2026-08-05在机器学习建模、数据预处理、抽样划分、模型初始化训练的全流程中,随机种子是控制实验随机性、保证结果可复现、提升模型稳定性 ...
2026-08-04Python作为面向对象的主流编程语言,核心编程体系由变量、方法、类三大基础要素构成。三者层层递进、相互协作,支撑起所有基础代 ...
2026-08-04 很多数据分析师沉迷于复杂的机器学习算法,却忽略了数据分析最基础也最核心的能力——描述性统计。事实上,80%的商业分析问 ...
2026-08-04为什么学习数据分析? 当下,我们已然步入数据要素价值全面释放的智能时代。数据不再只是零散的数字记录,更是驱动新质生产力运 ...
2026-08-03CDA等级认证证书有效期为三年,三年进行一次年审,主要考察CDA持证人的职业发展情况;学历、工作单位及职业变更情况;继续教育 ...
2026-08-03【核心关键词】金融、岗位、企业、算法、知识、专业、理论、课程、软件、数据分析、业务类型、应用场景、经营管理、大型企业、 ...
2026-08-03在日常数据分析、业务报表复盘、业绩预测工作中,平均增长率是衡量数据长期变化趋势的核心指标,广泛用于营收增长、用户增长、销 ...
2026-08-03很多人把统计学理解为“一堆公式和计算”,却忽略了它的本质——一门让数据“开口说话”的科学。真正的数据分析高手,不是会算平 ...
2026-08-03在数据指标体系搭建工作中,从业者常困惑于指标搭建的核心逻辑:究竟是依托一线零散数据自下而上汇总指标,还是基于战略目标自上 ...
2026-07-31在数据分析、问卷研究、实验复盘、业务建模的工作中,大多数人最关注的是“用什么统计方法”:是做T检验、方差分析、卡方检验, ...
2026-07-31 许多数据分析师精通Excel函数和SQL查询,但当面对一张上万行的销售明细表,要快速回答“哪个地区销量最高”“哪款产品增长最 ...
2026-07-31