移动性能测试 android 端监控方案分享

浮云 · 2019年08月13日 · 最后由 ddup 回复于 2024年04月07日 · 5011 次阅读

概述

从最初分享安卓端监控方案过去四年了,期间监控方案也有很大变化,更新一版,最初的设计想法

设计思路:


  • 设备端离线后台 shell 脚本监控
  • 用 busybox 的 awk 做数据提取存为 csv
  • 结果获取到 PC 端用 python 脚本生成 html 报告

依赖文件:

  • 设备端需存在/data/local/tmp/busybox (busybox可到官网对应cpu架构下载) ,命令:
    adb push busybox /data/local/tmp
    adb shell chmod 755 /data/local/tmp/busybox

脚本文件:

  • 监控脚本 monitor.sh

    adb shell

    sh /data/local/tmp/monitor.sh "$monitor_folder" "$monitorWindow" "$monitorPackages" 5 $meminfo_type &

    参数说明:

    1、monitor_folder = 监控结果文件夹名(/data/local/tmp/$monitor_folder)

    2、monitorWindow = fps 监控窗口,不抓取为空""
    adb shell dumpsys SurfaceFlingerAllocated buffers 信息中获取,安卓 8.0 之后有标号如 #0、SurfaceView 后有 “ - ” 传参注意需要""

    3、monitorPackages = 额外抓取 heap、views、threads、FD 信息的进程,多个用 | 间隔,不抓取为空""

    4、5 = 5 秒间隔

    5、meminfo_type = 1,取所有进程 PSS,额外取指定进程详细信息,0 则只取配置进程内存信息

    预期监控时长结束后,停止监控:

    adb shell touch /data/local/tmp/stop

    获取结果

    adb pull /data/local/tmp/$monitor_folder

  • 监控脚本 monitor.py

    生成报告:(需安装python环境和pandas库)
    python monitor.py 文件夹路径
    说明:
    1、脚本会先遍历路径下 meminfo.csv 所在路径,并使用其上一级目录作为 case 名

    2、monitor_HTML 是报告的模板文件,数据采用的是生成 js 动态加载的形式,脚本会将其复制到传参目录下

    3、依次处理 csv 数据存为data/case名_csv结果文件夹名,list.js 为 case 选择列表数据,cpu 和 pss 存储了最大值和极值差的 csv

    4、查看报告数据需要浏览器有本地读写权限:

    chrome: start chrome.exe --allow-file-access-from-files

    firefox: about:config 中 privacy.file_unique_origin属性false

    5、报告数据刷新会在点击监控结果文件夹名称后刷新

  • github:monitor-for-android

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 9 条回复 时间 点赞

军哥出品,必属精品😻 已点赞打赏

不错的工具,用起来也简单。

建议可以到社区的开源项目板块提交下?

窗口名要怎么选呢,我这一直跑不出来 fps_window 的数据,以下图为例,我应该选取哪部分作为窗口名呢?

restrain0324 回复

已解决,手机问题

为什么我生成的 html 看不到年月日信息呀

这个手机需要 root 吗

大佬这个项目能在车机使用吗,最近在做单个 apk 和系统性能数据收集的工作

浮云 #11 · 2024年04月07日 Author
ddup 回复

安卓端适配,8155 的 android 11,车机分 android 和 qnx,监控方案不太一样,按需重新搞了

浮云 回复


打开报告·没有内容是什么原因呢,python 脚本也没有报错

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册