前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于tidevice采集iOS性能数据

基于tidevice采集iOS性能数据

作者头像
测试加
发布2022-06-21 16:31:30
1.8K1
发布2022-06-21 16:31:30
举报

背景

在iOS性能专项测试会进行采集iOS性能数据,常见性能数据指标: 内存、CPU、FPS、网络、磁盘等。如果了解iOS的同学应该都了解系统生态比较封闭、提供开放接口比较少,想要通过外部采集方式拿到iOS性能数据很难。

到现在能做到跨平台,对非越狱 iOS机器进行监控数据的貌似只有腾讯一家 Perfdog,GitHub 上比较有名的关于 iOS 设备控制仓库上例如 facebook idb,libimobiledevice 等,也都没有获取性能数据相关内容。

Perfdog(腾讯WeTest部门商业化产品),https://perfdog.qq.com/, 一开始使用的PerfDog来做性能分是免费的, 但是从21年9月开始就收费了, 而且起步价3000¥/3000分钟还不便宜。个人使用仅20分钟配额, 实在不够。

Perfdog,确实非常优秀,但是腾讯对于PerfDog的技术还是比较保密的,查看了官方文档介绍,一点也没透露是如何采集iOS性能数据的。

Perfdog

另外一个方案就是使用Xcode,Xcode工具本身集成提供获取iOS性能工具instruments。

instruments工具提供了很多小工具,比如测试CPU、启动时间、内存泄漏分析,instruments工具更多是面向开发者使用的,对于测试人员如果想要好,还是有一定难度。

使用本地源码编译, 采集某个应用的CPU。

在appstore下载的app启动性能采集,会报错需求开发者签名。

但是可以看出instruments工具的一些问题:

  • 工具定位比较专业,小白比较难入手。
  • 测试应用必须源码编译出来的,否则不能启动应用。
  • 测试数据不易懂
  • 不能结合自动测试使用

tidevice的入门介绍,可以参考iOS自动化工具tidevice初探这篇文章,tidevice可以通过命令行或者python脚本方式采集iOS性能数据。本文会介绍 tidevice是如何采集iOS性能数据。

性能采集

tidevice项目地址:

代码语言:javascript
复制
https://github.com/alibaba/taobao-iphone-device

安装命令:

代码语言:javascript
复制
pip3 install tidevice

查看App应用名称

代码语言:javascript
复制
tidevice applist

命令行方式

查看性能数据命令:

代码语言:javascript
复制
tidevice perf -B tv.danmaku.bilianime(包名)

命令行启动后就一直开始采集数据,手动ctr + c停止采集数据。

输出数据格式如下, 采集时间使用时间戳格式。

代码语言:javascript
复制
fps {'fps': 46, 'value': 46, 'timestamp': 1655023837471}
gpu {'device': 22, 'renderer': 20, 'tiler': 22, 'value': 22, 'timestamp': 1655023837572}
cpu {'timestamp': 1655023837647, 'pid': 2734, 'value': 0.6984475878545683, 'sys_value': 83.33333333333331, 'count': 2}
memory {'pid': 2734, 'timestamp': 1655023837647, 'value': 148.61046600341797}
network {'timestamp': 1655023837613, 'downFlow': 78.1064453125, 'upFlow': 0.7294921875}

python方式

代码例子如下:

代码语言:javascript
复制
import time
import tidevice
from tidevice._perf import DataType

t = tidevice.Device()
perf = tidevice.Performance(t, [DataType.CPU, DataType.MEMORY, DataType.NETWORK, DataType.FPS, DataType.PAGE, DataType.SCREENSHOT, DataType.GPU])
#  tidevice version <= 0.4.16:
#  perf = tidevice.Performance(t)

def callback(_type: tidevice.DataType, value: dict):
    print("R:", _type.value, value)


perf.start("tv.danmaku.bilianime", callback=callback)
time.sleep()
perf.stop()

输出数据格式和命令行输出一致, 在脚本中设置sleep时间为停止时间点。

小结

本文就介绍了tidevice工具的iOS性能数据采集功能,比较适合在外采测试工具不充足的情况下,使用tidevice做iOS专项测试。

但是毕竟是开源免费产品,后续是否能及时支持新iOS系统、及bug修复,就需要看作者的更新速度了。

最后tidevice性能采集这部分仅能帮助我们输出数据,下文会使用python + pychart自动生成实时的性能采集报告。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试加 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 性能采集
    • 命令行方式
      • python方式
      • 小结
      相关产品与服务
      测试服务
      测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档