App客户端性能测试方案

一、概述

App客户端的性能测试是保障其稳定、高效运行的重要环节,直接关系到用户体验的好坏。通过对手机系统各项性能指标的监测,我们能够全面评估App的运行状态,确保其在各种使用场景下都能提供流畅的用户体验。本测试方案将重点关注App的启动速度、CPU占用率、内存占用率、电量消耗、流量消耗以及流畅度等关键指标,并采用腾讯出品的Perfdog工具进行测试。

二、测试工具及特点

本次测试选用Perfdog作为主要的测试工具,其特点如下:

  • 无需ROOT/越狱,支持iOS和Android全平台,便于跨平台测试。
  • 数据准确,对测试设备CPU的性能影响小于1%,对帧率无影响,保证测试结果的可靠性。
  • 支持所有APP应用、游戏、小程序、小游戏、H5、web等,适应性强,可覆盖多种测试需求。
  • 提供云端数据在线分析功能,支持团队合作,便于团队成员共享数据和协同工作。

三、测试指标及方案

3.1 启动时间

启动时间是衡量App性能的重要指标之一,直接关系到用户的使用体验。本次测试将分别对冷启动和热启动两种场景进行测试。

3.1.1 冷启动

场景设计:清除后台所有应用,等待数秒,启动软件。

测试方法:

  • 查看appPackage及appActivity,执行命令adb shell dumpsys activity | findstr "mResume"(Android 8.1之前应使用adb shell dumpsys activity | findstr “mFocus”)以获取目标App的包名和启动Activity。
  • 杀掉后台APP进程,执行命令adb shell am force-stop appPackage
  • 启动APP,执行命令adb shell am start -W -n appPackage/appActivity(绝对路径,首个Activity)进行测试。

结果分析:

  • ThisTime:该界面(activity)启动耗时(毫秒)。
  • TotalTime:应用自身启动耗时,等于ThisTime加上应用application等资源启动时间(毫秒)。
  • WaitTime:系统启动应用耗时,等于TotalTime加上系统资源启动时间(毫秒)。

3.1.2 热启动

场景设计:切换到桌面,等待数秒,重新切换回应用。

测试方法:

  • 使用adb命令adb shell input keyevent 3切换到桌面。
  • 使用adb命令adb shell am start -W -n appPackage/appActivity(绝对路径,首个Activity)重新启动应用。

结果分析:同样关注启动时间,并与冷启动时间进行比较分析。

如何确定启动时间是否符合标准:

  • 根据用户体验,启动时间应尽可能短,以减少用户等待时间。
  • 与以往版本进行对比,确保新版本在启动时间上有所优化。
  • 横向对比,与同类产品一起测试,确保启动时间不超过同类产品的1倍。

测试标准:冷启动时间不超过1.5秒,热启动不超过1秒。

3.2 CPU占用率

在使用App的过程中,有时会遇到手机发热发烫的现象。这通常是由于CPU使用率过高,CPU负载过重,导致整个系统响应缓慢,整体性能下降,用户体验变差。因此,对CPU利用率的监测和分析是性能测试中的重要环节。

3.2.1 CPU利用率概念

CPU Usage:传统意义上的CPU利用率,也称为未规范化CPU利用率。它表示当前时刻CPU频率下,CPU执行时间占总时间的比例。通常通过adb等工具获取的数据都是未规范化的CPU利用率。

CPU Usage(Normalized):规范化CPU利用率。由于移动设备CPU频率会实时变化,传统的CPU利用率计算方法无法真实反映性能消耗。因此,我们需要一种规范化(可量化)的统计方式,将频率因素考虑进去。规范化CPU利用率的计算公式为:

CPU Usage(Normalized) = (CPU执行时间/CPU总时间) * (当前时刻所有CPU频率之和/所有CPU频率最大值之和)

3.2.2 测试场景设计

  1. 测试点
  • 空闲时间(切换至后台)的CPU消耗情况。
  • 在运行其他应用的情况下,CPU占用约50%时,观察目标应用程序的CPU占用情况。
  • 在高负荷情况下(CPU占用率80%以上)观察CPU的表现。
  1. 具体场景
  • 应用空闲状态运行:应用按Home键退到后台,不再占用系统的状态(通常是灭屏半分钟后),预期CPU占用率=0%。
  • 应用中等规格运行:模拟用户最常见的使用场景,预期CPU占用率≤30%。
  • 应用满规格长时间正常运行:持续进行大量操作或处理大量数据,预期CPU占用率≤30%。
  • 应用正常运行期间监测CPU占用率峰值:打开应用进行基本操作,预期CPU占用率≤50%。

3.2.3 测试方法

