如何用Sonic云真机打王者

本文介绍了Sonic云真机测试平台如何助力游戏公司进行高效测试,包括跨网段部署、定时任务、图像识别等功能,特别强调了在王者荣耀等游戏中的应用。此外,还探讨了如何解决安卓10以上版本的minitouch兼容性问题,并分享了iOS设备的触控优化和远程调试技巧。

先看 Wikipedia 上的解释:
xUnit 是一系列测试框架的统称,最开始来源于一个叫做 Smalltalk 的 SUnit 框架,现在各种面向对象的语言,如 Java、Python 的鼻祖就是 Smalltalk,后来这些语言都借助了 Sunit 框架的理念,有很多通用的规范和特征,也就统称为 xUnit。


使用Sonic进行跨网段部署,助力海外业务的公司进行专项检测。提供定时任务充分利用无人值守时间回归UI测试,省时省力。自研随机事件测试与UI遍历测试,支持打通Jenkins的DevOps流程,Sonic提供图像识别,后续还会添加poco控件,助力游戏公司测试效率。趣味交互让用户不再感到繁琐。丰富图表展示,用户实时洞察用例执行情况,把控产品质量。

感谢各大公司对Sonic的支持,感谢霍格沃兹的大力赞助~今后sonic必将继续努力!

通过架构图可以看到,用户可以通过 Sonic 平台,轻松访问跨网段的 Agent 下的设备,执行远控或测试,如果公司资金充足的情况下,全球分布多个机房是 ok 的,这样可以满足部分公司有海外业务测试的需求。

Agent 通过图中的方式与设备进行交互,同时自身加入了图像算法与 webSocket 服务。

  • springboot WebSocket(WebSocket 基础)
    • ddmlib(ADB 通信)
    • appium java client(Appium 交互)
    • thumbnailator(图片压缩)
    • testNG(测试框架与断言)
    • jsoup(解析 xml)
    • javacv(图像算法基础)
    • opencv(图像算法核心)
    • tesseract(图片文字识别)
    • leptonica(图像算法)
    • openblas(图像算法)

众所周知,minitouch 已经不兼容安卓 10 以上了,gif 图中那种流畅的触控交互是怎么实现的呢?在这里十分感谢 STF,给我提供了思路。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9e9LYLcR-1650787543035)(https://ceshiren.com/uploads/default/original/3X/a/b/ab46326cd9a9a9457b4f8c05fc754e9a6be0c3d1.gif)]

具体做法如下:
1、调用安卓内部的 android.hardware.input.InputManager
2、因为安卓 10 以上是 minitouch 被禁用了/dev/device/input 权限,思路就是把 minitouch 的调用方式,改造成用 apk 调用第一步的内部 api
3、在 apk 暴露 socket 服务,当然这里参考了 STF 的做法,但是去除了一些不必要的服务与二开优化。
4、剩下的兼容 minitouch 的数据格式即可,STF 在这里限定了多点触控只能两个点,其实可以根据自己的需求二开,增加更多

MotionEvent.PointerProperties pointerProps0 = new MotionEvent.PointerProperties();
pointerProps0.id = 0;
pointerProps0.toolType = MotionEvent.TOOL_TYPE_FINGER;
MotionEvent.PointerProperties pointerProps1 = new MotionEvent.PointerProperties();
pointerProps1.id = 1;
pointerProps1.toolType = MotionEvent.TOOL_TYPE_FINGER;
pointerProperties[0] = pointerProps0;
pointerProperties[1] = pointerProps1;

5、因为支持多点触控,前端将键盘 wasd 按键关联到摇杆坐标就可以了,当然是自定义区域与按键的多点触控指令

d 0 10 10 50
c


d 1 20 20 50
c


u 0
c


u 1
c

过去,我们调试设备 webview 确实麻烦,adb 连接手机后,需要在谷歌进入 chrome://inspect 页面,然后找到对应的 webview,点击【inspect】按钮即可进行调试。

1、远程的设备怎么办?并不能连接到我的 inspect 页面
2、webview

### Sonic云真机离线部署方法 对于Sonic云真机平台而言,在某些网络受限环境中可能无法直接通过互联网获取所需资源,因此支持离线环境下的部署成为必要。为了实现这一目标,通常需要预先下载好所有必需组件并将其传输到目标机器上。 #### 准备工作 确保拥有完整的软件包副本以及依赖项文件夹,这些可以从官方仓库中提前拉取下来保存至本地存储介质内[^1]。具体来说: - 下载`sonic-server`项目的源码压缩包。 - 获取运行该应用所需的第三方库及其版本信息。 - 如果涉及到数据库,则同样要准备好相应的初始化脚本与驱动程序。 #### 部署服务器端 将上述准备好的资料拷贝进入待安装系统的指定位置之后,按照常规流程执行构建命令来编译项目代码。由于处于断网状态,所以务必确认所有的外部链接都已经被替换成了相对路径指向本地存在的对应实体。完成后启动服务监听特定端口等待客户端连接请求到来验证是否成功开启Web界面[^2]。 ```bash # 解压已下载的sonic-server源码包 tar zxvf sonic-server.tar.gz # 移动到解压后的目录下 cd sonic-server/ # 安装依赖(假设已经配置好了私有镜像源) npm install --registry=https://your-private-npm-mirror.com/repository/npm-group/ ``` #### 设置代理节点 除了master部分之外,为了让真实物理设备可以接入进来参与测试活动还需单独设立若干agent实例负责采集数据上传给中心节点处理。考虑到安全性因素建议采用局域网内部通信方式减少暴露在外的风险隐患。 ```bash # 将sonic-agent相关二进制文件分发到各个子机上面去 scp -r /path/to/sonic-agent user@child-machine:/opt/ # 登录远端主机设置开机自启策略保持长期在线可用性 ssh user@child-machine "sudo systemctl enable sonicagent.service" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值