AutoSense实时Socket.IO协议

AutoSense实时Socket.IO协议

规范

命名空间

客户端 命名空间
手机客户端程序 /agent
Web后台管理平台 /web
远程控制与Web脚本工具客户端 /remote
接口测试Debug客户端(Mock客户端) /mock
Web自动化插件程序 /webui
Web版脚本录制工具 /webse
应用性能测试客户端 /perf-agent
应用性能测试Web端 /perf-web
Android Provider端 /android-provider

客户端定义

客户端 缩写
手机客户端Agent A
网页客户端Web W
远程控制与Web脚本录制工具客户端Remote R
服务端Socket S
脚本录制工具ScriptEditor SE
Web脚本录制工具客户端LocalServer端 LS
接口测试的Debug客户端(Mock客户端) M
Web 自动化插件程序 WUI
Web版脚本录制工具 Web SE WSE
应用性能测试客户端 PA
应用性能测试Web端 PW
Android Provider端 AP

Socket.IO连接地址

生产环境:http://autosocket.uusense.com:9001/

测试环境:http://123.207.254.211:9004/

连接参数

参数名 描述
serial 设备的IMEI,保证与autosense注册接口字段DevId使用同一个

连接示例:{Socket.IO连接}{命令空间}?serial=xxxxxxx

返回类型

Object对象

UTF-8编码

返回字段

字段名 类型 长度 示例值 描述
message String 200 success 消息的描述
data Object - 返回的数据。可能为空对象

返回示例

  1. {
  2. "message": "",
  3. "data": {
  4. "field1": "value1",
  5. "field2": "value2"
  6. }
  7. }

更新日志

日期 更新人 更新内容
2018-01-04 刘光彪 初版
2018-11-21 刘光彪 格式调整,去掉废弃的协议
2018-11-23 刘光彪 增加协议编号
2018-11-27 刘光彪 增加通用sdk消息协议、区域截图协议
2018-12-06 刘光彪 增加command命令消息的type参数;去掉设备信息获取协议;增加R端与SE端通信协议
2019-03-04 刘光彪 调整NDK4方协议通信消息
2019-04-22 刘光彪 增加2526脚本调试相关通信协议
2019-04-26 刘光彪 增加272829接口测试调试相关协议
2019-06-17 刘光彪 增加33 WebSE调试反馈协议,修改25调试消息协议
2019-06-18 刘光彪 增加命名空间、完善接口测试相关协议
2019-06-19 刘光彪 接口调试日志消息字段修改
2019-06-24 余细红 增加34 补充设置注册信息
2019-07-24 余细红 增加 web 自动化测试接口初稿
2019-09-18 刘光彪 增加应用测试相关协议参数定义
2019-09-23 刘光彪 调整文档结构
2019-09-24 林海 添加IOS端的mobsense录制相关3个通道
2020-05-09 刘光彪 调整文档结构,增加任务停止通知协议
2020-05-22 刘光彪 增加二、1、群控任务操作通知,修改二、5、设备屏幕操作控制消息增加screenshot字段

* 消息协议

一、后端与客户端任务控制协议

1、脚本更新通知

消息方向

W -> S -> A

事件名称

W端发送:web.script.messagescript

A端接收:agent.script.messagescript

事件描述

后端有上传、编辑脚本时,将广播相关设备更新脚本,手机客户端软件收到该消息后通过HTTP接口获取新的脚本更新内容。

消息字段

字段名 类型 长度 示例值 描述
type String 20 newscript 消息类型,参见下一节《消息类型》

消息类型

type 描述
newscript *有新脚本。

消息示例

  1. {
  2. "data": {
  3. "type": "newscript"
  4. }
  5. }

2、任务获取通知

消息方向

W -> S -> A

事件名称

W端发送:web.task.messagetask

A端接收:agent.task.messagetask

事件描述

后端有新任务时通知客户端获取,客户端通过 HTTP 接口获取任务内容。

消息字段

字段名 类型 长度 示例值 描述
type String 20 newtask 消息类型,参见下一节《消息类型》

消息类型

type 描述
newtask *有新任务。

消息示例

  1. {
  2. "data": {
  3. "type": "newtask"
  4. }
  5. }

3、任务停止通知

消息方向

S -> A

事件名称

A端接收:agent.task.stop

事件描述

后端有任务暂停或取消操作时,socket会发送该消息,客户端收到该消息时判断一下是否是当前正在运行的任务,如果是即kill掉这个任务并调用客户端通过 HTTP 接口获取任务内容的逻辑以更新本地数据库任务状态,如果不是可以忽悠这条消息。

消息字段

字段名 类型 长度 示例值 描述
taskId Int 10 123 任务Id

消息示例

  1. {
  2. "data": {
  3. "taskId": 123
  4. }
  5. }

二、WebSE+群控+远程控制与客户端协议

