0%

Sonic云真机测试平台使用指南

说明

本次主要记录win10_X64下搭建Sonic的使用步骤

软件安装

docker

  • 安装过程中出现很多问题,因为我的系统为家庭版本,所以需要安装wsl2Ubuntu 18.04.5 LTS等,重装系统了为专业版本,直接就可以安装

image-20220823170502758

  • 打开官网下载并安装,重启电脑,进入到bios,打开虚拟化

  • 打开Docker Desktop,正常启动后,打开cmd,输入命令

    1
    2
    3
    4
    5
    6
    7
    C:\Users\Administrator>docker run -d -p 80:80 docker/getting-started
    Unable to find image 'docker/getting-started:latest' locally
    latest: Pulling from docker/getting-started
    ....
    dsha256:b558be874169471bd4e65bd6eac8c303b271a7ee8553ba47481b73b2bf597aae
    Status: Downloaded newer image for docker/getting-started:latest
    8df47bc4fdb1ec2ac47a70f609e8e73dc6afb62298c570b27b1ae9032fdd036d

    进入 docker 里可以看到测试运行的容器。

    image-20220823170833149

MySQL

打开官网,下载8.0的版本

image-20220823171802303

  • 设置环境变量:D:\app\mysql-8.0.13-winx64\bin

  • 在mysql的安装目录新建my.ini

1
2
3
4
5
6
7
8
9
10
11
12
[client]
port=3306
# 字符集设置
default-character-set=utf8

[mysqld]
port=3306
character_set_server=utf8
# 设置安装目录
basedir=D:\app\mysql-8.0.13-winx64
# 设置数据存放位置
datadir=D:\app\mysql-8.0.13-winx64\data
  • 通过 mysqld --initialize --console 命令来重置密码。
1
2
3
C:\Users\Administrator>mysqld --initialize --console
2022-08-23T09:26:32.002602Z 0 [System] [MY-013169] [Server] D:\app\mysql-8.0.13-generated for root@localhost: QCHDW*9OpYQX
2022-08-23T09:26:37.215593Z 0 [System] [MY-013170] [Server] D:\app\mysql-8.0.13-winx64\bin\mysqld.exe (mysqld 8.0.13) initializing of server has completed
  • 登录并修改root用户的密码
1
2
3
4
5
6
7
8
9
10
11
C:\Users\Administrator>mysqld -install
Service successfully installed.

C:\Users\Administrator>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

C:\Users\Administrator>mysql -u root -p

mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.05 sec)
  • 退出重新登陆验证
1
2
3
4
5
6
7
mysql> exit;
Bye

C:\Users\Administrator>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Type 'help;' or '\h' for help. Type '\c' to
  • 修改可以支持远程用IP访问
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use mysql;
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.01 sec)
# 查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问

mysql> update user set host='%' where user ='root';
# 说明: % 代表任意的客户端,可替换成具体IP地址。

Query OK, 1 row affected (0.08 sec)
Rows matched: 1 Changed: 1 Warnings: 0

image-20220823175019789

本地配置

  • d:\sonic 目录中下载官网的最新的部署包,我下载的为sonic-server-v1.5.0-beta,根据实际情况修改env的内容,主要是 ip,数据库的密码

  • 手动建立数据库:sonic

  • 执行docker-compose

1
2
3
4
5
6
D:\sonic\sonic-server-v1.5.0-beta>docker-compose up -d
sonic-server-v150-beta_sonic-server-eureka_1 is up-to-date
sonic-server-v150-beta_sonic-server-controller_1 is up-to-date
sonic-server-v150-beta_sonic-server-gateway_1 is up-to-date
sonic-server-v150-beta_sonic-client-web_1 is up-to-date
Creating sonic-server-v150-beta_sonic-server-folder_1 ... done
  • 打开http://localhost:3000/,注册后,自动登录

image-20220824095329636

Sonic配置

本机环境-java

  • 下载并配置Java,我的版本为
1
2
3
4
C:\Users\Administrator>java -version
java version "17.0.2" 2022-01-18 LTS
Java(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.2+8-LTS-86, mixed mode, sharing)

appium安装

下载android sdk tools,选择exe文件安装后,并打开

image-20220824103828375

  • 因为用于 Appium 自动化,只需要勾选下面的 4 个包就行了,需要挂梯子

image-20220824104049673

image-20220824104117977

  • 创建ANDROID_HOME的环境变量:D:\app\android-sdk
  • SDK的platform-tools和tool的路径添加到Path 变量内 %ANDROID_HOME%\platform-tools%ANDROID_HOME%\tools%ANDROID_HOME%\build-tools\29.0.2
1
2
3
4
C:\Users\Administrator>adb version
Android Debug Bridge version 1.0.41
Version 29.0.6-6198805
Installed as D:\app\android-sdk\platform-tools\adb.exe
  • 下载并安装node.js
1
2
3
4
5
6
7
8
Administrator@WIN-5TF67LA12I4 MINGW64 /d/app/node-v14.20.0-win-x64
$ npm -v
6.14.17

Administrator@WIN-5TF67LA12I4 MINGW64 /d/app/node-v14.20.0-win-x64
$ node -v
v14.20.0

  • 安装appium,采用npm,尝试过了用cnpm经常报错,使用git的命令窗口
1
2
3
4
5
npm cache clear --force # 清空缓存,如果报错的话,可以
# 挂了代理,在git窗口中设置了代理
export https_proxy=http://127.0.0.1:33210 http_proxy=http://127.0.0.1:33210 all_proxy=socks5://127.0.0.1:33211

