利用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表:
  1. 连接手机,指定要测试的应用(以 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 = value
    fps = 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()

  2. 检查数据库对应的表是否有数据插入(以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博客站

相关推荐
feifeigo12319 分钟前
升级到MySQL 8.4,MySQL启动报错:io_setup() failed with EAGAIN
数据库·mysql·adb
A__tao5 小时前
一键将 SQL 转为 Java 实体类,全面支持 MySQL / PostgreSQL / Oracle!
java·sql·mysql
一只fish6 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(17)
数据库·mysql
叁沐7 小时前
MySQL 06 全局锁和表锁:给表加个字段怎么有这么多阻碍?
mysql
与火星的孩子对话8 小时前
Unity进阶课程【六】Android、ios、Pad 终端设备打包局域网IP调试、USB调试、性能检测、控制台打印日志等、C#
android·unity·ios·c#·ip
power 雀儿8 小时前
集群聊天服务器---MySQL数据库的建立
服务器·数据库·mysql
Edingbrugh.南空10 小时前
Flink MySQL CDC 环境配置与验证
mysql·adb·flink
BD_Marathon11 小时前
Ubuntu:Mysql服务器
服务器·mysql·ubuntu
程序猿小D12 小时前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的电影小说网站管理系统,推荐!
java·数据库·mysql·spring·毕业设计·ssm框架·电影小说网站
羊小猪~~12 小时前
数据库学习笔记(十七)--触发器的使用
数据库·人工智能·后端·sql·深度学习·mysql·考研