1、群控任务操作通知

消息方向

R -> S -> A

事件名称

R端发送:remote.groupcontrol.status

A端接收:agent.groupcontrol.status

事件描述

群控在选定设备后,点击开始测试任务按钮,后端向所有选定的设备发送任务开始的消息,客户端准备就绪等待群控操作;任务操作完成后,点击结束测试任务的按钮,后端身所有选定的设备发送任务结束的消息,客户端将测试的截图、日志等消息按指定格式打包成zip包供测试人员使用(结果包格式参考Mobsense结果包格式)。

消息字段

字段名 类型 长度 示例值 描述
type String 30 start 消息类型,参见下一节《消息类型》

消息类型

type 描述
startScreenshot 开始测试任务
stop 结束测试任务

消息示例

  1. {
  2. "type": "start"
  3. }

2、待添加

3、客户端回图控制消息

消息方向

R -> S -> A

事件名称

R端发送:remote.screenshotscreenshot

A端接收:agent.screenshotscreenshot

事件描述

后端向客户端发送启动回图与关闭回图的命令,客户根据命令启动或关闭相应的回图进程。

消息字段

字段名 类型 长度 示例值 描述
type String 30 startScreenshot 消息类型,参见下一节《消息类型》

消息类型

type 描述
startScreenshot 开始回图
stopScreenshot 停止回图

消息示例

  1. {
  2. "data": {
  3. "type": "startScreenshot"
  4. }
  5. }

4、设备物理键控制消息

消息方向

R -> S -> A

事件名称

R端发送:remote.device.control.keyboarddeviceControl

A端接收:agent.device.control.keyboarddeviceControl

事件描述

通过固定键值控制手机按键的消息。

消息字段

字段名 类型 长度 示例值 描述
command String 50 30 按键消息值

消息类型

以下是command的可能值定义:

说明
3 Home键响应
4 返回键响应
82 菜单键响应
26 电源键
27 相机快捷键
24 音量+
25 音量-
164 静音

消息示例

  1. {
  2. "command": "23"
  3. }

5、设备屏幕操作控制消息

消息方向

R -> S -> A

事件名称

R端发送:remote.device.control.screenshotdeviceControlEvent

A端接收:agent.device.control.screenshotdeviceControlEvent

事件描述

后端将屏幕控制消息发送给客户端。

消息字段

字段名 类型 长度 示例值 描述
type String 10 move 操作类型,move up down
x Int 10 234
y Int 10 344
screenshot Int 1 1 是否同步截图,1=是,0或无该节点为否。为1时客户端实现按设备截图并保存本地功能(在执行控制操作前截图),暂时仅为iOS群控消息。

消息类型

以下是type的值定义:

说明
down 按下的操作
up 松开的操作
move 移动的操作

消息示例

  1. {
  2. "type": "dwon",
  3. "x": 345,
  4. "y": 456,
  5. "screenshot": 0
  6. }

6、客户端回屏消息

消息方向

R -> S -> A

事件名称

R端发送:remote.screenshot.messagescreenCaptureEvent

A端接收:agent.screenshot.messagescreenCaptureEvent

事件描述

R端向客户端发送需要回屏的消息通知,R 端通过轮询方式主动获取回屏数据,A 端为被动模式。

消息字段

字段名 类型 长度 示例值 描述
quality Int 10 30 图像质量
width Int 10 340 图像宽度
height Int 10 605 图像高度

消息示例

  1. {
  2. "quality": 30,
  3. "width": 340,
  4. "height": 605
  5. }

7、客户端回屏图片回复消息

消息方向

A -> S -> R

事件名称

A端发送:agent.screenshot.messagescreenCaptureEvent

R端接收:remote.screenshot.messagescreenCaptureEvent

事件描述

客户端截取全屏后将图片以buffer流方式回传给后端。客户端默认设置截屏尺寸为340x605像素。

消息字段

无,图片的buffer流内容

消息示例

8、Shell命令执行消息

消息方向

R -> S -> A

事件名称

R端发送:remote.shell.commandcommand

A端接收:agent.shell.commandcommand

事件描述

后端向客户端发送shell命令,客户端收到后执行并将output内容回传给后端。

消息字段

字段名 类型 长度 示例值 描述
command String 200 ps aux\ grep ‘autosense’ shell命令
type String 命令类型,客户端需要回复这个类型

消息示例

  1. {
  2. command: "ps | grep 'autosense'",
  3. type: 'command'
  4. }

9、Shell命令结果回复消息

消息方向

A -> S -> R

事件名称

A端发送:agent.shell.commandcommand

R端接收:remote.shell.commandcommand

事件描述

后端向客户端发送shell命令,客户端收到后执行并将output内容回传给后端。

消息字段