npm i -g appium
  • 装doctor,用来检查appium是否正常
1
2
3
4
5
6
7
$ npm install appium-doctor -g
npm WARN deprecated authorize-ios@1.2.1: Moved into appium
npm WARN deprecated debug@4.1.1: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
D:\app\node-v14.20.0-win-x64\appium-doctor -> D:\app\node-v14.20.0-win-x64\node_modules\appium-doctor\appium-doctor.js
+ appium-doctor@1.16.0
added 240 packages from 297 contributors in 74.211s

  • 检查appium,执行./appium-doctor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Administrator@WIN-5TF67LA12I4 MINGW64 /d/app/node-v14.20.0-win-x64
$ ./appium-doctor
info AppiumDoctor Appium Doctor v.1.16.0
info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
info AppiumDoctor ✔ The Node.js binary was found at: D:\app\node-v14.20.0-win-x64\node.EXE
info AppiumDoctor ✔ Node version is 14.20.0
info AppiumDoctor ✔ ANDROID_HOME is set to: D:\app\android-sdk
info AppiumDoctor ✔ JAVA_HOME is set to: D:\app\Java\jdk-17.0.2
info AppiumDoctor Checking adb, android, emulator
info AppiumDoctor 'adb' is in D:\app\android-sdk\platform-tools\adb.exe
info AppiumDoctor 'android' is in D:\app\android-sdk\tools\android.bat
info AppiumDoctor 'emulator' is in D:\app\android-sdk\tools\emulator.exe
info AppiumDoctor ✔ adb, android, emulator exist: D:\app\android-sdk
info AppiumDoctor ✔ 'bin' subfolder exists under 'D:\app\Java\jdk-17.0.2'
info AppiumDoctor ### Diagnostic for necessary dependencies completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor ### Diagnostic for optional dependencies starting ###
WARN AppiumDoctor ✖ opencv4nodejs cannot be found.
WARN AppiumDoctor ✖ ffmpeg cannot be found
WARN AppiumDoctor ✖ mjpeg-consumer cannot be found.
WARN AppiumDoctor ✖ bundletool.jar cannot be found
WARN AppiumDoctor ✖ gst-launch-1.0.exe and/or gst-inspect-1.0.exe cannot be found
info AppiumDoctor ### Diagnostic for optional dependencies completed, 5 fixes possible. ...

info AppiumDoctor Bye!

  • 直接输入appium 启动,没问题后就可以关闭了,不要手动去启动appium
1
2
3
4
5
Administrator@WIN-5TF67LA12I4 MINGW64 /d/app/node-v14.20.0-win-x64
$ appium
[Appium] Welcome to Appium v1.22.3
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

  • 安装adbkit,用adb进行调试
1
npm i -g adbkit

sonic文件配置

  • 新增angent

image-20220824174006767

  • 打开官网下载sonic-agent-v1.5.0-beta-windows_x86_64解压

  • 打开配置文件,我的路径为:D:\sonic\sonic-agent-v1.5.0-beta-windows_x86_64\config\application-sonic-agent.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
sonic:
agent:
# 替换为部署Agent机器的ipv4
host: 172.31.104.166
# 替换为Agent服务的端口,可以自行更改
port: 7777
# 替换为前端新增Agent生成的key
key: XXXXXX
server:
# 改成server的SONIC_SERVER_HOST
host: 172.31.104.166
# 改成server的SONIC_SERVER_PORT
port: 3000

modules:
android:
# 是否开启安卓模块
enable: true
# 是否开启远程adb调试功能
use-adbkit: true
ios:
# 如果不需要连接iOS设备,请将true改为false。开启的windows用户请确保本机已安装iTunes
enable: false
# 替换为你自己使用的wda的bundleId,如果没有.xctrunner后缀会自动补全,建议使用公司的开发者证书
wda-bundle-id: com.sonic.WebDriverAgentRunner
appium:
# 是否开启Appium功能
enable: true
webview:
# 是否开启在线webView调试功能
enable: false
# 谷歌调试端口,一般不需要修改(默认0使用随机端口,如果需要开启防火墙给外部使用,请设置固定端口如7778)
chrome-driver-debug-port: 0
# 替换为Agent机器上的chrome浏览器的driver路径,可以去http://npm.taobao.org/mirrors/chromedriver/下载
chrome-driver-path: "/Applications/Google Chrome.app/Contents/MacOS/chromedriver"
sgm:
enable: true
  • 启动agent
1
D:\sonic\sonic-agent-v1.5.0-beta-windows_x86_64>java -jar sonic-agent-windows-x86_64.jar

image-20220824174158573

  • 手机打开开发者模式后,连接电脑(agent)后,打开web页面的设备

image-20220824175641741

开始使用

sonic的配置

  • 新建项目,点击项目

image-20220824175944576

  • 打开设备中心,选择空闲设备,选择使用

image-20220824180220297

image-20220824180249666

  • 点击控件元素,获取到元素后,直接添加控件

image-20220826085653821

image-20220826085812310

  • 用例的步骤关联-上面的控件元素

  • 套件关联多个用例

  • 查看测试报告

image-20220826094320795

  • 支持多个设备同时运行所有用例

总结

  • 优点:远程的手机管理,统一的用例维护,多机运行用例。

  • 不足

    • 不支持分布式用例
    • 用例查找不支持显示等待,这个问题需要等后续的版本脱离appium后,可以处理
  • 已经支持使用poco的控件的获取,这对游戏应用来说,是个很好的消息。