【功能测试】4_APP项目 _APP性能测试

文章目录

  • 一、性能测试工具-SoloPi
  • 二、APP常用的性能指标
    • [2.1 内存](#2.1 内存)
      • [2.1.1 内存监控指标](#2.1.1 内存监控指标)
      • [2.1.2 内存问题的现象](#2.1.2 内存问题的现象)
      • [2.1.3 性能内存测试案例](#2.1.3 性能内存测试案例)
    • [2.2 CPU](#2.2 CPU)
      • [2.2.1 CPU监控指标](#2.2.1 CPU监控指标)
      • [2.2.2 CPU问题现象](#2.2.2 CPU问题现象)
      • [2.2.3 性能CPU测试案例](#2.2.3 性能CPU测试案例)
    • [2.3 流量](#2.3 流量)
      • [2.3.1 流量监控的指标](#2.3.1 流量监控的指标)
      • [2.3.2 流量优化方法](#2.3.2 流量优化方法)
      • [2.3.3 性能流量测试案例](#2.3.3 性能流量测试案例)
    • [2.4 电量](#2.4 电量)
      • [2.4.1 电量介绍(真机)](#2.4.1 电量介绍(真机))
      • [2.4.2 电量监控方法](#2.4.2 电量监控方法)
      • [2.4.3 性能电量测试案例](#2.4.3 性能电量测试案例)
    • [2.5 启动速度](#2.5 启动速度)
      • [2.5.1 启动速度介绍](#2.5.1 启动速度介绍)
      • [2.5.2 启动速度测试方法](#2.5.2 启动速度测试方法)
    • [2.6 流畅度](#2.6 流畅度)
      • [2.6.1 流畅度的监控指标](#2.6.1 流畅度的监控指标)
      • [2.6.2 性能流畅度测试案例](#2.6.2 性能流畅度测试案例)
    • [2.7 稳定性](#2.7 稳定性)
  • 三、稳定性测试
    • [3.1 Monkey工具介绍](#3.1 Monkey工具介绍)
    • [3.2 Monkey命令](#3.2 Monkey命令)
    • [3.3 Monkey命令参数扩展](#3.3 Monkey命令参数扩展)
  • 四、扩展
    • [4.1 何为性能测试?](#4.1 何为性能测试?)
    • [4.2 app性能测试分类](#4.2 app性能测试分类)
    • [4.3 查看日志](#4.3 查看日志)

一、性能测试工具-SoloPi

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

作用如下

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

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

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

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

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

二、APP常用的性能指标

yacas 复制代码
性能测试关注点:
------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)
yacas 复制代码
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每秒上行和下行的报文大小
yacas 复制代码
常用的流量测试方法:统计测试法。
------利用工具获取应用程序收发的数据报文,统计出对应的流量

2.3.2 流量优化方法

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

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

2.3.3 性能流量测试案例

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

测试方法:

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

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

3、查看流量统计结果

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

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等)
  • 该方案取决于第三方软件的计算准确性。
yacas 复制代码
SoloPi工具提供了电量的监控指标:电池。

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

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

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

2.4.3 性能电量测试案例

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

测试方法:

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

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

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

yacas 复制代码
提示:模拟器没有电池,无法获取电量数据

2.5 启动速度

2.5.1 启动速度介绍

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

yacas 复制代码
SoloPi指标:启动耗时计算

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

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

2.5.2 启动速度测试方法

shell 复制代码
启动速度测试方法(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帧每秒
yacas 复制代码
注意事项
------当页面多为静态时,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去测试待测试应用的稳定性。

三、稳定性测试

yacas 复制代码
对本章2.7稳定性的详细补充。 

3.1 Monkey工具介绍

1、什么是monkey

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

2、monkey作用

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

3、monkey异常情况分析

Monkey 测试出现错误后,一般的分析步骤 看Monkey的日志:

  • 程序无响应的问题: 在日志中搜索 "ANR"
  • 崩溃问题:在日志中搜索 "NullPointerException"

4、monkey环境

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

3.2 Monkey命令

shell 复制代码
语法:adb shell monkey -p 包名 --v 模拟次数 > 路径/log.txt
参数:
-p:指定包名
-v:log详细程度(最高支持'-v -v -v'最详细
次数:要执行随机操作的次数
>:重定向(保存)日志


例如:
C:\Users\ggk>adb shell monkey -p com.android.browser -v 5000 >C:\Users\ggk\Desktop\log01.txt

3.3 Monkey命令参数扩展

shell 复制代码
adb shell monkey -p com.android.browser --pct-touch 70 --pct-motion 30 -v 5000 > C:\Users\ggk\Desktop\log03.txt

参数:
-s:指定随机数,随机数相同,则每次执行操作都一样
-v:日志级别(正常)
-其它参数:调整乱抓区域事件

四、扩展

4.1 何为性能测试?

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

4.2 app性能测试分类

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

4.3 查看日志

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

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

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

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

    复制代码
    1、能分析则自己分析定位问题;
    2、日志截图发给开发;
相关推荐
工控小龙人12 小时前
玩具电子HMI:电子玩具的功能测试界面
功能测试
橘颂TA13 小时前
【测试】高效浏览器操作:基础功能与优化设置大全
c++·功能测试·职场和发展·测试·web测试
软件检测小牛玛2 天前
具备软件功能测试资质的机构哪家更权威?山东软件测评机构 中承信安
功能测试·单元测试·软件测试报告·软件测评机构
Warren982 天前
Pytest Fixture 作用域与接口测试 Token 污染问题实战解析
功能测试·面试·单元测试·集成测试·pytest·postman·模块测试
测试秃头怪2 天前
面试大厂就靠这份软件测试八股文了【含答案】
自动化测试·软件测试·python·功能测试·面试·职场和发展·单元测试
测试杂货铺2 天前
软件测试面试题大全,你要的都在这。。
自动化测试·软件测试·python·功能测试·面试·职场和发展·测试用例
测试大圣2 天前
软件测试基础知识总结(超全的)
软件测试·python·功能测试·测试工具·职场和发展·单元测试·测试用例
软件检测小牛玛3 天前
如何选择合规靠谱的软件功能测试机构?软件测评机构规格指南
功能测试·测试工具·软件测试报告·软件功能测试·软件测评机构
少云清5 天前
【金融项目实战】5_功能测试 _业务流程测试
功能测试·金融
橘颂TA6 天前
【测试】自动化测试函数介绍——web 测试
python·功能测试·selenium·测试工具·dubbo