性能指标描述:一定是某种时间内某种条件执行某种操作,性能指标如何?
性能测试可以考虑和稳定性结合,monkey测试时使用性能监控工具监控性能数据。
例如: 2小时内持续刷新操作,性能如何? 持续运行8小时,性能如何?
常见的性能指标有:内存,CPU,流量,电量,启动速度,流畅度、稳定性等
性能测试关注点:
- APP使用时对CPU、内存的占用情况;
- APP使用时是否流畅等
- APP使用时,电量流量的消耗情况;
- APP的启动时间是否过长;
- APP是否能长时间稳定运行
1.CPU
基线:如果有基线要求,CPU曲线图是否存在长期超过基线的现象(min)
如果没有基线,行业默认90%.
蓝色曲线是问题曲线(长时间超过基线),红色曲线是正常曲线。
CPU占用过高时可能出现的问题:
- 手机发烫
- 页面卡顿
- 电量消耗严重
- 快速恢复:清空后台运行的进程
实操:
需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,CPU指标正常。
测试方法:
(1)打开SoloPi工具,勾选CPU监控指标
(2)进入TP商城单商户APP,操作上述业务,观察运行时的CPU指标
(3)查看CPU运行结果
- 检查APP运行时CPU是否有快速飙升
- 检查APP运行时CPU是否长时间处于90%以上
(4)保存CPU详细数据后,可以查看CPU详细的数据统计
2.内存
内存泄露:内存的曲线持续增长(增的远比减的多)
内存溢出:一定是因为有内存泄露才会出现.内存持续增加突然降为0 (应用停止运行)
![]()
异常曲线图 ![]()
正常曲线图
实操:
需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,内存指标正常。
测试方法:
(1)打开SoloPi工具,配置内存监控
(2)进入TP商城单商户APP,操作上述业务,观察运行时的内存指标
(3)查看内存运行结果
- 检查程序实际使用的内存PSS是否持续增长
- 检查程序是否出现crash
3.流量
流量(指网络流量):
- 用手机打开APP进行互联网操作时,会和服务器之间交换数据,手机流量就是指这些数据的总大小。
- 数据报文是包含手机上下行的报文
上行消息:是APP发送给服务器的报文,但上行消息不一定都是请求消息
下行消息:是APP接收的服务器的报文
SoloPi工具提供了流畅度的监控指标:网络
- 网络:即网络流量,可以自动统计APP每秒上行和下行的报文大小
常用的流量测试方法:
- 统计测试法 :利用工具获取应用程序收发的数据报文,统计出对应的流量
使用了多长时间,消耗了多少流量
测试怎么测: 例如: 1小时持续刷新,查看流量消耗
面试题:打开页面速度过慢,如何优化?
流量优化方法:
- 数据的压缩
- 不同数据格式的采用
- 控制访问的频次
- 只获取必要的数据
- 缓存机制
- 针对不同的网络类型设置不同的访问策略
实操:
需求打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,获取消耗的网络流量。
测试方法:
(1)打开SoloPi工具,勾选流量监控指标网络
(2)进入TP商城单商户APP,操作上述业务,观察运行时的流量指标
(3)查看流量统计结果
4.电量(不能充电测试)
使用了多长时间,消耗了多少电量
测试怎么测:例如: 1小时持续刷新,查看电量消耗
常用的电量测试方法:
系统自带接口
- 最新的IOS和Android系统内置的Setting里可以查看各个APP的电池消耗
- 该方案不能检测固定某一时间段内的电池精准消耗。
硬件检测
- 通过硬件可以精准地获得应用的电量消耗(如: PowerMonitor 硬件设备)
- 该方案测试时需要拆机,成本太高比较麻烦。
软件工具检测
- 通过第三方的软件来获取应用的电量消耗(如: AccuBattery、360省电王、SoloPi等)
SoloPi 工具提供了电量的监控指标:电池。- 该方案取决于第三方软件的计算准确性。
通过API计算应用电量消耗
- 通过代码方式调用电量相关API接口,获取应用维度精细的电量消耗
- 该方案计算准确,但是计算方式复杂,难度高。
常见的电量消耗较大的场景:
- 定位,尤其是调用 GPS 定位。
- 网络传输,尤其是非 Wi-Fi 环境。
- 屏幕亮度
- CPU 运算:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电;
- wake_locker(锁屏-解锁)时间和次数
注意: 公司是否有基线要求,如果有要求,那么我们需要去检验产品是否达标;如果没有基线,可以和竞品对比测试
实操:
需求打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,获取消耗的电量
测试方法:
(1)打开SoloPi工具,勾选电量监控指标:电池
(2)进入TP商城单商户APP,操作上述业务,观察运行时的CPU指标
(3)保存电量详细数据后,可以查看电量详细的数据统计。
5.启动速度
冷启动: APP离线的状态下启动。时间长
热启动: APP后台运行的状态下启动。时间短
命令获取: adb shell am start -W 包名/activity名
- ThisTime: 当前activity的时间。
- TotalTime:应用的启动时间,包括创建进程、App初始化、Activity初始化到界面显示。
- WaitTime:前一个应用activity pause的时间+TotalTime
6.流畅度
流畅度:
我们都知道动画片其实是由一张张画出来的图片连贯执行产生的效果,当一张张独立的图片切换速度足够快的时候,会欺骗我们的眼睛,以为这是连续的动作。反之,当图片切换不够快时就会被人眼看穿,反馈给用户的就是卡顿现象。
SoloPi工具提供了流畅度的监控指标:帧率FPS
- FPS:即Frames per second:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数) FPS值越高画面越流畅(每秒切换多少帧,60fps位最佳)
流畅度问题产生的影响:
- 想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度
- 想达到流畅的效果,至少需要每秒24帧
- 60帧每秒的流畅度是最佳的,我们的目标就是让程序的流畅度能接近60帧每秒
- 当页面多为静态时,FPS值很小是正常的
- 页面数据多为动态加载时,FPS值比较大(建议在24帧以上)
实操:
需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟(下滑1分钟,再上滑1分钟),记录FPS值。
测试方法:
(1)打开SoloPi工具,勾选帧率
(2)进入TP商城单商户APP,操作上述业务,观察运行时的流畅度指标
(3)查看流畅度运行结果
(4)保存流畅度详细数据后,可以查看流畅度详细的数据统计。
7.稳定性(monkey)
稳定性测试:通过长时间对应用程序进行无序操作,检验应用程序是否会出现异常。如闪退crash、无响应ANR等。(通过命令让其自动执行)
稳定性测试工具——Monkey:
- Monkey是一个命令行工具,是由安卓官方提供的。
- 测试人员可以通过Monkey来模拟用户的触摸、点击、滑动以及系统按键等操作(操作事件都是随机的),从而实现对APP压力的测试和稳定性测试。
- 开发人员结合monkey 打印的日志和系统打印的日志,修改测试中出现的问题
稳定性测试的时机:
- 一般需要等产品稳定了,bug比较少的时候,再用monkey去测试待测试应用的稳定性。
- 注意性能数据监控
- 注意日志收集
未完待续。。。