游戏测试 游戏自动化测试三三二二

IAmTester · April 30, 2019 · Last by JarvanRay replied at July 01, 2019 · 2103 hits

游戏自动化测试三三二二
(0)前言
(1)是什么?
(2)为什么?
(3)怎么做?
(4)趋势
(5)总结(吐槽)

前言
3年工作经验,做了2年的游戏自动化测试,有基于图像识别的、有基于控件识别的,技术渣渣的(不是谦虚),做游戏自动化过程中有很多瑕疵,但也能让游戏自动化测试完整的运行下来,下面对我这2年来的工作关于游戏自动化测试做一些总结吧,希望可以抛砖引玉,能有一些大牛出来指出我的不足,给予我任意方面的成长

是什么?
面试了很多实习生、社招生,大部分学生不太清楚或者不能表达清楚什么是游戏自动化测试。游戏自动化测试我觉得可以是很多,单元测试、接口测试、性能测试、功能测试、UI测试,基于代码脱离人工的测试我认为都可以归类为游戏自动化测试。这里仅讨论UI自动化测试,更进一步的说是讨论图像识别的自动化测试技术。UI自动化测试,是指在无人工直接参与情况下,通过模拟玩家人工操作游戏的UI界面,以代码的方式实现自动点击、自动按键等、同时验证预期结果的一种自动化测试方式。,现在公司级的游戏自动化测试,应该大部分使用的是python代码。核心原理的话应该通过cv模块实现图像识别,通过pyautogui或者win32api识别模拟用户点击等操作

为什么?
为什么要做游戏UI自动化测试?应该有2个最重要的原因:测试效率、测试质量。批量的执行测试用例测试脚本,肯定比手动测试更快速,缩短测试周期提高测试效率。通过测试脚本的预期结果检测,规避低级的人工疏忽的bug能够提高测试质量。当然肯定还有其他的因素,比如解放人力,让人工同步进行其他测试。在这里其实有2个疑问,如何保证自动化测试的可靠性,同时功能测试覆盖度是否会达到100%,先说可靠性,自动化测试质量的,取决于测试用例的可靠性,再进一步决定了测试脚本的可靠性。所编写的用例都无法发现bug,测试脚本更不用说了。覆盖度,目前我觉得达不到百分百,比如一些需要人工的主观判断,但是未来随着技术的发展,我觉得可以达到100%

怎么做?
一些公司做游戏自动化测试,应该是如上所说用python,然后编写api实现游戏自动化测试,但是一些“散户”,可能就用按键精灵、TC综合开发工具、大漠等等这些插件来实现。方式大同小异,都是基于模拟用户操作,但是不是所有的游戏都适合模拟用户操作。这几年年来,游戏引擎越来越多,比如unity3D引擎、laya引擎、白鹭引擎等等这些都不适合做图像识别的游戏自动化测试。不同时期、不同引擎的游戏,选择自动化测试方式应该也是不一样的。稳定运营的游戏,UI在较长一段时间内不会变动,2.5D或者2D更适合使用基于图像识别的游戏自动化测试,3D的话不适合做图像识别的游戏UI自动化测试。举个例子,2.5D的游戏,玩家在一个坐标点,面对一个NPC,NPC面对玩家的画面是可以预期的,而3D的话,同一个坐标点,NPC的画面是呈现给玩家的画面不是唯一的(看向天空或地板就不一样),但是对于没有3D效果的UI,比如3D游戏中的背包按钮或其他界面类按钮,这种模块也是适合做图像识别的自动化测试的,具体使用什么方式进行游戏自动化测试,要视情况而定。

运营一段时间后的游戏(中期),游戏功能较为完善,但是在UI上相对稳定期的还是频繁,适合做控件识别类(即内嵌SDK)的,目前我们已经增加了基于的控件识别的游戏自动化测试框架,(在这里主要用到了网易的airtest框架,不得不说这是一个十分强大的测试框架)

但是对于开发初期的项目,由于临时数据、临时资源等问题,如果也使用图像识别或者控件识别,会因为UI的变化或者xpath的变化,可能会产生较大的维护工作量,个人的认为初期的游戏更适合做接口测试(如果开放接口的话)或者以人工黑盒测试为主,以保证功能可用性为主。

