提到APP的性能测试这个概念比较笼统,因为APP的性能测试分为服务端的性能和手机端的性能测试
app服务端的性能测试,利用jmeter等工具模拟并发,压测服务器系统,服务端性能测试,一般可以通过接口来测,关注的指标主要包括以下几个:
app客户端的性能测试,主要是指app运行操作过程当中,监测当前手机系统的一些性能指标,以此来确定app的性能是否会影响到用户的体验。app的性能指标主要包括以下几个:
官网:https://perfdog.qq.com/
介绍:腾讯出品的移动全平台iOS/Android性能测试、分析工具平台。
特点
手机APP的启动时长是一个很容易被用户感知的性能指标,启动时长过长会让用户极不愿意继续等待。
因此启动时长是一项比较靠前的性能指标。APP的启时长分为两种情况,一种是冷启动时间,另一种是热启动。
1)场景设计
冷启动
场景设计:清除后台所有应用,等待数秒 ,启动软件
热启动
场景设计:切换到桌面,等待数秒 ,重新切换回应用
2)测试方法
冷启动:应用进程首次启动
热启动:切换到主页后再启动应用
3)结果分析:
通过adb命令可获取的时间如下:
如何确定启动时间是否符合标准?
FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。
FPS(1s内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
Jank(1s内卡顿次数)
FTime(上下两帧画面显示时间间隔,即认定为帧耗时)
PerfDog-Stutter(卡顿率)
1)场景设计
打开被测软件的每一个页面进行测试
2)测试方法
在app上进行操作,使用perfdog工具采集数据
3)结果分析:
游戏方面
游戏流畅度是最影响用户体验的,所以需要重点关注FPS、Jank及卡顿率。
APP方面
APP也需要关注FPS、Jank及卡顿率。只是需要区分使用场景,具体的数据对比可以和以往版本进行对比,也可和竞品横向对比。
1) 静态页面窗
只需关注FPS,理论FPS应该为0,否则,说明有冗余刷新,容易引起手机发热及耗电。
2) 有滚动动画页面窗口
只需关注FPS,FPS处于合适值即可,无需高频刷新。
3) 快速滑动页面窗口
需要关注FPS、Jank及卡顿率。一般滑动状态下,帧率越高越好,Jank越小越好。
4) 播放视频页面窗口
需要关注FPS、Jank及卡顿率,视频卡顿直接影响用户。视频一般帧率18-24帧,Jank=0。比如微信播放视频、视频播放器等。
某些场景下我们去使用App,可能会碰到手机会出现发热发烫的现象。这是因为CPU使用率过高、CPU过于繁忙,会使得整个系统无法响应用户,整体性能降低,用户体验变得相当差,主要关注的是cpu的占用率
计算方法:当前时刻cpu频率下,CPU Usage = CPU执行时间/CPU总时间,一般adb等获取的都是未规范化的cpu利用率
由于移动设备CPU频率时刻变化,用传统CPU利用率计算方法,假定在低频率时刻计算出CPU利用率=30%,和在CPU高频时刻计算出CPU利用率=30%。同样都是30%但性能消耗是完全不样的,明显高频消耗更高。传统CPU利用率已无法真实反映性能消耗。
所以我们需要一种规范化(可量化)的统计方式。将频率因素考虑进去。
CPU Usage(Normalized)= (CPU执行时间/CPU总时间) * (当前时刻所有CPU频率之和/所有CPU频率最大值之和)。
1)CPU 测试场景设计
测试点:
具体场景:
2)测试方法
使用perfdog采集不同场景数据
结果分析:
2.2.4 内存
在Android系统中,每个APP进程除了同其他进程共享内存(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(私有内存+比例分配共享内存)来衡量一个APP的内存开销
app内存有以下几个:
1)内存测试场景设计
2) 测试方法
使用perfdog采集不同场景数据
3) 结果分析:
退出某个页面后,内存是否有回落
进行某个操作后,内存是否增长过快
旧版本和新版本比较
新版本和竞品比较
目前的网络类型包含2G\3G\4G\wifi,其中还有不同运营商的区分,我们在APP的使用中经常遇到大资源,重复请求,调用响应慢,调用失败等各种情况。在不同的网络类型之下,我们不仅要控制流量使用,还需要加快请求的响应。
1)流量测试场景设计
2)测试方法
使用 perfdog 测试工具采集流量数据
注意! perfdog流量测试仅支持wifi连接状态
3)测试结果与分析
旧版本和新版本比较
新版本和竞品比较
场景 耗流 是否通过
场景 | 耗流 | 是否通过 |
---|---|---|
打开登录页面,输入用户名与密码进行登录,点击签到并签到成功 | xxx KB | 是/否 |
打开商品搜索页,搜索xxx,直到第一页搜索的内容全部展示出来 | xxx MB | 是/否 |
… | … |
对于PC来说,移动设备的电池电量是非常有限的,保持持久的续航能力尤为重要。我们必须要慎重检查APP的电量使用,以免导致用户手机耗电发热,带来不良体验
1)耗电量测试场景设计
GPS定位,比如:导航类软件需要获取实时位置的时候
屏幕亮度,比如:用户站在太阳地下看不清屏幕时会调亮手机亮度
网络传输,比如:即时类聊天软件需要时刻保持网络畅通,或者是一些类似于播放视频软件需要大量使用到网络的软件
cpu频率,需要大量运算的页面,比如:页面中有大量动图、视频需要处理,或者大量图表需要绘制
内存调度,比如:每次加载页面都需要加载图像的页面
长时间连续使用 / 后台运行状态下应用无异常耗电现象
2)测试方法
使用 perfdog 采集手机耗电量
测的是整机,不是单个APP,测试时要尽量减少系统本身和其他app的干扰,同时无法得知app具体哪方面的耗电量高。
注意! perfdog电量测试仅支持wifi连接状态
3)结果分析
场景 | 测试页面 | 测试时长 | 耗电量 |
---|---|---|---|
使用GPS功能 | 导航页面 | 10min | xxx% |
置于后台使用GPS功能 | 导航页面 | 10min | xxx% |
… | … | … | … |
根据测试后拿取的结果,与同类产品进行对比,或者与本产品的其他页面进行对比,分析是否有异常耗电的情况。
VSS:Virtual Set Size,虚拟耗用内存。它是一个进程能访问的所有内存空间地址的大小。这个大小包含了
一些没有驻留在RAM中的内存,就像mallocs已经被分配,但还没有写入。VSS很少用来测量程序的实际使
用内存。
RSS:Resident Set Size,实际使用物理内存。RSS是一个进程在RAM中实际持有的内存大小。RSS可能会
产生误导,因为它包含了所有该进程使用的共享库所占用的内存,一个被加载到内存中的共享库可能有很
多进程会使用它。RSS不是单个进程使用内存量的精确表示。
PSS:Proportional Set Size,实际使用的物理内存,它与RSS不同,它会按比例分配共享库所占用的内存。
例如,如果有三个进程共享一个占30页内存控件的共享库,每个进程在计算PSS的时候,只会计算10页。
PSS是一个非常有用的数值,如果系统中所有的进程的PSS相加,所得和即为系统占用内存的总和。当一个
进程被杀死后,它所占用的共享库内存将会被其他仍然使用该共享库的进程所分担。在这种方式下,PSS
也会带来误导,因为当一个进程被杀后,PSS并不代表系统回收的内存大小。
USS:Unique Set Size,进程独自占用的物理内存。这部分内存完全是该进程独享的。USS是一个非常有用
的数值,因为它表明了运行一个特定进程所需的真正内存成本。当一个进程被杀死,USS就是所有系统回
收的内存。USS是用来检查进程中是否有内存泄露的最好选择。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YNNCJp1M-1621393708995)(app性能测试.assets/image-20210515165014128.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ye8YlW89-1621393708999)(app性能测试.assets/image-20210515165025343.png)]
共享库,每个进程在计算PSS的时候,只会计算10页。
PSS是一个非常有用的数值,如果系统中所有的进程的PSS相加,所得和即为系统占用内存的总和。当一个
进程被杀死后,它所占用的共享库内存将会被其他仍然使用该共享库的进程所分担。在这种方式下,PSS
也会带来误导,因为当一个进程被杀后,PSS并不代表系统回收的内存大小。
USS:Unique Set Size,进程独自占用的物理内存。这部分内存完全是该进程独享的。USS是一个非常有用
的数值,因为它表明了运行一个特定进程所需的真正内存成本。当一个进程被杀死,USS就是所有系统回
收的内存。USS是用来检查进程中是否有内存泄露的最好选择。
感谢每一个认真阅读我文章的人!!!
我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。