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

本文涉及的产品
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 使用图像识别技术进行客户端游戏自动化是一种比较通用快捷的做法,是一种不依赖游戏客户端的外部自动化操作。在结合方便的脚本编辑工具后,使得这种自动化测试方式和按键精灵一样门槛极低。 将游戏客户端屏幕内容进行截图。在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自动化测试还有其他的解决方案,我也会慢慢进行更新。上面介绍的“启发式”自动化仍有一些问题需要解决,但通过图集生成测试用例,然后跑自动化确实简单快捷了很多。如果大家有兴趣可以在工作中试一试,欢迎大家关注一起交流哦。


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




相关文章
|
10天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
46 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
Ubuntu API Python
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
65 1
|
6月前
|
机器学习/深度学习 敏捷开发 存储
深入理解自动化测试中的数据驱动策略深度学习在图像识别中的应用与挑战
【5月更文挑战第20天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快市场投放速度的关键因素。数据驱动测试(DDT)作为一种高效的自动化测试策略,它允许测试用例与测试数据分离,从而增强测试案例的可重用性并提高测试覆盖率。本文将探讨数据驱动策略的核心概念、实现方法以及在实际测试中的应用,旨在为软件测试工程师提供一种系统化和模块化的测试手段。 【5月更文挑战第20天】 随着人工智能技术的飞速发展,深度学习已经成为了图像识别领域的核心技术。本文将探讨深度学习在图像识别中的应用,以及在实际应用中所面临的挑战。我们将介绍卷积神经网络(CNN)的基本概念,以及如何利用深度学习进行图像分类、目
|
3月前
|
前端开发 测试技术 UED
【测试效率对比】深入分析:为何UI自动化测试的投资回报率通常低于接口自动化测试?
这篇文章深入分析了UI自动化测试与接口自动化测试的投资回报率(ROI)问题,指出UI自动化测试在某些情况下的ROI并不低,反驳了没有实施过UI自动化就轻易下结论的观点,并强调了实践的重要性和自动化测试在项目迭代中的作用。
81 1
|
3月前
|
测试技术 Swift iOS开发
探索iOS自动化测试:使用Swift编写UI测试
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是保证船只不偏离航线的灯塔。本文将带领读者启航,深入探索iOS应用的自动化UI测试。我们将通过Swift语言,点亮代码的灯塔,照亮测试的道路。文章不仅会展示如何搭建测试环境,还会提供实用的代码示例,让理论知识在实践中生根发芽。无论你是新手还是有经验的开发者,这篇文章都将是你技能提升之旅的宝贵指南。
|
6月前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习在图像识别中的应用及其挑战深入理解自动化测试中的数据驱动策略
【5月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已经成为了计算机视觉领域的核心驱动力。尤其是在图像识别任务中,深度神经网络通过多层次的特征提取和学习,显著提升了系统的准确率和泛化能力。然而,深度学习模型在实际应用中仍面临众多挑战,包括数据偏差、计算资源消耗、模型可解释性等问题。本文将探讨深度学习技术在图像识别领域的应用现状,分析其面临的主要挑战,并对未来发展趋势进行展望。
|
6月前
|
前端开发 测试技术 持续交付
【Flutter 前端技术开发专栏】Flutter 中的 UI 测试与自动化测试
【4月更文挑战第30天】本文探讨了 Flutter 应用中UI测试和自动化测试的重要性,包括保障质量、提高效率和增强开发信心。Flutter提供`flutter_test`库进行Widget测试,以及`flutter_driver`进行集成测试。UI测试涵盖界面布局、交互和状态变化的验证,最佳实践建议尽早引入测试、保持用例简洁,并结合手动测试。未来,随着Flutter技术发展,UI测试和自动化测试将更加完善,助力开发高质量应用。
210 0
【Flutter 前端技术开发专栏】Flutter 中的 UI 测试与自动化测试
|
6月前
|
机器学习/深度学习 运维 监控
构建高效自动化运维系统:策略与实践基于深度学习的图像识别在自动驾驶系统中的应用
【5月更文挑战第29天】 在当今的信息技术时代,企业的IT基础设施管理变得日益复杂。为了保持竞争力,组织必须确保其服务的稳定性和效率。本文将探讨如何通过实施自动化运维系统来优化IT管理流程,降低成本并提高服务质量。文中不仅介绍了自动化的核心原则和组件,还分享了实际案例研究和最佳实践,为读者提供了一套切实可行的自动化运维解决方案。
|
6月前
|
Web App开发 前端开发 Java
Selenium UI 自动化
Selenium UI 自动化
|
4天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。