趋势
现在国内业界有2个巨头一个是腾讯,一个是网页。腾讯的了解不多,腾讯GAutomator框架和网易的Airtest框架相比,后者可能更加友好一些,对初学者比较容易入手。未来游戏自动化测试的趋势,我猜测会是以下的模式:UI发展到控件识别再到内存,最后的内存应该相当于外挂了。项目会不会开放重要的API给测试人员?如果团队中有会安全、逆向的测试人员,而这款游戏又很叫座,员工离职,必然给项目带来安全隐患。所以就靠员工自己破解游戏进行内存操作实现自动化了。

总结(纯属吐槽)
这里不说技术上遇到的问题,说说项目上的。我觉得项目上的领导有些小河蟹,“来,这个功能给加下自动化测试”,不管你能不能实现,适不适合自动化实现,就让你做,感觉都是大爷。
“我看他的项目可以做自动化测试,那我和他的游戏类型一样,肯定也可以做,来也帮我搞一套自动化框架出来”。搞一套这个问题不大,问题大的是,不提供支持,要点资源支持,贼鸡儿难。
项目希望的是我们是家政保洁,帮他把“家务活”都做好,甚至不管你有没有进入“房间”的权限,就想着你们帮大爷都做完做好就行,找他要“钥匙”进房间的时候会说“尼玛,这还要钥匙?”最怕遇到这种大河蟹。

顺便我想问,有哪些游戏公司也在做游戏UI自动化测试,基于图像识别的,或者有意向做的?

共收到 19 条回复 时间 点赞

然而,你们是怎么做的,实现了么

自动化测试不是解决100%的测试覆盖,随着需求的增加总会出现bug。自动化测试是有限集合的测试覆盖,自动化测试要做到的是出现过的bug不再出现。

拿来跑冒烟特别爽

IAmTester #5 · May 01, 2019 作者
gzhtest 回复

cv图像识别匹配出坐标,然后模拟人工点击

IAmTester #6 · May 01, 2019 作者
0x88 回复

有道理,学到了,我们也是这么做的,出现过的bug及时覆盖

IAmTester #7 · May 01, 2019 作者
codeskyblue 回复

我们做的更多的是回归测试

就算UI经常变化,也有的是办法,你需要的只是,快速更换原有截图的办法。所以游戏不稳定也没关系了

IAmTester #9 · May 02, 2019 作者
codeskyblue 回复

截图快速更换这个问题通过工具可以解决,但是功能更新或者UI变化往往也会带来操作逻辑的变化,这个时候除了改图片,脚本点击逻辑也要维护

IAmTester 回复

这个感觉还需要个运行选中代码的功能,防止从头开始调试

以前在游戏发行公司做过,但只保障sdk(账号,支付),基于ATX的实践,也分享过相关的文章

关于游戏测试,正好同步下 MTSC2019 大会上腾讯的分享,议题内容涵盖游戏测试质量保障体系建设,MOBA 手游、FPS 手游、以及灰盒测试、AI+游戏测试等专项议题,推荐关注:

腾讯首次揭秘移动游戏测试和质量保障 QA 黑科技 | MTSC & 腾讯 WeTest

https://testerhome.com/topics/19013

13Floor has been deleted

你测试群群号啥呀

codeskyblue 回复

TesterHome游戏测试群 : 581529846

IAmTester #16 · May 06, 2019 作者

已加,通过下

WYYY · #17 · May 06, 2019
Author only

你好,我想学习游戏的自动化测试,目前在学习python。 我想问下要做游戏的自动化测试都需要学习什么呢(学习完Python之后)?

啊,楼主如果参加了今年的MTSC大会,应该就知道自动化在鹅厂已经做到了什么地步了。。
内存什么的对他们来说已经是信手拈来了。
参加了这次大会,才了解大厂是如何做自动化的。但也意识到,这也只能是在大厂了。。

感谢楼主分享这么多。
这次大会上,行业一致认为,自动化只适合做回归测试,虽然鹅厂大佬已经开始做自动化探索测试,但目前来说似乎并没有特别好的实践。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up