当前位置: 首页 > news >正文

利用tidevice+mysql+grafana实现ios性能测试

利用tidevice+mysql+grafana实现ios性能测试

1.什么是tidevice?

tidevice是一个可以和ios设备进行通信的工具,提供以下功能:

  • 截图
  • 获取手机信息
  • ipa包的安装和卸载
  • 根据bundleID 启动和停止应用
  • 列出安装应用信息
  • 模拟Xcode运行XCTest,常用的如启动WebDriverAgent测试(此方法不依赖xcodebuild)
  • 获取指定应用性能(CPU,MEM,FPS)
  • 文件操作
  • 其他
    支持运行在Mac,Linux,Windows上
    官方地址:https://github.com/alibaba/taobao-iphone-device

2.环境准备

Python3.6+
Mysql (docker)
grafana(docker)

3.实现思路

  • 使用tidevice选定连接的被测手机和被测app
  • 启动app和程序,将开启app后每秒的设备性能信息采集将采集到的数据存储到mysql
  • grafana设置mysql数据源
  • 配置grafana展示图表
  • 配置展示图表的刷新时间

4.具体步骤

  1. 数据库建立相应的测试库和测试表,主要是我们要收集的fps,cpu,memory,network等4个表,表的结构就是时间戳和相应的数据 比如fps表:


2. 连接手机,指定要测试的应用(以 fun club为例子)
`
#使用 tidevice applist来查看手机app列表

t = tidevice.Device()
perf = tidevice.Performance(t,list(tidevice.DataType))
#print(list(tidevice.DataType))
appid='com.xxx.xxx.xxxxxxx'  #填写自己需要测试的app包名即可
  1. 设定程序的运行时常,启动指定的app,查看回调函数输出的数据格式

  1. 从返回的字典数据里,分别提取对应的cpu,network,memory,fps数据和时间戳,然后插入数据库相对应的表。以fps为例子
def callback(_type: tidevice.DataType, value: dict):print("R:", _type.value, value)if _type.value =='fps':fpsdata = valuefps = fpsdata.get('fps')time = timeStamp(fpsdata.get('timestamp'))db = pymysql.Connect(user='root', password='123456', host='localhost', database='mytest')cursor = db.cursor()sql="INSERT INTO `mytest`.`my_fps` (`fps`, `time`)VALUES ('%s', '%s')" %(fps,time)try:cursor.execute(sql)db.commit()except:db.rollback()db.close()
  1. 检查数据库对应的表是否有数据插入(以fps为例)

  1. 启动grafana 设置mysql数据源

  1. Add Panel 选择折线图 进行相关配置,以fps为例

  1. 设置grafana的时间以及定时刷新的频率

  1. 配置好4个图表,grafana设置图标刷新时间为1秒

10.设定好程序运行的时常 启动app 首页静止, 查看折线图

11.funclub进入ludo游戏,查看折线图数据(21:06开始)

12.在对应的时间打标签


我的博客(https://vwo50.club)有分享更多好玩的计算机知识,欢迎访问 vwo50博客站

http://www.lryc.cn/news/138306.html

相关文章:

  • 内网安全:WMI协议与SMB协议横向移动
  • 05-Numpy基础-用于数组的文件输入输出
  • Docker微服务实战
  • NLNet论文总结和代码实现
  • 数字 IC 设计职位经典笔/面试题(三)
  • Matlab分割彩色图像
  • [数据集][目标检测]垃圾目标检测数据集VOC格式14963张44类别
  • MATLAB算法实战应用案例精讲-【深度学习】推荐系统模型DSSMDeepFM
  • 基于springboot的社区生活缴费系统/基于javaweb的水电缴费系统
  • Linux —— keepalived
  • ubuntu安装pyenv
  • 【Kubernetes】对外服务之 Ingress
  • 大数据项目实战(安装准备)
  • SAP ABAP基础语法-内表篇(二)
  • 读SQL学习指南(第3版)笔记05_过滤
  • 防火墙组建双击热备后老是主备自动切换怎么处理?
  • SQL地址门牌排序,字典序转为数字序
  • DevExpress WinForms数据编辑器组件,提供丰富的数据输入样式!(二)
  • HTML番外篇(五)-移动端适配
  • 数字孪生:重塑制造、医疗和能源等领域的未来
  • 本地搭建CFimagehost私人图床【公网远程访问】
  • stm32之8.中断
  • 【面试题】:前端怎么实现组件的封装和上传
  • Oracle-day2:随机函数、innot in、大小写转换、范围查询、日期类型、空值与非空值、排序、条件判断
  • keepalived
  • react-native-gesture-handler 手势的使用
  • 【SA8295P 源码分析】系列文章链接汇总 - 持续更新中
  • springBoot防止重复提交
  • lvs-dr模式+keepalived
  • [C++]笔记-知识点总结