app性能测试

app性能测试

2023年6月28日发(作者:)

app性能测试⼀、android的app性能测试包括的测试项:

  响应、内存、CPU、FPS、GPU、耗电、耗流量⼆、响应  1. 响应主要测试点:    1. 启动:⾸次启动app的时间间隔(只是启动时间,不包括页⾯加载)    2. 热启动:⾮⾸次启动 app的时间间隔(只是启动时间,不包括页⾯加载)    3. 完全启动:从启动到⾸页完全加载出来的时间间隔    4. 有⽹ 启动:从发起跳转,到页⾯完全加载出来的时间间隔    5. ⽆⽹启动:从发起跳转,到页⾯完全加载出来的时间间隔 (在项⽬中,主要测试关注点是冷启动,热启动)

  2. 测试⽅法:    1. 使⽤adb命令      1. 冷启动 adb shell am start -W packageName/ActivityName(绝对路径,⾸个 Activity)                ThisTime:该Activity的启动耗时;TotalTime: 应⽤⾃⾝启动耗时, ThisTime+应⽤application等资源启动时间;

WaitTime: 系统启动应⽤耗时,TotalTime+系统资源启动时间      2. 热启动:按back按键后再启动adb命令                 测试标准:冷启动时间不超过1.5s, 热启动不超过1s      3. 完全启动,⽆⽹启动,有⽹启动都可以通过fiddler抓包来获取启动的时间,通过设置⽹速和抓包,可以获取启动时 间,但是有⼀定的误差。在项⽬中,⼀般只需要测试冷启动,热启动便可

