APP集成卡口性能标准(一)

简介: 最开始做性能测试的时候,会有些摸不着头脑,虽然之前一直做客户端开发,但对于性能测试这块的研究比较少,于是试着找了一些工具,看了看相关文档就开始动手了。有时候因为性能问题比较明显就直接发现了,再之后遇到类似的性能测试需求,就按照上次的经验去做,有时候可能发现问题,也可能发现不了,还有些时候甚至是在浪费时间。随着经验的逐渐增加,我慢慢意识到,以前的很多测试方法既盲目又不利于沉淀,对于较为成熟的软件,这样做的测试有效性往往比较低,运气好才会发现问题,如果是较深层次的问题,要么遇不到,要么遇到了也找不出原因。因此有必要总结出一套标准的测试流程和方法,来提高测试的有效性。

前言



针对上面提到的问题,我之前已经陆续发表过一系列性能测试的白皮书:



后续我还会针对其他具体性能指标来展开写,这里先来聊聊针对基础性能指标的一个测试和准出标准。我参考了一些常见的性能测试方案以及过去对于客户端性能测试的一些经验,总结出了一套客户端产品进行基础性能测试的标准流程和集成卡口,下面介绍一下针对Android和iOS两端的准出标准,可以参考这种方式去做,但具体数据要根据应用的线上性能基线和经验值去制定(下面的数字部分由于不影响大家参考所以就打码了)。


测试设备建议选取中端设备,有时间的同学也可以针对高中低不同的设备做区别测试。


下面测试过程中用到的掌中测是阿里百川的一款产品,大家可以到阿里百川官网去注册体验。


Android



页面加载时间


数据来源:

推荐方法:

  1. 用 Debug 包通过摇一摇唤出掌中测图标,选择应用性能 -> 页面加载;
  2. 进入待测页面;

备用方法:

  1. 开启Android自带的视频录制功能或者从应用市场下载录屏大师app,把页面操作录下来,传到mac上;
  2. 用mac自带的QuicktimePlayer打开视频,在“编辑”菜单中点击“修剪”;
  3. 通过数帧的方式查看从页面点击到第一屏数据加载出来的时间差,此时间差就是用户真实感知的页面加载时间;


集成要求:


image.png

页面流畅度(帧率)


数据来源:

推荐方法:

  1. 用 Debug 包通过摇一摇唤出掌中测图标,选择应用性能 -> 帧率;
  2. 滑动页面,实时记录fps值;

备用方法:

  1. 打开开发者选项;
  2. 打开GPU呈现模式分析和调试GPU过度绘制;
  3. 滑动被测页面,实时记录fps值和曾在过度绘制的区域(深红色);


集成要求:


image.png

CPU


数据来源:

推荐方法:

  1. 用 Debug 包通过摇一摇唤出掌中测图标,选择应用性能 -> CPU;
  2. 实时记录CPU值;

备用方法1:

  1. 打开开发者选项,开启USB调试;
  2. 打开终端命令行,输入adb shell top -n 1 | grep -v 'grep' | grep XXX(包名),记录CPU的值;

备用方法2:

  1. 准备一台Root过的手机,安装被测应用;
  2. 手机连接到AndroidStudio 并在菜单栏“Run”中打开Profiler;
  3. 首次进入被测页面,在CPU栏查看当前值,并记录;


静默CPU利用率获取:

  1. APP前台切到被测页面,手机闲置15分钟,多次获取当前CPU值,CPU利用率应该在0-10%内;
  2. APP切到后台需停止消耗CPU的逻辑,如传感器、定位等,避免用户反馈APP在后台耗电;


集成要求:


image.png

内存


数据来源:

推荐方法:

  1. 用 Debug 包通过摇一摇唤出掌中测图标,选择应用性能 -> 内存;
  2. 首次进入被测页面,等第一屏数据加载完成,记录内存(javaHeap、nativeHeap)的值A1;
  3. 退出页面,等第一屏数据加载完成,记录内存值(javaHeap、nativeHeap)B1;
  4. 再次进入被测页面,等第一屏数据加载完成,记录内存的值A2;
  5. 退出页面,记录内存值B2;
  6. 多次重复此操作,检查内存是否持续增加;
  7. 记录被测页面内存(javaHeap、nativeHeap)值(A1-B1);


