朝夕光年游戏自动化测试实践

图片

朝夕光年是面向全球用户与开发者的游戏研发与发行业务品牌,致力于服务全球玩家,帮助玩家在令人惊叹的虚拟世界中一起玩耍与创造。

在游戏的研发过程中,游戏自动化一直是开展难度较大的工程,具体包括机房机架、设备调度、软件框架、算法调校这些中台建设,复杂场景下还需要游戏项目本身的配合。

朝夕光年游戏自动化测试实践核心的工作思路是在自动化能力分解、自动化能力评估、自动化的成熟度、自动化测试全景。

经过这几年的测试实践,目前自动化在兼容性测试、稳定性测试、性能测试、多语言本地化测试、功能回归的部分需求中都有应用,此篇将聚焦分享朝夕光年在自动化能力分解、自动化能力评估、自动化的成熟度、自动化测试全景等四个方面的实践,期望能为行业内开展自动化工作提供思路以及给到对游戏行业/游戏自动化测试方向感兴趣的同学们一些启发。

内容纲要:

  • 自动化能力分解

  • 自动化能力评估

  • 自动化的成熟度

  • 自动化测试全景

自动化能力分解

自动化能力可以分解为驱动和检测两部分,每一部分可以对应多项子能力,把驱动和检测中各项子能力组合便形成自动化应用场景。这种思路化整为零有利于自动化工作的快速落地。

图片

图片

自动化能力评估

图片

召回率又称查全率,精确率又称查准率。一般来说,召回率和精确率二者不可兼得,导致在不同场景下注重指标不同。

自动化的成熟度

按照 Elfriede Dustin 等的“Automated Software Testing”,游戏自动化测试成熟度一般处于 L2。

L2:Incidental Automation

非主要的、附带的
 

回归遗漏明显降低,用例维护成本很高

- 自动化用例主要用作回归兜底,回归遗漏明显降低。

- 自动化用例模块化程度较低,复用性和维护成本很高。


存量分层覆盖,关注准出标准中的核心回归集

- 自动化用例的编写主要聚焦在存量分层覆盖,关注准出标准中的核心回归集。

- 场景级接口自动化全覆盖,其中较稳定场景也实现UI自动化覆盖。

- 用例的维护主要靠人工补充,需投入专项的人力编码回归自动化用例集。

实行双运行机制、面向回归兜底

- 自动化实行双运行机制:流水线触发、离线定时触发维护。

- 自动化主要面向回归兜底卡点,运行时长较短。回归卡点有初步效果,回归遗漏明显降低。


自动化和人工测试环境共用

- 有测试环境,自动化用例和人工测试共用,存在数据干扰,环境较不稳定。自动化用例失败有 50% 以上由环境原因导致。

- 测试环境的部署和更新大多是人工进行的。

测试数据和代码紧耦合

不具备自动化代码和测试数据分离的能力。验证逻辑和测试数据耦合在一起。验证逻辑相同,测试数据不同的情况下,依然需要编码大量的冗余用例。

有度量,不全面;无数据分析

- 建立了部分自动化度量指标,但不全面,且无法做横向对比。

- 会记录自动化发现的问题,但对自动化的过程和结果数据没有收集和分析。

用例版本化管理、有编码工具支持

- 有支持自动化用例编码的工具平台。

- 用例可以版本化管理。

- 缺乏完善的测试框架支持,用例编码成本较高,学习曲线陡峭。

具体来说,主要用在以下两个场景:

  1. 就算人工测试也很难覆盖的场景,这时更看重有效问题指标,有漏报也可接受。

  2. 可替代人工测试的场景,但是能保证召回率 100%,允许有误报,整体成本能比人工低。

自动化测试全景

图片

游戏自动化测试研究成果出来后,在通用驱动能力、通用检测能力、测试效率提升等三方面都带来不错的效果。

     通用驱动能力

通用驱动能力方面比较出圈的进展就是静态 UI 匹配、动态 UI 匹配、自动化兼容性等。静态 UI 匹配经常会遇到一套素材无法很好的在不同分辨率设备上匹配 UI,resize 次数太多,导致经常出现匹配不到或匹配错误的情况。

比如找到“同意”的 UI,第一张图为目标 UI 截图(分辨率为 2400*1080),第二张图为游戏截图(分辨率为 960*540)。

图片

那自动化测试就能实现使用最高分辨率手机对目标 UI 进行截图,优先使用特征点匹配,提高匹配相似度。改进方案后对比的图片相似度达到 0.928。

图片

图片

图片

传统图像识别流程:  

图片

图片

    使用游戏自动化测试模型使用流程:

图片

     通用检测能力

主要涉及深度学习图像测试和聚类筛选图像检测这两个方面。

深度学习图像测试:

利用深度学习训练的控件识别或者问题检测能力虽然不能完全替代人工,但是在过程要求不会太精确的测试场景能取得不错的效果,比如稳定性测试(智能 Monkey)、稳定运营的长尾项目测试等。

图片

能力 1:异形屏异常检测(控件识别)

图片

能力 2:色块检测

图片

