全网最全移动端App性能测试方法,值得收藏!

article/2025/9/29 8:50:19

关注上方“测试开发技术”,选择星标,

干货技术,第一时间送达!

普遍的apk性能测试,主要是以下七类

1、响应

2、内存

3、cpu

4、FPS (app使用的流畅度)

5、GPU过度渲染

6、耗电

7、耗流

(app除了这些性能测试,还有:手机版本号兼容性,屏幕分辨率兼容性,稳定性测试,安全测试等,后续会持续更新… 流量测试同这些一起更新,这里就不在说明了 )


一、响应

软件的响应时间和响应速度直接影响到用户的体验度,如果一个软件,迟迟加载不出来,会直接影响到软件的日活、留存。因此对于一个软件,对响应速度测试是必不可少的。

主要测试点:

1、冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)

2、热启动:非首次启动app的时间间隔(只是启动时间,不包括页面加载)

3、完全启动:从启动到首页完全加载出来的时间间隔

4、有网启动:从发起跳转,到页面完全加载出来的时间间隔

5、无网启动:从发起跳转,到页面完全加载出来的时间间隔

(在项目中,主要测试关注点是冷启动,热启动)

测试方法:

1、使用adb命令

1) 冷启动

adb shell am start -W packageName/ActivityName(绝对路径,首个Activity)

含义:

ThisTime: 该Activity的启动耗时;

TotalTime: 应用自身启动耗时, ThisTime+应用application等资源启动时间;

WaitTime: 系统启动应用耗时, TotalTime+系统资源启动时间

2)热启动:按back按键后再启动adb命令

测试标准:冷启动时间不超过1.5s, 热启动不超过1s.

3)完全启动,无网启动,有网启动都可以通过charles抓包来获取启动的时间

charles是一个很强大的抓包工具,除了截取请求还能进行单接口压测,修改请求参数并发出请求,以及模拟无网,弱网,2G,3G,4G等。能解决app的很多专项测试。

限制网络情况需要用到charles的一个功能:Throttle Setting

通过设置网速和抓包,可以获取启动时间,但是有一定的误差。在项目中,一般只需要测试冷启动,热启动便可。

2、使用AndroidStudio的Android Monitor,查看手机日志系统输出

Android Monitor总共有5大模块:logcat, memory, cpu, network,GPU

我们可以通过logcat获取应用的响应时间(如何使用,内存中有介绍)

3、代码日志输入查看

直接源码打日志,输入各个位置的耗时操作最为有效,需要源码。

4、借用工具,高速相机,但是成本较高。(如下图:目前项目团队使用的测试工具)

原理:通过压力感应来自动识别起始点,回放图片判断结束点,(一般默认手机界面静止不动为结束点), 键盘按S键为起始点,按F键为结束点。

这里便不介绍用法了。

二、内存

在Android系统中,每个APP进程除了同其他进程共享内存(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(私有内存+比例分配共享内存)来衡量一个APP的内存开销。由于一个移动设备的内存是固定的,如果内存消耗过大就会造成应用卡顿或者闪退,需要对内存进行测试。正常情况下,应用不应占用过多的内存资源,且能够及时释放内存,保证整个应用内的稳定性和流畅性。

测试点:

1、空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。

2、中强度状态:时间偏长的操作应用。

3、高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)。

内存泄漏:指应用里的内存一直没有释放,内存一直增加 ,系统内存一直减少 

测试方法:

1、使用adb命令:adb shell dumpsys meminfo packageName

获取应用包名和Actively:

adb shell dumpsys window | findstr mCurrentFocus

测试关注点:

1、Native heap alloc

2、Dalvik heap alloc

3、PSS

2、使用性能测试工具:Emmagee(只支持Android)

Emmagee是网易开发的一款测安卓应用性能的测试apk

1、安装Emmagee.apk,打开。

2、选择需要测试性能的应用启动

3、被测应用界面会展示内存、CPU、电流、流量等数据

4、stop Test之后,在本地SD卡中保存一份性能测试数据,可以从里面获取内存信息。

5、可以通过execl将数据转化成图表,更直观的查看各性能指标的数据。

