APP测试—性能测试

性能测试

1. 性能测试指标

  • 内存
  • CPU
  • 流量
  • 电量
  • 启动速度
  • 流畅度等

2. 测试的关注点

  • APP的启动时间是否过长
  • APP使用时对CPU、内存的占用情况
  • APP使用时,电量流量的消耗情况
  • APP使用是否流畅等
  • 反复长期的操作情况下,系统资源的使用情况

3. 性能测试工具GT

GT(随身调),安卓版是腾讯MIG专项测试组自行研发的APP随身调测平台,是直接运行在手机上的“集成调测环境“,可以使用GT完成以下测试工作:

  • 基础性能测试:手机整机或手机上安装的任何APP的CPU、内存、网络流量、流畅度/帧率、电量等基础性能指标的实时展示、历史数据采集、excel格式存储、曲线绘制等
  • 查看日志
  • 抓包:直接用手机抓包保存成pcap文件,在PC端用Wireshark查看
(1)GT安装方法:
(2)GT工具的使用(部分功能需要root权限):
  • step1:进入AUT界面,选择被测程序和测试指标
    • 内存指标:
      • PSS:实际使用内存;
      • private dirty:私有内存
    • 其他指标:
      • CPU
      • jiffies:CPU的时间片
      • Net:网络相关指标
  • step2:设置参数,点击右上角的编辑按钮,选择想测试的参数,将其拖入已关注区域,点击完成按钮,勾选已关注的参数,点击右上角红点开始监控
  • step3:测试前可打开日志抓取,方便问题定位
  • step4:开始监控后,打开被测APP,悬浮窗会出现在被测APP上方
  • step5:查看数据采集结果
  • step6:查看运行日志

4. CPU测试

(1)GT 的两个CPU性能监控指标:CPU 和 jiffies

1)CPU:

  • 整机的CPU使用水平,即当前手机的CPU整体使用率。

  • 计算公式:

    • android系统基于Linux系统,在Linux系统下,CPU利用率分为用户态、系统态和空闲态
      • 用户态:表示CPU处于应用程序执行的时间(手机上安装的程序使用CPU的时间)
      • 系统态:表示系统内核执行的时间(手机系统在控制电池消耗、屏幕显示、数据读写时使用CPU的时间)
      • 空闲态:表示空闲系统进程执行的时间(没有任何程序运行,启动idle进程,idle进程占用CPU,不执行任何操作,若有应用程序启动或操作系统任务即将执行,idle进程将释放CPU给用户进程或系统进程)
    • CPU使用率 = CPU执行非系统空闲进程 / CPU总的执行时间
    • 即 CPU使用率 = (用户态 + 系统态) / (用户态 + 系统态 + 空闲态)

    2)jiffies:

    • 表示自开机以来,应用程序消耗的CPU时间片总数(CPU在工作的时候会划分为若干个时间片,每个时间片的时间间隔以微秒记)

(2)CPU问题产生的现象:

  • CPU使用长时间处于90%以上
  • 手机发热,耗电量增加
  • 反应变慢,引起ANR(应用程序没有响应)

(3)CPU测试方法:

  • step1:打开GT,配置CPU监控指标(可配置告警阈值)
  • step2:进入待测APP进行业务操作
  • step3:进入GT,观察待测APP运行时CPU指标变化:
    • CPU是否有快速飙升
    • CPU使用率是否长时间90%以上
  • step4: 保存CPU详细数据并分析

5. 内存

(1)GT的两个内存监控指标:PSS 和 Private dirty:

  • PSS(实际使用内存):私有内存 与 共享内存之和;有一块内存空间是供所有程序一起使用的,即共享内存。进程占用的共享内存在进程销毁时,不会回收内存容量,会分配给其他进程
  • Private dirty(私有内存):进程独占内存,即进程销毁时可以回收的内存容量

(2)常见的内存问题

  • 内存溢出(out of memory),指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory
  • 内存泄漏(memory leak),指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后会导致内存被占光;内存泄漏最终将导致内存溢出。

(3)内存问题产生的现象

  • 程序实际使用内存PSS持续增长
  • 程序出现crash(内存溢出通常导致程序crash)

(4)内存测试方法:

  • step1:打开GT,配置内存监控指标(可配置告警阈值)
  • step2:进入待测APP进行业务操作
  • step3:进入GT,观察待测APP运行时内存指标变化:
    • 程序实际使用内存PSS是否持续增长
    • 程序是否出现crash
  • step4: 保存CPU详细数据并分析

6. 流畅度

