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

相关文章
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1114 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
1065 3
|
SQL 安全 Java
探索软件测试的多维策略:从单元到集成,再到性能与安全
在软件开发生命周期中,测试是不可或缺的一环。本文将深入探讨软件测试的多维策略,从单元测试、集成测试到性能测试和安全测试等各个层面进行剖析。我们将通过具体的统计数据和案例分析,揭示不同测试策略的优势和应用场景。文章旨在为读者提供一个全面的测试框架,帮助他们构建更稳定、高效和安全的系统。
395 28
|
关系型数据库 MySQL OLAP
无缝集成 MySQL,解锁秒级 OLAP 分析性能极限,完成任务可领取三合一数据线!
通过 AnalyticDB MySQL 版、DMS、DTS 和 RDS MySQL 版协同工作,解决大规模业务数据统计难题,参与活动完成任务即可领取三合一数据线(限量200个),还有机会抽取蓝牙音箱大奖!
|
Cloud Native 关系型数据库 MySQL
无缝集成 MySQL,解锁秒级数据分析性能极限
在数据驱动决策的时代,一款性能卓越的数据分析引擎不仅能提供高效的数据支撑,同时也解决了传统 OLTP 在数据分析时面临的查询性能瓶颈、数据不一致等挑战。本文将介绍通过 AnalyticDB MySQL + DTS 来解决 MySQL 的数据分析性能问题。
|
移动开发 小程序 开发工具
Demo发布- ClkLog客户端集成 uni-app
在上一期推文中,我们与大家分享了 React Native 的集成 demo。本期,我们将继续介绍 ClkLog 集成 uni-app 的 demo。 uni-app 允许开发者编写一套代码,然后可以编译到 iOS、Android、H5 以及各种小程序等多个平台。因此,本次 demo 中将涵盖上述所有平台,并且我们会详细说明集成过程中遇到的难点及解决方案。
|
存储 NoSQL 数据处理
组合和继承怎么集成一个性能较好的项目
组合与继承是面向对象编程的核心概念,前者通过对象间关联实现高效解耦,后者则重用代码以节省空间和内存。组合常用于现代项目,利用代理与依赖注入简化代码管理;而继承简化了子模块对父模块资源的应用,但修改会影响整体。随着分层解耦及微服务架构如SpringCloud的出现,这些技术进一步优化了数据处理效率和服务响应性能,尤其在分布式存储与高并发场景下。同步异步调用、Redis分布式应用等也广泛运用组合与继承,实现代码和内存空间的有效复用。
【Azure App Service】列举为App Service集成虚拟网络(VNET)操作时所需要的最小权限
【Azure App Service】列举为App Service集成虚拟网络(VNET)操作时所需要的最小权限
245 0
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
242 0
|
存储 开发框架 监控
【Azure Logic App】添加 Storage Account 来提升 Logic App 的性能
【Azure Logic App】添加 Storage Account 来提升 Logic App 的性能
295 0

热门文章

最新文章