令牌申请教程:https://bbs.perfdog.qq.com/article-detail.html?id=55安装包下载:https://perfdog.qq.com/sdk一、 概述
PerfDog性能狗服务组件,用户可基于service组件二次开发自己PerfDog性能工具或自动化服务。本文档主要对PerfDogService提供的接口进行说明,并提供可运行的DEMO供有诉求的同学快速上手。二、 快速指引
1、 本地解压PerfDogService安装包
PerfDogService.exe:Service启动文件,一般不用手工启动,自动化脚本会自动启动此程序。
perfdog.proto: grpc接口和protobuf结构体的定义文件
demo/python: python3的demo,依赖库grpcio和protobuf
demo/java: java的demo,依赖库grpc-netty-shaded, grpc-protobuf, grpc-stub
2、 快速运行Demo(以demo/python为例)
1) 安装Python3环境
2) 安装demo依赖库grpcio和protobuf,建议使用pip安装
3) 打开demo/Python目录
4) 打开目录中的demo.py文件,修改输入参数
5) 打开命令窗口,运行demo.py文件
6) Demo成功运行,查看输出结果
三、 整体架构
产品组件
整体框架
四、 工作流程
PerfDogService支持多台设备同时测试。工作流程如下图所示,具体使用方法可以参考Demo
五、 方法列表
loginWithToken
用途
用户登录接口
定义rpc loginWithToken (Token) returns (UserInfo) {}
参数
Token: 登录令牌
返回值
UserInfo: 登录用户的帐号信息
备注
如果需要令牌,需要在官网申请令牌
startDeviceMonitor
用途
启动设备监听器,使用此接口可以收到移动设备到PC的连接和断开事件
定义rpc startDeviceMonitor (Empty) returns (stream DeviceEvent) {}
参数
Empty: gprc占位符参数,无实际意义
返回值
stream DeviceEvent: 设备连接、断开事件流,可单独启动线程从返回值获取相应的事件
前置依赖
用户已登录
initDevice
用途
初始化设备
定义rpc initDevice (Device) returns (Empty) {}
参数
Device: 用于标识设备,可以从DeviceEvent中取得。
返回值
Empty: grpc返回值占位符,无实际意义
前置依赖
用户已登录
getDeviceInfo
用途
获取设备信息
定义rpc getDeviceInfo (Device) returns (DeviceInfo) {}
参数
Device: 用于标识设备
返回值
DeviceInfo: 设备基本信息
前置依赖
用户已登录
设备已初始化
getDeviceStatus
用途
获取设备状态
定义rpc getDeviceStatus (Device) returns (DeviceStatus) {}
参数
Device:设备标识结构体
返回值
DeviceStatus: 设备状态信息
前置依赖
用户已登录
getAppList
用途
获取设备APP列表
定义rpc getAppList (Device) returns (AppList) {}
参数
Device:设备标识结构体
返回值
AppList: 设备上安装的APP的列表
前置依赖
用户已登录
设备已初始化
enablePerfDataType
用途
启用测试数据指标
定义rpc enablePerfDataType(EnablePerfDataTypeReq) returns (Empty) {}
参数
EnablePerfDataTypeReq: 需要开启的类型,参见pb定义文件PerfDataTypem枚举类型说明
返回值
Empty: grpc参数占位符,无实际意义
前置依赖
用户已登录
设备已初始化
disablePerfDataType
用途
禁用测试数据指标
定义rpc disablePerfDataType (DisablePerfDataTypeReq) returns (Empty) {}
参数
DisablePerfDataTypeReq: 需要关闭的数据类型
返回值
Empty: grpc参数占位符,无实际意义
前置依赖
用户已登录
设备已初始化
getPerfDataType
用途
获取已开启数据类型的列表
定义 rpc getPerfDataType (Device) returns (PerfDataTypeRet) {}
参数
Device:设备标识结构体
返回值
PerfDataTypeRet: 开启数据类型的列表,参见附件协议文件
前置依赖
用户已登录
设备已初始化
getAvailableDataType
用途
获取设备支持的测试数据指标类型
定义rpc getAvailableDataType (Device) returns (PerfDataTypeRet) {}
参数
Device:设备标识结构体
返回值
PerfDataTypeRet: 可以开启数据类型的列表
前置依赖
用户已登录
设备已初始化
setScreenShotInterval
用途
设置截屏时间间隔
定义 rpc setScreenShotInterval (ScreenShotInterval) returns (Empty) {}
参数
ScreenShotInterval: 设置设备测试过程中截屏时间间隔,单位秒
返回值
Empty: grpc参数占位符
前置依赖
用户已登录
startTestApp
用途
开始App测试
定义rpc startTestApp(StartTestAppReq) returns (StartTestRet) {}
参数
StartTestAppReq: 填写需要配置测试App的相关信息
返回值
StartTestRet: grpc返回值占位符,无实际意义
前置依赖
用户已登录
设备已初始化
备注
Android默认开启的数据类型有FPS、CPU_USAGE、MEMORY、CPU_TEMPERATURE、NETWORK_USAGE、FRAME_TIME和BATTERY(wifi模式);
iOS默认开启的数据类型有FPS、CPU_USAGE、MEMORY、IOS_GPU_USAGE、NETWORK_USAGE、CTX_SWITCH、FRAME_TIME(usb模式)和BATTERY(wifi模式);
如果需要开启或者关闭其他数据类型,请使用enablePerfDataType和disablePerfDataType接口。
startTestSysProcess
用途
开始系统进程测试
定义rpc startTestSysProcess (StartTestSysProcessReq) returns (StartTestRet) {}
参数
StartTestSysProcessReq: 设置开始测试的设备和系统进程
返回值
StartTestRet: grpc返回值占位符,无实际意义
前置依赖
用户已登录
设备已初始化
备注
数据类型方面规则与startTestApp相同
openPerfDataStream
用途
打开实时测试指标流,可以用来获取实时测试指标数据
定义rpc openPerfDataStream (OpenPerfDataStreamReq) returns (stream PerfData) {}
参数
OpenPerfDataStreamReq: 需要指定设备,会获取指定设备测试指标数据流
返回值
stream PerfData: 流式返回性能数据
前置依赖
用户已登录
设备已初始化
设备已开始测试
stopTest
用途
结束测试
定义rpc stopTest (StopTestReq) returns (Empty) {}
参数
StopTestReq: 需要指定停止测试设备,perfdog支持同时测试多台设备
返回值
Empty: grpc返回值占位符,无实际意义
前置依赖
用户已登录
设备已初始化
设备已开始测试
setLabel
用途
测试过程中添加标签,标签起始时间为当前时间,直到有下一个标签,都属于新添加标签说明的范围
定义rpc setLabel (SetLabelReq) returns (Empty) {}
参数
SetLabelReq: 需要填写的包括设备信息和标签名字
返回值
Empty: grpc返回值占位符,无实际意义
前置依赖
用户已登录
设备已初始化
设备已开始测试
updateLabel
用途
修改label的名字
定义rpc updateLabel (UpdateLabelReq) returns (Empty) {}
参数
UpdateLabelReq: 更新标签请求,需要填写设备信息、标签起始时间(代表标签)、新标签信息
返回值
Empty: grpc参数占位符,无实际意义
前置依赖
用户已登录
设备已初始化
设备已开始测试
addNote
用途
添加标注
定义rpc addNote (AddNoteReq) returns (Empty) {}
参数
AddNoteReq: 添加标注请求,需要填写设备信息、标注的时间点和标注内容
返回值
Empty: grpc参数占位符,无实际意义
前置依赖
用户已登录
removeNote
用途
删除批注
定义rpc removeNote (RemoveNoteReq) returns (Empty) {}
参数
RemoveNoteReq: 删除标注请求,需要填写设备信息、标注的时间位置
返回值
Empty: grpc参数占位符
前置依赖
用户已登录
setGlobalDataUploadServer
用途
设置第三方数据上传服务,当保存数据选择上了上传时,如果设置了第三方数据服务,将不会上传到官方的云服务,而是将数据上传此处设置的数据服务。
定义rpc setGlobalDataUploadServer (SetDataUploadServerReq) returns (SetDataUploadServerRsp) {}
参数
SetDataUploadServerReq: 设置第三方数据服务请求,需要设置上传服务url地址,和需要上传的格式,格式支持json和pb
返回值
SetDataUploadServerRsp: grpc返回值占位符,无实际意义
前置依赖
用户已登录
saveData
用途
保存测试数据
定义rpc saveData (SaveDataReq) returns (SaveDataRsp) {}
参数
SaveDataReq: 保存测试数据请求,需要填写的有设备信息、数据开始时间、数据结束时间、是否上传到数据服务(官方云存储或者第三方数据服务)、是否保存到文件,以及选择到文件时保存的路径和格式
返回值
SaveDataRsp: 保存文件结果,包括上传结果和导出到文件结果
前置依赖
用户已登录
getDeviceCacheData
用途
获取设备的缓存数据,数据流式返回
定义rpc getDeviceCacheData (GetDeviceCacheDataReq) returns(stream CachePerfData) {}
参数
GetDeviceCacheDataReq: 拉取数据请求,需要填写设备信息字段
返回值
stream CachePerfData: 流式返回缓存性能数据,参见CachePerfData结构定义
前置依赖
用户已登录
备注
适用于测试过程中设备断开连接的情况,也可用于测试过程中或结束测试后按条拉取数据,缓存的性能数据会在开始新一次测试时清空
getDeviceCacheDataPacked
用途
获取设备的缓存数据, 指标数据会打包返回
定义rpc getDeviceCacheDataPacked (GetDeviceCacheDataPackedReq) returns (stream CachePerfDataPacked) {}
参数
GetDeviceCacheDataPackedReq: 拉取缓存数据请求,需要提供设备信息、以及返回数据格式,返回格式支持json和pb格式
返回值
stream CachePerfDataPacked: 流式返回设备缓存的测试数据,有 2 + n次的返回,第一次返回测试指标数据,第二次返回测试应用图标,后面n次返回测试过程中生成的截图,如果有的话。
前置依赖
用户已登录
备注
适用于测试过程中设备断开连接的情况,也可用于测试过程中或结束测试后拉取打包好的全部数据,缓存的性能数据会在开始新一次测试时清空
getAppRunningProcess
用途
获取设备上app正在运行的进程列表
定义rpc getAppRunningProcess (GetAppRunningProcessReq) returns (GetAppRunningProcessRet) {}
参数
GetAppRunningProcessReq: 拉取进程列表请求,需要填写设备信息和app信息
返回值
GetAppRunningProcessRet: 进程列表
前置依赖
用户已登录
设备已初始化
getAppWindowMap
用途
获取设备上app每个进程对应的Activity和SurfaceView,仅适用于Android设备
定义rpc getAppWindowsMap (GetAppWindowsMapReq) returns (GetAppWindowsMapRet) {}
参数
GetAppWindowMapReq: 获取app进程对应的Activity和SurfaceView请求,需要填写设备信息和app信息
返回值
GetAppRunningProcessRet: 返回的数据可以理解为一个map,key值为pid,value值为此pid所涉及的Activity和SurfaceView列表
前置依赖
用户已登录
设备已初始化
getRunningSysProcess
用途
获取设备系统进程列表
定义 rpc getRunningSysProcess (Device) returns (GetRunningSysProcessRet) {}
参数
Device: 需要获取系统进程列表的设备
返回值
GetRunningSysProcessRet: 进程列表
前置依赖
用户已登录
设备已初始化
updateAppInfo
用途
刷新app的信息
定义rpc updateAppInfo (UpdateAppInfoReq) returns (UpdateAppInfoRet) {}
参数
UpdateAppInfoReq: 更新App请求,需要填写设备信息和app信息
返回值
UpdateAppInfoRet: 返回最新的app信息
前置依赖
用户已登录
设备已初始化
备注
一般用于开始测试前更新app信息,防止开始测试前app被卸载或者升级等意外情况
createTask
用途
创建任务,用于归类上传测试数据。
定义rpc createTask (CreateTaskReq) returns (CreateTaskRsp) {}
参数
CreateTaskReq: 创建Task请求,需要task名称,不能超过50个字符
返回值
CreateTaskRsp: 返回新创建task Id
前置依赖
用户已登录
archiveCaseToTask
用途
将上传官方云存储case归档到task
定义rpc archiveCaseToTask (ArchiveCaseToTaskReq) returns (ArchiveCaseToTaskRsp) {}
参数
ArchiveCaseToTaskReq: 归档请求,需要填写任务Id和Case ID
返回值
ArchiveCaseToTaskRsp: 返回值占位符,无实际意义
前置依赖
用户已登录
shareCase
用途
分享上传到官方云储存case数据
定义rpc shareCase (ShareCaseReq) returns (ShareCaseRsp) {}
参数
ShareCaseReq: 分享的case id和分享有效时间(单位分钟,0代表永不过期)
返回值
ShareCaseRsp: 返回分享后的查看case 链接和查看密码
前置依赖
用户已登录
killServer
用途
停止PerfDogService
定义rpc killServer (Empty) returns (Empty) {}
参数
Empty: gRPC参数占位符,无实际意义
返回值
Empty: gRPC返回值占位符,无实际意义
性能测试技术交流群:720150565
查看PerfDog详情:https://perfdog.qq.com/?ADTAG=media.dev_website