【功能测试】4_APP项目 _APP性能测试(重点)

一、性能测试工具-SoloPi

SoloPi:是一个无线化、非侵入式的 Android 自动化工具,具备录制回放、性能测试等功能。

作用如下

基础性能测试:能够记录待测应用的各项指标,可以在悬浮窗中观察实时更新的数据,也可以对性能数据进行录制,在录制结束后查看图

表;同时,还支持性能加压,能够对CPU、内存与网络环境进行限制,复现应用在性能较差、网络环境不佳场景下的表现。

录制回放:通过SoloPi执行用例步骤,能够将用户的操作记录下来,支持在各个设备上进行回放,这一切都能够在手机上独立完成。

一机多控:支持通过操作一台主机设备来控制多台从机设备,不需要在各个设备上分别进行重复冗杂的兼容性测试,能够极大提升兼容性测试的效率。

注意事项:
——可独立安装的 SoloPi(APK,IOS无该版本),像普通APP一样安装。
——SoloPi使用时,需要申请悬浮窗权限,adb权限,读写权限

在这里插入图片描述

二、APP常用的性能指标

性能测试关注点:
——APP使用时对CPU、内存的占用情况;
——APP使用时是否流畅等
——APP使用时,电量流量的消耗情况;
——APP的启动时间是否过长;
——APP是否能长时间稳定运行

2.1 内存

2.1.1 内存监控指标

每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行。

内存的两个监控指标:PSS和Private dirty

1、Private dirty(私有内存):进程独占内存,也就是进程销毁时可以回收的内存容量。

2、PSS(实际使用内存):将跨进程共享页也加入进来, 进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存。
在这里插入图片描述

2.1.2 内存问题的现象

  • 内存泄漏(memory leak):内存不释放
  • 内存溢出(out of memory):申请没内存
    在这里插入图片描述

2.1.3 性能内存测试案例

需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,内存指标正常。

测试方法

1、打开SoloPi工具,配置内存监控

2、进入TP商城单商户APP,操作上述业务,观察运行时的内存指标

3、查看内存运行结果

  • 检查程序实际使用的内存PSS是否持续增长
  • 检查程序是否出现crash
    在这里插入图片描述

2.2 CPU

在这里插入图片描述

2.2.1 CPU监控指标

CPU的两个监控指标:全局占用CPU和应用进程CPU

1、全局占用CPU:整机的CPU使用水平,即当前手机的CPU整体使用率。

计算公式:

  • 在 Linux 系统下,CPU 利用率分为用户态、系统态和空闲态。
  • 用户态:表示 CPU 处于应用程序执行的时间
  • 系统态:表示系统内核执行的时间
  • 空闲态:表示空闲系统进程执行的时间。
  • CPU 使用率 = CPU 执行非系统空闲进程使用量 / CPU 总的使用量

2、应用进程CPU:表示自开机以来,应用程序消耗的CPU时间片的总数

2.2.2 CPU问题现象

CPU出现问题产生的影响:

  • CPU使用长时间处于90%以上
  • 手机发热、耗电量增加
  • 反应变慢、引起 应用程序无响应ANR(Application Not Responding)
ANR:xxxxx错误原因

2.2.3 性能CPU测试案例

需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,CPU指标正常。

测试方法

1、打开SoloPi工具,勾选CPU监控指标

2、进入TP商城单商户APP,操作上述业务,观察运行时的CPU指标

3、查看CPU运行结果

  • 检查APP运行时CPU是否有快速飙升
  • 检查APP运行时CPU是否长时间处于90%以上

4、保存CPU详细数据后,可以查看CPU详细的数据统计。

2.3 流量

在这里插入图片描述

2.3.1 流量监控的指标

流量监控指标:网络

  • 网络:即网络流量,可以自动统计APP每秒上行和下行的报文大小
常用的流量测试方法:统计测试法。
——利用工具获取应用程序收发的数据报文,统计出对应的流量

2.3.2 流量优化方法

面试题:打开页面速度过慢,如何优化?

  • 数据的压缩
  • 不同数据格式的采用
  • 控制访问的频次
  • 只获取必要的数据
  • 缓存机制
  • 针对不同的网络类型设置不同的访问策略

2.3.3 性能流量测试案例

需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,获取消耗的网络流量。

测试方法:

1、打开SoloPi工具,勾选流量监控指标网络

2、进入TP商城单商户APP,操作上述业务,观察运行时的流量指标

