安卓专项测试
Posted 拉努斯石
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓专项测试相关的知识,希望对你有一定的参考价值。
APP性能测试指标如下:
1、资源消耗
2、内存泄露
3、电量功耗
4、耗时
5、网络流量消耗
6、移动终端相关资源利用率
7、帧率
8、渲染等等....
测试流程概况起来包括但不限于以下几点:
组件初始化时间(业务方埋点)
APP启动时间(冷启动、热启动)
CPU占用(活动、静默状态)
PSS内存占用(活动、静默状态)//不能root手机,所以没有取USS电池温度变化(活动、静默状态)FPS硬件渲染掉帧数单帧渲染平均时间单帧检测处理时间(业务方埋点)
OS版本:4.4、5.0、5.1、4.2、4.3、6.0、4.0
品牌覆盖:华为、小米、Nexus、VIVO、奇酷、酷派、三星、锤子
分辨率覆盖:1920X1080、2560X1440、1280X720、854X480
业务场景:针对业务特点进行设置的测试场景,在此不表。
FPS测试:
1、概念: FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。
卡顿人体感觉标准:帧率不高于16ms,针对android系统。 此时在命令输出中会有一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比。
方案如下:
1. 通过命令: dumpsys SurfaceFlinger | grep "|....|" 获取当前置顶窗口名称
2. 历史记录127行数据,按60帧算可记录2.12S数据,从而不用频繁获取。(最终考虑设定1.6S间隔刷新数据。)
3. 定期清零重新记录,避免如何分清哪些数据是上次的。命令: dumpsys SurfaceFlinger --latency-clear
4. 有刷新则计算帧率,无刷新则不输出数据,有时候取到的fps为1,就是这个原因
5. 每次采样数据大于等于1帧则计算FPS,丢帧率,最大帧间隔
6. 针对业务需求,增加了单帧平均渲染时间的统计
内存测试:
内存测试中的测试子项:
1)空闲状态下的应用内存消耗情况
2)中等规格状态下的应用内存消耗情况
3)满规格状态下的应用内存消耗情况
4)应用内存峰值情况
5)应用内存泄露情况
6)应用是否常驻内存
7)压力测试后的内存使用情况
内存问题现象:
1)内存抖动
2)大内存对象被分配
3)内存不断增长
4)频繁GC
内存数据获取:
1、各种linux命令(top、free、meminfo…)
2、通过dumpsys
adb shell dumpsys meminfo [pakagename | pid]
3、通过/system/xbin/procrank工具
adb shell procrank
5. android检查内存泄露步骤:
1、运行Monkey进行压力测试:
adb shell monkey -p cn.microinvestment.weitou --pct-touch 100 --ingore-crashes --throttle 1000 -s 100 -v -v 50
2、监控内存值,如果出现过大等递增异常则保存HPROF文件(hprof文件是Java 虚拟机的Heap快照)用于分析查看应用内存的命令:
adb shell dumpsys meminfo cn.microinvestment.weitou(进程名)
如果发现内存过大,则保存HPROF文件:adb shell am dumpheap <进程名> <保存路径>
3、分析hprof文件
用工具MAT来查看,首先还要这个HPROF文件转换成MAT可读的文件
在Android SDK tool里面有个hprof-conv命令:
hprof-conv <原HPROF文件路径> <转换后的HPROF路径>
hprof-conv a.hprof b.hprof
4、用MAT工具打开转换后的HPROF文件
一般选择Leak Suspects Report(通过SQL语句来查询对象有没有被释放掉,如果有多个相同的对象,则会存在内存泄露的问题)
以上是关于安卓专项测试的主要内容,如果未能解决你的问题,请参考以下文章