性能测试工具与APP常见性能指标分析
一、无线化自动化测试工具:SoloPi
SoloPi 是一款专为 Android 平台设计的非侵入式、无线化自动化测试工具,集成了录制回放、性能监控等多种功能。其主要特性包括:
- 基础性能测试:支持对应用在运行过程中的关键性能数据进行实时采集和记录,用户可通过悬浮窗查看动态更新的数据曲线;同时提供性能加压功能,可模拟低CPU、内存受限或弱网络环境,帮助验证应用在极端条件下的表现。
- 操作录制与回放:能够完整记录用户在APP上的操作流程,并生成可复用的测试脚本,支持跨设备回放,整个过程无需依赖PC端,完全在手机上独立完成。
- 一机多控能力:允许通过一台主机设备同时控制多台从机设备执行相同操作,显著提升兼容性测试效率,避免重复手动操作。
注意事项:
——可独立安装的 SoloPi(APK,IOS无该版本),像普通APP一样安装。
——SoloPi使用时,需要申请悬浮窗权限,adb权限,读写权限
二、移动应用常用性能指标详解
性能测试关注点:
——APP使用时对CPU、内存的占用情况;
——APP使用时是否流畅等
——APP使用时,电量流量的消耗情况;
——APP的启动时间是否过长;
——APP是否能长时间稳定运行
2.1 内存使用情况
应用程序运行时需将代码与数据载入内存中,若系统内存不足,则可能导致程序无法启动或运行异常。
2.1.1 内存监控的关键指标
- Private Dirty(私有内存):指该进程独占且不可共享的物理内存部分,在进程终止后即可被系统回收。
- PSS(Proportional Set Size,实际使用内存):综合考虑了共享内存页的影响,按比例分摊共享部分到各个进程,能更准确反映单个进程实际占用的物理内存大小。
2.1.2 常见内存问题现象
- 内存泄漏(Memory Leak):已分配的内存未被及时释放,导致可用内存逐渐减少。
- 内存溢出(Out of Memory):当应用尝试申请超出系统剩余容量的内存时发生崩溃。
2.1.3 实际内存测试案例
测试需求:打开TP商城单商户APP,进入首页并点击“我要拼团”,上下滑动动态内容持续2分钟,期间监测内存表现是否正常。
测试步骤:
- 启动 SoloPi 工具,开启内存监控模块。
- 运行目标APP并执行指定业务路径,观察运行过程中内存变化趋势。
- 测试结束后检查以下两项:
- 查看PSS值是否呈现持续上升趋势,判断是否存在潜在内存泄漏。
- 确认APP在测试过程中是否出现闪退(crash)情况。
2.2 CPU 使用状况
2.2.1 CPU 监控核心指标
CPU性能监控主要包括两个维度:
- 全局CPU占用率:反映当前设备整体的CPU资源消耗水平。
在Linux系统中,CPU时间分为三类:
- 用户态:应用程序执行所占用的时间。
- 系统态:操作系统内核执行任务的时间。
- 空闲态:处理器处于待命状态的时间。
CPU使用率计算公式为:
CPU 使用率 = (CPU 非空闲进程执行时间) / (CPU 总执行时间) - 应用进程CPU占用:统计自设备开机以来,特定应用累计消耗的CPU时间片总量。
2.2.2 CPU异常的表现
- CPU长期维持在90%以上高负载状态。
- 设备明显发热,电池消耗加快。
- 界面响应迟缓,甚至触发ANR(Application Not Responding)错误。
ANR:xxxxx错误原因
2.2.3 CPU性能测试实例
测试需求:进入TP商城单商户APP,访问“首页-我要拼团”页面,连续滑动2分钟,评估CPU使用是否合理。
测试方法:
- 打开 SoloPi,启用CPU监控选项。
- 执行上述操作流程,实时观察CPU波动情况。
- 测试完成后分析结果:
- 检查APP运行期间是否存在CPU瞬时飙升现象。
- 确认CPU是否长时间处于90%以上的高位。
- 保存详细日志以供后续深入分析CPU使用详情。
2.3 网络流量监控
2.3.1 流量监控的主要指标
网络流量:用于衡量APP每秒上传与下载的数据包大小,系统可自动统计上下行流量,便于识别高耗流场景。
常用的流量测试方法:统计测试法。
——利用工具获取应用程序收发的数据报文,统计出对应的流量
2.3.2 常见流量优化策略
针对页面加载缓慢的问题,常见的优化手段包括:
- 对传输数据进行压缩处理。
- 选择高效的数据格式(如 Protocol Buffers 替代 JSON)。
- 降低接口请求频率。
- 仅获取当前所需的数据字段。
- 引入本地缓存机制减少重复请求。
- 根据网络类型(Wi-Fi/4G/5G)动态调整数据拉取策略。
2.3.3 流量性能测试案例
测试需求:进入TP商城单商户APP,“首页-我要拼团”页面,上下滑动2分钟,统计期间产生的网络流量。
测试步骤:
- 启动 SoloPi,勾选“网络”流量监控项。
- 进入目标页面并执行滑动操作,保持2分钟。
- 结束测试后,查看最终的流量统计报告。
2.4 电量消耗
2.4.1 电量概述(基于真机测试)
移动设备的续航能力直接影响用户体验,尤其在长时间运行或后台服务频繁唤醒的情况下,电量消耗成为重要关注点。
2.4.2 电量监控方式
通常借助专业仪器或系统级工具结合电流采样技术来精确测量APP在不同场景下的功耗表现,也可通过电池历史记录估算相对耗电程度。
2.4.3 电量性能测试案例
设定典型使用场景(如视频播放、定位追踪、消息推送等),利用SoloPi或其他工具配合真机进行长时间运行测试,记录单位时间内的电量下降幅度,对比不同版本或功能模块的能耗差异。
2.5 启动速度
2.5.1 启动速度说明
启动速度是衡量APP用户体验的重要指标之一,分为冷启动、温启动和热启动三种模式,其中冷启动耗时最长,也是优化重点。
2.5.2 启动速度测试方法
通过工具记录从点击图标到主界面完全渲染完成的时间节点,多次测量取平均值,确保数据准确性;可结合方法追踪定位耗时瓶颈。
2.6 流畅度表现
2.6.1 流畅度监控指标
主要通过帧率(FPS)和掉帧情况来衡量,理想状态下应维持在50~60 FPS之间,避免卡顿、跳帧等影响视觉体验的现象。
2.6.2 流畅度测试实例
在典型交互场景下(如列表滚动、动画播放)使用SoloPi监控FPS变化,识别是否存在严重抖动或持续低帧问题,辅助开发调优渲染逻辑。
2.7 稳定性
稳定性反映APP在长时间运行或多任务切换下的可靠程度,主要考察是否频繁出现崩溃、ANR、卡死等问题。
三、稳定性专项测试
3.1 Monkey 工具简介
Monkey 是 Android SDK 提供的一个命令行工具,通过向系统发送伪随机事件流(如触摸、手势、按键等)来测试APP的健壮性和容错能力。
3.2 Monkey 基础命令
基本语法格式为:adb shell monkey [选项] 事件数量,例如发送1000次随机事件可执行:
adb shell monkey -p 包名 --throttle 500 1000
3.3 Monkey 参数扩展说明
支持多种参数配置以定制测试行为,例如:
-p:限定测试包名。--throttle:设置事件间隔时间(毫秒),模拟真实操作节奏。--ignore-crashes:即使发生崩溃也继续执行。--monitor-native-crashes:监控原生层崩溃。-v:增加输出日志详细程度。
四、扩展知识
4.1 什么是性能测试?
性能测试旨在评估软件系统在不同负载条件下的响应速度、资源消耗、稳定性和可扩展性,发现潜在瓶颈,保障上线后的用户体验。
4.2 APP性能测试分类
主要包括以下几类:
- 启动性能测试
- 内存与CPU占用测试
- 网络流量消耗测试
- 电量消耗测试
- 流畅度(FPS)测试
- 稳定性压力测试
- 弱网环境适应性测试
4.3 日志查看方法
通过ADB命令抓取Logcat日志,过滤关键信息(如E/AndroidRuntime、ANR in等),结合时间戳定位异常发生时刻及相关堆栈信息,辅助问题排查与修复。
2.4 电量
2.4.1 电量概述(基于真机)
相较于PC设备,移动终端的电池容量有限,因此在APP性能测试中,电量消耗情况是一项关键指标。
电量测试:指评估移动设备在运行应用过程中电能消耗速度的一种方法。通常以平均电流作为衡量标准——由于电池厂商普遍使用mAh(毫安时)来标识电池容量,平均电流越低,意味着设备可持续使用的时间更长。
常见的高耗电场景包括:
- 定位功能:特别是启用GPS进行精确定位时,耗电量显著增加。
- 网络数据传输:在非Wi-Fi环境下(如4G/5G网络),频繁的数据交互会加大功耗。
- 屏幕亮度设置过高:屏幕是主要耗电源之一,亮度越高,耗电越快。
- CPU运算负载:复杂的逻辑处理、死循环等会导致CPU长时间高负荷运行,进而加剧电量消耗。
- wake_lock机制的使用频率与时长:锁屏与解锁操作频繁或唤醒时间过长,也会导致额外耗电。
提示:在模拟器中无法统计电脑流量使用情况,看进程使用流量即可
2.4.2 电量监控方式
目前常用的电量监测手段主要有以下三种:
-
系统内置接口检测
最新版本的iOS和Android系统均支持在“设置”中查看各应用的电池使用情况。但该方式无法精确统计某一特定时间段内的实际电量消耗,仅提供大致参考。
-
硬件级检测
借助专业硬件设备(如PowerMonitor)可实现对应用功耗的精准测量。然而,此类方法需拆解设备并接入测试仪器,成本较高且操作复杂,适用于实验室环境。
-
第三方软件工具检测
利用AccuBattery、360省电王、SoloPi等第三方应用获取电量数据。此方案便捷易行,但结果准确性依赖于软件自身的算法模型。
SoloPi工具提供了电量的监控指标:电池。
电量测试结果分析方法
针对不同业务场景采集到的电量消耗数据,需通过对比分析判断是否存在异常。常用比对策略如下:
- 与基准值对比:将当前测试结果与产品经理提供的预期值或历史积累数据进行比较。
- 横向竞品对比:在同一设备、相同网络条件及相似操作流程下,同步测试自身产品与竞品的耗电表现,从而识别差距并提出优化建议。(该方法被广泛采用)
2.4.3 实际电量测试案例
测试需求:启动TP商城单商户APP,进入首页后点击“我要拼团”,上下滑动动态内容持续2分钟(下滑1分钟,上滑1分钟),记录期间的电量消耗。
测试步骤:
- 开启SoloPi工具,启用“电池”监控项;
- 进入TP商城单商户APP,执行上述用户行为,同时观察CPU占用情况;
- 完成操作后保存数据,查看详细的电量消耗统计报告。
提示:模拟器没有电池,无法获取电量数据
2.5 启动速度
2.5.1 启动速度说明
APP启动速度测试旨在评估从点击图标到主界面完全展示所需的时间。若等待时间过长,将严重影响用户体验。
SoloPi指标:启动耗时计算
APP启动类型分为两类:
- 冷启动:应用程序未在后台运行,需重新创建进程并完成初始化工作。
- 热启动:应用已在后台运行,只需将其从前台调出;也可用于衡量不同页面间的加载速度,例如“我的”页面、“购物车”页面的打开时间(通常极短甚至接近于零)。
2.5.2 启动速度测试方法(Android平台)
常用命令格式如下:
adb shell am start -W 包名/启动Activity名称
以TP商城单商户为例,其包名与启动Activity为:com.tpshop.malls/com.tpshop.malls.SplashActivity
该命令返回三个核心指标:
- ThisTime:最后一个启动的Activity所耗时间。
- TotalTime:整个应用从启动到界面显示完成的总耗时,涵盖进程创建、Application初始化及Activity绘制全过程。
- WaitTime:前一个应用Activity暂停时间 + TotalTime,反映系统整体响应延迟。
获取当前应用包名与Activity的方法:
adb shell dumpsys window windows | grep usedAPP
注意事项:
- 冷启动与热启动均可使用相同命令进行测试。
- 一般情况下,冷启动耗时明显高于热启动。
2.6 流畅度
指动画播放、页面切换或滚动过程中的视觉连贯性表现。
2.6.1 流畅度监控指标
核心监控指标为FPS(Frames Per Second),即每秒GPU渲染并输出的帧数,可理解为每秒钟呈现给用户的画面数量。
- FPS越高,视觉体验越流畅。
- 人类大脑感知连续动作所需的最低帧率为每秒10-12帧。
- 达到流畅视觉效果的标准为至少24帧/秒。
- 理想目标为60帧/秒,这是目前移动设备的最佳流畅标准。
注意事项
——当页面多为静态时,FPS值很小是正常的
——页面数据多为动态加载时,FPS值比较大(建议在24帧以上)
2.6.2 流畅度测试实例
测试需求:打开TP商城单商户APP,进入首页后选择“我要拼团”,上下滑动动态内容共2分钟(先下滑1分钟,再上滑1分钟),记录FPS变化情况。
测试步骤:
- 启动SoloPi工具,勾选“帧率”监控选项;
- 进入APP并执行指定操作,实时观察流畅度指标波动;
- 结束测试后查看运行结果图表;
- 保存完整数据,以便后续深入分析流畅度详情。
2.7 稳定性
稳定性测试:通过对应用程序进行长时间、随机性的操作,检验其是否会出现崩溃(Crash)、无响应(ANR)等问题。
稳定性测试工具 —— Monkey
Monkey是Android官方提供的命令行自动化测试工具,能够模拟用户的真实操作行为,包括:
- 触摸事件
- 点击操作
- 滑动手势
- 系统按键输入(如返回键、音量键等)
通过向应用发送大量随机事件流,检测其在极端使用场景下的稳定性和容错能力。
三、稳定性测试
对本章2.7稳定性的详细补充。
3.1 Monkey工具介绍
1、什么是Monkey?
顾名思义,“Monkey”即猴子。Monkey测试就如同一只猴子坐在电脑前随机敲击键盘,对设备进行毫无规律的操作,以此模拟极端情况下的用户行为。
2、Monkey的作用
通过运行Monkey程序,可以模拟用户常见的操作行为,例如触摸屏幕、滑动轨迹球、点击按键等,从而对安卓设备上的应用程序进行压力测试,检测其在长时间或高强度操作下多久会出现异常或崩溃。
3、Monkey异常情况分析
当Monkey测试过程中出现错误时,通常需要结合日志进行排查,主要的分析方式如下:
- 程序无响应(ANR):可在日志中搜索关键词 “ANR”
- 应用崩溃:查找日志中的 “NullPointerException” 或其他异常信息
4、Monkey运行环境
Monkey是Android系统内置的一个测试工具,由Java语言编写而成,其核心文件monkey.jar位于Android系统的以下路径中:
/system/framework/monkey.jar