3、查看流量统计结果

提示:在模拟器中无法统计电脑流量使用情况,看进程使用流量即可

2.4 电量

2.4.1 电量介绍(真机)

相对于PC来说,移动设备的电池电量是非常有限的,因此电量测试是app性能测试中比较重要的一项。

电量测试

  • 就是测试移动设备电量消耗快慢的一种测试方法。
  • 一般是用平均电流来衡量电量消耗速度(电池生产厂家一般都采用mAh来标记电池容量大小,平均电流越小,说明设备使用时间就越长)

常见的耗电量大的场景:

  • 定位,尤其是调用 GPS 定位。
  • 网络传输,尤其是非 Wi-Fi 环境。
  • 屏幕亮度。
  • CPU 运算:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电。
  • wake_locker(锁屏-解锁)时间和次数。

2.4.2 电量监控方法

1、常用的电量测试方法:

①系统自带接口

  • 最新的IOS和Android系统内置的Setting里可以查看各个APP的电池消耗
  • 该方案不能检测固定某一时间段内的电池精准消耗。

②硬件检测

  • 通过硬件可以精准地获得应用的电量消耗(如: PowerMonitor 硬件设备)
  • 该方案测试时需要拆机,成本太高比较麻烦。

③软件工具检测

  • 通过第三方的软件来获取应用的电量消耗(如: AccuBattery、360省电王、SoloPi等)
  • 该方案取决于第三方软件的计算准确性。
SoloPi工具提供了电量的监控指标:电池。

2、电量的测试结果分析:

我们可以根据不同的业务场景测试出对应的电量消耗数据,但是是否有问题需要对比分析,对比方法:

  • 与基准数据对比。(基准数据来自于产品经理,或者以往数据积累)
  • 横向对比,拉上竞品一起测(目前多数采用这种方法)
    • 同样的网络、手机,相似的测试场景,最后对比我们的产品和竞品在耗电量方面的差距,给出优化建议。

2.4.3 性能电量测试案例

需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟,获取消耗的电量

测试方法:

1、打开SoloPi工具,勾选电量监控指标:电池。

2、进入TP商城单商户APP,操作上述业务,观察运行时的CPU指标。

3、保存电量详细数据后,可以查看电量详细的数据统计。

提示:模拟器没有电池,无法获取电量数据

2.5 启动速度

2.5.1 启动速度介绍

APP启动测试:测试从启动app到主页面显示的时间,打开一个app等待的时间过长时就会有一种较差的体验。

SoloPi指标:启动耗时计算

APP启动:分为冷启动,热启动

  • 冷启动:app不在运行,启动app进程
  • 热启动:app已经在运行,将app从后台置于前台。或者:app不同页面的启动,我的页面,购物车页面的启动时间(很短时间或为0)

2.5.2 启动速度测试方法

启动速度测试方法(Android):
——格式:adb shell am start -W 包名/启动名
——TP商城单商户包名/Activity名为:com.tpshop.malls/com.tpshop.malls.SplashActivity

该命令获取3个关键指标:
ThisTime:当前activity的时间。
TotalTime:应用的启动时间,包括创建进程、App初始化、 Activity初始化到界面显示。
WaitTime:前一个应用activity pause的时间+TotalTime
——————————————————————————————————————————————————————————————————————————————————————————

adb shell dumpsys window windows | grep usedAPP    # 获取包名/启动名

注意事项:

  • 热启动和冷启动的启动速度测试命令完全相同。
  • 冷启动的时间一般大于热启动的时间。
    在这里插入图片描述

2.6 流畅度

动画播放或图片切换的流畅性

2.6.1 流畅度的监控指标

流畅度的监控指标:帧率FPS

  • 即Frames per second:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数)
  • FPS值越高画面越流畅

流畅度问题产生的影响:

  • 想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度
  • 想达到流畅的效果,至少需要每秒24帧
  • 60帧每秒的流畅度是最佳的,我们的目标就是让程序的流畅度能接近60帧每秒
注意事项
——当页面多为静态时,FPS值很小是正常的
——页面数据多为动态加载时,FPS值比较大(建议在24帧以上)

2.6.2 性能流畅度测试案例

需求:打开TP商城单商户,进入首页-我要拼团,上下滑动动态2分钟(下滑1分钟,再上滑1分钟),记录FPS值。

测试方法:

1、打开SoloPi工具,勾选帧率;

