Android性能测试总结

1.性能测试目的

优化应用程序,提高用户使用体验

2.性能测试指标

CPU

主要关注CPU使用率,CPU使用率过高会导致ANR、Crash、设备发热等问题

长时间情况下,CPU占有率应≤85%

GPU

主要关注GPU是否过度绘制,通常有如下情况:

一个像素点绘制了多次,过度绘制会影响动画性能,使其不流畅

主线程中执行了太多任务,UI渲染跟不上Sync信号而导致掉帧、卡顿

App响应时间

常见指标如下:

优秀:0~0.4s

标准:0.4~2s

隐患:2~5s

严重:≥ 5s

或者业界流行的2-5-8s原则

优化注意点:减少cookie 大小、使用更少的URL重定向、消除Flash等组件

流畅度FPS

指的是画面每秒传输帧数,每秒帧数越多,所显示的动作就会越流畅,由于功耗与显示设备的限制

一般Android设备的屏幕刷新率为60帧/s,若要保特面面流畅不卡顿,应保证每帧的渲染时间不超过

1000/60=16ms

Crash

通常崩溃率是指每次应用加载的平均崩溃率。移动设备的典型崩溃率为1-2%,但可能会因APP类型、

APP使用情况、成熟度等而不同,应始终以 98% 的无崩溃用户为目标。

耗电量

移动应用耗电量测试仅在必要时优化App以降低耗电量,还应尽量减少后台活动

内存占用率

在Android系统中,每个APP进程除了同其他进程共享内存(shared dirty)外,还有私有内存(private

dirty),通常我们使用 PSS(私有内存+比例分配共享内存)来衡量APP 的内存开销。

由于移动设备的内存是固定的,APP在运行时会和其他后台APP竞争,如果内存消耗过大就会造成应用

卡顿或被操作系统终止(闪退),应保证应用不占用过多的内存资源,且能够及时释放内存,以保证整个

应用内的稳定性和流畅性,以减少APP的内存占用。

内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存占用率应≤85%

流量

目前的网络类型包含2G、3G、4G、5G、WiFi,并且还有不同运营商的区分,APP在使用中经常遇到大

资源,重复请求,调用响应慢,调用失败等情况。在不同的网络类型之下,我们不仅加快请求的响应,

还要控制流量使用。每秒钟平均流量,建议值<5.12kb;每10分钟平均流量,建议值<3MB。并且不存在

App偷跑流量等行为。

碎片化

主要指不同品牌、机型、CPU、内存、操作系统、系统版本、分辨率、屏幕尺寸等情况下的性能表现

3.性能测试流程

前置准备(40%)

1)性能需求分析

包含内容如下:

  • 性能测试或调优目标确认

  • 系统背景相关信息确认

  • 被测系统的业务场景确认

  • 测试风险确认

2)定义测试性能目标

3)确定测试用例 KPI

如下 KPI 可以帮助衡量测试的有效性:

  • 平均响应时间

  • 峰值响应时间

  • 错误率

  • 并发用户数

  • 每秒请求数

  • 吞吐量

4)确定场景及优先级

App性能测试清单:

  • 使用此APP需要多少 RAM?

  • 验证APP在不同网络和环境下的速度和响应时间

  • 在多种网络条件下确保真实的用户体验

  • 确保在多个连接的情况下实现所需的结果

  • 确保APP不会崩溃。

  • 确保APP程序在使用数据、WiFi或其他连接时表现良好

  • 监控正常运行时间和移动API使用瓶颈

  • 确定最大并发用户数

  • 检查App程序的极限

5)设置App性能测试环境

步骤如下:

  • 了解需要测试的App程序

  • 识别APP需要在其上运行的不同操作系统版本

  • 构建测试设置

  • 构建模拟器或模拟器

  • 实际设置的原型

  • 选择合适的测试工具

6)测试与研发协调

性能测试通常由自动化支撑来实现APP在软件生命周期中的持续测试,测试方法与APP开发方法应保持

