开源测试工具 Sonic 开源云真机测试平台开源啦! - 设计思路与背景(一)

Eason for Sonic云真机系列 · 2021年10月19日 · 最后由 Eason 回复于 2024年08月29日 · 40109 次阅读
本帖已被设为精华帖!

前言

恭喜 Sonic 云真机测试平台在 2021-10-16 正式发布 v1.0.0-release 啦!

通过长时间的爆肝,Sonic 迎来了第一个版本!

官网地址
用户社区(提问和提需求)
github 链接

v1.0.0 功能列表
  • 支持安卓、iOS 设备(iOS 开发完成,正在测试中,下个版本正式发布)
  • 支持 Linux、Windows、Mac 部署(支持全 Docker 部署)
  • 0 编码执行 UI 自动化测试,解放双手,简单维护!
  • 友好的 UI 交互,一键远控
  • 一键任务下发,全球设备执行测试
  • 一键获取设备控件树,马上保存,马上使用
  • 维护简单便捷,随意拖拽
  • 保存公共步骤,自定义前后置操作
  • 多种图像识别技术保驾护航,为您解决 UI 自动化烦恼
  • 自研随机事件算法(类 monkey),UI 遍历算法(Doing) 更可控,更稳定
  • 测试结果友好展示,测试截图,日志,录像全方位展示
  • 对接钉钉、飞书、企业微信机器人,推进结果导向
  • 对接 CICD 流程,批量更新测试包
  • 周边生态逐渐建设,目前有安卓自动输密码插件服务

部分截图


背景

什么是 Sonic?

如今,自动化测试、远程控制等技术已经逐渐成熟。其中 Appium 在自动化领域可以说是领头者,STF 则是远程控制的始祖。很久前就开始有了一个想法,是否可以在一个平台上,提供解决所有客户端(Android、iOS、Windows、Mac、Web 应用)的测试方案,于是,Sonic 云真机测试平台由此诞生。

愿景

Sonic 当前的愿景是能帮助中小型企业解决在客户端自动化或远控方面缺少工具和测试手段的问题。
如果你想参与其中,欢迎加入!💪
如果你想支持,可以给我一个 star。⭐
如果你想使用 Sonic 平台,可以加群咨询相关内容

技术选型

基础通信架构


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

后端

为了应付中小企业有可能扩大使用的场景,后端选用了 Springcloud 作为分布式集群基础,使用了 redis、rabbitmq、mysql 作为中间件。

架构图


上图忽略了部分线,不然看起来太乱了。

Sonic 后端是怎么组成去中心化分布式集群的

所用框架比较多,不一一列举了。

  • sonic-server-eureka:集群的注册中心,用于服务发现与注册。分布式必备(如果公司已经有搭建了,可以 url 填写公司内部的,这样可以少起一个服务,少占用资源)
  • sonic-server-controller:sonic-server 主体,大部分 crud 操作都在这里。
  • sonic-server-bus:配置中心 + 消息巴士,可以理解为迷你版阿波罗配置中心,集群所有核心配置都在这里。可以用本地文件夹和 git 仓库的方式管理。
  • sonic-server-folder:文件存储服务,包含录像切片与合并(当然公司内部有文件存储服务,也可以不需要启动这个,但是其他 folder 的配置 url 记得更改哦)
  • sonic-server-gateway:微服务网关,负责反向代理与接口请求拦截,也聚合了微服务的接口文档。
  • sonic-server-transport:转运者,负责消费来自 rabbitMQ 的消息,处理 Agent 的所有消息,同时也负责发送设备测试任务等等。
  • sonic-server-task:定时任务中心,通过 Quartz 作为分布式定时任务基础,负责分发测试任务以及定期清理测试结果、测试文件、发送周报、日报等等。

前端

Vue 推出 3.0 版本啦!Element 也随之推出 Element-plus,我怎么能放过呢?马上使用起来!

  • Vue 3.2.14(前端基础框架)
  • element-plus 1.1.0-beta.20(UI 框架)
  • echarts 5.2.1(百度 echarts 图表)
  • vue-router 4.0.10(vue3 全家桶)
  • vuex 4.0.2(vue3 全家桶)
  • axios 0.21.4(接口请求 ajax 框架)
  • vue-clipboard3 1.0.1(复制粘贴组件)
  • vue-draggable-next 2.0.1(拖拽组件)

在我这边,用户的交互与体验大于一切,因此我会花比较多时间在前端的 UI 与交互的打磨,前端会持续更新以及听取大家的建议(当然功能也很重要,但是前端的功能与 Bug 会优先处理)

Agent 端

从基础通信架构图我们得知,所有 Agent 端都是需要跟 sonic-server 通信的,往下是跟连接的设备进行通信的。所以 Agent 端可以说是执行机。

架构图

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

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

部署

直接点击这里

下一篇,介绍主要功能与实现方案

Sonic 开源云真机测试平台开源啦! - 功能介绍与演示(二)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 70 条回复 时间 点赞

公司用起来了,真的很不错;👏

canfor 回复

😋 感谢你们公司的支持~

@ycwdaaaa 版主我想问下,怎么提交开源项目之后,我在列表找不到了,我需要修改一些内容

👍 赞!中小企业可部署用作稳定性测试,UI 自动化测试,期待更精彩的分享!

AnnWu 回复

😆 好的

Eason 回复

http://testerhome.com/opensource_projects/sonic
这个我这边收到的你提交项目的地址,你看下是否有权限可以改?

默认审核未通过前,是不会出现在列表中的。

陈恒捷 回复

看到了,我已经修改了

陈恒捷 回复

😆 大佬申请下加精

