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


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




相关文章
|
4天前
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
44 15
|
13天前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
131 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
2月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
129 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
前端开发 JavaScript 测试技术
前端自动化测试
前端自动化测试是通过使用工具和脚本自动执行测试用例的过程,旨在提高测试效率、减少人为错误,并确保Web应用的功能在不同环境和设备上的一致性与稳定性。
|
1月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
2月前
|
机器学习/深度学习 SQL 安全
如何确保自动化安全测试的全面性和准确性
确保自动化安全测试的全面性和准确性,需集成多种工具(如SAST、DAST、IAST、SCA),编写自动化测试脚本,融入CI/CD流程,定期更新测试用例和工具,使用真实数据,持续维护代码,模拟攻击场景,运用机器学习,采用智能测试平台,并结合手动测试。这些策略有助于及时发现并修复安全问题,提升软件安全性。
|
2月前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
2月前
|
机器学习/深度学习 SQL 安全
如何确保自动化安全测试的全面性和准确性?
如何确保自动化安全测试的全面性和准确性?
|
3月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
340 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
3月前
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
74 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)

热门文章

最新文章