Sonic云真机测试平台与app自动化测试

一、Sonic核心功能详解

在移动互联网时代,客户端应用的兼容性测试和远程调试需求日益增长。传统的物理设备管理方式存在成本高、效率低、跨平台协作困难等问题。Sonic 作为一款开源的云真机测试平台,能够解决以下问题:

  • 兼容性测试:需要接入一定数量、具有代表性的测试机资源;

  • 自动化测试:

    • 零编码UI自动化:通过积木式操作界面,快速构建测试流程,一键分发多设备任务;

    • 支持多平台:覆盖覆盖 Android、iOS 和 鸿蒙系统等应用;

    • 可视化报告:自动生成包含截图、日志等信息的详细测试报告,快速定位问题;

    • 自定义脚本:可以自己写脚本代码,连接云真机运行测试,代码语言支持Groovy(Java)和Python。

  • 测试机资源紧张:云真机平台秉承着用完即走的设计理念,因此使用完退出后,下一个登录用户可以接着使用,一定程度上可以解决研发团队测试机资源紧张的问题;

  • 远程演示:如验收测试或是在客户演示过程中,只需要在已投屏的电脑上登录远程云真机的地址,即可实时访问并操作真机,方便同步观看;

  • 测试数据共享不便问题:测试过程中,有时需要在一个历史版本上验证回溯问题,云真机可以安装历史版本的app,并提前预置好测试数据,以便共享使用;

  • 远程控制与调试:

    • 跨网段设备访问:通过 Agent 端实现跨网络、跨地域的设备远程控制;

    • 实时WebView调试:集成 Chrome DevTools,支持在线调试 H5 页面;

    • 代理抓包:一键开启抓包功能,分析网络请求与性能瓶颈;

    • 日志查看:可以实时查看和筛选Logcat日志,支持输入Shell命令操作系统后台。

  • CI/CD 集成:

    • Jenkins 插件支持:通过在Jenkins中安装 sonic-ci-helper.hpi 插件,可以无缝对接持续集成流水线,实现触发 Sonic 自动化测试流程,生成报告并通过飞书、钉钉、微信等机器人通知团队;

    • 定时任务:通过 Quartz 分布式任务框架,设置Cron表达式,定期清理数据并发送测试日报/周报。

二、Sonic架构

  • 基础通信架构

图片1

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

  • Agent 端

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

    架构图

图片2

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

三、Agent端部署与设备接入

1、Agent端部署

- jar 方式部署

该方式将以本地 jar 包部署 Agent 端、Appium 等等环境。

- 最低启动要求为JDK17或者以上版本

- 从部署好的前端界面【设备中心】的【Agent 中心】新增 Agent,记录 Agent 的 Key

ScreenShot_2026-06-13_175231_414

