一、简介
游戏业务是朝夕光年的主要业务,游戏种类繁多,迭代速度也很快,游戏测试作为游戏开发中质量保障的最重要环节,如何提升测试效率和质量至关重要。本文介绍一种字节自研的游戏智能测试服务 --- Mimer,通过游戏的自动化测试,替代了大量的手工重复测试,并且完成手工测试难以执行的用例,高效地执行各种检测任务,并自动生成测试报告,大大提高了游戏测试效率。
常见的游戏业务痛点,包括但不限于:插桩困难,游戏研发对于游戏代码内部插桩比较敏感,而常规测试需要基于xml控件解析的工具对游戏进行插桩;迭代很快,游戏自身的迭代很快,频繁维护 case 成本很高;重视场景,游戏有高度集中的、特定场景的需求,例如过关卡,跑任务,遍历出卡牌,目前没有针对于游戏各个场景的工具等;需求众多,游戏中的自动化不只局限于质量保障相关(例如崩溃和性能),还有文本、图像质量、安全等诸多领域的需求。
本文介绍的游戏智能测试服务 Mimer 是一套完整的通用游戏智能测试服务,具有较强游戏场景/元素遍历以及过关、跑图的能力,且以极低的成本敏捷应对游戏开发过程中频繁的改动,释放人工测试的人力,下游数据消费提供丰富的图像 / 文本 / 性能检测的能力,也支持针对游戏测试人员的需求进行定制服务。同时,Mimer 支持从游戏智能遍历到测试报告生成的一体化功能。
总的来说,我们的目标如图1所示,应用 AI 技术构建一体化的无侵入的低成本的游戏智能测试服务,该服务支持多种驱动模式,适用于多种游戏类型,满足多种游戏业务场景,提供多种游戏测试服务。
图1
Mimer 主要以 python_SDK 的形式提供:安装 Mimer 包,将手机与电脑连接,选择遍历模式和下游检测服务,启动脚本,即可并行执行游戏遍历和下游检测服务,实现数据存储和检测报告生成的一体化。以下图2为 Mimer 的整体框架图,表格1为各个模块的功能描述,接着重点介绍 Mimer 的亮点:智能遍历算法。
图2
模块 | 功能 | 介绍 |
手机/模拟器/PC | 跨端交互 | 支持多种交互驱动:ADB-android、BDC-ios、winapi-windows |
Mimer工具 | 动作管理 | click、scroll |
逻辑管理 | loop、sequence | |
场景理解 | UI检测:控件检测,模版匹配 | |
游戏OCR:多语种游戏OCR、语种预测 | ||
场景分类:登录、支付、弹窗、对战等 | ||
图像采集 | 截图、录屏 | |
智能遍历 | 游戏AI对战(PVE) | 通过模仿学习,实现游戏自动对战 |
录制回放 | 录制用户操作,实现动作回放 | |
自动遍历 | 控件自动遍历 | |
定制脚本遍历 | 定制遍历脚本,提升游戏场景覆盖率 | |
数据存储 | 数据一体化建设 | 普通图像存储、异常图像存储 |
业务应用 | 扩展业务 | 无源码权限的游戏,在测试覆盖、人效和问题拦截上提效 新类型的探索:过关类,对战类(人机) 多语言覆盖深化合作 提供更多优质的游戏测试服务 |
智能服务 | 图像异常检测 | 黑白块、过爆、花屏等 |
文本异常检测 | 文本超框、文本重叠、文本翻译错误 | |
图像相似去重 | 基于图像内容的相似去重、基于文本的相似去重 | |
游戏OCR | 多语种游戏OCR、语种预测 | |
游戏战斗视频数字化 | 对游戏战斗视频进行分析,数字化战斗条目 | |
游戏控件检测 | 游戏图像控件检测 | |
游戏控件匹配 | 游戏图像的控件匹配与定位 | |
游戏场景分类 | 游戏特定场景分类:登录、弹窗等 | |
游戏画面抖动检测 | 检测静态游戏画面抖动状态 | |
控件响应时间捕获 | 获取控件响应时间 |
表格1
遍历算法作为Mimer的亮点,除了录制脚本回放、定制脚本遍历外,还支持两种智能遍历算法:游戏AI对战和自动遍历。这些遍历算法分别适用于不同的业务场景,同时也可以任意组合使用,互为补充,提高游戏的智能遍历能力,下面重点展示两种智能遍历算法。
游戏 AI 对战模式采用模仿学习来实现自动游戏对战,整体的训练与推理流程如图3。前期需要先通过录制AI样本和标注来训练 AI 模型,并将对战逻辑封装为服务端 Mimer Server。使用AI对战遍历模式时,客户端 AI Client 通过 ADB 命令对手机截图,并将截图传到 Mimer Server中, Mimer Server 根据 AI 模型预测结果,发送执行命令到 AI Client,AI Client 使用 ADB 命令 与手机端进行交互,执行下一步动作,直到对战完成。动图4展示的是一个跑酷游戏的AI对战录屏。
图3
图4
游戏自动遍历是指对游戏截图进行智能控件检测和文本检测,获取手机上所有可点击的区域坐标,然后采用一定的遍历策略来实现游戏自动遍历。目前根据不同的业务场景提供了2种自动遍历算法:N层深度遍历和图网络智能遍历。图5展示的是一个策略类游戏的自动遍历录屏。
图5
N层深度遍历:
通过动态构建树结构,对树节点进行N层深度遍历,流程图如图6。适用业务场景:仅需要自动遍历某些模块,例如:合规检测中仅需要遍历启动app后的前5层。
图6
图网络智能遍历 BeeMapping
基于计算机视觉的强大控件定位及状态感知技术构建(页面-控件)图网络,利用智能遍历技术在少量甚至脱离人工干预的情况下实现图网络的全自动遍历,框架如图7。适用业务场景:对任一游戏各个模块进行全自动遍历。
Bee: 用户通过填写相关配置可生成Bee对象,Bee对象通过adb命令的形式和移动端app进行交互,并完成指定的下游任务。
Beehive: Beehive是用户构建任务时生成的Bee的调度系统。Bee通过探索app场景,并上传截图至hive,hive会通过一系列指示下达当前Bee的下一步操作指令。Beehive中核心部分有四个,它们分别是:
控件感知系统:控件感知系统会对当前Bee上传的场景进行控件布局分析,并将当前页面信息编码发送至状态记录模块与observer。
状态记录模块:状态记录模块会记录当前页面的编码信息,并同步更新所有已探索节点的空间网络。
observer:observer主要负责记录遍历状态的异常信息,包括页面卡顿或者处于非游戏页面状态等诸多陷阱状态。同时会将信息同步给智能策略引导系统。
智能策略引导系统:智能策略引导系统根据当前节点所处节点网络的控件信息与当前页面的实际状态做出综合决策,并将指令发送给Bee。
图7
Mimer 是一套由字节跳动 App Infra-Research Center 和游戏质量保障团队协作研发的面向游戏自动化测试的智能服务,提供了自动化驱动,多种遍历算法,丰富的游戏智能服务,纯图像模式的一体化测试方案,旨在解决终端上的测试、自动化、性能等方面的问题,极大缓解游戏测试人力。以下表格总结了 Mimer的一些亮点。
Mimer | ||
条件 | 对包体无侵入 | 纯图像模式,无任何侵入 |
支持的游戏引擎 | 引擎不限 | |
支持游戏类型 | 移动端端游戏、PC端游戏 | |
其他依赖 | 一些常用python包。依赖少,使用场景更灵活,简单 | |
代码量 | 低代码量,高效率 | |
能力范围 | 遍历算法 | 提供4种游戏遍历算法,适合各种业务场景 |
遍历脚本实现成本 | 成本低,逻辑节点的支持,消灭了大量循环和判断语句的编写 | |
智能遍历控件/页面元素 | 支持智能遍历控价 | |
基础能力 | 图像匹配能力 | 智能图标匹配能力 |
OCR文字检测能力 | 提供高精度游戏专项OCR服务 | |
UI控件检测能力 | 提供高精度游戏专项UI检测服务 | |
工具灵活性/扩展性 | 下游可接各种图像检测等服务,除了已有的丰富智能服务,还支持灵活定制 |