备用方法1:

  1. 打开开发者选项,开启USB调试;
  2. 操作步骤同推荐方法,记录方式改成:打开终端命令行,输入adb shell dumpsys meminfo packageName | grep -A 1 Java,记录javaHeap、nativeHeap的值;

备用方法2:

  1. 准备一台Root过的手机,安装被测应用;
  2. 手机连接到AndroidStudio 并在菜单栏“Run”中打开Profiler;
  3. 首次进入被测页面,操作步骤参考推荐方法里的描述;


为了避免链路太长,其他页面进程运行产生的内存干扰,最好的办法是通过应用扫码进入页面,产出性能报告的话还是要尽量模拟用户的操作路径,从而得到更真实的数据。


集成要求:

  1. 无内存泄露 ;
  2. 内存增量控制在一定值,没有无限增加的情况;
  3. 退出页面内存恢复到近似原始值 ;
  4. 超过达标值的必须在页面不可见或收到内存报警时释放内存(onLowMemory) ;
  5. Android系统8.0+设备,图片使用的内存是native内存,故单独处理;


image.png

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
30天前
|
人工智能 自然语言处理 开发者
ICLR 2024 Spotlight:大语言模型权重、激活的全方位低bit可微量化,已集成进商用APP
【2月更文挑战第29天】研究人员在ICLR 2024展示了OmniQuant技术,这是一种针对大型语言模型(如GPT-4和LLaMA)的全面低比特量化方法,旨在降低内存占用和提高计算效率。OmniQuant包含可学习的权重裁剪(LWC)和可学习的等价变换(LET),在保持模型性能的同时减少了计算资源需求。该技术已在商用APP中实施,并在LLaMA-2模型上验证了其高效性。OmniQuant的开源代码已发布在GitHub,促进了技术交流和进步,有望推动资源受限环境中的AI应用。
13 1
ICLR 2024 Spotlight:大语言模型权重、激活的全方位低bit可微量化,已集成进商用APP
|
4月前
|
Web App开发 Android开发 ice
【Android App】给App集成WebRTC实现视频发送和接受实战(附源码和演示 超详细)
【Android App】给App集成WebRTC实现视频发送和接受实战(附源码和演示 超详细)
87 1
|
4月前
|
Java 定位技术 Android开发
【Android App】集成腾讯地图显示位置和地图面板讲解及实战(附源码和演示 超详细必看)
【Android App】集成腾讯地图显示位置和地图面板讲解及实战(附源码和演示 超详细必看)
77 1
|
7月前
|
网络协议 安全 数据安全/隐私保护
直播app源码,QUIC协议:改善性能与安全性
由于QUIC协议作为一个多种协议集成的一项新型协议创新,被应用到直播app源码平台中,能帮助平台提高性能与安全性,提供给用户更可靠、更优质的直播体验。
直播app源码,QUIC协议:改善性能与安全性
|
8月前
|
Java 开发工具 Android开发
利用Android Studio在App中集成第三方支付
利用Android Studio在App中集成第三方支付
|
11月前
|
人工智能 自然语言处理 安全
表现优于 GPT-4,ChemCrow 集成 13 种化学工具,增强大型语言模型的化学性能
表现优于 GPT-4,ChemCrow 集成 13 种化学工具,增强大型语言模型的化学性能
225 0
|
12月前
|
数据采集 缓存 数据可视化
APP性能测试方法&工具
APP性能测试方法&工具
|
运维
《支付宝APP亿级用户的 性能稳定性优化及运维实践》电子版地址
支付宝APP亿级用户的 性能稳定性优化及运维实践
94 0
《支付宝APP亿级用户的 性能稳定性优化及运维实践》电子版地址
|
运维
《支付宝APP的性能稳定性优化及运维实践》电子版地址
支付宝APP的性能稳定性优化及运维实践
54 0
《支付宝APP的性能稳定性优化及运维实践》电子版地址
|
运维
《支付宝APP的性能稳定性优化及运维实践》电子版地址
支付宝APP的性能稳定性优化及运维实践
87 0
《支付宝APP的性能稳定性优化及运维实践》电子版地址

热门文章

最新文章