(1)GT的流畅度指标:FPS:

  • FPS,即每秒的帧率,GPU在一秒内绘制的帧数
  • 动画片由一张张图片连贯执行产生动画效果,当每张图片间切换速度足够快的时候,会欺骗人眼,形成动画。图片切换不够快的时候,反馈给用户的就是卡顿现象

(2)流畅度问题产生的现象:

  • 要达到至少每秒10-12帧的速度,大脑才会将觉得动作是连续的
  • 至少每秒24帧的速度,才能达到流畅的效果
  • 最佳的流畅度是每秒60帧
  • 通常要求FPS在24帧/s以上,最低不能低于10帧/s,最高不超过10帧/s

(3)流畅度测试方法:

  • step1:打开GT,配置流畅度监控指标
  • step2:进入待测APP进行业务操作(主要针对上下滑动等)
  • step3:进入GT,观察待测APP运行时流畅度运行结果
  • step4: 保存流畅度详细数据,计算平均值(FPS是否在24帧/s—60帧/s)

7. 流量

(1)GT的流量监控指标:NET:

  • 手机通过运营商网络访问Internet,运营商替我们的手机转发数据报文,数据报文包含手机上下行报文,数据报文的总大小(字节数)即流量。
    • 上行消息:APP发往应用服务器的消息
    • 上行流量:上行消息总大小
    • 下行消息:服务器发给APP的消息
    • 下行流量:下行消息总大小

(2)常用的流量测试方法:

  • 统计测试法:获取应用程序收发数据的报文,统计出对应的流量
  • 抓包测试法:利用工具抓包,如fiddler 或 Tcpdump,导出pcap文件后在Wireshark中打开

(3)流量测试方法:

  • step1:打开GT,配置流量监控指标NET
  • step2:进入tab,选择抓包以获取业务测试报文(抓包参数配置为:-p -s 0 -vv -w)
  • step2: 进入待测APP进行业务操作
  • step4:查看流量统计结果
  • step5: 操作结束后进入抓包插件,停止报文获取
  • step6: 保存流量详细数据并分析

(4) 流量优化方法(主要优化服务器下发数据):

  • 压缩数据
  • 采用不同数据格式(使用普通图片而非高清图)
  • 控制访问频次(控制向服务器请求数据的次数)
  • 只获取必要的数据(比如访问知乎,不获取知乎详情页的数据)
  • 利用缓存
  • 针对不同的网络设置不同的访问策略(WI-FI:高清图;4G:缩略图)

8. 电量

(1)GT的流量监控指标:电流、电压、电量、温度:

  • 电量测试:移动设备电量消耗快慢的一种测试方法。一般用平均电流衡量电量消耗速度;平均电流越小,说明设备使用时间越长。

(2)常见耗电场景:

  • 定位(尤其调用GPS定位)
  • 网络传输(尤其非WI-FI环境)
  • 屏幕亮度
  • CPU频率
  • 内存调度频率(内存调度频繁时,CPU消耗一般较高)
  • wake_locker(锁屏和重新解锁屏幕)时间和次数

(3)电量测试方法:

  • step1: 打开GT,进入插件tab,点击耗电数据采集
  • step2: 选择采样频率、屏幕亮度和采集参数
  • step3: 进入待测APP进行业务操作
  • step4: 测试完成后,回到参数页面,点击停止录制
  • step5: 保存电量数据并分析

(4)电量测试结果分析

  • 与基准数据对比(基准数据来自于产品经理或历史数据积累)
  • 横向对比,与竞品电量消耗数据对比分析(目前采用最多);在同样的网络、手机,相似的测试场景下对竞品进行测试,对比自有产品和竞品在耗电量方面的差距,给出优化建议

9. 启动速度

(1)冷启动和热启动

  • 冷启动:app被后台杀死后,在这个状态打开app
  • 热启动:app仍在后台运行,再次打开app

(2)测试方法

  • 使用命令:abd shell am start -W -n 包名/Activity名
    • 包名:应用程序包名具有唯一性
    • Activity名:页面名
  • 上述命令获取3个指标:
    • thistime:表示一连串启动Activity的最后一个Activity启动耗时,一般<=Total Time时间(当前Activity页面的时间)
    • Total Time:应用的启动时间,包括创建进程、APP初始化、Activity初始化到页面显示
    • Wait Time:前一个应用Activity pause的时间+Total Time

(3)启动时间测试结果分析

  • 与基准数据对比(基准数据来自于产品经理或历史数据积累)
  • 横向对比,与竞品启动时间数据对比分析(目前采用最多);在同样的网络、手机,相似的测试场景下对竞品进行测试,对比自有产品和竞品在启动时间方面的差距,给出优化建议
上一篇:springboot


下一篇:实现 Blogger 国内访问