测试基础 移动端性能测试方法总结

xujinyuan · 2017年09月22日 · 最后由 小唐 回复于 2019年07月17日 · 3287 次阅读

查看 CPU 占用率
1、使用命令 adb shell top -m 10 -s cpu(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量)

2、通过 proc 获取 CPU 信息。
adb shell cat /proc/stat | grep cpu > totalcpu0

3、Android Studio 自带 CPU 检测功能

耗电测试:

1、PowerStat

2、电量的测试方法(adb shell dumpsys batterystats)
1)首先要初始化 batterystats 数据
adb shell dumpsys batterystats --reset
2)上面的操作执行完毕后,拔掉手机,操作你的 App,操作完成后,重新连接手机,执行下面的命令,收集 Battery 数据:
adb shell dumpsys batterystats > batterystats.txt

3、PowerTutor

流畅度测试:

1、Android Studio 自带 GPU 测试功能
2、FPS Meter
3、系统自带功能,GPU 呈现模式分析

流量测试:
1、Android Studio 自带流量检测功能
2、tcpdump+Wireshark 抓包测试法
在 App 运行期间,把手机收发的所有报文度抓取下来,再计算收发报文总大小,即 App 消耗的流量。

内存测试:
1、adb shell dumpsys meminfo 或 adb shell dumpsys meminfo
2、Android Studio 中对应进程的 Heap
3、内存泄露工具 LeakCanary

cpu 端:
手机根目录下有个 proc 文件夹,里面会存放一些内存的信息。每个应用对应一个文件夹,文件夹的名称就是应用的 pid。该文件夹下面会有一个 stat 文件,里面会存放些应用的运行信息。
对整个手机,proc 下同样有一个 stat 文件,里面有存放了类似的信息,
计算 cpu 占用时,使用的公式为:(B-A)/(TB-TA)*100,其中 A 为被测应用第一次获取到的 cpu 情况,B 为 A 间隔 500 毫秒后再次获取到 cpu 情况,TA 为整个手机的 cpu 情况,TB 为 TA 间隔 500 毫秒后再次获取到的 cpu 情况。当前应用有多个进程时,所得的 cpu 占用为多个进程的 cpu 占用和。

内存端:
android sdk 提供了 getTotalPss() 的接口获取指定 pid 的内存占用。应用有多个进程时,总的内存占用为多个进程的 pss 值之和。

网络流量:
android sdk 提供了 TrafficStats.getUidTxBytes(uid),TrafficStats.getUidRxBytes(uid) 两个接口去获取指定应用的流量使用情况。

耗电:
dumpsys batterystats 命令里面会输出各个应用的耗电情况,但该命令对手机的系统版本有要求,且应用内使用时需要有 root 权限。

共收到 5 条回复 时间 点赞

怎么从这些性能数据中分析出问题呢?

已收藏,希望未来用的上,最后能麻烦下题主,总结下如何分析下问题的过程吗?

二楼提了一个好问题,同求

金主 回复

1.和竞品的性能数据做对比,数据比对方差个 10%,可能就是问题了
2.和历史数据做对比,如果整体数据比以往差个 10%,可能就是问题了
3.观察测试过程中的异常数值,突然间数据异常±50%,可能就是问题了
4.数据明显异常,例如开了 APP 后,10 分内:钟掉 10% 的电/用掉 1G 流量/内存泄露 500M/CPU 占用 80%
※上面都是我个人的推测,瞎掰的。⚽ ⚽ 我自己还没做过性能测试。

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