字段名 类型 长度 示例值 描述
command String 200 ps aux\ grep ‘autosense’ 执行的shell命令
type String 命令类型,R端会下发下来,客户端与结果返回即可
output Text 输出的结果

消息示例

  1. {
  2. command: "ps | grep 'autosense'",
  3. type: 'command',
  4. output: 'xxxxx'
  5. }

10、客户端屏幕截图消息

消息方向

R -> S -> A

事件名称

R端发送:remote.screen.capturescreenCapture

A端接收:agent.screen.capturescreenCapture

事件描述

后端向客户端发送截屏的消息。

消息字段

消息示例

11、客户端屏幕截图回复消息

消息方向

A -> S -> R

事件名称

A端发送:agent.screen.capturescreenCapture

R端接收:remote.screen.capturescreenCapture

事件描述

客户端截取全屏后将图片以buffer流方式回传给后端。尺寸为全屏图片,质量默认80,格式为JPG。

消息字段

无,图片的buffer流内容

消息示例

12、应用管理消息

消息方向

R -> S -> A

事件名称

R端发送:remote.app.managemanageApp

A端接收:agent.app.managemanageApp

事件描述

后端向客户端发送安装或卸载应用的命令,客户根据命令的URL地址开始下载APP并安装。

消息字段

字段名 类型 长度 示例值 描述
params String 255 0\ /app/xxx.apk 此参数透传给脚本,参数间用竖线隔开,具体请看下一节消息类型

消息类型

以下是params的值定义:

说明
第一个参数 0:安装,1:卸载
第二个参数 安装地址(/app/xxx.ap)/ 卸载的应用包名(com.tencent.android.qqdownloader)

消息示例

  1. {
  2. "params": "1|com.tencent.android.qqdownloader"
  3. }

13、客户端回复应用管理操作状态消息

消息方向

A -> S -> R

事件名称

A端发送:agent.app.manage.messageappStatus

R端接收:remote.app.manage.messageappStatus

事件描述

后端向客户端发送安装或者卸载命令,客户端收到后执行把相应的状态回传给后端。

消息字段

字段名 类型 长度 示例值 描述
status Int 5 1 请看下一节消息类型

消息类型

以下是status的值定义:

说明
0 下载中
1 下载失败
2 下载成功
3 安装中
4 安装失败
5 安装成功
6 其他错误

消息示例

  1. {
  2. status: "2"
  3. }

14、文件下载消息

消息方向

R -> S -> A

事件名称

R端发送:remote.file.downloaddownloadFile

A端接收:agent.file.downloaddownloadFile

事件描述

后端发送downloadFile命令,客户端接收文件目录dir字段后,通过给定的HTTP协议将文件上传该文件给后端。

消息字段

字段名 类型 长度 示例值 描述
type String 20 download 消息类型,参见下一节《消息类型》
file String 255 /data/test.txt 要下载的文件

消息类型

type 描述
download *有下载任务。

消息示例

  1. {
  2. "type": "download",
  3. "file": "/data/test.txt"
  4. }

15、客户端回复下载文件地址

消息方向

A -> S -> R

事件名称

A端发送:agent.file.downloaddownloadFile

R端接收:remote.file.downloaddownloadFile

事件描述

客户端在接收到downloadFile消息时将文件打包上传至后端,通知后端并带上下载链接。

消息字段

字段名 类型 长度 示例值 描述
status Int 1 0 消息类型,参见下一节《消息类型》
url String 255 http://xxx.com/app/xxx.sh 客户端上传的文件地址

消息类型

以下是status的值定义:

描述
0 文件上传中
1 文件上传失败
2 文件上传成功

消息示例

  1. {
  2. status: 2
  3. url: "/app/xxx.sh"
  4. }

16、Shell命令停止消息

消息方向

R -> S -> A

事件名称

R端发送:remote.shell.stopstopCommand

A端接收:agent.shell.stopstopCommand

事件描述

后端向客户端发送停止shell命令,客户端收到后执行停止当前的所有命令。

消息字段

字段名 类型 长度 示例值 描述
command String 10 stop 消息类型,参见下一节《消息类型》

消息类型

以下是status的值定义:

描述
stop 停止执行shell

消息示例

  1. {
  2. command: 'stop'
  3. }

17、区域截图消息

消息方向

R -> S -> A

事件名称

R端发送:remote.screen.capture.block

A端接收:agent.screen.capture.block

事件描述

R端在脚本录制过程中请求客户端截取某一区域图像的通知消息。

消息字段

字段名 类型 长度 示例值 描述
x1 Int 10 200 左上角x坐标
y1 Int 10 200 左上角y坐标
x2 Int 10 500 右下角x坐标
y2 Int 10 500 右下角y坐标

消息示例

  1. {
  2. "x1": 200,
  3. "y1": 200,
  4. "x2": 500,
  5. "y2": 500
  6. }

18、区域截图客户端回复消息

