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

。
订阅者
258
文章
0
粉丝
测试交流评论354字数 1342阅读4分28秒阅读模式

前言

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

Sonic 开源云真机测试平台开源啦! – 设计思路与背景(一)-图片1

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

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

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

部分截图

Sonic 开源云真机测试平台开源啦! – 设计思路与背景(一)-图片2

Sonic 开源云真机测试平台开源啦! – 设计思路与背景(一)-图片2

背景

什么是 Sonic?

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

愿景

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

技术选型

基础通信架构

Sonic 开源云真机测试平台开源啦! – 设计思路与背景(一)-图片3

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

后端

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

架构图

Sonic 开源云真机测试平台开源啦! – 设计思路与背景(一)-图片4

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

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 端可以说是执行机。

架构图

Sonic 开源云真机测试平台开源啦! – 设计思路与背景(一)-图片5

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

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

部署

直接点击这里

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

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

软件功能测试点

 
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证