2.4 App性能测试
前言
本篇详细讲解了APP性能测试的六大内容:内存、CPU、流量、电量、流畅度以及启动速度。
1 测试环境搭建
环境要求
- 依赖软件:MuMu模拟器(适用于Windows和Mac)
- App安装包:通过APK安装包或应用平台进行安装。
2 APP性能测试
①测试内容
APP性能测试关注应用使用期间对硬件资源(CPU、内存、流量、电量)的占用情况,以及应用的稳定性和响应速度。
②测试工具
SoloPi:一款无线Android自动化工具,具备录制回放和性能测试功能。
③功能特点
- 性能测试:限制CPU、内存和网络环境,以模拟低性能场景。
- 录制回放:记录用户操作并在不同设备上进行回放。
- 一机多控:通过一台主机控制多台设备,提高兼容性测试效率。
④测试步骤
- 打开SoloPi,选择性能测试
- 选择被测应用,勾选监控指标
- 点击开始监控,打开被测APP应用开始测试
- 查看数据采集结果
3 APP性能测试关注点
- APP使用时对CPU、内存的占用情况
- APP使用时是否流畅
- APP使用时电量流量的消耗情况
- APP的启动时间是否过长
- APP是否能长时间稳定运行
3.1 内存
①监控指标
- Private dirty(私有内存):进程独占内存,也就是进程销毁时可以回收的内存容量。
- PSS(实际使用内存):考虑跨进程共享页的影响, 按比例计算PSS,能比较准确地表示进程占用的实际物理内存。
②常见问题
- 内存泄漏:无法释放的已申请内存,导致内存使用持续增加。 内存溢出:
- 内存溢出 :申请内存时没有足够空间,导致程序崩溃。
内存泄漏初期的影响可能微不足道,但随着时间推移,泄漏的内存会逐渐堆积,最终导致内存耗尽,形成内存溢出。当程序实际使用的内存PSS持续增长时,通常意味着存在内存泄漏;而程序崩溃(crash)则往往是由于内存溢出引起的。
3.2 CPU
①监控指标
- 全局占用CPU:整机的CPU使用率,包括用户态、系统态和空闲态(在 Linux 系统下,CPU 利用率分为用户态、系统态和空闲态)。
- 用户态:表示 CPU 处于应用程序执行的时间
- 系统态:表示系统内核执行的时间
- 空闲态:表示空闲系统进程执行的时间。
- CPU 使用率 = CPU 执行非系统空闲进程时间 / CPU 总的执行时间
- 应用进程CPU:自开机以来,应用程序消耗的CPU时间的总数。
②常见问题
当CPU使用率长期维持在90%以上时,可能会导致手机发热、耗电增加以及响应变慢,从而引发应用未响应(ANR)。
3.3 流量
①内容
流量:在使用应用程序时,应用与服务器之间交换的数据总大小。
上行消息:应用发送给服务器的数据
下行消息:应用接收的服务器的数据
②监控指标
上行和下行消息的网络流量消耗。
③优化策略
- 数据压缩
- 控制访问的频次
- 缓存机制
3.4 电量
①常见的耗电量大的场景
- 定位
- 网络传输
- 屏幕亮度
- wake_locker(锁屏-解锁)
②监控方法
- 系统自带接口:最新的IOS和Android系统内置的Setting里可以查看各个APP的电池消耗,但是该方案不能检测固定某一时间段内的电池精准消耗。
- 硬件检测:通过硬件可以精准地获得应用的电量消耗(如 PowerMonitor 硬件设备),该方案测试时需要拆机,成本太高比较麻烦。
- 软件工具检测:通过第三方的软件来获取应用的电量消耗(如 AccuBattery、360省电王、SoloPi 等),该方案取决于第三方软件的计算准确性。
③结果分析
- 与基准数据对比:将测试结果与产品经理提供的基准数据或历史数据进行对比,以评估当前版本的电量消耗是否在合理范围内。
- 横向对比:与竞争产品的电量消耗进行对比,了解自身应用在同类产品中的表现,从而发现优化空间和改进方向。
3.5 流畅度
①内容
流畅度指的是动画播放或图片切换的连贯性。
当动画由连续的图像快速切换时,视觉上会呈现出流畅的效果,使用户感知为连续动作。然而,如果切换速度不足,就会导致卡顿现象,显著影响用户体验。因此,确保足够的帧率和流畅的过渡是提升应用交互体验的关键。
②标准
- 至少需要10-12帧每秒才能让大脑感知为连续动作。
- 为了达到良好的流畅效果,建议每秒至少24帧。
- 60帧每秒被视为最佳流畅度,目标是让程序接近这一水平。
③监控指标
帧率FPS:GPU在一秒内绘制的帧数,简单理解为一秒内呈现给用户的图片数。
FPS值越高画面越流畅。 在页面静态时,FPS值较低是正常现象;而在动态加载的数据页面,FPS值应较高,建议保持在24帧以上以确保良好的用户体验。
3.6 启动速度
①内容
启动速度:从启动应用到主页面加载完成的速度。
冷启动:应用从完全关闭状态到启动并加载完成主界面的时间。冷启动通常需要加载更多的资源和初始化应用,因此时间较长。
热启动:应用从后台恢复到前台的时间。由于许多资源已经在内存中,热启动通常会更快。
发布评论