好文档 - 专业文书写作范文服务资料分享网站

adb命令测试安卓APP性能实例

天下 分享 时间: 加入收藏 我要投稿 点赞

安卓用户app性能测试

一、 响应

软件的响应时间和响应速度直接影响到用户的体验度,如果一个软件,迟迟加载不出来,会直接影响到软件的日活、留存。因此对于一个软件,对响应速度测试是必不可少的。

主要测试点:

1、冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载) 2、热启动:非首次启动app的时间间隔(只是启动时间,不包括页面加载) 3、完全启动:从启动到首页完全加载出来的时间间隔

4、有网启动:从发起跳转,到页面完全加载出来的时间间隔 5、无网启动:从发起跳转,到页面完全加载出来的时间间隔 (在项目中,主要测试关注点是冷启动,热启动)

1. 冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载) 测试方法:

adb shell am start -W packageName/ActivityName

含义:

ThisTime: 该Activity的启动耗时;

TotalTime: 应用自身启动耗时, ThisTime+应用application等资源启动时间; WaitTime: 系统启动应用耗时, TotalTime+系统资源启动时间

获取应用包名和Actively:手机点击app后在电脑cmd输入命令 adb shell dumpsys activity recents | findstr “intent={” |findstr \

用户APP测试结果:

adb shell am start -W packageName/ActivityName 日期 版本 ThisTime TotalTime WaitTime

2. 热启动:按back按键后再启动adb命令 用户APP测试结果:

5/19 V1.2.0 345 345 382 adb shell am start -W packageName/ActivityName 日期 版本 ThisTime TotalTime WaitTime 测试标准:冷启动时间不超过1.5s, 热启动不超过1s.

5/19 V1.2.0 319 319 355 二、 内存

在Android系统中,每个APP进程除了同其他进程共享内存(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(私有内存+比例分配共享内存)来衡量一个APP的内存开销。由于一个移动设备的内存是固定的,如果内存消耗过大就会造成应用卡顿或者闪退,需要对内存进行测试。正常情况下,应用不应占用过多的内存资源,且能够及时释放内存,保证整个应用内的稳定性和流畅性。 测试方法:

adb shell dumpsys meminfo packageName 含义:

Native heap alloc:JNI层的内存分配 Dalvik heap alloc:Java层的内存分配

如果这两个值一直增长,应用程序可能出现了内存泄漏。 TOTAL PSS:应用真正占据的内存大小

用户APP测试结果: adb shell dumpsys meminfo packageName 日期 版本 Native heap alloc Dalvik heap alloc TOTAL PSS

5/19 V1.2.0 18362 1653 43653 三、 CPU

CPU测试,主要关注的是cpu的占用率。很多时候,我们玩手机时,会出现发热发烫,那是因为CPU使用率过高,CPU过于繁忙,会使整个手机无法响应用户,整体性能降低,用户

体验就会很差,也容易引起ANR(application not responding, 主线程(UI线程)如果在规定时内没有处理完相应工作,就会出现ANR)等等一系列问题。 测试点:

1).在空闲时间(切换至后台)的消耗,基本没大应用使用cpu

2).在运行一些应用的情况下,cpu已占50%的情况下,观察应用程序占用cpu的情况 3).在高负荷的情况下看CPU的表现(cpu占用应是在80%以上)

具体场景:

1、应用空闲状态运行监测CPU占用率

空闲状态:应用按Home键退到后台,不再占用系统的状态(通常是灭屏半分钟后) CPU占用率=0%

2、应用中等规格运行监测CPU占用率 中等规格:模拟用户最常见的使用场景 CPU占用率≤30%

3、应用满规格长时间正常运行监测CPU占用率 Monkey测试 CPU占用率≤30%

4、应用正常运行期间监测CPU占用率峰值 应用正常运行:打开应用进行基本操作 CPU占用率≤50%

测试方法:

1)top -m -s cpu |grep packageName 含义:

-m 显示最大数 -s 按指定行排序 -t 显示进程名称

-n 在退出前刷新几次 -d 刷新间隔