一致,这样有助于测试目标和测试基准统一,有助于实现APP愿景和业务战略

7)考虑运营商网络的延迟和带宽

网络

APP需要在各种速度可变的网络上进行检查,并且考虑网络切换时的场景

抖动

响应时发生延迟时对理想时间位置上出现短期的偏离称为抖动。我们要确保当随机抖动出现时,App程

序应可以处理它,通常是告知用户需要重新发送请求或等待系统再次响应。

数据包丢失

在完全丢包的情况下,APP应该能够重新发送信息请求或相应地生成警报。

测试执行(30%)

性能测试需求目标和场景确认完成后,需挑选合适的自动化测试工具,推荐如下:

  • Appium

  • Robotium

  • Selendroid

  • SauceLabs

  • JMeter

结果分析(30%)

4.性能测试结果

1)测试结果报告

性能测试结束后会生成测试报告,一般分为三个部分:

  • 基础信息:包名、版本号、提交时间

  • 检测结果:如果下方检测项出现错误,则在检测结果上提示哪台手机出现错误

  • 各设备检测结果:选择的机型中各个设备的检测结果

2)设备检测结果

设备信息:安卓版本、分辨率、运行内存、内部储存空间、屏幕大小

设备性能参数:再次启动时间、列表滑动帧率、CPU 占用率、FPS、内存占有率

3)重要检测项

首次启动时间

首次启动耗时下限设定为 4000ms,耗时过长,会导致用户看到白屏或者内容有缺失。建议检查加载过

程中的所有操作,看是否存在请求耗时过长,或者一次性渲染数据过大等情况

内存占用

内存占用下限设定为 600M;需检查是否有耗内存的操作如:内存泄漏、没有复用的超长列表、很多大尺寸图片等

其他重要检测项目

  • 是否成功安装

  • 是否成功启动

  • 是否有卡死现象

  • 是否有崩溃现象

  • 是否成功卸载

  • 是否正常运行

  • 是否出现黑屏或者白屏异常

4)生成测试报告

自动生成测试报告或通过excel表里面的数据,制作折线图、柱状图。此时作为测试人员并不是提交这些

报告才算完工,我们还需要查看执行概览,测试结果,被测系统监控,错误日志,跟踪并分析日志等。

5)注意事项

  • 一要看:测试环境是否正常

如果在测试过程中发生出现过异常,那么这样得出的结果往往不准确,无须进行分析

  • 二要看:测试场景的设置是否正确与合理

测试场景的设置是否正确对测试结果有很大的影响。当测试出现异常时,需要分析是不是由于场景设置

不正确引起

  • 三要看:负载生成器和服务器的系统资源情况

保证负载生成器在整个测试过程中的CPU、内存、带宽未触及到性能瓶颈,否则测试是无效的

  • 四要看:错误发生曲线在整个测试过程中是否有规律变化

如果是则意味着程序存在一定的缺陷

5.场景问题分析

1)应用间互相影响

在与其他APP并行测试时,要做到不会干扰到其他APP运行。测试时需与其它应用之间进行切换,以监

控应用与其他应用的交互方式

2)卡顿分析

通常需要插桩技术,通过对线程任务分布,CPU利用率及颗粒度进行卡顿问题分析及线程堆栈信息收集

3)流畅性分析

保存FPS记录、记录动态视频信息数量,查看相关线性图

4)启动分析

自动化测试启动时间,启动阶段执行任务分析、线程创建情况分析

5)内存分析

查看内存多维度的指标,如Java Heap Dump内存数据,分析对象大小、内存泄漏问题,纹理分配数

量及占用内存,还原图片帮助归因

6)界面分析

UI自动化进行验收,视图拾取、点选视图、查看视图信息&修改视图属性,展示视图输等。界面层级结

构分析、视图归类分析等

7)崩溃分析

对ANR、NativeCrash、Java crash堆栈信息等监听并捕获崩溃数据,分析各种环境关键信息

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值