京公网安备 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团队的作品。
CDA学员免费下载查看报告全文:2026全球数智化人才指数报告【CDA数据科学研究院】.pdf
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数据驱动运营的时代,指标是连接业务目标与实际行动的核心桥梁,是企业解读业务现状、发现问题、预判趋势的“量化标尺”。一套 ...
2026-05-08在存量竞争日趋激烈的商业时代,“以客户为中心”早已从口号落地为企业运营的核心逻辑。而客户画像作为打通“了解客户”与“服务 ...
2026-05-08 很多数据分析师每天与Excel打交道,但当被问到“什么是表格结构数据”“它和表结构数据有什么区别”“表格结构数据有哪些核 ...
2026-05-08在数据分析、计量研究等场景中,回归分析是探究变量间量化关系的核心方法,无论是简单的一元线性回归,还是复杂的多元线性回归、 ...
2026-05-07在数据分析、计量研究等场景中,回归分析是探究变量间量化关系的核心方法,无论是简单的一元线性回归,还是复杂的多元线性回归、 ...
2026-05-07 很多数据分析师画过趋势图、做过业绩预测,但当被问到“这个月销售额增长20%,到底是长期趋势自然增长,还是促销活动的短期 ...
2026-05-07在数字化时代,商业竞争的核心已从“经验驱动”转向“数据驱动”,越来越多的企业意识到,商业分析不是简单的数据统计与报表呈现 ...
2026-05-06在Excel数据透视表的实操中,“引用”是连接透视表与公式、辅助数据的核心操作,而相对引用作为最基础、最常用的引用方式,其设 ...
2026-05-06 很多数据分析师做过按月份的销售额趋势图,画过按天的流量折线图,但当被问到“时间序列和普通数据有什么本质区别”“季节性 ...
2026-05-06在Excel数据分析中,数据透视表是汇总、整理海量数据的高效工具,而公式则是实现数据二次计算、逻辑判断的核心功能。实际操作中 ...
2026-04-30Excel透视图是数据分析中不可或缺的工具,它能将透视表中的数据快速可视化,帮助我们直观捕捉数据规律、呈现分析结果。但在实际 ...
2026-04-30 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-04-30在中介效应分析中,人口统计学变量(如年龄、性别、学历、收入、职业等)是常见的控制变量或调节变量,其处理方式直接影响分析结 ...
2026-04-29在SQL数据库实操中,日期数据的存储与显示是高频需求,而“数字日期”(如20240520、20241231、45321)是很多开发者、数据分析师 ...
2026-04-29 很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当 ...
2026-04-29在手游行业竞争日趋白热化的当下,“流量为王”早已升级为“留存为王”,而付费用户留存率更是衡量一款手游盈利能力、运营质量的 ...
2026-04-28在日常MySQL数据库运维与开发中,经常会遇到“同一台服务器上,两个不同数据库(以下简称“源库”“目标库”)的表数据需要保持 ...
2026-04-28 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-04-28箱线图(Box Plot)作为一种经典的数据可视化工具,广泛应用于统计学、数据分析、科研实证等领域,核心价值在于直观呈现数据的集 ...
2026-04-27实证分析是社会科学、自然科学、经济管理等领域开展研究的核心范式,其核心逻辑是通过对多维度数据的收集、分析与解读,揭示变量 ...
2026-04-27