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

Eason · 2021年10月19日 · 最后由 zhangpei 回复于 2021年11月24日 · 5610 次阅读
本帖已被设为精华帖!

前言

恭喜 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 开源云真机测试平台开源啦! - 功能介绍与演示(二)

欢迎大家进群讨论,但是记得小小支持,star 一下哦,这将是我前进的动力
群二维码

个人微信号

共收到 56 条回复 时间 点赞

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

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
回复

后面支持

respect~

会有一机多控的功能吗😀

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 远程真机的的代码吗~很好奇你们怎么完成这个功能的

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