使用Perfdog工具采集不同场景下的CPU利用率数据。Perfdog能够实时监测并记录CPU的使用情况,为性能分析提供准确的数据支持。

3.2.4 结果分析

  1. 与自身App的上个版本对比:通过对比不同版本的CPU利用率数据,可以评估App在性能优化方面的效果,找出可能存在的性能瓶颈。
  2. 与竞品对比:将自身App的CPU利用率数据与竞品进行对比,可以了解自身App在市场上的竞争地位,为性能优化提供方向。
  3. 自身App各个界面对比:分析不同页面或功能模块的CPU利用率数据,找出可能存在的性能问题,并针对性地进行优化。

3.3 内存占用率

在Android系统中,每个APP进程都拥有其独特的内存使用模式。了解并优化APP的内存使用对于提升用户体验和确保应用稳定性至关重要。本测试方案旨在通过Perfdog工具对APP的内存使用情况进行全面测试和分析。

3.3.1 内存指标概述

  1. VSS(Virtual Set Size):虚拟耗用内存,包含共享库占用的内存。
  2. RSS(Resident Set Size):实际使用物理内存,包含共享库占用的内存。
  3. PSS(Proportional Set Size):实际使用的物理内存,按照比例分配共享库占用的内存。
  4. USS(Unique Set Size):进程独自占用的物理内存,不包含共享库占用的内存。

通常,内存占用大小遵循以下规律:VSS >= RSS >= PSS >= USS。在本测试方案中,我们将主要关注PSS(即Android PSS Memory),因为它代表了实际使用的物理内存大小,是评估APP内存开销的关键指标。

3.3.2 测试场景设计

  1. 空闲状态:将APP切换至后台或启动后不进行任何操作,以观察APP在最低活跃状态下的内存消耗。
  2. 中强度状态:进行时间较长的操作或应用功能的使用,以模拟用户正常使用场景下的内存使用情况。
  3. 强度状态:通过运行monkey测试等高强度使用方式,模拟极端情况下的内存使用情况,并检测是否存在内存泄漏问题。

3.3.3 测试方法

使用Perfdog工具采集不同场景下的内存数据。Perfdog能够实时监测APP的内存使用情况,并提供详细的内存占用报告。

3.3.4 结果分析

  1. 分析退出某个页面后,内存是否有回落现象。这有助于评估APP的内存管理策略是否有效,以及是否存在内存泄漏问题。
  2. 观察进行某个操作后,内存是否增长过快。这有助于发现可能导致内存溢出或卡顿的潜在问题。
  3. 对比旧版本和新版本的内存使用情况。通过对比不同版本的内存数据,可以评估APP在内存优化方面的效果,并找出可能存在的性能瓶颈。
  4. 将新版本与竞品进行比较。通过对比竞品的内存使用情况,可以了解自身APP在市场上的竞争地位,并为后续优化提供方向。

3.4 电量消耗

移动设备电池电量的有限性使得电量管理成为APP性能优化的关键一环。电量测试旨在确保APP在使用过程中能够合理控制电量消耗,为用户提供持久稳定的体验。本测试方案将针对APP的不同使用场景进行电量测试,以评估其电量使用效率。

3.4.1 测试场景设计

  1. GPS定位场景

    • 场景描述:打开导航软件,开启GPS定位功能,在导航页面运行一段时间后关闭GPS定位。
    • 测试目的:评估开启GPS定位功能对电量消耗的影响。
  2. 屏幕亮度场景

    • 场景描述:设置手机屏幕亮度为100%,打开APP运行一段时间后退出并关闭后台。
    • 测试目的:测试不同屏幕亮度下APP的电量消耗情况。
  3. 网络传输场景

    • 场景描述:打开视频软件,观看视频一段时间后退出并关闭后台。
    • 测试目的:评估网络传输对电量消耗的影响,特别是在大量数据传输的情况下。
  4. CPU频率场景

    • 场景描述:打开需要大量运算的页面(如股票走势图、动态加载图表等),停留一段时间后退出并关闭后台。
    • 测试目的:评估CPU运算对电量消耗的影响,尤其是在处理大量动态内容时。
  5. 内存调度场景

    • 场景描述:打开需要频繁加载图像的页面(如电商商品浏览页),进行一段时间的浏览后退出并关闭后台。
    • 测试目的:测试内存调度对电量消耗的影响,特别是在频繁加载图片或数据时。
  6. 长时间连续使用及后台运行场景

    • 场景描述:连续使用一个小时APP,观察电量消耗情况;同时测试APP在后台运行时的电量消耗。
    • 测试目的:评估APP在长时间连续使用及后台运行时的电量表现。