2、进入TP商城单商户APP,操作上述 业务,观察运行时的流畅度指标;

3、查看流畅度运行结果;

4、保存流畅度详细数据后,可以查看 流畅度详细的数据统计。

2.7 稳定性

稳定性测试:通过长时间对应用程序进行无序操作,检验应用程序是否会出现异常。如闪退crash、无响应ANR等。

稳定性测试工具——Monkey:

  • Monkey是一个命令行工具,是由安卓官方提供的。
  • 测试人员可以通过Monkey来模拟用户的触摸点击滑动以及系统按键等操作(操作事件都是随机的),从而实现对APP压力的测试和稳定性测试。
  • 开发人员结合monkey 打印的日志和系统打印的日志,修改测试中出现的问题。

稳定性测试的时机:一般需要等产品稳定了,bug比较少的时候,再用monkey去测试待测试应用的稳定性。

三、稳定性测试

对本章2.7稳定性的详细补充。 

3.1 Monkey工具介绍

1、什么是monkey

顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子在电脑面前,乱敲键盘在测试。

android系统自带一种测试压力的小工具,主要测试系统或应用稳定性。

2、monkey测什么?

测试是否崩溃、闪退、死机。

3、monkey作用

通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。

4、monkey安装

不需要安装,Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径 /system/framework/monkey.jar;

注:在文件管理器中搜索 monkey

5、启动方式:

- 方式1:可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试;

- 方式2:在PC上adb shell进入Android系统,通过执行monkey {+命令参数}来进行Monkey测试;

在这里插入图片描述

3.2 Monkey命令

语法:adb shell monkey -p 包名 –v 模拟次数 > 路径/log.txt
参数:
-p:指定包名

-v:log详细程度(最高支持'-v -v -v'最详细),具体如下:  
=================================================
-v︰缺省值,仅提供启动提示、测试完成和最终结果等少量信息。
-v -v∶提供较为详细的日志,包括每个发送到Activity的事件信息。
-v -v -v:最详细的日志,包括了测试中选中/未选中的Activity信息。

次数:要执行随机操作的次数
>:重定向(保存)日志

例如:
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(随机数种子)用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同
-v:日志级别(正常)
-其它参数:调整乱抓区域事件

在这里插入图片描述

3.4 monkey测试执行和日志分析

1、monkey执行

- 一般在功能测试完毕之后
- 执行方式:
  ①多次小批量事件测试 ≤10W 次事件
  ②大批量随机性测试

2、正常情况

如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;   //Monkey finished代表执行完成

3、异常情况

执行过程中出现无响应、崩溃或异常退出后,打开日志进行分析:
 - ①程序无响应的问题:在日志中搜索“ANR”(可能仅仅是因为卡)
 - ②崩溃问题:在日志中搜索“Exception”(如果出现空指针,NullPointerException)肯定是有bug Monkey执行中断,在log最后也能看到当前执行次数。

四、扩展

4.1 何为性能测试?

  • 功能测试:验证软件功能是否正确实现(单用户)
  • 性能测试:模拟多人使用软件,服务器的处理情况

4.2 app性能测试分类

  • 专项性能:app是一款软件,安装在手机中,app对手机硬件资源的使用消耗(CPU、内存、流畅度、流量、电量)
  • 稳定性测试:app是一款软件,是软件就会崩溃,闪退等问题出现(monkey工具测试稳定性)
  • 服务器性能:100人使用app,服务器处理情况(接口性能)。

4.3 查看日志

  • 测试人员为什么要学习Linux?

    原因:未来被测项目部署在Linux中。
    1、搭建测试环境。
    2、查看日志辅助测试。
    
  • 查看那个日志文件?

日志类型(定位或排查错误):
	1、Linux操作系统日志(安装项目报错、自动重启等原因)
	2、应用服务器日志(Apache、Nginx等,①首先看错误原因,看不出错误原因事看②)
	3、项目代码日志(②问开发)
	4、数据库日志(③数据库日志)

在这里插入图片描述

  • 查看日志命令?

    tail -f xxx.log | grep "关键字" > ~/error.log
    
    —————————————————————————————————————————————————
    查看什么内容?(关键字:)
    error
    500
    Exception 异常
    ANR  
    Null
    leak(内存泄漏)
    out of(内存溢出)
    
  • 找到内容要做什么?

    1、能分析则自己分析定位问题;
    2、日志截图发给开发;
    

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少云清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值