android 端监控方案分享

hcoder
hcoder
hcoder
订阅者
422
文章
0
评论
测试交流1 199字数 576阅读1分55秒阅读模式

概述

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

  • 性能测试之用例得分评价和 CPU 内存数据监控——谈谈个人看法和实践总结
  • shell 管理 monkey 压力测试续——监控方案重构及 MCM 监控维护
  • shell 脚本通过 dumpsys SurfaceFlinger --latency 数据计算 FPS 和评价流畅度。

设计思路:


  • 设备端离线后台 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 文章源自玩技e族-https://www.playezu.com/190703.html

  • 监控脚本 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、报告数据刷新会在点击监控结果文件夹名称后刷新 文章源自玩技e族-https://www.playezu.com/190703.html

  • github:monitor-for-android

    android 端监控方案分享插图
    文章源自玩技e族-https://www.playezu.com/190703.html
软件测试功能测试工具文章源自玩技e族-https://www.playezu.com/190703.html文章源自玩技e族-https://www.playezu.com/190703.html
 
    • 雪人
      雪人 9

      军哥出品,必属精品 已点赞打赏不错的工具,用起来也简单。

      建议可以到社区的开源项目板块提交下?窗口名要怎么选呢,我这一直跑不出来 fps_window 的数据,以下图为例,我应该选取哪部分作为窗口名呢?
      已解决,手机问题为什么我生成的 html 看不到年月日信息呀这个手机需要 root 吗

    匿名

    发表评论

    匿名网友
    确定

    拖动滑块以完成验证