【实测】airtest进行移动端小游戏自动化测试的寻路问题

2717 篇文章 2 订阅
2554 篇文章 14 订阅

软件测试面试刷题,这个小程序(永久刷题),靠它可以快速找到工作!https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

该说不说,现在小游戏挺火的,尤其是微信小程序的小游戏内容上已经不比单独需要下载的app小游戏差多少了,流畅度也不算差了。

我【有个朋友】也玩了很多这种小游戏,每个阶段火的,他都玩了。而且他很喜欢用airtest做一些日常任务的脚本来进行【自动化测试】,帮助厂商找一些bug之类的。

久而久之,他对用图像识别的办法做小游戏的自动化非常有理解了,各种组件化,工程化,兼容性也都照顾的很好,但唯有一点一直让他很苦恼。就是游戏的自动寻路问题。

众所周知,这种手机上微信小游戏,几乎都没有PC端大型网游那种自动寻路功能,全靠用户硬划屏幕。问题就在这儿:

进入副本之前的一些按钮啊、数据啊什么的都很好操作或监控。等进入副本了,人物的攻击、技能、防御按钮也都很好识别和点击。但唯独人物前进的路线不好弄。也就是没法寻路。

无独有偶,前阵子很火的那个等了好几年的刷图手游上线后,我的部分学员中也有人做了自动刷图的脚本,他在寻路的方向上,就是一直按右键,让人物往右跑,右侧没有的时候,再往右下,然后右上,然后不行再往左边跑,再左上,再左下。虽然很麻烦,但总归能碰巧进入下一个怪物房间的大门。

看着比较尴尬,也跟智能没有啥关系。他说他其实考虑过,毕竟其实他可以写死一个副本的前进路线,然后不断的自动刷这一个图来升级,出去吃个午饭回来一看:疲劳刷完了,打开背包好家伙,全是捡的材料。又快又稳。

我就跟他说,你这样做,和工作室那些自动刷图脚本还有啥区别。他却回答我说:有区别啊,区别就是,工作室搬砖的确实可以这样反复刷一个副本地图来写死脚本。但我这是练号啊,每个副本最多也就刷那么一两次,根本不可能去写死一个路线,每个新地图都要写一个全新的脚本,有这功夫,手动都刷完几十遍了。

所以,他只能做了一个万能的路线,就是上面说的 →↗↘←↖↙,这个路线了。虽然慢,但是复用性高,每个地图都可以用。

我暗自点头,觉得他说的很有道理。但其实我们在日常工作测试中,如果负责的软件是小游戏,那么测试流程和目标地图在相当多次的复测里,就可以用写死路线的办法,毕竟复用次数足够高,写起来不吃亏。但在平时玩玩小游戏的情况下,每个地图就刷那么一两次,甚至还有随机地图游戏的存在,看来,有必要讨论出一些好用的办法了。

当然有些小伙伴会说,人家大型pc网游为什么都有自动寻路功能,人家怎么实现的呢?我只能说,人家是内部官方开发者,有自带的各目的地npc的具体坐标,并且有固定的一些主路,有大量内置的固定路线,没看那些玩家要去哪,走的路都在一条线上么?咱们普通用户玩家角度,哪有功夫做这个?不过也可以看做是一个启发。

图片

正文:

【方法一】针对固定副本或简单左右横向副本,可以直接采用写死前进方向的办法,此时如果用图像识别的方法,尽量调出方向键,然后点击→即可。

如果没有方向键,有移动摇杆,则要固定摇杆位置,然后点击摇杆右半部分图像来进行移动。

如果什么图像都没有,那建议使用拖拽的办法,屏幕长按移动的中间位置,点击鼠标后向右滑动且不松手。这个在airtest或appium中均有办法实现,实在不行,还可以用adb来实现。我会在今后的文章中尽量给大家封装好这种操作。

【方法二】针对随机地图或者不同地图的副本,可以使用特征方法来前进,注意,这个方法也没有任何AI参与,只是单纯的来反复执行类似→↗↘←↖↙的固定操作来凭运气前进,当然速度会非常慢,甚至极容易陷入死胡同。优化办法就是,对每一个方向的操作都甚至反馈,反馈的主要目的是搞清楚,执行了移动后,人物是否还停留在原地,也就是卡到这里了。还有就是通过反馈可以知道,人物是否在前进,亦或是走了回头路或者错路。

