文章目录
APP性能测试
测试app使用期间占用硬件资源(cpu、内存、流量、电量)使用情况。
如何测试App(资源)性能?
说明:使用工具或命令进行测试
工具:
SoloPi是一个无线的 Android 自动化工具,具备录制回放、性能测试等功能。
SoloPi是一个无线的 Android 自动化工具,具备录制回放、性能测试等功能。
功能
性能测试: 能够对CPU、内存与网络环境进行限制,复现应用在性能较差、网络环境不佳场景下的表现。
录制回放: 能够将用户的操作记录下来,支持在各个设备上进行回放。
一机多控: 操作一台主机设备来控制多台从机设备,进行重复冗杂的兼容性测试,能够极大提升兼容性测试的效率。
下载:https://www.pgyer.com/solopi
安装: 独立安装的 SoloPi(APK,I0S无该版本),像普通APP一样安装。
SoloPi使用(选择测试项)
(1)打开SoloPi,选择性能测试
(2)选择被测应用,勾选监控指标,勾选后悬浮窗会出现在手机屏幕上
(3)点击开始监控,随后打开被测APP应用,开始测试
(4)查看数据采集结果
APP性能测试关注点
- APP使用时对CPU、内存的占用情况;
- APP使用时是否流畅等;
- APP使用时电量流量的消耗情况;
- APP的启动时间是否过长;
- APP是否能长时间稳定运行
内存监控指标
每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行。
提示: SoloPi工具提供了两个内存的监控指标:Private dirty和PSS
- Private dirty(私有内存): 进程独占内存,也就是进程销毁时可以回收的内存容量。
- PSS(实际使用内存): 将跨进程共享页也加入进来,进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存。
内存问题的现象
常见的现象:
内存泄漏:
- 内存泄露 memoryleak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
- memoryleak会最终会导致内存溢出。
内存溢出:
- 内存溢出 outofmemory,是指程序在申请内存时,没有足够的内存空间供其使用,出现outof
memory
内存问题产生的影响
- 程序实际使用的内存PSS持续增长可能是内存
泄漏 - 程序出现crash(崩溃)可能是内存溢出
CPU监控指标
SoloPi工具提供了两个CPU的监控指标:全局占用CPU和应用进程CPU。
全局占用CPU: 整机的CPU使用水平,即当前手机的CPU整体使用率
- 在 Linux 系统下,CPU 利用率分为用户态、系统态和空闲态
- 用户态: 表示 CPU 处于应用程序执行的时间
- 系统态: 表示系统内核执行的时间
- 空闲态: 表示空闲系统进程执行的时间。
CPU使用率=CPU执行非系统空闲进程时间/CPU总的执行时间
CPU消耗引起的现象
- CPU使用长时间处于90%以上
- 手机发热、耗电量增加
- 响应变慢、引起ANR(Application Not Responding)
流量监控
操作APP会与服务器交换数据,流量就是指这些交互数据的总大小。
SoloPi工具提供了流量监控指标:网络
提示
上行消息是APP发送给服务器的数据,下行消息是APP接收的服务器的数据
步骤:
(1)打开SoloPi工具,勾选流量监控指标网络
(2)进入APP,操作上述业务
(3)查看流量统计结果
流量优化策略
- 数据的压缩
- 不同数据格式的采用
- 控制访问的频次
- 只获取必要的数据
- 缓存机制针
- 对不同的网络类型设置不同的访问策略
电量监控
APP应用使用时对电池电量的平均消耗
常见的耗电量大的场景:
- 定位
- 网络传输
- 屏幕亮度
- wake_locker(锁屏-解锁)
电量的监控方法
系统自带接口
- 最新的I0S和Android系统内置的Setting里可以查看各个APP的电池消耗
- 该方案不能检测固定某一时间段内的电池精准消耗。
硬件检测
- 通过硬件可以精准地获得应用的电量消耗(如:PowerMonitor硬件设备)
- 该方案测试时需要拆机,成本太高比较麻烦。
软件工具检测
- 通过第三方的软件来获取应用的电量消耗(如:AccuBattery、360省电王、SoloPi等)
- 该方案取决于第三方软件的计算准确性。
结果分析
- 与基准数据对比(基准数据来自于产品经理,或者以往数据积累)
- 横向对比(竞品)(目前多数采用这种方法)
流畅度监控
动画播放或图片切换的流畅性
流畅度的监控指标
SoloPi工具提供了流畅度的监控指标:帧率FPS
- 即Frames per second:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数)
- FPS值越高画面越流畅
流畅度问题产生的影响:
- 想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度
- 想达到流畅的效果,至少需要每秒24帧
- 60帧每秒的流畅度是最佳的,我们的目标就是让程序的流畅度能接近60帧每秒
注意事项
当页面多为静态时,FPS值很小是正常的
页面数据多为动态加载时,FPS值比较大(建议在24帧以上)
启动速度
APP启动速度: 从启动app到主页面加载完成的速度。
APP启动分类: 冷启动、热启动
冷启动: 启动app进程,这种启动方式叫做冷启动。
热启动: 将app从后台置于前台。
Solopi指标: 启动耗时计算
app的稳定性测试
什么是稳定性?
app程序能持久良好的运行。
Monkey介绍
monkey就是猴子,monkey测试就像一只猴子在玩手机(乱抓、乱点)
作用: 模拟用户随机(触摸屏幕、滑动、按键)等操作来对程序进行稳定性测试,检测程序异常情况。
提示:
Monkey程序是Android系统中自带一款稳定性测试工具,由ava语言编写。【无需单独安装】Android位置:/system/framework/monkey.jar
稳定测试的步骤
1、执行命令,执行结果写入日志
2、检查日志异常
Monkey命令
语法:adbshellmonkey-p包名-v 次数>tpshop.log
参数:
-p:指定包名
-v:log详细程度(最高支持’-v -v-V'最详细)次数:要执行随机操作的次数
>:重定向(保存)日志
获取包名:adb shell dumpsys window windows |grep usedApp
检查日志
检查日志中是否有异常关键字,提取相关日志发给开发。
常见关键字:
- 无响应:在日志中搜索“ANR”、timeout
- 崩溃:在日志中搜索“NullPointerException”或 Exception
- 闪退:memoryout、memory Leak
- 错误:error
提示:
1、测试人员一般不需要分析错误日志原因,如果具备日志分析能力可以辅助开发定位缺陷原因。
2、日志错误类型原因有很多,需要经验积累,以上关键字提供了常见错误关键字
tpshop稳定性测试
- 获取app包名:com.tpshop.malls
- 执行monkey命令:adbshellmonkey-p包名-v次数>c:\日志.log
- 检查日志异常关键字:[ANR,timeout,Exception,out,leak,error
- 将异常日志发给开发