1、游戏自动化测试的技术选型 第一章:认识游戏自动化测试
• UI 自动化:通过 UI 操作驱动游戏运行,分为 UI 查询、UI 操作两部分。
– UI 查询可以通过图像识别/OCR 识别推断控件所在坐标,也可以通过从游戏运行环境中导出
UI 控件树,获取每个控件的属性和在视口里的坐标数据。
* 由控件树定位控件的方案,相较于图像识别的方案,稳定性会更高,但也需要一定的定位
策略。通常来讲,控件之间的层级关系不会有太多的变化,而控件的名称会微调,因此可
以通过关键字 + 层级关系的条件去精准筛选控件。
* 图像识别方案不稳定在于几点:图像识别技术本身的不确定性,以及 UI 风格迭代导致图
像识别的基线数据失效。
– UI 操作可以通过 adb 之类的方式直接模拟屏幕操作;也可以在游戏中运行一个 UI 自动化模
块,测试人员可以向这个模块请求对某个 UI 发起点击/按下/释放的操作,而后这个模块内部
执行 UI 实例 OnClick/OnPress/OnRelease 的委托。
• 指令自动化:在游戏逻辑中预置一些玩家操作接口以及参数,通过调用指令实现玩家操控。
– 游戏内部暴露给外部指令调用接口,外部发送指令和参数,然后游戏内部做 dispatch,去执
行对应封装好的指令。
– 对于手工测试需求而言是标配,对于自动化测试需求而言,只需要额外支持外部程序调用这
些内容。
客户端自动化的开源实现也有不少,其中有两个比较广泛应用:Airtest 和 GAutomator。
• Airtest:一个完整的游戏自动化测试方案。主要面向不同平台应用的 UI 自动化需求,并且自带
IDE。底层是 PocoSDK,不仅支持 Android/iOS 的 Native 控件,而且也支持 Unity/UE/Cocos 应用。
• GAutomator:针对 Unity、UE 的 UI 自动化测试框架。相对 Airtest 比较轻量级,适合集成 + 二次
开发。
一般来讲,开源的自动化方案基本上是 UI 自动化相关,而脚本自动化和指令自动化,则需要依据不
同游戏项目的实现去自定义相关逻辑。
客户端自动化适用于以下的场景:
• 功能测试:代替人工测试工作。
– 玩法冒烟测试:适用于各个玩法的基础功能冒烟。
* 可以应用于强 UI 的玩法,比如商业化、活动、社交、装备一类。
* 可以应用于流程类的玩法,比如副本、任务一类。
– 功能遍历测试:适用于操作不复杂但重复量较大,繁琐耗时的功能测试任务。
* 依据不同玩法的测试点特性而定,每个玩法可能都有测试点是遍历性质的。
* 可以应用于地图/大世界相关的跑测,比如对场景物件、寻路、空气墙、切线的效果检查。
* 可以应用于玩家状态机、Buff 或是技能效果的遍历测试。
• 专项测试:自动执行整个专项测试流程,或是作为流程的一部分,提供对测试有用的信息。
– 客户端性能测试:跑测游戏客户端,并在其中收集游戏以及设备的性能数据,用于做性能分
析。
– 客户端适配测试:跑测不同机型的客户端,覆盖一些简单的场景跟操作,看性能或者表现上
是否一致。
– UI 专项测试:这里指 UI 状态互斥、UI 层级关系这一类非强业务相关的专项测试点。
– 玩法业务专项:跑测游戏客户端,收集特定游戏玩法数据,用于玩家状态检查、玩法效果评
估、数据一致性检查等测试点。需要按各个玩法的特性去自定义自动跑测逻辑。
– 玩法环境构造:调用多台客户端机器,自动游玩一个玩法,模拟多人场景。
* 用真实客户端构造场景,通常会消耗许多线上机器资源。因此在资源紧缺或是线上运行环
境不稳定的情况下,不建议采取此方案。
4
评论5
最新资源