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

news2025/3/12 13:34:47

利用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 = 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()
  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.coloradmin.cn/o/917058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学会Mybatis框架:让你的代码更具灵活性、可维护性、安全性和高效性【二.动态SQL】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Mybatis的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Mybatis动态SQL如何应用 1.需求 2.…

2022美亚杯个人赛复刻

案件详情 于2022年10月,有市民因接获伪冒快递公司的电邮,不慎地于匪徒架设的假网站提供了个人信用咭资料导致经济损失。 警方追查下发现当中一名受骗市民男子李大輝 (TaiFai) 的信用卡曾经被匪徒在区内的商舖购物。 后来警方根据IP地址,锁定…

js实现定时器

用原生js实现一个倒计时效果.最下面有全部源码,需要自取 js语法: setTimeout:定时器 document.getElementById:Document的方法 getElementById()返回一个匹配特定 ID的元素。由于元素的 ID 在大部分情况下要求是独一无二的,这个方法自然而然地成为了一个高效查找特…

第三篇:对话框窗口部件 QDialog

对话框窗口部件 QDialog 对话框(Dialog)是计算机图形用户界面(GUI)中的一种常见窗口类型,通常用于与用户进行交互、获取信息、提供反馈或执行特定任务。对话框的主要目的是与用户进行短期的、有限的交互,以…

【校招VIP】产品职位理解之团队的配合和推进

考点介绍: 对于简历上有实习经验的同学,对于团队配合和项目推进是一个非常常见的提问点。产品经理经常会面临项目延期,无法上线的情况。基于此,产品经理应该做些什么来保障项目按时上线呢? 『产品职位理解之团队的配合…

THUHCSI人机语音交互实验室9篇论文被语音旗舰国际会议INTERSPEECH录用

2023年ISCA国际语音通讯学会年会(2023 Annual Conference of the International Speech Communication Association, INTERSPEECH 2023)将于2023年8月20日-24日在爱尔兰都柏林召开,清华大学人机语音交互实验室(THUHCSI&#xff09…

视频监控平台EasyCVR视频汇聚平台档案库房图书馆等可视化管理平台应用场景全面解析

档案是一种特殊的记录留存文献,具有珍贵的精神财富价值。它们是人类活动的真实见证,是辉煌时刻的历史记录,在社会发展和经济建设中发挥着至关重要的作用。 随着市场经济的不断发展和人类文明的飞速推进,档案的价值和作用变得越来…

【广州华锐互动】VR工厂消防安全演习提供了一种全新、生动的安全教育方式

在工业生产环境中,安全永远是首要的考虑因素。近年来,随着科技的发展,虚拟现实(VR)技术在各种领域的应用越来越广泛,包括教育和培训。其中,VR工厂消防安全演习就是一个典型的例子,它为员工提供了一种全新的…

msvcr120.dll丢失的解决方法,win10系统dll报错解决方法

今天,我将和大家分享一个在win10系统中经常遇到的问题:msvcr120.dll丢失。相信很多朋友在使用电脑的过程中都会遇到这个问题,那么如何解决呢?接下来,就让我为大家详细讲解一下解决方法。 首先,我们来了解一…

基于Spark+django的国漫推荐系统--计算机毕业设计项目

近年来,随着互联网的蓬勃发展,企事业单位对信息的管理提出了更高的要求。以传统的管理方式已无法满足现代人们的需求。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,随着各行业的不断发展,基…

pdf怎么转换成图片?用这几种简单方法搞定

pdf怎么转换成图片?PDF作为一种通用的文档格式,广泛应用于各个领域。然而,在某些情况下,我们可能需要将PDF文件转换成图片格式,以便更方便地在网页、社交媒体或演示中使用。下面就给大家介绍三种简单而高效的方法来实现…

基于swing的旅游管理系统java jsp旅行团信息mysql源代码

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于swing的旅游管理系统 系统有1权限:管…

【Win】Dell Command PowerShell Provider 一款强大的IT工具

Dell Command | PowerShell Provider 是一款强大的IT工具,它允许用户通过 Windows PowerShell 界面轻松管理 Dell 硬件平台的 BIOS 配置。它提供了一系列的 PowerShell cmdlets命令,这些命令可以帮助 IT 管理员对 Dell 硬件平台进行 BIOS 配置的控制和管…

【ES6】—【必备知识】—扩展运算符与rest参数

一、扩展运算符 1. 定义:把数组或类数组展开成用逗号隔开的值 function foo(a,b,c) {console.log(a,b,c) } let arr [1,2,3] foo(...arr)2. 把两个数组合并 2-1. ES5 实现 let arr1 [1,2,3] let arr2 [4,5,6] Array.prototype.push.apply(arr1, arr2) consol…

【PHP】文件包含-includerequire

文章目录 文件包含意义:四种形式文件加载原理include和require的区别文件的加载路径文件嵌套包含 文件包含 文件包含:在一个PHP脚本中,去将另外一个文件(PHP)包含进来,去合作完成一件事情。 意义&#xf…

sql递归查询

一、postgresql 递归sql with recursive p as(select t1.* from t_org_test t1 where t1.id2union allselect t2.*from t_org_test t2 join p on t2.parent_idp.id) select id,name,parent_id from p; sql中with xxxx as () 是对一个查询子句做别名,同时数据库会对…

【计算机视觉】递归神经网络在图像超分的应用Deep Recursive Residual Network for Image Super Resolution

DRCN: Deeply-Recursive Convolutional Network for Image Super-Resolution 总结 这篇文章是第一次将之前已有的递归神经网络(Recursive Neural Network)结构应用在图像超分辨率上。为了增加网络的感受野,提高网络性能,引入了深度递归神经网络&#x…

Unity脚本常用生命周期

Unity脚本在Unity引擎运行时会经历多个阶段的变化。如创建,初始化,按帧执行,固定执行,绘制,禁用,销毁等等。具体如下图所示: 我们创建脚本时都是默认继承了MonoBehaviour类,而MonoBe…

【文心一言】如何申请获得体验资格,并简单使用它的强大功能

目录 一、文心一言1.1、它能做什么1.2、技术特点1.3、申请方法 二、功能体验2.1、文心一言2.2、写冒泡排序代码 测试代码2.3、画一个爱心2.4、画一个星空 三、申请和通过3.1、申请时间3.2、通过时间 文心一言,国内首个大型人工智能对话模型,发布已经快一…

直播APP开发,协议盘点(五):实时传输协议RTP

简介: 在直播APP开发的过程中,搭建协议实现相应的功能是开发重点之一,而直播APP开发的协议是繁多且复杂的,所以从前段时间开始,我做了直播开发的协议篇,到今天为止我已经分享了四个协议,下面我为…