基于图像识别的启发式UI自动化测试介绍

本文涉及的产品
视觉智能开放平台,图像通用资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频通用资源包5000点
简介: 使用图像识别技术进行客户端游戏自动化是一种比较通用快捷的做法,是一种不依赖游戏客户端的外部自动化操作。在结合方便的脚本编辑工具后,使得这种自动化测试方式和按键精灵一样门槛极低。 将游戏客户端屏幕内容进行截图。在windows平台需要调用系统获取屏幕内容API进行屏幕画面保存。在Android平台可以调用adb命名进行截图保存。

基于图像识别的启发式UI自动化测试介绍


一、前言


   使用图像识别技术进行客户端游戏自动化是一种比较通用快捷的做法,是一种不依赖游戏客户端的外部自动化操作。在结合方便的脚本编辑工具后,使得这种自动化测试方式和按键精灵一样门槛极低。


二、主要实现方式


微信图片_20220424103135.png


   1. 屏幕截图


       将游戏客户端屏幕内容进行截图。在windows平台需要调用系统获取屏幕内容API进行屏幕画面保存。在Android平台可以调用adb命名进行截图保存。


   2. 图像识别


       通过已有的关键内容图与截取屏幕图片进行内容识别,如果匹配成功则可计算出位置等信息。可以使用opencv库完成图像匹配识别的操作,网上可以找到很多相关的学习资料。


   3. 输入操作


       当匹配成功获取到关键图在屏幕中的坐标信息后,可以调用系统点击、滑动等API完成相应的操作。执行操作后需要对执行的结果进行检查,例如打开特定界面的关键图识别检查,或通过捕获客户端输出日志进行检查。


   4. 移动平台额外支持


       手机平台需要额外进行APP包安装拉起操作,可以针对移动平台增加额外的执行操作步骤,从而做到无人值守下的自动化测试,即:自动出包,自动安装,自动启动,自动运行测试脚本。


       同时我们在做手机游戏或APP测试时,还需要关注其性能表现,通过与性能采集工具联动,可以实现自动化性能数据收集,建立应用的版本迭代性能表现库,方便快速定位问题。


   5. 适用范围


       虽然UI自动化测试看上去前景无限,但仍还有诸多的问题待解决,目前在大部分的游戏公司中还没有广泛应用,我个人觉得主要是以下原由造成的:


       1. 图像识别的准确度问题,在不同的手机上的表现效果不理想。可以通过只在特定手机上进行自动化测试来规避。


       2. 仅支持UI相关的简单操作(例如点击、滑动、缩放、文本输入),无法用于更复杂的场景。例如使用一个礼包获得100货币,如果需要准确知道使用的结果,就比较难了,然而还有很多更复杂的场景测试需求无法满足。


       3. 随着游戏UI的迭代,自动化脚本必须随之进行更新,产生大量的自动化脚本维护成本。这也是造成UI自动化无法广泛应用的主要原因。


三、“启发式”自动化


  如何将自动化测试更加完善的应用于游戏项目,我相信已有很多人在这条路上持续探索了。“启发式”自动化目前的目的仅基于解决UI迭代造成的维护成本问题,“启发式”这个名字是我自己随便想的,以下是简单的介绍。


微信图片_20220424103142.png

图片源自网络


   1. 仅提供整个游戏UI可操作(点击)的图集,然后运行启发式自动化工具,由工具自行按照当前游戏内容和图例匹配,然后进行自由点击并形成操作步骤顺序树。


   2. 在穷举模式下几乎可以将游戏的全部可点击UI都完成操作,这样就可以生成一份完整的UI操作逻辑顺序树,在第二次启动时就可以直接用之前生成的逻辑树进行自动化测试,并获得无法完成的测试步骤。同样可以通过监控日志错误和错误提示来判断UI操作逻辑是否产生异常。


   3. 在完成一次穷举模式后生成完整的测试步骤用例,在后续的运行中就可以参考已有用例步骤进行内容对比,确认是否执行正常。另外可以自动更新变更的用例步骤,从而减少人工维护的成本。


   4. 即使UI完全被更换后,也仅需要更新可操作图集,其实这里可以将可操作图集与UI人员输出的UI切图关联,这样UI迭代的时候我们的图集也就自动更新了。



四、总结


   UI自动化测试还有其他的解决方案,我也会慢慢进行更新。上面介绍的“启发式”自动化仍有一些问题需要解决,但通过图集生成测试用例,然后跑自动化确实简单快捷了很多。如果大家有兴趣可以在工作中试一试,欢迎大家关注一起交流哦。


欢迎微信搜索"游戏测试开发"关注一起沟通交流。




相关文章
|
19天前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
12天前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
138 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
3月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
471 0
|
3月前
|
人工智能 前端开发 测试技术
如何让AI帮你做前端自动化测试?我们这样落地了
本文介绍了一个基于AI的UI自动化测试框架在专有云质量保障中的工程化实践。
1398 21
如何让AI帮你做前端自动化测试?我们这样落地了
|
3月前
|
Web App开发 开发框架 .NET
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行
Pytest 与 Playwright 集成可提升自动化测试效率,支持参数化测试、多浏览器并行执行及统一报告生成。通过数据驱动、Fixture 管理和并行优化,显著增强测试覆盖率与执行速度,适用于复杂 Web 应用测试场景。
|
2月前
|
人工智能 IDE 测试技术
Browser-Use在UI自动化测试中的应用
Browser-Use是一款浏览器自动化工具,具备视觉与HTML解析、多标签管理、操作记录与复现、自定义操作、自我纠正及并行执行等功能,助力AI智能体高效完成网页任务。
200 0
|
3月前
|
测试技术 API C++
Playwright 自动化测试系列(7)| 第三阶段:测试框架集成​​Page Object 模式
本课程详解Playwright测试框架中的Page Object模式,通过电商登录-下单实战演示PO架构设计与高级技巧,结合Pytest实现多用户测试。重点解析PO模式提升代码复用性、降低维护成本的核心价值,并提供常见问题解决方案,助力构建高可维护性的自动化测试体系。
|
4月前
|
JavaScript 测试技术 Python
UI自动化测试中的元素等待机制解析
在UI自动化测试中,元素定位失败常因页面存在iframe或缺乏合理等待机制。本文解析三种等待策略及其应用场景:显式等待可精确控制单个元素等待条件,支持自定义轮询;隐式等待全局生效,适合简单页面加载;强制等待仅用于临时调试,正式脚本慎用。通过对比三者执行精度、资源消耗及适用场景,帮助选择最优策略,提升测试效率与稳定性。
|
4月前
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
189 0
|
9月前
|
人工智能 自然语言处理 API
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
UI-TARS 是字节跳动推出的新一代原生图形用户界面(GUI)代理模型,支持跨平台自动化交互,具备强大的感知、推理、行动和记忆能力,能够通过自然语言指令完成复杂任务。
2328 16
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型