消息方向

A -> S -> R

事件名称

A端发送:agent.screen.capture.block

R端接收:remote.screen.capture.block

事件描述

A客户端按要求截取高清区域图片后将图片的buffer流回传给S端,S端直接透传给R端。

消息字段

暂无,内容为图片的buffer二进制流。

消息示例

暂无

S端返回给R端字段

内容为图片的buffer二进制流。

19、SDK透传消息

消息方向

R -> S -> A

事件名称

R端发送:remote.sdk.message

A端接收:agent.sdk.message

事件描述

R端给A端发送需要调用SDK层数据的通知,A端将该条消息内容通过NDK与SDK层的socket转发给SDK层(NDK与SDK层的socket协议由双方另行约定)。

消息字段

字段名 类型 长度 示例值 描述
data String 不定长 消息的内容,不定长字符串,NDK接收到后透传给SDK

消息示例

  1. {
  2. "data": "{\"type\": \"getDisplay\", \"params\": \"\"}"
  3. }

20、SDK透传回复消息

消息方向

A -> S -> R

事件名称

A端发送:agent.sdk.message

R端接收:remote.sdk.message

事件描述

A端在收到SDK层的回复消息时再将这个消息内容回复给R端。

消息字段

字段名 类型 长度 示例值 描述
data String 消息内容

消息示例

  1. {
  2. "data": ""
  3. }

21、SE透传消息

消息方向

R -> S -> A

事件名称

R端发送:remote.se.message

A端接收:agent.se.message

事件描述

R端给A端发送需要调用SE层数据的通知,A端将该条消息内容通过NDK与SE层的socket转发给SE层(NDK与SE层的socket协议由双方另行约定)。

消息字段

字段名 类型 长度 示例值 描述
data String 不定长 消息内容,不定长字符串,NDK层收到后透传给SE

消息示例

  1. {
  2. "data": "{\"type\": \"getDisplay\", \"params\": \"\"}"
  3. }

22、SE透传回复消息

消息方向

A -> S -> R

事件名称

A端发送:agent.se.message

R端接收:remote.se.message

事件描述

A端在收到SE层的回复消息时再将这个消息内容回复给R端。

消息字段

字段名 类型 长度 示例值 描述
data String 不定长 消息内容

消息示例

  1. {
  2. "data": "{\"width\": \"1080\", \"height\": \"1920\"}"
  3. }

23、本地设备列表获取消息

消息方向

R -> LS -> R

事件名称

R端发送:remote.device.local

R端接收:remote.device.local.list

事件描述

A端在收到SE层的回复消息时再将这个消息内容回复给R端。

发送消息字段

暂无

回复消息字段

字段名 类型 长度 示例值 描述
brand String 50 HUAWEI 设备品牌
model String 50 设备型号
resolution String 50 分辨率,高x宽
imei String IMEI号

回复消息示例

  1. [{
  2. "brand": "HUAWEI",
  3. "model": "mate7",
  4. "resolution": "1920x1080",
  5. "imei": "d342o343932p0"
  6. }]

24、本地设备上下线更新通知消息

消息方向

LS -> R

事件名称

LS端发送:remote.device.local.update

R端接收:remote.device.local.update

事件描述

LS端监听到有新设备联入或有设备离线时,会发布通知消息给R端,R端收到该消息后回复remote.device.local消息给LS端可以获取设备列表信息(23章节)。

发送消息字段

暂无

回复消息字段

暂无

回复消息示例

暂无

25、WebSE脚本调试通知消息

消息方向

R -> S -> A

事件名称

R端发送:remote.debug.message

A端接收:agent.debug.message

事件描述

R 端将脚本打包成zip后,将调试脚本有存放在autosense平台指定目录,提供一个 URL 地址给A端下载脚本调试使用。A 端接收到调度消息后将地址里的zip脚本下载保存并执行将执行结果的消息返回(通过协议26)给R端。

调试过程需要反馈流程信息,通过协议33反馈,具体参见协议33

消息字段

字段名称 类型 长度 示例值 描述
debugParams String 100 调试参数,由后端与脚本引擎约定,A端调试时传递给引擎
scriptUrl String 250 调试脚本的下载地址,A端通过这个地址下载脚本发起调试

消息示例

  1. {
  2. "debugParams": "MI5X|1|1|1|INPHONE|auto|1|1",
  3. "scriptUrl": "http://auto.uusense.com/data/script-debug/993derw034soer33.zip"
  4. }

26、WebSE脚本调试回复消息

消息方向

A -> S -> R

事件名称

A端发送:agent.debug.message

R端接收:remote.debug.message

事件描述

A端将脚本调试结果打包成zip后以二进制流回传给R端。R 端在接收后解压、解析结果内容并显示在调试内容栏。

消息字段

结果zip包内容

消息示例

暂无

27、IOS输入文本框消息