3.2 Monkey基本命令语法
常用命令格式如下:
adb shell monkey -p 包名 -v 模拟次数 > 路径/log.txt
参数说明:
-p:用于指定目标应用的包名
-v:设置日志输出的详细程度,最多支持三个-v(即 -v -v -v),级别越高,日志越详尽
次数:表示要执行的随机事件总数
>:将日志输出重定向并保存至指定文件
示例命令:
C:\Users\ggk>adb shell monkey -p com.android.browser -v 5000 >C:\Users\ggk\Desktop\log01.txt

3.3 Monkey扩展参数说明
进阶命令示例:
adb shell monkey -p com.android.browser --pct-touch 70 --pct-motion 30 -v 5000 > C:\Users\ggk\Desktop\log03.txt
参数解释:
-s:设定随机种子值,若种子相同,则每次生成的操作序列也完全一致,便于复现问题
-v:控制日志输出级别,单个-v为普通详细度
--pct-touch:调整触屏操作所占百分比
--pct-motion:设置滑动类事件的比例,可用于控制不同操作类型的分布区域和频率

四、性能测试扩展内容
4.1 什么是性能测试?
功能测试关注的是软件功能是否按预期实现,通常基于单用户场景;而性能测试则侧重于模拟多用户并发使用的情况,评估服务器在高负载下的响应能力与处理效率。
4.2 APP性能测试分类
专项性能测试:
由于APP作为安装在移动设备上的软件,会直接占用手机的硬件资源,因此需对其资源消耗情况进行监控,包括CPU占用率、内存使用、运行流畅度、网络流量以及电量消耗等指标。
稳定性测试:
任何软件都可能存在崩溃、闪退等问题。针对APP的稳定性,常采用Monkey工具进行长时间随机操作的压力测试,以发现潜在的稳定性缺陷。
服务器性能测试:
评估当有大量用户(如100人)同时使用APP时,后端服务器对接口请求的处理能力,确保服务稳定可靠。
4.3 日志查看方法
为何测试人员需要掌握Linux?
大多数服务器运行在Linux系统上,且关键日志文件通常存储于该环境中,因此熟悉Linux操作是进行日志分析的基础。
原因:未来被测项目部署在Linux中。
1、搭建测试环境。
2、查看日志辅助测试。
需要查看哪些日志文件?
日志类型(定位或排查错误):
1、Linux操作系统日志(安装项目报错、自动重启等原因)
2、应用服务器日志(Apache、Nginx等,①首先看错误原因,看不出错误原因事看②)
3、项目代码日志(②问开发)
4、数据库日志(③数据库日志)
常用日志查看命令:
tail -f xxx.log | grep "关键字" > ~/error.log

应关注的关键字包括:
error
500
Exception(异常)
ANR(Application Not Responding)
Null(空指针)
leak(内存泄漏)
out of(内存溢出)
发现相关记录后应如何处理?
1、能分析则自己分析定位问题;
2、日志截图发给开发;



雷达卡


京公网安备 11010802022788号







