APP性能测试

一、响应

测试点:

  1. 冷启动:首次启动APP的时间间隔(只是启动时间,不包括页面加载)
    adb shell am start -W packageName/ActivityName(绝对路径,首个Activity)

     含义:
    ThisTime:该Activity的启动耗时
    TotalTime:应用自身启动耗时,ThisTime+应用application等资源启动耗时
    WaitTime:系统启动应用耗时,TotalTime+系统资源启动时间
    测试标准:冷启动时间TotalTime不超过1.5秒

  2. 热启动:按back键后再启动adb命令

     测试标准:热启动时间不超过1秒

  3.  完全启动:从启动到首页完全加载出来的时间间隔

  4. 有网启动:从发起跳转,到页面完全加载出来的时间间隔
  5. 无网启动:从发起跳转,到页面完全加载出来的时间间隔
    (一般只关注冷启动和热启动即可)

二、内存

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

测试点:

  1. 空闲状态:切换至后台或者启动后不做任何操作,消耗最小  
  2. 中强度状态:时间偏长的操作应用
  3. 高强度状态:高强度使用应用,可以跑moneky来测试
    内存泄漏:应用内的内存没有释放,内存一直增加,系统内存一直减少

测试方法:

  1. 使用adb命令:
    adb shell dumpsys meminfo packageName

     

     

     

     关注点:
    1、Native heap alloc:JNI层的内存分配
    2、Dalvik heap alloc:Java层的内存分配
    如果这两个值一直增长,应用程序可能出现了内存泄漏
    Total的PSS:应用真正占据的内存大小

  2. 使用性能测试工具:Emmagge(一直没更新了)、GT(需要接入sdk)、Android Monitor等
    关注点:
    1、退出某个页面后,内存是否有回落:如果没有及时回落,且程序自动GC或者手动GC,那便可确认有问题
    2、进行某个操作后,内存是否增长过快:如果增长过快,也可能有风险,需要重复操作确认

三、CPU

  cpu测试,主要是关注cpu的占用率。cpu占用率过高,容易引起无法响应、ANR(application not responding)等问题

测试点:

  1. 在空闲时间(切换至后台)的消耗
  2. 在运行一些应用的情况下,观察应用程序占用cpu的情况
  3. 在高负荷的情况下,观察应用程序占用cpu的表现

具体场景:

  1、应用空闲状态运行监测CPU占用率
  空闲状态:应用按Home键退到后台,不再占用系统的状态(通常是灭屏半分钟后)
  CPU占用率=0%
 
  2、应用中等规格运行监测CPU占用率
  中等规格:模拟用户最常见的使用场景
  CPU占用率≤30%
 
  3、应用满规格长时间正常运行监测CPU占用率
  Monkey测试
  CPU占用率≤30%
 
  4、应用正常运行期间监测CPU占用率峰值
  应用正常运行:打开应用进行基本操作
  CPU占用率≤50%

测试方法:

  1. 使用adb命令
    1、adb shell top -n 3|grep packageName

     

     top cpu参数:
    -m 显示最大数
    -s 按指定列序号排序(1-x,默认是9)
    -t 显示进程名称
    -n 在退出前刷新几次
    -d 刷新间隔
    如果反复进行某个操作,cpu占用过高且一直无法释放,那便可能存在风险

    2、adb shell dumpsys cpuinfo |grep packageName

     

  2. 使用第三方工具:Emmagee、GT等

  3. 使用Android Monitor  


四、FPS

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

测试方法:

  1. adb命令
    1)打开手机:开发者选项-->GPU呈现模式分析 --> 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帧
    
    5)通过Excel进行表格处理可以直观的查看软件的流畅度
        

 

  2、使用开发者选项自带的图表
    1) 打开手机:开发者选项 --> GPU呈现模式分析 --> 在屏幕上显示为条形图
       2)操作被测得软件,界面会显示条形图
    

 

   3、使用第三方测试工具:Emmagee、GT等
   4、使用Android Monitor

 

五、GPU渲染

  gpu渲染是指在一个像素点上绘制多次(超过一次):显示一个什么都没有做的activity界面算作画了1层,给activity加一个背景是第2层,在上面放了一个Text View(有背景的Text View)是第3层,Text View显示文本就是第4层仅仅只是为了显示一个文本,却在同一个像素点绘制了四次,这是一定要优化的。过度绘制对动画性能的影响是极其严重的,如果你想要流畅的动画效果,那么一定不能忽视过度绘制。

测试方法:  

  1)打开开发者选项 -- > 调试GPU过度绘制 --> 显示过度绘制区域
  2)打开被测应用,可以看到不同颜色的绘制程度
    原色:无过度绘制
    蓝色:绘制一次(理想状态)
    绿色:绘制两次
    浅红:绘制三次
    深红:绘制四次(必须优化)

测试指标  

  1. 控制过滤绘制为2x
  2. 不允许存在4x过度绘制
  3. 不允许存在面积超过屏幕1/4的3x过度绘制

 

六、耗电量

  测试前先看下规定时间内手机正常待机下耗电量为多少,然后再启动APP测试耗电量

测试点:

  1. 测试手机安装apk前后待机状态功耗无明显差别
  2. 常见使用场景中,耗电量在正常范围内
  3. 长时间连续使用应用,耗电量正常

测试方法:

  1. adb命令

    #设置,目的:依照时间顺序展示各个wakelock的详细信息
    adb shell dumpsys batterystats --enable full-wake-history
    #重置batterystats数据
    adb shell dumpsys batterystats --reset
    #执行测试用例
    #完成测试用例执行,连接设备,导出数据
    adb shell dumpsys batterystats > bugreport.txt
    #Android 7.0及以上
    adb bugreport bugreport.zip

  2. 使用第三方测试工具:Emmagee、GT等

 

posted @ 2021-06-18 15:02  殊胜  阅读(493)  评论(0)    收藏  举报