消息方向

R -> S -> A

事件名称

R端发送:remote.ios.device.input.message

A端接收:agent.ios.device.input.message

事件描述

R端给A端发送输入文本控件消息,

消息字段

字段名 类型 长度 示例值 描述
content String 不定长 用户输入的消息内容,不定长字符串

消息示例

  1. {
  2. "content": "输入框要输入的内容"
  3. }

28、IOS控件信息消息

消息方向

R -> S -> A

事件名称

R端发送:remote.ios.device.control.message

A端接收:agent.ios.device.control.message

事件描述

R端给A端发送获取控件详细信息的消息。

消息字段

字段名 类型 长度 示例值 描述
type String 50 dump 控件类型,以后可以扩充(详情下一节)

消息类型

以下是type的可能值定义:

说明
dump 返回控件详细信息

消息示例

  1. {
  2. "type": "dump"
  3. }

29、IOS控件信息回复消息

消息方向

A -> S -> R

事件名称

A端发送:agent.ios.device.control.message

R端接收:remote.ios.device.control.message

事件描述

A端在收到R端的获取控件消息后,以预先制定的json字符串(参考UUBootstrap协议说明.md 和 UUBootstrap协议dump数据详细说明.md)方式传递给R端。

消息字段

字段名 类型 长度 示例值 描述
type String 50 dump 返回的控件类型
data String 不定长 消息内容(预先制定的json格式)

消息示例

  1. {
  2. "type":"dump",
  3. "data": "{\"width\": \"1080\", \"height\": \"1920\"}"
  4. }

30、WebSE脚本调试流程反馈

消息方向

A -> S -> R

事件名称

A端发送:agent.debug.status

R端接收:remote.debug.status

事件描述

调试过程中A端需向R端有状态反馈,方便R端展示状态给用户,提升用户体验。具体状态反馈点见下表。

反馈流程 type 描述
接收调试信息 1 A端接收到调试信息时立即向R端反馈
开始下载脚本 2 A端开始下载脚本前向R端反馈
脚本下载成功 3 A端完成脚本下载后反馈
脚本下载失败 4 A端脚本下载失败后反馈,此时调试失败
开始调试脚本 5 A端开始调试脚本前反馈
脚本调试完成 6 A端完成脚本调试后反馈
打包结果信息 7 A端开始打包结果信息时反馈
开始回复结果消息 8 A端开始上向R端回复结果消息时反馈

消息字段

字段名称 类型 长度 是否必须 示例值 描述
type Int 10 1 消息类型,见上表事件描述
message String 250 消息内容,A端可根据情况自定义一些消息内容反馈给R端

消息示例

  1. {
  2. "type": 2,
  3. "message": "start download script."
  4. }

31、设备信息注册

消息方向

A -> S -> R

事件名称

A端发送:agent.device.register

R端接收:remote.device.register

事件描述

补全设备信息。

消息字段

字段名称 类型 长度 是否必须 示例值 描述
serial String 100 xxxx 设备imie号
name String 250 SMG9008V 设备名称
brand String 100 华为 品牌名称
model String 100 SMG9008V 设备型号

消息示例

  1. {
  2. "serial": "xxxx",
  3. "name": 'SMG9008V',
  4. "brand": 'huiwei',
  5. "model": 'SMG9008V'
  6. }

32、IOS客户端MobSense录制状态消息

消息方向

R -> S -> A

事件名称

R端发送:remote.ios.mobsense.record.message

A端接收:agent.ios.mobsense.record.message

事件描述

R端给A端发送mobsense录制状态的通知。

消息字段

字段名 类型 长度 示例值 描述
type String 20 start 消息类型,参见下一节《消息类型》

消息类型

type 描述
start 开启mobsense录制模式。
stop 停止mobsense录制模式。
stauts 询问是否为mobsense录制模式。

消息示例

  1. {
  2. "type": "start"
  3. }

33、IOS客户端MobSense录制状态回复消息

消息方向

A -> S -> R

事件名称

A端发送:agent.ios.mobsense.record.message

R端接收:remote.ios.mobsense.record.message

事件描述

A端在收到R端发来的消息时把处理的状态回复给R端。

消息字段

字段名 类型 长度 示例值 描述
type String 20 start 消息类型,参见下一节《消息类型》
status Int 1 1 操作状态,请看下一节《操作状态》

消息类型

type 描述
start 开启mobsense录制模式。
stop 停止mobsense录制模式。
stauts 询问是否为mobsense录制模式。
logStauts 日志打包是否成功

操作状态

描述
0 操作失败(或stauts类型非mobsense录制模式)
1 操作成功(或stauts类型是mobsense录制模式)

消息示例

  1. {
  2. "type": "start",
  3. "status": 1
  4. }

34、IOS客户端MobSense日志回复消息

消息方向

