京公网安备 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
在Python文件操作场景中,批量处理文件、遍历目录树是高频需求——无论是统计某文件夹下的文件数量、筛选特定类型文件,还是批量 ...
2026-01-05在神经网络模型训练过程中,开发者最担心的问题之一,莫过于“训练误差突然增大”——前几轮还平稳下降的损失值(Loss),突然在 ...
2026-01-05在数据驱动的业务场景中,“垃圾数据进,垃圾结果出”是永恒的警示。企业收集的数据往往存在缺失、异常、重复、格式混乱等问题, ...
2026-01-05在数字化时代,用户行为数据已成为企业的核心资产之一。从用户打开APP的首次点击,到浏览页面的停留时长,再到最终的购买决策、 ...
2026-01-04在数据分析领域,数据稳定性是衡量数据质量的核心维度之一,直接决定了分析结果的可靠性与决策价值。稳定的数据能反映事物的固有 ...
2026-01-04在CDA(Certified Data Analyst)数据分析师的工作链路中,数据读取是连接原始数据与后续分析的关键桥梁。如果说数据采集是“获 ...
2026-01-04尊敬的考生: 您好! 我们诚挚通知您,CDA Level III 考试大纲将于 2025 年 12 月 31 日实施重大更新,并正式启用,2026年3月考 ...
2025-12-31“字如其人”的传统认知,让不少“手残党”在需要签名的场景中倍感尴尬——商务签约时的签名歪歪扭扭,朋友聚会的签名墙不敢落笔 ...
2025-12-31在多元统计分析的因子分析中,“得分系数”是连接原始观测指标与潜在因子的关键纽带,其核心作用是将多个相关性较高的原始指标, ...
2025-12-31对CDA(Certified Data Analyst)数据分析师而言,高质量的数据是开展后续分析、挖掘业务价值的基础,而数据采集作为数据链路的 ...
2025-12-31在中介效应分析(或路径分析)中,间接效应是衡量“自变量通过中介变量影响因变量”这一间接路径强度与方向的核心指标。不同于直 ...
2025-12-30数据透视表是数据分析中高效汇总、多维度分析数据的核心工具,能快速将杂乱数据转化为结构化的汇总报表。在实际分析场景中,我们 ...
2025-12-30在金融投资、商业运营、用户增长等数据密集型领域,量化策略凭借“数据驱动、逻辑可验证、执行标准化”的优势,成为企业提升决策 ...
2025-12-30CDA(Certified Data Analyst),是在数字经济大背景和人工智能时代趋势下,源自中国,走向世界,面向全行业的专业技能认证,旨 ...
2025-12-29在数据分析领域,周期性是时间序列数据的重要特征之一——它指数据在一定时间间隔内重复出现的规律,广泛存在于经济、金融、气象 ...
2025-12-29数据分析师的核心价值在于将海量数据转化为可落地的商业洞察,而高效的工具则是实现这一价值的关键载体。从数据采集、清洗整理, ...
2025-12-29在金融、零售、互联网等数据密集型行业,量化策略已成为企业提升决策效率、挖掘商业价值的核心工具。CDA(Certified Data Analys ...
2025-12-29CDA中国官网是全国统一的数据分析师认证报名网站,由认证考试委员会与持证人会员、企业会员以及行业知名第三方机构共同合作,致 ...
2025-12-26在数字化转型浪潮下,审计行业正经历从“传统手工审计”向“大数据智能审计”的深刻变革。教育部发布的《大数据与审计专业教学标 ...
2025-12-26统计学作为数学的重要分支,是连接数据与决策的桥梁。随着数据规模的爆炸式增长和复杂问题的涌现,传统统计方法已难以应对高维、 ...
2025-12-26