能力 3:花屏检测

图片

能力 4:文字超框

图片

能力 5:文字重叠

图片

能力 6:翻译语种错误

聚类筛选图像检测:

发现美术资源效果在不同机型中表现不相同,若每个机型都要测试无疑工作量非常巨大,不适合在人工兼容性测试用例里覆盖,因此需要设计一套自动化资源测试方案来测试不同机型上游戏场景的美术资源,拦截表现不正确的机型 + 场景组合。

图片

基于游戏接口驱动游戏截图保存。将相同档次相近分辨率的设备进行分组,同一小组内相同场景序号的截图两两对比,基于“兼容性问题一般出现在非多数机型”认知下进行全自动聚类分析,从而拦截问题截图。

图片

     测试效率提升

主要是针对深度学习标注和测试素材录制这两方面。

深度学习标注:通过工具提供可视化的图片标注能力,为基于图像自动化能力提供统一的输入、标注、输出方式,提高人效与降低错误率。

测试素材录制:通过素材录制工具快速对游戏界面截图,并确定 UI 匹配区域、ROI 以及操作方法,让业务测试同学不用了解自动化框架也能够执行自动化跑测。

本期技术分享就到这里,欢迎更多热爱游戏与技术的同学们一起加入致力于帮助玩家在令人惊叹的虚拟世界中一起玩耍与创造的朝夕光年,一起通过朝夕努力,创造游戏光年!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/89792.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Vue前后端分离教师工作量管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

.NET Core 实现日志打印输出在控制台应用程序中

在本文中,我们将探讨如何在 .NET Core 应用程序中将日志消息输出到控制台,从而更好地了解应用程序的运行状况。 .NET Core 实现日志打印输出在控制台应用程序中 在 .NET Core 中,日志输出打印是使用 Microsoft.Extensions.Logging 命名空间…

嬴图Ultipa | 一文了解关于图数据库的一点儿干货

本篇包括以下内容点: 数据库主要技术分类 图是什么? 图的模式 图数据库 VS.关系型数据库 图数据库VS.其他NOSQL的对比 并非所有的图数据库都一样! 根据Gartner预测,“到2025年,使用图技术进行数据和分析创新…

利用敏捷开发工具实现敏捷项目管理的实践经验分享

Scrum中非常强调公开、透明、直接有效的沟通,这也是“可视化的管理工具”在敏捷开发中如此重要的原因之一。通过“可视化的管理工具”让所有人直观的看到需求,故事,任务之间的流转状态,可以使团队成员更加快速适应敏捷开发流程。 …

客服系统哪个好用?

在当今竞争激烈的商业环境中,良好的客户服务是企业成功的关键因素之一。通过提供优质的客户服务,企业可以吸引、留住、回馈顾客,增加口碑宣传,提高产品或服务质量,同时还可以减少客户投诉率,从而为企业带来…

FFmpeg4.3.1+h264在windows下编译与VS2017项目集成

前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》,结合我自己的工作学习经历,我准备写一个音视频系列blog。本文是音视频系…

golang-bufio 缓冲读

缓冲 IO 计算机中我们常听到这样的两种程序优化方式: 以时间换空间以空间换时间 今天要来看的缓冲IO就是典型的以空间换时间,它的基本原理见上图。简单的解释就是:程序不再直接去读取底层的数据源,而是通过一个缓冲区来进行读取…

链表(详解)

一、链表 1.1、什么是链表 1、链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,有一系列结点(地址)组成,结点可动态的生成。 2、结点包括两个部分:&#x…

[JavaWeb]【十三】web后端开发-原理篇

目录 一、SpringBoot配置优先级 1.1 配置优先级比较 1.2 java系统属性和命令行参数 1.3 打包运行jar 1.4 综合优先级​编辑 二、Bean管理 2.1 获取bean 2.2 bean作用域 2.2.1 五种作用域 2.2.2 配置作用域 2.3 第三方bean 2.3.1 编写公共配置类 三、SpringBoot原理 …

【mq】如何保证消息可靠性

文章目录 mq由哪几部分组成rocketmqkafka 为什么需要这几部分nameserver/zookeeper可靠性 broker可靠性 生产者消费者 mq由哪几部分组成 rocketmq kafka 这里先不讨论Kafka Raft模式 比较一下,kafka的结构和rocketmq的机构基本上一样,都需要一个注册…

Autoware.universe部署05:实车调试

文章目录 一、建图1.1 点云地图1.2 高精地图 二、参数配置三、传感器数据通信接口3.1 雷达点云3.2 图像3.3 IMU3.4 GNSS RTK 四、实车调试4.1 编写启动4.2 修改传感器外参4.3 修改车身参数4.4 实车调试 本文介绍了 Autoware.universe 在实车上的部署,本系列其他文章…

fatal: ServicePointManager 不支持具有 socks5 方案的代理。

报错 解决前 git config --global --list 查看git的设置 解决后 // 代理更改为http (7890是我的代理软件clash的port默认的,有些博客使用的是1080,依个人情况而定) git config --global http.proxy http://127.0.0.1:7890 git config --global https…