A -> S -> R

事件名称

A端发送:agent.ios.mobsense.log.message

R端接收:remote.ios.mobsense.log.message

事件描述

客户端收到录制完成后命令日志打包成zip以buffer流方式回传给后端。

消息字段

无,zip的buffer流内容

消息示例

三、接口测试调试协议

1、接口测试接口调试通知消息

消息方向

W -> S -> M

事件名称

W端发送:mock.request.runner

M端接收:mock.request.runner

事件描述

W端生成支持newman的json格式的请求数据,发送给M端去执行。

消息字段

字段名称 类型 长度 示例值 描述
serial String 32 Web客户端序列号,用于区分不同web用户
sessionId String 32 调试的sessionId,debug客户端需要记录,按些sessionId回复数据
from String 20 调试来源,debug-api=接口编辑器,debug-box=用例调试
data.collection Object - newman collection。json内容,参见https://github.com/postmanlabs/postman-collection-transformer/tree/develop/examples/v2.1.0
data.reporters String - json newman报告输出类型

消息示例

  1. {
  2. "serial": "",
  3. "sessionId": "57c2f20acd919c6a8cfa08e3e961314b",
  4. "from": "debug-api",
  5. "data": {
  6. "collection": {},
  7. "reporters": "json"
  8. }
  9. }

2、接口测试调试日志消息

消息方向

M -> S -> W

事件名称

M端发送:mock.response.log

W端接收:mock.response.log

事件描述

M端执行过程中回复执行过程日志消息给W端供了解调试过程,W端解析后显示给用户。

消息字段

字段名 类型 长度 示例值 描述
serial String 100 Web客户端序列号
sessionId String 100 sessionId
from String 20 调试来源,debug-api=接口编辑器,debug-box=用例调试
log.time String 30 时间,YYYY-MM-dd HH:ii:ss
log.level String 10 INFO 日志级别,INFO,ERROR,DEBUG
log.message String 200 日志内容

消息示例

  1. {
  2. "serial": "",
  3. "sessionId": "57c2f20acd919c6a8cfa08e3e961314b",
  4. "from": "debug-api",
  5. "log": {
  6. "time": "2019-04-26 12:12:12",
  7. "level": "INFO",
  8. "message": "接收数据"
  9. }
  10. }

3、接口测试调试回复消息

消息方向

M -> S -> W

事件名称

M端发送:mock.response.message

W端接收:mock.response.message

事件描述

M端执行完成后将数据回复给W端,W端解析后显示给用户。

消息字段

字段名称 类型 长度 示例值 描述
serial String 100 设备序列号
sessionId String 100 sessionId
from from 20 调试来源,debug-api=接口编辑器,debug-box=用例调试
response Object json格式的报告,参见https://github.com/postmanlabs/newman#json-reporter

消息示例

  1. {
  2. "serial": "",
  3. "sessionId": "",
  4. "from": "debug-api",
  5. "response": {}
  6. }

四、WebUI自动化录制插件协议

1、web插件状态上报

消息方向

WUI -> S -> W

事件名称

WUI端发送:webui.record.status

W端接收:web.record.status

事件描述

上报插件开启状态

消息字段

字段名称 类型 长度 是否必须 示例值 描述
isOnline Number 1 1 1:在线 0:离线

消息示例

  1. {
  2. "isOnline": 1
  3. }

2、web插件录制脚本指令

消息方向

WSE -> S -> WUI

事件名称

WSE端发送:webse.record.action

WUI端接收:webui.record.action

事件描述

web插件录制脚本动作

消息字段

字段名称 类型 长度 是否必须 示例值 描述
action String 20 start start:开启 stop:停止 playback:回放

消息示例

  1. {
  2. "action": "start"
  3. }

3、web插件录制脚本消息

消息方向

WUI -> S -> WSE

事件名称

WUI端发送:webui.record.message

WSE端接收:webse.record.message

事件描述

web插件录制脚本消息指令

消息字段

字段名称 类型 长度 是否必须 示例值 描述
command String 200 click 每条脚本的消息

消息示例

  1. {
  2. "command": "click:XXXX"
  3. }

五、应用性能测试协议

1、扫码解析协议

协议说明

PA客户端通过扫码获取任务的serial序列号、socket连接信息、任务的原有设备与被测应用信息。获取成功后根据socket参数连接socket-server,根据设备信息判断之前是不是本设备所测试的数据,根据被测应用自动启动被测信息开始测试。

扫码结果

  1. http://auto.uusense.com/home/download/perf?id=eyJzZXJpYWwiOiI1ZDhjNjc0MTY3MGI4Iiwic29ja2V0VXJsIjoiaHR0cDpcL1wvMTI3LjAuMC4xOjkwMDEiLCJuYW1lc3BhY2UiOiJcL3BlcmYtYWdlbnQiLCJwYWNrYWdlTmFtZSI6IiIsImRldmljZVNlcmlhbCI6IiJ9