三、内存  测试点:    1. 空闲状态:切换⾄后台或者启动后不做任何操作,消耗内存最少。    2. 中强度状态:时间偏长的操作应 ⽤。    3. ⾼强度状态:⾼强度使⽤应⽤,可以跑monkey来测试(通常⽤来测试内存泄漏)。

  内存泄漏:指应⽤⾥的内存⼀直没有释放,内存⼀直增加 ,系统内存⼀直减少

  测试⽅法:    1. 使⽤adb命令: adb shell dumpsys meminfo packageName

     获取应⽤包名和Actively: adb shell dumpsys window | findstr mCurrentFocus           测试关注点: 1. Native heap alloc:JIN的内存分配   2. Dalvik heap alloc:Java层的内存分配   3. PSS           关注点:      1. 退出某个页⾯后,内存是否有回落。 如果没有及时回落,且程序⾃动GC或者⼿动GC,那便可确认有问题。      2. 进⾏某个操作后,内存是否增长过快。 如果增长过快,也有可能存在风险,需重复操作确认。测试⽅法:借助性能测试⼯具:GC、Emmagee(只⽀持安卓6.0及以下的版本)、iTest等⼯具均可以监控。  android检查内存泄露步骤:    1、运⾏Monkey进⾏压⼒测试:      adb shell monkey -p --pct-touch 100 --ingore-crashes --throttle 1000 -s 100 -v -v 50    2、监控内存值,如果出现过⼤等递增异常则保存HPROF⽂件(hprof⽂件是Java 虚拟机的Heap快照)⽤于分析查看应⽤内存的命令:      adb shell dumpsys meminfo (进程名)      如果发现内存过⼤,则保存HPROF⽂件:adb shell am dumpheap <进程名> <保存路径>    3、分析hprof⽂件      ⽤⼯具MAT来查看,⾸先还要这个HPROF⽂件转换成MAT可读的⽂件      在Android SDK tool⾥⾯有个hprof-conv命令:      hprof-conv <原HPROF⽂件路径> <转换后的HPROF路径>      hprof-conv     4、⽤MAT⼯具打开转换后的HPROF⽂件      ⼀般选择Leak Suspects Report(通过SQL语句来查询对象有没有被释放掉,如果有多个相同的对象,则会存在内存泄露的问题)四、CPU  1. 测试点:    1. 在空闲时间(切换⾄后台)的消耗,基本没⼤应⽤使⽤cpu    2. 在运⾏⼀些应⽤的情况下,cpu已占50%的情 况下,观察应⽤程序占⽤cpu的情况    3. 在⾼负荷的情况下看CPU的表现(cpu占⽤应是在80%以上)  2. 具体场景:    1. 应⽤空闲状态运⾏监测CPU占⽤率 空闲状态:应⽤按Home键退到后台,不再占⽤系统的状态(通常 是灭屏半分钟后) CPU占⽤率=0%

    2. 应⽤中等规格运⾏监测CPU占⽤率 中等规格:模拟⽤户最常见的使⽤场景;CPU占⽤率≤30%

    3. 应⽤满规格长时间正常运⾏监测CPU占⽤率 Monkey测试;CPU占⽤率≤30%

    4. 应⽤正常运⾏期间监测CPU占⽤率峰值 应⽤正常运⾏:打开应⽤进⾏基本操作;CPU占⽤率≤50%  3. 测试⽅法:    1. 使⽤adb命令:adb shell      1. adb shell dumpsys cpuinfo | grep packagename              2. top命令        adb shell top -m 10 -s cpu   查看占⽤cpu最⾼的前10个程序(-t 显⽰进程名称,-s 按指定⾏排序,-n 在退出前刷新⼏次,-d 刷新间隔,-m 显⽰最⼤数量)        adb shell top | grep PackageName  查询某个应⽤的CPU占⽤率(如果反复进⾏某个操作,cpu占⽤过⾼且⼀直⽆法释放,那便可能存在风险)五、TPS  FPS是图像领域中的定义,是指画⾯每秒传输帧数,通俗来讲就是指动画或视频的画⾯数。FPS是测量⽤于保存、显 ⽰动态视频的信息数量。每秒钟帧数越多,所显⽰的动作就会越流畅。 ⼀般来说,Android设备的屏幕刷新率为60帧/s,要保持画⾯流畅不卡顿,要求每⼀帧的时间不超过 1000/60=16.6ms,这就是16ms的黄⾦准则,如果中间的某些帧的渲染时间超过16ms,就会导致这段时间的画⾯发 ⽣了跳帧,因此原本流畅的画⾯变发⽣了卡顿。  1. 测试⽅法:    1. adb命令      1. 打开⼿机:开发者选项—>profile GPU rendering(GPU渲染模式分析/GPU显⽰配置⽂ 件/GPU呈现模式分析) —> in adbshell 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. 也可以使⽤第三⽅测试⼯具:Emmagee、GT等六、GPU  GPU渲染是指在⼀个像素点上绘制多次(超过⼀次):显⽰⼀个什么都没有做的activity界⾯算作画了1层,给activity 加⼀个背景是第2层,在上⾯放了⼀个Text View(有背景的Text View)是第3层,Text View显⽰⽂本就是第4层仅仅 只是为了显⽰⼀个⽂本,却在同⼀个像素点绘制了四次,这是⼀定要优化的。过度绘制对动画性能的影响是极其严重 的,如果你想要流畅的动画效果,那么⼀定不能忽视过度绘制。

  GPU过渡渲染不同的颜⾊代表不同的绘制程度    1. 原⾊:⽆过渡绘制    2. 蓝⾊:绘制⼀次 (理想状态)    3. 绿 ⾊:绘制⼆次    4. 浅红:绘制三次 (可以优化)    5. 深红:绘制四次 (必须优化)

  测试指标:    1. 控制过渡绘制为2x    2. 不允许存在4x过渡绘制    3. 不允许存在⾯积超过屏幕1/4的3x过渡绘制七、电量  1. 测试场景:    1. app运⾏但没有执⾏业务操作时的耗电量

    2. app运⾏且密集执⾏业务操作时的耗电量

    3. app后台运⾏的耗电量  2. 测试⽅法:

   ⽅法1:    1. 采⽤市场上提供的第三⽅⼯具,如⾦⼭电池管家之类的   ⽅法2:    1. android通过adb命令“adb shell dumpsys battery”来获取应⽤的耗电量信息,adb shell dumpsys battery set level 100,修改电量          2. iOS通过Apple的官⽅⼯具Sysdiagnose来收集耗电量信息,然后,可以进⼀步通过Instrument⼯具链 中的 Energy Diagnostics进⾏耗电量分析     3. 获取整个设备的电量消耗信息: adb shell dumpsys batterystats | more

    4. 获取某个apk的电量消耗信息: adb shell dumpsys batterystats | more

    5. ⼿机当前使⽤的内存情况,各个线程的内存占⽤情况:adb shell dumpsys meminfo

    6. ⼿机的电池信息:adb shell dumpsys batteryinfo

    7. adb shell top -m 10 -s cpu CPU消耗前10的应⽤清单⼋、流量  借助于Android和iOS⾃带的⼯具进⾏流量统计,也可以利 ⽤tcpdump、Wireshark和Fiddler等⽹络分析⼯具  1. 测试场景:    1. app执⾏业务操作引起的流量

    2. app在后台运⾏时的消耗流量

    3. app安装完成后⾸次启动耗费的流量

    4. app安装包本⾝的⼤⼩

    5. app内购买或者升级需要的流量  2. 测试⽅法:    android系统

    1. ⽹络流量信息通常存储在/proc/net/dev⽬录下,也可以直接利⽤ADB⼯具获取实时 的流量信息

    2. 获取被测程序的uid,pid:adb shell ps |findstr ;下⾯的uid:10129,pid:30608    3. 也可以通过pid查询uid:adb shell cat proc/30608/status

    4. 获取实时的累计流量信息: adb shell

      cat /proc/uid_status/10129/tcp_rcv 接收流量信息--下⾏流量

      cat /proc/uid_status/10129/tcp_snd 发送流量信息--上⾏流量

    iOS系统      可以使⽤Xcode⾃带的性能分析⼯具集中的Network Activity,分析具体的流量使⽤情况

  3. 降低流量的场景⽅法:

    1. 启⽤数据压缩,尤其是图⽚

    2. 使⽤优化的数据格式,⽐如同样信息量的JSON⽂件就要⽐XML⽂件⼩

    3. 遇到既需要加密⼜需要压缩的场景,⼀定是先压缩再加密

    4. 减少单次GUI操作触发的后台调⽤数量

    5. 每次回传数据尽可能只包括必要的数据

    6. 启⽤客户端的缓存机制

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687954929a60572.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信