3.4.2 测试方法

使用Perfdog工具采集手机耗电量数据。在测试过程中,应尽量减少系统本身和其他APP的干扰,以确保测试结果的准确性。请注意,Perfdog电量测试仅支持WiFi连接状态

3.4.3 结果分析

根据测试数据,分析不同场景下APP的电量消耗情况。将测试结果与同类产品进行对比,或者与本产品的其他页面进行对比,以评估APP的电量使用效率。重点关注异常耗电的情况,并针对性地进行优化。

3.5 流量消耗

在移动互联网时代,流量成为用户使用APP时关注的重点之一。不同网络类型下的流量消耗和请求响应速度直接影响到用户体验。因此,对APP进行流量测试至关重要,以确保其在不同网络环境下能够高效、稳定地运行。

3.5.1 测试场景设计

  1. 安装后首次启动流量测试

    • 场景描述:从APP安装完成到首次启动并加载所有必要资源的过程中所消耗的流量。
    • 目的:评估APP首次启动时的流量消耗情况,为后续优化提供依据。
  2. 非首次启动流量测试

    • 场景描述:APP在非首次启动(即已有缓存数据)时加载所有必要资源所消耗的流量。
    • 目的:对比首次启动与非首次启动的流量消耗差异,分析缓存策略的有效性。
  3. 后台运行流量测试

    • 场景描述:APP在后台运行时所消耗的流量,包括后台更新、推送通知等功能。
    • 目的:评估APP在后台运行时的流量消耗情况,确保不会给用户带来不必要的流量费用。
  4. 业务场景流量测试

    • 场景描述:针对APP中的特定业务场景(如登录、搜索、浏览商品等)进行流量测试。
    • 目的:分析不同业务场景下APP的流量消耗情况,找出可能存在的优化点。

3.5.2 测试方法

使用Perfdog测试工具采集流量数据。在测试过程中,请确保设备已连接到WiFi网络,并关闭其他可能干扰测试的应用程序和进程。

3.5.3 测试结果与分析

  1. 流量消耗对比

    • 对比旧版本与新版本的流量消耗情况,分析优化效果。
    • 对比本产品与竞品的流量消耗情况,评估市场竞争力。
  2. 场景流量分析

    • 根据测试场景记录每个场景的流量消耗数据。
    • 分析不同场景下流量消耗的原因和可能的优化方案。
  3. 测试结果汇总

    • 将测试结果汇总成表格形式,方便查看和对比。
    • 针对每个测试场景给出是否通过的结论,并提出改进建议。

3.6 流畅度

3.6.1 测试指标

流畅度作为App性能的重要衡量标准,主要通过以下指标进行评估:

  • FPS:每秒传输帧数(1s内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)。
    AVG(FPS):平均帧率(一段时间内的平均FPS)。
    Var(FPS):帧率方差(一段时间内FPS方差)。
    Drop(FPS):降帧次数(平均每小时相邻的个FPS点下降大于8帧的次数)。

  • Jank:卡顿次数。

  • BigJank:严重卡顿次数(1s内卡顿次数)。
    BigJank:1s内严重卡顿次数
    Jank(/10分钟):平均每十分钟卡顿次数
    BigJank(/10分钟):平均每十分钟严重卡顿次数

  • FTime(上下两帧画面显示时间间隔,即认定为帧耗时)
    AVG(FTime):平均帧耗时
    Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)

  • PerfDog-Stutter:卡顿率。
    PerfDog Stutter 定义:测试过程中,卡顿时长的占比。即Stutter(卡顿率)=卡顿时长/总时长

3.6.2 测试方法

  1. 场景设计:针对被测软件的每一个页面进行流畅度测试,确保覆盖所有功能和操作场景。
  2. 测试准备:安装并配置Perfdog工具,确保其与测试设备兼容并正常工作。
  3. 测试执行:在App上进行正常操作,如滑动、点击、切换页面等,同时使用Perfdog工具采集数据。

3.6.3 结果分析

  1. 游戏方面:

    • 重点关注FPS、Jank及卡顿率,以评估游戏画面的流畅度。
    • 分析不同游戏场景和操作下的流畅度表现,找出可能存在的问题和优化点。
  2. APP方面:

    • 同样关注FPS、Jank及卡顿率,但需要根据不同使用场景进行具体分析。
    • 对比以往版本或竞品的数据,评估当前版本的流畅度表现。