客户端解析这个结果获取URL中的id参数的值,并通过base64decode解析等到一个json字符串

扫码结果json字符串参数

参数名称 示例 说明
serial 5d8c6741670b8 客户端与socket-srver、Web界面通讯的认证码,连接socket时需要将其作为连接参数
socketUrl 客户端连接后台socket-server的地址
namespace /perf-agent 客户端连接socket-server需要使用的NameSpace
packageName 如果是二次扫码对原任务进行继续性能测试的话,刷新后的二维码会带有被测应用的包名,客户端根据这个包名自动启动被测应用,无需要再次进入选应用流程。默认为空
deviceSerial 如果是二次扫码时,二维码会带有之前的设备的序列号信息,客户端需要与本机的序列号进行一次对比,如果不相等需要有一个提示是否继续,否时退出测试流程。

2、设备信息上报消息

消息方向

PA -> S -> PW

事件名称

PA端发送:perf.agent.device

PW端接收:perf.web.device

事件描述

PA端将设备信息上报给PW端,PW端显示。

消息字段

字段名称 类型 长度 是否必须 示例值 描述
brand String 50 oppo 设备品牌
model String 50 v21 设备型号
serial String 50 同autosense客户端获取方法,取WiFi MAC地址去冒号后转大写,如果没有开WiFi提示要打开WiFi,建议同autosense获取逻辑。
androidVersion String 50 V9.0 Android系统版本号,格式:V9.0.0
roomVersion String 50 MIUI V10.0 ROOM名称与版本号
resolution String 20 1920x1080 分辨率,{H}x{W},宽x高
memorySize Int 20 3096120 内存总量,单位Byte
cpuInfo String 100 CPU名称、型号、核心数、频率组成
network String 20 5G 当前网络类型,2G/3G/4G/5G/WiFi
batterySize Int 20 电池总容量,mAh
batteryRate Float 20 20.34 电池电量百分比,%
isCharge Int 1 1 是否在充电,1=是,0=否

消息示例

  1. {
  2. "data": {
  3. "brand": "oppo",
  4. "model": "v21",
  5. "serial": "D4E8FE87A8",
  6. "androidVersion": "V9.0.0",
  7. "roomVersion": "MIUI V10.0",
  8. "resolution": "1920x1080",
  9. "memoryTotal": 3096000,
  10. "cpuInfo": "ARMv7 Processor rev 0 (v7l),4,1.8MHZ",
  11. "network": "5G",
  12. "batteryTotal": 3600,
  13. "batteryRate": 45.34,
  14. "isCharge": 0
  15. }
  16. }

3、应用信息上报消息

消息方向

PA->S->PW

事件名称

PA端发送:perf.agent.appinfo

PW端接收:perf.web.appinfo

事件描述

PA客户端在用户选择了被测应用后时,将应用的基本信息上报给后端,后端实时存储显示。

消息字段

字段名称 类型 长度 是否必须 示例值 描述
name String 200 测网速 应用名称
packageName String 100 com.uusense.speed 应用包名
code int 10 应用版本code
version String 20 4.5.2 应用版本号码
logo String LOGO文件的base64字符串

消息示例

  1. {
  2. "data": {
  3. "name": "测网速",
  4. "packageName": "com.uusense.speed",
  5. "code": 123,
  6. "version": "4.5.6",
  7. "logo": "xxxxx"
  8. }
  9. }

4、应用LOGO上报消息(暂不用)

消息方向

PA->S->PW

事件名称

PA端发送:perf.agent.applogo

PW端接收:perf.web.applogo

事件描述

PA客户端在用户选择了被测应用后时,将应用的基本信息上报给后端后,接着上报应用LOGO数据给后端。LOGO以二进制buffer流格式作为socket的消息体上报。

消息字段

暂无

消息示例

暂无

5、应用性能数据上报消息

消息方向

PA->S->PW

事件名称

PA端发送:perf.agent.perfinfo

PW端接收:perf.web.perfinfo

事件描述

客户端回传性能数据

消息字段

字段名称 类型 长度 是否必须 示例值 描述
pid String 10 123213 被测应用进程PID
time String 20 客户端时间,格式:YYYY-MM-DD HH:ii:ss
cpuApp String 10 1.23 APP消耗CPU
cpuTotal String 10 90.00 全局消耗CPU

参考:

性能工具数据格式

