Sonic开源云真机测试平台

Apache 2.0
java,js
ALL
Eason · 2021年10月19日 · 24173 次阅读 · 19 条评论

前言

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

评论列表
彼岸 发表于 2024年02月23日

为什么获取元素控件转了 1 分钟后报 “获取元素控件失败,请重新获取啊?日志里的是请求超时” cn.hutool.http.HttpException: Read timed out

TD 发表于 2024年01月02日

sonic 社区都进不去了?想问下这个怎么部署到 k8s 里面吗?

wendylai6 发表于 2023年05月10日

如果能集成 api、Web 测试就完美了。

大浪 发表于 2022年11月10日

我只能说,牛逼

zengli 发表于 2022年09月09日

公司没有真机,可以连接什么上海。。。机房吗?

zengli 发表于 2022年09月09日

123

wsh6677866 发表于 2022年04月28日

非常好用 更新速度也挺快

手摇呼啦圈 发表于 2022年04月28日

徐子宇 发表于 2022年04月08日

已经开始在公司进行环境搭建,准备自己摸索一下。感谢开源!

HelloLoneWolf 发表于 2022年03月25日

亲身体验 效果不错.

Eason 发表于 2021年12月01日

这里回不了帖

虫师 发表于 2021年11月30日

请教楼主,是否支持 flutter App?

夏某某 发表于 2021年11月17日

看了一下单机版的代码,不太理解 DAO 层是如何操作数据库的,有没有大佬帮忙解释一下

Lyzin 发表于 2021年11月12日

收藏,学习,想落地

Eason 发表于 2021年10月29日

就是连本地的

孙志强 发表于 2021年10月28日

这个 UI 自动化可以连接本地的手机吗?对本地手机做远程管理吗?

剪烛 发表于 2021年10月20日

学习一下

剪烛 发表于 2021年10月20日

佩服楼主倾注的热情

xuhua 发表于 2021年10月19日

先收藏在学习