当APP的用户反馈中频繁出现使用时卡顿,耗流量,启动慢等字眼时就说明APP的性能出现了问题。在APP上市前对APP进行性能测试是必不可少的步骤。
一般来说,APP性能测试主要针对内存、CPU、帧率(页面的显示由一帧一帧的画面组成,即画面渲染。帧率大小会影响页面的流畅度)、流量和启动时间。不同机型的性能特性会有所不同,在配置较低的手机测试APP性能,往往也会得到较差的结果,所有性能测试不能根据手机做横向对比,应该在同一台手机上对APP的不同版本进行比较。至于手机的选择,一般可以在用户占比较高的手机型号中选择性能较差的。
内存
内存作为性能测试关注的重点之一,可能出现的性能问题有:内存泄漏、申请了一块内存空间,使用完毕后没有释放,一直占着,自己不用,也不让别人用。内存溢出,APP占用的内存越来越大,无法限制,导致程序崩溃。当APP出现内存泄漏或内存溢出问题时,就会导致程序卡顿,甚至崩溃,是严重的性能问题。
CPU
当APP在运行过程中,如果CPU占用过高,也会导致程序卡顿或崩溃。
针对内存和CPU的测试执行
制定测试策略,并根据策略选择测试工具进行排查。
测试策略:
首先,检查新功能部分会不会引起内存、CPU性能问题。一般新功能容易导致性能bug。
接着,对主干流程进行排查,这些流程上的功能会较多地被用户使用。
另外,与老版本或同类型的APP的内存和CPU使用情况进行对比
排查时主要关注点有:
内存抖动
内存占用持续忽高忽低,不平缓。
内存持续升高
在页面上操作关闭页面时,尤其是多次进行开启关闭页面操作时,是否及时释放了内存,或是出现内存持续升高,根本停不下来的情况。
CPU占用过高
查看CPU在使用过程中的均值和走势。APP的界面显示都是在UI主线程内的,基本上在一个CPU上跑,一般在20%以下可接受。
内存和CPU都是底层的,对于Android系统可以通过工具Emmagee来测试。
PSS:应用实际使用内存
帧率
画面渲染时间过长,导致帧率降低,页面出现丢帧卡帧的现象。对于帧率的性能要求可以是每帧的渲染绘制时间不超过16 ms。
原因:当帧率 = 60帧/秒时,肉眼察觉不出区别,所以当帧率 ≥ 60帧/秒时,用户通常察觉不到页面卡顿的现象。每帧的渲染时间不超过16 ms就能达到1 s渲染绘制60帧的效果。
在对帧率进行测试时,通常采取的策略是遍历所有页面,检查每个页面每帧的渲染时长。
对于Android系统,可以采用 gfxinfo 进行帧率测试。
手机–设置–开发者选项–GPU呈现模式分析–在屏幕上显示为条形图
以黑色框出的绿色线条为基准,像左侧那些超出绿色线条以上的都代表那些帧率的渲染时间过长。
流量
1、测试主干流程是不是很耗费流量,是否存在重复或者无用的请求。
比如,加载一张图片却发了两次请求–重复的请求;根据接口协议,在进入某页面时应该没有修改数据的请求,但是每次都发送了–无用的请求。
2、留意资源量比较大的场景。
比如多张图片的加载,音频和视频的加载。这样的情况是否是服务器压缩后再发给app。
3、安装后首次启动是否有大量数据加载。
4、app在后台运行时是否仍然频繁向服务器发送请求。
流量测试工具Emmagee
Emmagee安装包下载地址:https://github.com/NetEase/Emmagee/releases.
Emmagee存在手机兼容性问题,如果测试后,流量显示N/A或者为0,可换成模拟器测试。
使用Emmagee测试得到的数据信息
启动时间
启动时间是指点击手机屏幕上的app图标到app主界面显示完成的这段时间。主界面显示可能有1个或者多个页面的显示,在app的代码中,一个页面就对应一个activity。启动时间一般是3~5s,如果超出这个范围,就需要开发人员排查问题。
启动时间过程会直接影响用户体验。测试要点如下:
1、安装后首次启动
2、常规启动
app安装完成,首次打开后正常退出(完全退出,不在后台),再次打开app。
**启动时间测试工具ADB **
1、通过adb logcat保存日志
2、查找Displayed关键字
3、根据activity名称来筛选
4、累加各activity的时间
启动时间与当时的网络有关,可以多重复几次取平均值