- 选择 PC 对应的平台 zip 包下载并解压到任意目录,这里标记为 工作目录(下载链接为Releases · SonicCloudOrg/sonic-agent

图片4

这里以windows平台为例,其它平台的部署方式可参照链接:Agent 端部署 | Sonic - 开源云真机平台

- 修改 config 文件夹中 application-sonic-agent.yml 的配置信息,保存。

ScreenShot_2026-06-13_175524_904

- 在 工作目录 路径下执行以下指令

- 先在终端控制台输入 chcp 65001 并回车,再输入以下命令

java -Dfile.encoding=utf-8 -jar sonic-agent-windows-x86_64.jar

- 至此,Agent端即部署完毕,成功启动后界面如下

ScreenShot_2026-06-13_175859_180

2、设备接入

1. 安卓设备接入

1. 通用接入步骤(所有设备都需要按照这个步骤接入)

1. 将 usb 线一端插入 Agent,另一端插入手机

2. 进入手机【设置】页面

3. 进入【关于手机】页面

4. 点击多次【版本号】,直到开启开发者选项

5. 进入开发者选项

6. 打开 usb 调试

7. 保持设备竖放或平放

2. 各手机品牌接入时的设置,会有细微差异,这里以 小米14Pro 为例,其他品牌具体不同设置可参照:安卓设备接入 | Sonic - 开源云真机平台

1. 进入【设置】->【我的设备】->【全部参数】->【MIUI 版本】多次点击开启开发者选项

2. 【更多设置】中,打开开发者页面,【USB 安装】和【USB 调试(安全模式)】打开,【USB 调试(安全模式)】选项需要插入 SIM 卡才能开启,可以配置完成后拔出

3. 开发者最底下【启用系统优化】关闭

4. 【语言与输入法】关闭安全键盘

5. 【当前输入法】选择 Sonic Keyboard

6. 找到 sonic ,应用权限设置成 -> 【无限制】

2. iOS设备接入,可参照:iOS 设备接入 | Sonic - 开源云真机平台

3. 设备接入成功后,【设备中心】的状态如下,点击【马上使用】,可进入设备远程控制界面

ScreenShot_2026-06-13_180109_319

四、实际使用案例

1、远控(投屏+触控)

图片8

2、网络抓包

图片9

3、获取Logcat日志和查看系统文件

图片10

4、性能监控

图片11

5、获取控件元素

图片12

6、UI自动化

图片13

上图中,可关联已有的自动化测试用例,并执行自动化测试(这里是单用例执行,多用例执行可前往下面 项目的【测试套件】中运行)

- 这里也可以新增测试用例

ScreenShot_2026-06-13_181033_299

- 点击刚刚新增的用例,会自动关联该用例,并进入用例步骤界面,在此可添加该用例的执行步骤

图片15

五、app自动化测试用例的编写与执行

1、自动化测试用例的编写

1. 添加自动化用例

新增用例的入口有两个,一个是上面第6点【设备中心】的【UI自动化】中,选择关联项目后,会显示;另一个新增用例入口是下面的 项目中心 -> 【测试用例管理】 -> 【测试用例】中

图片16 (2)

用例命名规则为:模块_功能_用例名称;若是专属模块的用例,需要选择模块,便于后期按模块筛选用例

图片17

2. 进入设备中心,选择空闲设备,进入远程控制界面 -> 控件元素 中,获取当前用例所需要的定位元素

图片18

3. 若上面推荐的定位方法有合适的,则可以直接点击后面的手指,该定位方法和元素值即会自动填写到所弹出的控件元素信息框中,补充该元素的控件名称和所属模型(方便使用时查找)即可,点击测试,则会运行点击一下当前的控件元素

图片19

4. 上面点击保存,则该控件元素的定位信息会被保存到 项目中心 -> 测试数据管理 -> 控件元素 中

图片20

5. 点击前面新增用例的【步骤详情】

图片21 (2)

6. 在步骤详情界面,进行添加步骤操作

图片22

7. 选择该步骤要对控件元素所进行的操作

图片23

8. 选择要操作的控件元素

图片24

9. 选择该控件元素发生异常时,需要的处理操作

图片25

10. 此时用例步骤即可添加成功

图片26

2、用例断言

用例结果断言一般有文本断言、截图图像相似度匹配断言、控件元素断言、值比较断言、值包含断言等等

图片27

- 成功断言效果展示

- 控件元素文本断言成功

图片28

- 截图图像相似度匹配断言成功

图片29

- 失败断言效果展示

- 控件元素文本断言失败

图片30

- 截图图像相似度匹配断言失败

图片31

3、执行自动化测试

1. 运行单用例脚本(一般用于用例调试),在【设备中心】 -> 【UI自动化】中关联用例执行即可,运行结果只产生过程日志,不会生成测试报告。

图片32

2. 添加测试套件批量执行用例脚本(会生成相应的测试报告)

1. 添加测试套件,选择已有用例到当前测试套件中

图片33

2. 关联设备,选择当前测试套件的执行设备,可选择多台设备,当设备都是空闲状态时,会同时把当前测试套件分发到所选的多台设备中执行自动化测试

图片34

3. 新增的测试套件保存后,点击测试套件后面的运行按钮,即会执行当前的测试套件,自动化测试报告可在【测试结果分析】中查看

图片35

3. 设置定时任务执行用例脚本(会生成相应的测试报告),定时任务状态为启用时,会按照Cron表达式执行当前的测试套件,若点击立即运行,则会立即执行一次当前定时任务

图片36

六、查看测试报告

1、平台测试报告展示

- 点击查看报告,可查看前面已执行的自动化测试结果报告

图片37

- 报告详情展示如下

图片38

2、飞书机器人通知测试结果展示

图片39

七、技巧与进价

1、全局参数

测试用例中,需要共用到的数据,可以添加保存到全局参数中,后期通过{{参数名}}来引用

图片40

2、公共步骤

用例中需要经常执行的步骤,可以封装成公共步骤,后期可在用例中直接调用

图片41

3、自定义代码脚本

可以自定义代码脚本,然后将代码脚本插在用例的某个步骤中执行,也可在测试平台中单独执行

自定义脚本测试

4、图像相似度定位

可以将屏幕截图或按钮截图作为自动化测试时,控件元素的定位方式

图片43

posted @ 2026-06-13 18:47  军子~  阅读(2)  评论(0)    收藏  举报