游戏自动化测试三三二二
(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 自动化测试,基于图像识别的,或者有意向做的?