3.6.4 不同页面场景下的流畅度关注点

  1. 静态页面窗口:

    • 主要关注FPS,理论上静态页面无需刷新,FPS应为0。若存在非零FPS,可能意味着存在冗余刷新,可能导致手机发热和耗电。
  2. 有滚动动画页面窗口:

    • 关注FPS值,确保动画流畅,但无需追求过高帧率,以避免不必要的资源消耗。
  3. 快速滑动页面窗口:

    • 重点关注FPS、Jank及卡顿率。在快速滑动时,帧率越高,界面越流畅;Jank值越小,卡顿感越弱。
  4. 播放视频页面窗口:

    • 关注FPS、Jank及卡顿率,确保视频播放流畅无卡顿。对于视频内容,一般帧率在18-24帧之间即可满足需求,重要的是确保Jank值为0,以避免视频播放时出现卡顿现象。

四、测试流程

  • 确定测试指标和标准。
  • 准备测试设备和环境,安装Perfdog工具。
  • 按照测试方案执行各项测试,记录测试数据。
  • 对测试数据进行分析和比较,评估App的性能表现。
  • 根据测试结果提出优化建议,并跟进优化后的测试效果。

五、总结

本测试方案旨在全面评估App客户端的性能表现,通过监测启动时间、CPU占用率、内存占用率、电量消耗、流量消耗以及流畅度等多个关键指标,为开发者提供优化App性能的依据和方向。

六、以下是关于Perfdog、GT、SoloPi和Emmagee这四个工具的详细介绍:

6.1 Perfdog

  • 概述:Perfdog是一款出色的性能测试工具,专为移动应用开发者设计,旨在帮助他们全面了解软件的性能状况。
  • 特点
    • 实时监控:能够实时监控软件的性能指标,包括CPU占用率、内存占用率、网络流量等,帮助开发者快速定位性能问题。
    • 精准定位:支持多种定位方式,如堆栈信息、函数调用链等,帮助开发者准确找到性能瓶颈所在。
    • 多平台支持:支持Windows、Mac、Android等多个操作系统,满足不同开发环境的需求。
    • 数据可视化:提供直观的数据可视化界面,开发者可以通过图表和报表等方式对性能数据进行分析和比较。
  • 应用:通过Perfdog,开发者可以模拟用户在不同网络环境下访问应用的情况,并实时监控应用的性能指标。

6.2 GThttps://blog.csdn.net/2301_81692192/article/details/135203894

  • 概述:GT是一个APP的随身调测平台,作为直接运行在手机上的“集成调试环境”(IDTE),它无需连接电脑即可对APP进行性能测试。
  • 功能
    • 基础性能测试:测试CPU、内存、网络流量、流畅度/帧率、电量等关键指标。
    • 日志查看与保存:支持logcat日志的查看与保存。
    • 网络数据包抓包:可以抓取网络数据包并保存为PCAP文件,用于后续分析。
    • 手机电流电量测试:评估应用耗电情况。
  • 其他特性:支持广播的方式获取被测APP性能指标,主要用于自动化测试。

6.3 SoloPi

  • 概述:SoloPi是一个无线化、非侵入式的Android自动化测试工具,具有录制回放、性能测试和一机多控等功能。
  • 功能特点
    • 录制回放:能够记录用户的操作并在不同设备上进行回放。
    • 性能测试:记录待测应用的各项指标,支持实时更新和查看性能数据。
    • 一机多控:通过一台设备可以控制多台设备,提高测试效率。
  • 使用方法:连接设备到PC后,通过特定命令检查设备连接状态,即可开始使用。

6.4 Emmagee

  • 概述:Emmagee是网易杭州研究院开发的一款用于监控安卓客户端性能的工具。
  • 功能
    • 性能监控:监控被测应用在使用过程中的CPU、内存、流量和电量变化情况。
    • 数据记录:自定义配置监控频率以及性能的实时显示,并支持生成性能统计CSV文件。
    • 浮窗功能:在浮窗中实时显示被测应用占用的性能数据信息,并可以快速启动或关闭手机的wifi网络。
  • 兼容性:支持Android 2.2及以上版本。

这四个工具在移动应用开发和性能测试领域都有广泛的应用,各自具有独特的功能和优势,开发者可以根据具体需求选择合适的工具进行性能分析和优化。请注意,这些工具的具体使用方法和功能可能会随着版本的更新而有所变化,建议查阅最新的官方文档或相关资料以获取最准确的信息。

参考链接:

全网最全移动端App性能测试方法,值得收藏 - 知乎 (zhihu.com)

 

app性能测试 

 

APP性能

 

功能测试(八)—— APP之专项测试、性能测试、性能测试工具SoloPi_功能测试_此心光明事上练-杭州城市开发者社区 (csdn.net)

posted @ 2024-03-20 11:10  术科术  阅读(210)  评论(0编辑  收藏  举报