参数 类型 示例值(单位) 描述
cpu_total float 21.11(%) 全局CPU使用占比,异常时值为-1
cpu_app float 10.11(%) 目标应用CPU使用占比,异常时值为-1
memory_use long 1935(MB) 系统可用内存大小
memory_total long 3783(MB) 系统总内存大小
memory_pss float 135.72(MB) 实际使用的物理内存(比例分配共享库占用的内存)
memory_privateDirty float 100.72(MB) 应用进程独占内存
net_current_rx_size float 10.11(KB) 应用当前接收数据大小
net_total_rx_size float 11022.21(KB) 应用接收数据总大小(累计值)
net_current_tx_size float 30.15(KB) 应用当前发送数据大小
net_total_tx_size float 1234.17(KB) 应用发送数据总大小(累计值)
battery_momentary_current float -100.1(mA) 电池瞬时电流大小,保留小数点后一位
fps int 60 帧率
fps_junk_count int 0 延迟数
fps_junk_max int 15(ms) 最长延迟
fps_junk_percent float 1.11(%) 延迟占比,默认值为0.00%
response_time long 0(ms) 响应耗时
refresh_time long 0(ms) 刷新耗时
average_time_one float 36.34(%) 过去1分钟的系统平均负载情况
average_time_five float 35.68(%) 过去5分钟的系统平均负载情况
average_time_fifteen float 37.81(%) 过去15分钟的系统平均负载情况
cpu_temperature float 40.1(°C) CPU温度
battery_temperature float 30.2(°C) 电池温度

消息示例

因数据量较大,为节省传输引起的消耗,

  1. {
  2. "data": "12321|2019-09-24 13:00:34|3.45|34.45|"
  3. }

6、任务停止消息

消息方向

PA->S->PW 或 PW->S->PA

事件名称

PA端发送与接收:perf.agent.stop

PW端接收与发送:perf.web.stop

事件描述

PerfSense Agent客户端监听socket服务端发送的perf.agent.stop消息,收到该消息时,退出性能采集程序,关闭浮窗,PerfSense断开socket连接、回到主界面并回到前台。

PerfSense浮窗上的停止按钮点击后,发送perf.agent.stop消息给socket服务端,并退出性能采集程序,关闭浮窗,PerfSense断开socket连接、回到主界面并回到前台。

后台收到perf.web.stop消息时停止存储数据,改变任务状态,实时图表复位。

消息字段

空,这个消息的内容为空

消息示例

暂无

六、WebSE与Android Provider通信协议

1、Android Provider上报设备信息

消息方向

AP->S

事件名称

AP端发送:android.provider.device

事件描述

Android Provider在有设备接入、服务重启、与后台socket.io重连时将已接入的设备数据发送给S端,S端存储与维护设备与Android Provider的关联数据。

消息字段

数组形式支持多设备数据同时发送。

字段名称 类型 长度 是否必须 示例值 描述
serial String 30 设备的序列号,按autosense取序列号的方法:WiFi Mac地址去冒号转大写。

消息示例

  1. {
  2. "data": [
  3. {
  4. serial: "AGERD34DFDE4"
  5. },
  6. {
  7. serial: "DFER343FDFER"
  8. }
  9. ]
  10. }

2、Android Provider回复设备可连接消息

消息方向

AP->S->R

事件名称

AP端发送:android.provider.connect

R端接收:remote.android.provider.connect

事件描述

Android Provider收到S端的android.provider.connect连接请求消息后,根据消息内容启动相应设备的服务并将相关信息回复给R端。

消息字段

字段名称 类型 长度 是否必须 示例值 描述
serial String 30 设备的序列号,按autosense取序列号的方法:WiFi Mac地址去冒号转大写。
resolution String 20 1920x1080 设备的实际分辨率,高x宽
webSocketUrl String 30 ws://x.x.x.x:24090/ 启动成功atx-server后的socket地址。R端在后面带上minicap可连接,为websocket,不是socket.io。

消息示例

  1. {
  2. "data": {
  3. "serial": "DEFDEDE87FE",
  4. "resolution": "1920x1080",
  5. "webSocketUrl": "ws://x.x.x.x:24090/"
  6. }
  7. }

3、WebSE端发送检查设备是否在Android Provider环境的消息

消息方向

R->S->AP

事件名称

R端发送:remote.android.provider.check

AP端接收:android.provider.connect

事件描述

WebSE在设备连接时发送消息给S端去检查当前设备是否在Android Provider列表,如果在,S端发送连接消息给对应的Android Provider。

消息字段

字段名称 类型 长度 是否必须 示例值 描述
serial String 30 设备的序列号

消息示例

  1. {
  2. "data": {
  3. "serial": "DFEEF87FDE3"
  4. }
  5. }

4、Android Provider关闭服务消息

消息方向

S->AP

事件名称

AP端接收:android.provider.disconnect

事件描述

S端检测到R端设备断连后,如果当前设备在android provider列表,发送停止服务消息给Android Provider。

消息字段

字段名称 类型 长度 是否必须 示例值 描述
serial String 30 设备的序列号

消息示例

  1. {
  2. "data": {
  3. "serial": "DFEEF87FDE3"
  4. }
  5. }