一、概述
小游戏云测试是微信小游戏团队为开发者提供的一套完整易用的在线测试服务,以帮助开发者更高
效、更全面地进行自动化游戏性能测试、兼容性测试,驱动产品质量提升和优化,为用户带来更佳的游戏体验。
云测试具备以下优势:
- 高覆盖率的真机设备集群:涵盖主流品牌厂商设备,一次测试就能全覆盖;
- 低成本接入门槛:标准测试无须任何门槛,点击即执行;
- 持续集成性能、兼容性检测工具:云测试过程中集成内存、CPU、JS Error、黑屏检测等各种检测工具;
- 全面详细的测试结果:包含启动性能、运行性能、运行网络和兼容性等全方位数据;
- 录制回放功能:定制游戏操作顺序,深化测试场景。
二、使用指引
2.1 流程概述
云测试的整体测试流程图如下所示:
2.2 云测试服务页入口
进入云测试服务页有两种方式:
(1)登录微信公众平台,在“版本管理” - “开发版本”的体验版入口跳转到云测试服务页面:
(2)登录微信公众平台,选择“开发”-“云测试服务”:
2.3 提交测试
2.3.1 测试类型
提交测试之前需要选择测试类型,云测试服务目前支持三种测试类型:
- 标准化测试
- 自定义测试
- 录制回放测试
三种测试类型的特点如下:
测试类型 | 运行机制 | 接入成本 | 覆盖率 |
---|---|---|---|
标准化测试 | 基于智能探索算法,训练Monkey模型执行策略,尽可能遍历游戏场景 | 无任何门槛 | 一般 |
自定义测试 | 基于自动测试框架,开发者编写测试脚本 | 较高 | 高 |
录制回放测试 | 真机录制执行流程,基于指令和节点进行操作回放 | 较低 | 较高 |
三种测试类型的差异仅体现在测试脚本上,提交测试过程和查看结果步骤均一致。“标准化测试”可以直接提交测试进入测试队列,“自定义测试”和“录制回放测试”则需要配置测试脚本后才能提交,若已经配置过测试脚本,可以不用重复提交直接开始测试。
“自定义测试”的脚本编写指引可以参考自研测试框架MiniGameTest。
“录制回放测试”的脚本可以在微信开发者工具中使用“小游戏脚本录制插件”录制游戏操作顺序自动生成。脚本导出指引可以参考录制回放使用指引。
上传脚本步骤如图:
说明:
云测试功能针对小游戏体验版本进行测试,同一款小游戏每日最多测试2次。
2.3.2 任务选项
任务选项中,勾选“导出所有console日志“,可导出测试过程中的所有console日志;勾选“导出CPU Profile”,可导出测试过程中记录的CPU profile日志,并罗列其中执行时间较长的Top函数。
注意:勾选“导出所有console日志“和”导出CPU profile“可导致测试过程中的内存占用增加,且”导出CPU profile“有小概率导致小游戏异常退出。
2.4 查看结果
提交测试后,等待测试完成。
测试完成后可以在“开发” - “云测试服务” - “测试记录”中,查看测试报告。
2.4.1 测试结果概览页
测试报告概览页展示了测试基本信息、测试概况、”测试评分”和“测试详情”。
“测试评分”旨在帮助开发者快速定位测试报告中隐含的问题,过滤出存在问题的设备。通过对每一项指标打分的方式,给开发者一个直观的游戏各指标优劣的感受。它对启动性能、运行性能、网络性能和兼容性四项指标进行打分。打分原则及每个指标下所依赖的指标项依据性能评测标准。具体的分数计算规则见云测试评分体系。
“测试详情”包含了专项统计、场景概览和测试设备列表信息。若测试类型为自定义测试,还会展示自定义测试概况信息。
测试设备列表信息提供平台、手机品牌、手机型号、性能测试结果、兼容性测试结果筛选。
2.4.2 设备测试报告
点击测试设备列表中具体设备“详细报告”链接或者场景概览中具体设备的“查看详情”链接,可以进入设备测试报告页面,主要包括测试设备信息以及问题列表、运行性能、网络性能、兼容性测试结果。
在提交测试时勾选了“导出所有console日志”时,设备测试报告页面右上角可以下载用例执行日志。
在详情页中可以看到下图三个Tap页:
(1)运行性能:主要包括启动性能、运行性能统计信息,内存指标曲线、CPU指标曲线、Drawcall、引擎指标、FPS指标曲线、三角形面数及顶点数曲线、低帧或FPS骤降截图等;其中点击内存指标曲线中提供了内存资源文件信息的展示、统计和对比功能。
(2)网络性能:主要展示测试过程中网络请求相关异常信息,若出现异常可以通过查看详情,查看具体url等信 息;
(3)兼容性测试:包含黑屏率,js错误详情,console error文件的下载,测试过程的截屏信息。
1. 运行性能
鼠标放置在曲线上会出现浮窗显示该时刻的截屏。内存指标曲线是多个内存指标在游戏测试过程中的变化曲线图,鼠标选中具体时刻可获取(1)该时刻的内存数据;(2)游戏场景截图;(3)该时刻的内存资源数据统计和场景。具体使用见资源内存统计。
2. 网络性能
3. 兼容性测试
2.4.3 启动耗时详情报告
测试报告概览页中的测试详情的“专项统计”下包含“启动耗时详情”和“内存详情”。点击“启动耗时详情”可进入详细页面。
启动专项数据功能有以下特点:
- 各机型启动数据汇总,全面掌握启动数据
- 剥离框架和开发者数据,细分启动阶段
- 自动化黑屏检测分析,输出启动失败告警
启动阶段性耗时
所有设备根据不同档位启动时间汇总,包含代码包加载、代码注入、等小游戏开发者相关的时间。
启动耗时分布与设备详情
检测出现启动加载黑屏的设备, 这里的黑屏检测手段是启动内2分钟内黑屏截图数大于等于10张则会输出启动失败告警。
设备启动详情
所有设备的启动时间详细列表,开发者可以根据数据分析不同设备的性能差异。
2.4.4 内存详情
测试报告概览页中的测试详情的“专项统计”下包含“启动耗时详情”和“内存详情”。点击“内存详情”可进入详细页面。
内存详情功能有以下特点:
- 不同机型、内存指标和内存区间的数据汇总,全面掌握内存分布
- 具体机型的内存数据统计,概览内存占用情况
内存概览
所有设备根据不同档位、不同内存类型,对内存数据进行汇总,包含total、graphic、native、private-other等多种内存类型的最大值与均值概况数据。
内存分布
总内存最大值的不同区间范围下的机器数量分布情况。
内存TOP列表
根据总内存最大值进行降序排列后的TOP5机型。
三、更多能力
3.1 使用GameGlobal.isTest
指定云测试环境
为了云测试能够覆盖小游戏中更多场景,在提交体验版代码时,开发者可以通过在代码中添加GameGlobal.isTest
属性判断当前是否是云测试环境,进而跳过新手教程等一些无需云测试的场景,或只对指定的场景进行云测试。
GameGlobal.isTest
在云测试场景下的取值为true
,否则为false
。
以“跳过新手教程”为例,使用方式如下:
// 新手教程
function renderTutorial() {
// 判断当前是否为云测试环境。如是,GameGlobal.isTest为true;反之,为false。
if ( typeof GameGlobal !== "undefined" && typeof GameGlobal.isTest !== "undefined" && GameGlobal.isTest ) {
console.log("当前为云测试环境!")
return;
}
// 新手教程逻辑
···
}
3.2 使用markScene({"sceneId":0})
统计“游戏可交互”耗时
在测试结果的“启动专项”中提供了“启动时间概览”,统计了不同机型下启动过程中每个阶段(下载代码包,注入游戏代码,首屏渲染等待,游戏可交互)的耗时数据。
其中“游戏可交互”需要开发者代码支持,使用方式是:
在游戏界面可交互时,使用markScene({"sceneId":0})
标定可交互场景。
wx.markScene
的API介绍见链接。
强大👍
小游戏云测试服务已改版,最新使用介绍可参考【微信官方文档 -> 小游戏 -> 云测试】https://developers.weixin.qq.com/minigame/dev/minigame-testtool/overview.html
上面的GameGlobal.isTest 的Test到底是大写还是小写,前面跟后面使用方式代码有出入