2)adb shell dumpsys cpuinfo |findstr packageName 用户APP测试结果:

adb shell dumpsys cpuinfo |findstr packageName 日期 版本 CPU%

5/20 V1.2.0 四、 FPS (应用的使用流畅度)

FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。

′一般来说,Android设备的屏幕刷新率为60帧/s,要保持画面流畅不卡顿,要求每一帧的时间不超过1000/60=16.6ms,这就是16ms的黄金准则,如果中间的某些帧的渲染时间超过16ms,就会导致这段时间的画面发生了跳帧,因此原本流畅的画面变发生了卡顿。

测试方法: 1、adb命令

1)打开手机:开发者选项—>profile GPU rendering —> in adb shell dumpsys gfxinfo 2) 操作要测试的apk

3) cmd窗口输入命令: adb shell dumpsys gfxinfo packageName

4) 得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比 含义:

Draw: 表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。

Process:表示渲染引擎执行显示列表所花的时间,view越多,时间就越长。 Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间。

Draw + Process + Execute = 完整显示一帧 ,这个时间要小于16ms才能保存每秒60帧。

2、除了使用adb shell, 还可以直接使用开发者选项自带的图表

1)打开手机:开发者选项—>profile GPU rendering —> on screen as bars 2) 操作被测的软件

3)界面会显示如下的一个统计数据表 含义:

绿色的线是16ms的分隔线,大于16ms代表流畅度不是很好,需要优化。

用户APP测试结果: 5/21 V1.2.0 截图

五、 GPU渲染

GPU渲染是指在一个像素点上绘制多次(超过一次):显示一个什么都没有做的activity界面算作画了1层,给activity加一个背景是第2层,在上面放了一个Text View(有背景的Text View)是第3层,Text View显示文本就是第4层仅仅只是为了显示一个文本,却在同

一个像素点绘制了四次,这是一定要优化的。过度绘制对动画性能的影响是极其严重的,如果你想要流畅的动画效果,那么一定不能忽视过度绘制。 测试方法:

1、手机自动的Debug GPU overdraw

1)打开手机—>设置—>开发者选项—>Debug GPU overdraw—>show overdraw areas 2)打开被测的应用

GPU过渡渲染不同的颜色代表不同的绘制程度 1)、原色:无过渡绘制 2)、蓝色:绘制一次 (理想状态) 3)、绿色:绘制二次 4)、浅红:绘制三次 (可以优化) 5)、深红:绘制四次 (必须优化) 测试指标:

1、控制过渡绘制为2x

2、不允许存在4x过渡绘制

3、不允许存在面积超过屏幕1/4的3x过渡绘制 用户APP测试结果: 5/21 V1.2.0 截图

六、 耗电量

测试应用对电量的消耗前需要对手机本身的电量消耗有个大概了解,测试前先看规定时间内手机正常待机下(重启后待机)电量消耗为多少。然后再启动待测试APP看看消耗的电量增加了多少取差值。

测试点:

测试手机安装目标APK前后待机功耗无明显差异;

常见使用场景中能够正常进入待机,待机电流在正常范围内; 长时间连续使用应用无异常耗电现象。

测试方法 :(先关闭所有的应用,再打开被测app)

1、使用第三方测试工具:Emmagee、GT等,只需要测试的电流静置一晚,待机电流在正常范围内即可。一般是被测应用对比待机电流<=2mA。 2、使用adb命令

adb shell dumpsys batterystats |grep packageName adb shell dumpsys batterystats |findstr packageName

adb命令测试安卓APP性能实例

安卓用户app性能测试一、响应软件的响应时间和响应速度直接影响到用户的体验度,如果一个软件,迟迟加载不出来,会直接影响到软件的日活、留存。因此对于一个软件,对响应速度测试是必不可少的。主要测试点:1、冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)2、热启动:非首次启动app的时间间隔(只是启动时间,不包括
推荐度:
点击下载文档文档为doc格式
8xp8z9m13502tjb2ixwe3xy6q955i0014ug
领取福利

微信扫码领取福利

微信扫码分享