(保存地址:/sdcard/Emmagee/******* .csv文件)

生成的csv文件:

原理Emmagee是使用Android自身提供的ActivityManager.MemoryInfo()方法获得

可查看:cpu 内存 流量 电量 FPS(流畅度)是一个相对比较好的选择

但是只支持安卓6.0及以下的版本

除了Emmagee,还有腾讯提供的一个同样测试性能的app, GT。使用与Emmagee大体一致,但是GT除了支持Android,同样支持ios。GT相对于Emmagee功能也更强大:性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计。

3、使用AndroidStudio 自带 CPU 和内存检测功能 – Android Monitor

(首先要下载并安装好Android Studio)

Android Monitor 可以检测CPU 和内存,能够绘制出变化图,可以直观明了的看出内存和cpu的变化曲线。

Android Monitor ,有5个模块 :logcat、Memory、CPU、Network、GPU。

关注点:

1、退出某个页面后,内存是否有回落。

如果没有及时回落,且程序自动GC或者手动GC,那便可确认有问题。

2、进行某个操作后,内存是否增长过快。

如果增长过快,也有可能存在风险,需重复操作确认。

三、CPU

CPU测试,主要关注的是cpu的占用率。很多时候,我们玩手机时,会出现发热发烫,那是因为CPU使用率过高,CPU过于繁忙,会使整个手机无法响应用户,整体性能降低,用户体验就会很差,也容易引起ANR(application not responding, 主线程(UI线程)如果在规定时内没有处理完相应工作,就会出现ANR)等等一系列问题。

测试点:

1).在空闲时间(切换至后台)的消耗,基本没大应用使用cpu

2).在运行一些应用的情况下,cpu已占50%的情况下,观察应用程序占用cpu的情况

3).在高负荷的情况下看CPU的表现(cpu占用应是在80%以上)

具体场景:

1、应用空闲状态运行监测CPU占用率

空闲状态:应用按Home键退到后台,不再占用系统的状态(通常是灭屏半分钟后)

CPU占用率=0%

2、应用中等规格运行监测CPU占用率

中等规格:模拟用户最常见的使用场景

CPU占用率≤30%

3、应用满规格长时间正常运行监测CPU占用率

Monkey测试

CPU占用率≤30%

4、应用正常运行期间监测CPU占用率峰值

应用正常运行:打开应用进行基本操作

CPU占用率≤50%

测试方法:

1、使用adb命令:

1) top -m -s cpu |grep packageName

top cpu 参数:

-m 显示最大数

-s 按指定行排序

-t 显示进程名称

-n 在退出前刷新几次

-d 刷新间隔

如果反复进行某个操作,cpu占用过高且一直无法释放,那便可能存在风险。

2)dumpsys cpuinfo |grep packageName

2、使用第三方测试工具:Emmagee、GT等。

3、使用AndroidStudio自带的检测工具Android Monitor。

四、FPS(应用的使用流畅度)

FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。

´一般来说,Android设备的屏幕刷新率为60帧/s,要保持画面流畅不卡顿,要求每一帧的时间不超过1000/60=16.6ms,这就是16ms的黄金准则,如果中间的某些帧的渲染时间超过16ms,就会导致这段时间的画面发生了跳帧,因此原本流畅的画面变发生了卡顿。

测试方法:

1、adb命令

1)打开手机:开发者选项—>profile GPU rendering —> in adb shell dumpsys gfxinfo

2) 操作要测试的apk

3) cmd窗口输入命令:adb shell dumpsys gfxinfo packageName

4) 得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比

含义:

Draw: 表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。

Process:表示渲染引擎执行显示列表所花的时间,view越多,时间就越长。

Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间。

Draw + Process + Execute = 完整显示一帧 ,这个时间要小于16ms才能保存每秒60帧。

5)通过execl进行表格处理可以直观的查看软件的流畅度

2、除了使用adb shell, 还可以直接使用开发者选项自带的图表

1)打开手机:开发者选项—>profile GPU rendering —> on screen as bars

2) 操作被测的软件

3)界面会显示如下的一个统计数据表

2、使用第三方测试工具:Emmagee、GT等。

3、使用AndroidStudio自带的检测工具Android Monitor。

五、GPU渲染

GPU渲染是指在一个像素点上绘制多次(超过一次):显示一个什么都没有做的activity界面算作画了1层,给activity加一个背景是第2层,在上面放了一个Text View(有背景的Text View)是第3层,Text View显示文本就是第4层仅仅只是为了显示一个文本,却在同一个像素点绘制了四次,这是一定要优化的。过度绘制对动画性能的影响是极其严重的,如果你想要流畅的动画效果,那么一定不能忽视过度绘制。

测试方法:

1、手机自动的Debug GPU overdraw

1)打开手机—>设置—>开发者选项—>Debug GPU overdraw—>show overdraw areas

2)打开被测的应用

GPU过渡渲染不同的颜色代表不同的绘制程度

1)、原色:无过渡绘制

2)、蓝色:绘制一次 (理想状态)

3)、绿色:绘制二次

4)、浅红:绘制三次 (可以优化)

5)、深红:绘制四次 (必须优化)

测试指标:

1、控制过渡绘制为2x

2、不允许存在4x过渡绘制

3、不允许存在面积超过屏幕1/4的3x过渡绘制

六、耗电量

测试应用对电量的消耗前需要对手机本身的电量消耗有个大概了解,测试前先看规定时间内手机正常待机下(重启后待机)电量消耗为多少。然后再启动待测试APP看看消耗的电量增加了多少取差值。

测试点:

  测试手机安装目标APK前后待机功耗无明显差异;

  常见使用场景中能够正常进入待机,待机电流在正常范围内;

  长时间连续使用应用无异常耗电现象。

测试方法:

(先关闭所有的应用,再打开被测app)

1、使用第三方测试工具:Emmagee、GT等,只需要测试的电流静置一晚,待机电流在正常范围内即可。一般是被测应用对比待机电流<=2mA。

2、使用adb命令

adb shell dumpsys batterystats |grep packageName

转载自:

https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318

推荐阅读

测试技术的提升你只需要关注这个!年薪20W都不是梦!

测试经理 : 不想测就不测呗,摆什么臭架子!

测试干了5年,薪资不如刚入行1年的小白?月薪28k真的是看工作年限吗?


http://chatgpt.dhexx.cn/article/ySBcmUlj.shtml

相关文章

app常见性能测试点

普遍的apk性能测试&#xff0c;主要是以下七类 1、响应 2、内存 3、cpu 4、FPS (app使用的流畅度) 5、GPU过度渲染 6、耗电 7、耗流 (app除了这些性能测试&#xff0c;还有&#xff1a;手机版本号兼容性&#xff0c;屏幕分辨率兼容性&#xff0c;稳定性测试&#xff0c;安全测…

APP性能测试工具——GT 使用方法

APP性能测试工具——GT 使用方法 场景介绍 通过GT工具兼容移动端的 CPU、内存、流量、电量、帧率/流畅度等等GT官方使用介绍文档地址&#xff1a;https://gt.qq.com 一、工具下载 应用宝下载GT app并安装 二、工具介绍 1.打开GT&#xff0c;允许访问权限 进入工具AUT页面&am…

APP外包开发性能测试工具

APP的性能测试是指对APP在不同场景下的性能进行测试&#xff0c;包括响应速度、稳定性、负载能力、资源占用等方面。下面介绍一些APP性能测试的方法和工具&#xff0c;希望对大家有所帮助。 1. 压力测试 压力测试是指在模拟高负载情况下对APP进行测试&#xff0c;以测试APP在高…

功能测试(八)—— APP之专项测试、性能测试、性能测试工具SoloPi

目录 APP测试要点 目标 一、APP专项测试 1.1 兼容性 1.2 安装 1.3 卸载 1.4 升级 1.5 干扰测试(交叉事件测试) 1.6 Push推送 1.7 用户体验 二、 性能测试工具 2.1 APP性能测试工具介绍 —— SoloPi简介 2.2 APP性能测试工具 —— SoloPi使用 三、APP性能测试 3.…

UML用例图(二)

1、 基本概念 &#xff08;1&#xff09;系统中与实现无关的视图&#xff0c;只关心系统的高级功能&#xff0c;而不关心系统的具体实现细节 &#xff08;2&#xff09;通常在项目开始时要先确定&#xff0c;之后不轻易修改&#xff08;主要需求&#xff09; 2、用例图由三部…

UML用例图详解

1. 概述 用例图&#xff08;Use Case Diagram&#xff09;描述“用户、需求、系统功能单元”之间的关系&#xff0c;是参与者所能观察和使用到的系统功能模型图。 用例图用于需求分析阶段 用例图包含6个基本元素&#xff1a;参与者&#xff08;Actor&#xff09;、用例&#xf…

UML用例图、时序图、类图、活动图

1 .类图 1.1关系 实现: 类实现接口 , [表现] implements 泛化: 类继承类 , [表现] extends 组合: 特殊的关联关系, 是整体与部分的关系, 部分与整体同生命周期, [表现] 成员变量 聚合: 特殊的关联关系, 是整体与部分的关系, 部分与整体不同生命周期, [表现] 成员变量关联: 一个…

UML用例图关系(Include 和extend)

用例图关系 三种关系 泛化&#xff08;Generalization&#xff09; 包含&#xff08;Include&#xff09; 扩展&#xff08;extend&#xff09; 下面给大家分别通过举例来介绍一下这三种关系的概念和用法 概念和用法 概念 &#xff08;1&#xff09;泛化关系&#xff08;带…

图书管理系统 UML用例图

细节处还未扣。资料保留

(转)UML用例图

用例图是指由参与者&#xff08;Actor&#xff09;、用例&#xff08;Use Case&#xff09;&#xff0c;边界以及它们之间的关系构成的用于描述系统功能的视图。用例图&#xff08;User Case&#xff09;是外部用户&#xff08;被称为参与者&#xff09;所能观察到的系统功能的…

UML的用例图

用例图的构成 1 角色&#xff1a;人员角色——人、事&#xff1b; 角色不一定局限于人&#xff0c;还可以是事物、事儿 2用例&#xff1a;功能的描述&#xff1b; 每一个用例描述了一个完整的系统服务 3 系统边界 4 关系&#xff1a;执行者与用例之间的关系。 泛化 依赖 关联…

UML用例图关系与画法

用例图主要用来描述“用户、需求、系统功能单元”之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。 【用途】&#xff1a;帮助开发团队以一种可视化的方式理解系统的功能需求。 用例图所包含的元素如下&#xff1a; 1. 参与者(Actor) 表示与您的应用程序或系统进…

设计模式之UML用例图

用例图主要用来描述“用户、需求、系统功能单元”之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。 【用途】&#xff1a;帮助开发团队以一种可视化的方式理解系统的功能需求。 用例图所包含的元素如下&#xff1a;   1. 参与者(Actor) 表示与您的应用程序或…

UML用例图和类图

UML常见关系&#xff1a; 用例图 构成&#xff1a;参与者、用例、关系。 概念&#xff1a; 参与者&#xff1a;外部用户、进程或其他系统的理想化概念。 用例&#xff1a;外部可见的一个系统功能单元&#xff0c;用例名字是一个动词短语字符串&#xff0c;比如&#xff0c;…

【软件工程】2.UML用例图

什么是UML&#xff1f; UML(Unified modeling language) 出现于70年代中期&#xff0c;建模语言数量从不到十种增加到了五十多种&#xff0c;OO(面向对象)方法的用户并不了解不同建模语言的优缺点及相互之间的差异&#xff1b; 90年代中期形成了UML统一建模语言&#xff0c;它是…

UML用例图与类图

1、用例图 用例图是被称为参与者的外部用户所能观察到的系统功能的模型图。 (《UML参考手册》) 用例图列出系统中的用例和系统外的参与者&#xff0c;并显示哪个参与者参与了哪个用例的执行(或称为发起了哪个用例)。 用例图多用于静态建模阶段(主要是业务建模和需求建模)。 …

UML用例图介绍

1.什么是用例图 1.用例图用来描述系统的需求&#xff0c;从用户的角度来描述系统的功能&#xff0c;强调谁在使用系统&#xff0c;系统实现了哪些功能&#xff0c;总的来说&#xff0c;用例图就是描述用户的需求和系统的功能&#xff0c;从外部用户的角度来描述系统的功能。 2…

UML-----用例图

文章目录 什么是用例图&#xff1f;用例图的作用用例图的组成部分扩展关系与包含关系的不同点如下 实例绘制用例图 什么是用例图&#xff1f; 用例图就是用来描述用户需求的图。 用例图的作用 帮助开发团队以一种可视化的方式理解系统的功能需求。借助于用例图&#xff0c;系…

Visio画UML用例图

Visio画UML图基本操作及技巧解析 本文和大家重点讨论一下用Visio画UML图基本操作&#xff0c;画UML图有好多种工具&#xff0c;VISIO只是其中一种&#xff0c;VISIO的动作非常轻快.很多人都在用。下面就让我们一起来看一下具体介绍吧。 用Visio画UML图基本操作 目的 画UML图有好…

软件需求分析——UML用例图

前言:UML是 Unified Modeling language 的缩写,是一种统一建模语言,主要在软件需求分析与设计阶段使用。UML一共包括9个图,分别是用例图、类图、对象图、序列图、协作图、状态图、活动图、构件图、部署图。本篇仅讨论用例图,后续再慢慢补充。 用例图: 1、定义:由参与者…