二、 使用 adb 进行测试
1. App 响应时间和响应速度测试
1.1 主要测试点
- 冷启动
首次启动 app 的时间间隔(只是启动时间, 不包括页面加载)
adb shell am start -W com.tencent.mm/.ui.LauncherUI
- 热启动
非首次启动 app 的时间间隔(只是启动时间, 不包括页面加载)
2 内存占用测试
2.1 主要测试点
- 空闲状态
切换至后台或者启动后不做任何操作, 消耗内存最少。 - 中强度状态
时间偏长的操作应用。 - 高强度状态
高强度使用应用, 可以跑 monkey 来测试(通常用来测试内存泄漏) 。
内存泄漏:指使用 malloc 或 new 申请了一块内存, 但是没有通过 free 或 delete 将内存释放, 导致这块内存一直处于占用状态。
adb shell dumpsys meminfo com.tencent.mm
3 CPU 繁忙测试
3.1 主要测试点
- 在空闲时间(切换至后台)的消耗, 基本没大应用使用 CPU
- 在运行一些应用的情况下, CPU 已占 50%的情况下, 观察应用程序占用 CPU 情况
- 在高负荷的情况下看 CPU 的表现(CPU 占用应是在 80%以上)
3.2 具体场景
- 应用空闲状态运行监测 CPU 占用率
应用按 Home 键退到后台, 不再占用系统的状态(通常是灭屏半分钟后)
CPU 占用率=0% - 应用中等规格运行监测 CPU 占用率
模拟用户最常见的使用场景
CPU 占用率≤30% - 应用满规格长时间正常运行监测 CPU 占用率
应用正常运行, 打开应用进行基本操作
CPU 占用率≤50%
adb shell dumpsys cpuinfo com.tencent.mm | findstr com.tencent.mm
adb shell top -m -s | findstr packageName
4 FPS 应用流畅度测试
-
开启 Profile GPU rendering
Settings→System→Advanced→Developer options→查找 profile→找到并单击 Profile GPU rendering→In adb shell dumpsys gfxinfo -
打开要测试的 app,测试
adb shell dumpsys gfxinfo 包名
- 导出结果为log.txt
adb shell dumpsys gfxinfo com.tencent.mm > Desktop\log.txt
- 通过 execl 进行表格处理可以直观的查看软件的流畅度
将log.txt文件中的结果部分保存到excel
- 在设备中显示结果
Settings→System→Advanced→Developer options→查找 profile→on screen as bars
5 GPU 过度渲染测试
-
开启 GPU 过度渲染
设置→开发者选项→单击 Debug GPU overdraw→选择 show overdraw areas
使用 genymoton 可能会导致模拟器无响应, 建议使用 AVD 模拟器。
-
打开被测的应用
-
GPU 过渡渲染不同的颜色代表不同的绘制程度
-
测试指标
控制过渡绘制为 2次
不允许存在 4次 过渡绘制
不允许存在面积超过屏幕 1/4 的 3次过渡绘制
三、 App 性能测试工具的使用
1 使用 monkey 对 App 进行压力测试
- Monkey命令
adb shell monkey -p 包名 1 -p 包名 2 ... -v -v -v 次数
例如:
adb shell monkey -p com.tencent.mm -v -v -v 500 > log.txt
2 使用 GT 测试 App 性能
2.1 GT 的使用
2.2 导出结果与分析
- 从安卓手机取文件 :
进入手机设备: adb shell
取文件: adb pull 文件名 C:\..\Desktop
- 在 Excel 中插入散点图(带平滑线)