反馈的方案有杀怪的积分,积分增长,证明走到了新的区域。还有就是特征,在每一步方向移动操作之后,都记录下,目前人物的四周环境图片,还有小地图图片。在执行了下一步之后,就是通过这些来判断人物是否走进了死胡同卡住了。

当发生卡顿后,也要积极做出行动,也就是立即使用其他方向移动,如果执行后发现变化了,证明走了出去。此时要把刚刚相反方向的移动拉黑,避免再次回到死胡同里。

那问题又出现了,如果刚走出死胡同就走了回头路了呢?或者压根没进入死胡同,纯粹是瞎走的时候走进了回头路呢?要解决这个问题,就要考虑以下几点:

1. 全地图可以在卡死的死胡同一共有多少,每一个都进行特征记录。从而根据这些特征来判断自己是否走了回头路。

2. 全地图要设置一个主方向,比如横版类的,→是主方向,那么就尽量减少←的移动,除非是卡住的时候。

3. 借助小地图和小地图中自身的位置,来判断路线,这点其实并不太好判断。

当然,一切都要具体情况具体分析,不同的游戏有不同的解决办法,没有什么固定的万能方案,如果有,那就是你的随机应变。

【方法三】针对不可预测的地图或者全部情况,使用AI来计算出前进路线和操作。这个方案有弊有利。

好处是几乎是万能的,采用和人类似的分析判断,一旦训练成型后,几乎可以放心的交给AI寻路了。

坏处是训练成本过高,除了需要一定的代码基础和AI基础能力之外,还需要大量的数据喂养和人工校验,在你好不容易训练出个好歹的时候,别人已经刷到满级退游了。但是在公司里实际负责测试的小伙伴,我觉得倒是可以下点成本这么试试,毕竟古人云:磨刀不误砍柴工。不但看着高大上,你自己也练习了一定本领。

关于游戏方面的AI制定,有很多专业的文章,恐怕你们一时半会也看不下去。我就给你们把寻路的问题简单说说吧:

你得先确定好,输入是什么,输出又是什么。

先说输入:输入应该有俩个,就是你的小地图(为避免干扰尽量别用实际人物周围的大地图),还有就是你要执行的移动操作。

再说输出:输出就是反馈,AI它要知道反馈才知道自己刚刚的操作应不应该保留还是修改。那么寻路的反馈就分两种:

1. 实时反馈,也就是AI前进一段距离,就给它个反馈,比如碰到野怪打死后的分数,或者成功进入了下一个怪物房间。但实际上很多时候,我们要走很长一段路才能有这种反馈,而AI并不清楚这点,只会觉得自己刚刚走的方向不对,直接换路了,那就错过了正确的路线了。

2. 延时反馈,也就是用整个副本通关作为正反馈,用超时作为负反馈。虽然中间过程曲折且漫长,AI要走的路线和方向太多,导致要测试出来的次数很可能是个天文数字,就像抖音上总看到的那种用AI来训练赛跑游戏的视频一样,训练几十万次都未必能成功。当然一旦训练成功了,后面也省心了。只是小程序UI自动化执行一次都要很久很久,这个模型训练的反感显然不切实际。

那么如果使用目前的一些公共大模型,比如chatGPT和其衍生品、同类竞品呢?这个我也考虑过,但是考虑到价格和延迟问题,还是放弃吧。你也不想刷了一次副本花了好几块钱并且用了半个多小时吧?

【方法四】还是针对这种不可预测地图,还是使用AI。只是这次的输入和输出都进行了变化。

输入:小地图+前进方向和距离+前面一步的前进方向和距离。

输出:小地图和上一步小地图的相似度。

大家可以想象一下,AI往前走,不再是依据瞬时的环境了,而是依靠前面一次到现在的一段时间的环境。

就好像,之前AI只能通过上下左右来判断,而现在又增加了一个过去的时间轴。也就是提高了一个维度,这个新增维度可以让其避免走回头路,也可以更加准确的判断未来路线。

就好像假如给你突然扔到一个陌生的马路上,让你去某个目的地。你根本不知道应该往哪边走,但是此时你回忆起来刚刚自己试一路从东过来的,那么按照这个惯性你也知道要继续往西走。

这个方案的训练次数恐怕要比方法三小的多,并且不需要额外进行外链请求大模型,费时费钱。

本期到此结束,希望能给正在被此问题困扰的小伙伴一些启发,我也就是抛砖引玉,欢迎小伙伴进群瞎聊~

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值