陈恒捷 将本帖设为了精华贴 10月19日 14:50

加精了,期望后面更详细的分享。

牛逼牛逼

Eason #12 · 2021年10月19日 Author
陈恒捷 回复

😆 谢谢

tesseract 是自己训练了吗

Eason #14 · 2021年10月19日 Author
咸鱼菜鸡 回复

训练是什么意思,目前只支持简体中文和英文,如果需要额外的语言包,自行添加到 language 文件夹里面就可以了

mark,这个周末拉到家里的电脑认真阅读一下源码~ 看看能不能给找几个 bug hhhhhhh

Eason #16 · 2021年10月19日 Author
王稀饭 回复

😆 好呀,有 bug 可以去 github 提 issue,我会第一时间处理

部署了还需要自己添加设备不?

Eason #18 · 2021年10月19日 Author
Guo Dalu 回复

需要呀,就是公司自己出设备,当然一开始建议先收集公司里面没什么人用的性能差点的手机试用一下,试用 ok 之后再试着投入

Eason 回复

好滴,懂了

android12 和 android11 支持吗?对于 stf 设备共享平台

Eason 回复

不训练的话 这个 ocr 貌似不是很准吧 尤其是一整张截图 你们进行了图片分割?

Eason #22 · 2021年10月19日 Author
chenyouan 回复

支持

Eason #23 · 2021年10月19日 Author
咸鱼菜鸡 回复

tesseract 我是只做了简单文字识别,主要用来做兼容性的,防止出现文字阻挡的情况。至于其他图片定位的,我试了下还是准的,特征匹配两种算法加模板匹配

Eason 回复

没有做 ocr 点击这种吗

Eason #25 · 2021年10月20日 Author
咸鱼菜鸡 回复

有呀,图片相似度,ocr 点击都有,第二篇我会放主要功能介绍的,感谢关注😆 😆

Eason 回复

ocr 点击用 tesseract 没训练过真的可以吗。。

Eason #27 · 2021年10月20日 Author
咸鱼菜鸡 回复

tesseract 我没有用作点击,只是用作兼容识别,点击用的特征匹配和模板匹配

Eason 回复

特征匹配和膜版匹配做 ocr 点击吗 这个有点意思

Eason #29 · 2021年10月20日 Author
咸鱼菜鸡 回复

我用特征匹配做 ocr,成功率还是可以的,当然字体不能很小很模糊

感谢开源分享,后面有机会尝试下。

mark 支持一下

Eason #32 · 2021年10月20日 Author
Joo 回复

感谢

Eason #33 · 2021年10月20日 Author

好的

OCR 可以试试 paddleOCR,我用的 python 版本识别速度和准确度都可以。而且 paddleOCR 有训练好的中英文模型

Eason #35 · 2021年10月21日 Author
chenDoInG 回复

好的,谢谢你的建议~

37楼 已删除

PC 上的 web UI 自动化测试支持吗,非移动端

Eason #40 · 2021年10月21日 Author
回复

后面支持

会有一机多控的功能吗😀

Eason #44 · 2021年10月21日 Author
Da 回复

可以加,提需求就行

可以详细说说夸网段是如何控制的嘛?比如 A 设备在 B 网段,C 用户是 D 网段,C 用户需要控制 A 设备。

Eason 回复

不支持把,看了源码里面的依赖。支持华为类型的 anroid11,小米,oppo,vivo,魅族不支持。

Eason #47 · 2021年10月23日 Author
chenyouan 回复

OPPO 安卓 11,华为等等高版本机型都支持,但是确实比较新的例如 MIUI11 是不支持的,这方面我在逐渐更换远控方案哦,感谢关注!

Eason #48 · 2021年10月23日 Author
重来看雨 回复

通过 mq 通信的,详细的可以加群学习哈

好东西啊,不过这个跟阿里云、腾讯的有什么优势呢?开源 + 永久免费吗?

Eason #50 · 2021年11月12日 Author
tangoliver 回复

是的

tangoliver 回复

一个要花钱呀,一个免费啊,还能二开定制。

Eason #52 · 2021年11月12日 Author
干饭狂人 回复

😂

群加不进去了😀

Eason #54 · 2021年11月15日 Author
wuming 回复

可以加我微信,我拉你入群

Mac M1 系统搭建环境失败,可以加群了解下吗

作者大大有群吗,二维码过期了

Eason #57 · 2021年11月19日 Author
gmx_fwz_a 回复

可以

Eason #58 · 2021年11月19日 Author
yang 回复

加我微信吧,我拉你进去

作者大大,可以提前分享下 iOS 远程真机的的代码吗~很好奇你们怎么完成这个功能的

平台可以使用手机的蓝牙功能吗?怎么实现远程真机的蓝牙功能呢

Eason #61 · 2022年01月05日 Author
AotingKey 回复

远程蓝牙现在没做,但是有远程 adb connect

😏 ATX 前来报到

😂 有点可惜如果早点出现就好了去年我这边就自己搞了一个~~不过也会多多关注,参看一下

如果早点刷到就好了,去年下半年开始在二次开发 stf 好久了,正在集成 appium😂😂😂😂😂😂


注册登录提示我系统出错了,我用的 docker 一键部署的

Eason #66 · 2022年03月02日 Author
浪浪i 回复

系统出错了一般 mysql 连接不上,官网文档有

点击输入框就容易卡住,输入框无法输入内容

最近为什么社区无法访问了

测试新人 「功能人的 2023」 中提及了此贴 12月22日 16:28
仅楼主可见
Eason #74 · 2024年08月29日 Author

官网可以看到有社区

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册