百度视频在Android和iOS端性能测试方法

背景介绍

  一直以来,性能测试是被一部分人遗忘,又让另一部分人无可奈何的东西。在绝大部分的创业公司,性能测试基本上都是被遗忘的,他们认为功能测试和稳定性测试才是重点,而在中等规模的公司中一部分测试人员考虑进行性能测试,却无从下手。

  这个系列,从 baidu 测试工程师的工作实践出发,介绍移动端性能测试的通用方法和结合产品特点的不同侧重。

  随着流量费用的降低,越来越多的人开始在公交地铁等移动场景使用视频应用。视频类的应用会更多关注播放流畅度、下载等性能指标,下面介绍的是百度视频的性能测试方法。

  百度视频是第三方视频资源聚合类产品,主要提供用户在线播放、离线下载各种视频服务,提供 PC 、 Android 、 iOS 三端入口,用户体验、流畅度、下载速度、检索视频资源等是目前产品线最关注的层面。

  一款优秀的娱乐类应用,必须具有卓越的性能,超越同类竞品,同时兼具良好的用户体验。

  APP性能分析维度

  App 类型众多,根据具体类型划分,性能指标的维度和优先级各不相同。视频类 App 归属于娱乐游戏型的 App ,因此性能测试维度优先级排序为:流畅度、 crash 、内存、流量、响应时长、功耗、 CPU 。

  表征不同维度指标的量化单位如图 21 所示。比如流畅度是 FPS (帧率),内存是兆比等等。

  因为 Android 平台底层是由 linux 系统改良而来,不同维度的指标绝大部分都可以通过命令来取不同的指标(具体方法可以参加后面工具)

  在 iOS 平台上,性能的获取,必须使用 Xcode 里面 instruments 下的相应组件,不像开源的 Android 那样灵活,但技术上是可以做到各平台的性能指标获取测试。

  APP性能指标获取手段

  Android系统指标获取

  CPU

  CPU 的测试方法分为几类

  a. 使用 Android 提供的方法

  adbshell dumpsyscpuinfo |grep packagename >/address/cpu.txt 来获取

  b. 使用 top 命令

  adbshell top |greppackagename>/address/cpu.txt 来获取

  内存

  内存消耗,这个测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性,当然关于内存测试,在这里我们需要引入几个概念:空闲状态、中等规格、满规格。

  空闲状态:指打开应用后,点击 home 键让应用后台运行,此时应用处于的状态叫做空闲。中等规格和满规格指的是对应用的操作时间的间隔长短不一,中等规格时间较长,满规格时间较短。

  接下来我们说说在内存测试中,存在很多测试子项,如下清单所示:

  1、空闲状态下的应用内存消耗情况

  2、中等规格状态下的应用内存消耗情况

  3、满规格状态下的应用内存消耗情况

  4、应用内存峰值情况

  5、应用内存泄露情况

  6、应用是否常驻内存

  7、压力测试后的内存使用情况

  电量

  功耗测试主要从以下几个方面入手进行测试:

  a 、测试手机安装目标 APK 前后待机功耗无明显差异。

  b 、常见使用场景中能够正常进入待机,待机电流在正常范围内。

  c 、长时间连续使用应用无异常耗电现象。

  功耗测试的方法分为两类,一类为软件测试,一类为硬件测试。

  软件测试一般分为 2 类:

  第一种采用市场上提供的第三方工具,如金山电池管家之类的。第二种就是自写工具进行,这里一般会使用 3 种方法 :

  方法一、基于 android 提供的 PowerManager.WakeLock 来进行;

  方法二、稍复杂一点,功耗的计算 =CPU 消耗 +Wakelock 消耗 + 数据传输消耗 +GPS 消耗 +Wi-Fi 连接消耗;

  方法三、通过 adbshell dumpsys battery 来获取。

  接着说下硬件测试,在这里我们一般使用万用表或者功耗仪进行测试,使用功耗仪测试的时候,需要制作假电池来进行的,有些不能拔插电池的手机还需要焊接才能进行对了测试。

  启动时长

  首先我们来说说启动时间。关于应用的启动时间的测试,分为三类:

  首次启动 -- 应用首次启动所花费的时间

  非首次启动 -- 应用非首次启动所花费的时间

  应用界面切换 -- 应用界面内切换所花费的时间

  那么如何来做启动时间的测试呢,一般我们分为 2 类,一类为使用软件来测试,一类为使用硬件来测试。对于软件测试的方法,大部分人都比较通晓使用 Android 提供的 DisplayManager 来获取 activity 的启动时间。通过日志过滤关键字 Displayed 来过滤所有 activity 所打印的,记录日志通过。

  帧率

  GPU 这个词对于 PC 性能测试者来说并不陌生,而今 3Dmax ,安兔兔之类的第三方软件让 GPU 在移动端性能测试领域家喻户晓,但对于 App 内的 GPU 该如何来测试呢?首先我们引入几个名词:过度绘制、帧率、帧方差。

  过度绘制是指界面显示的 activity 套接了多层导致的结果。帧率是指屏幕刷新率。帧方差是指屏幕刷新帧间隔方差。

  对于 GPU 的测试主要包括以下几个测试子项:界面过度绘制、屏幕滑动帧速率、屏幕滑动平滑度。

  对于过度绘制的测试主要通过人工进行测试,通过打开开发者选项中的显示 GPU 过度绘制来进行测试( PS :只有 Android4.2 及以上的版本才具备此功能 ) ,验收的标准为 :

  a 、不允许出现黑色像素

  b 、不允许存在 4x 过度绘制

  c 、不允许存在面积超过屏幕 1/4 区域的 3x 过度绘制(淡红色区域)

  对于屏幕滑动帧速率,常用手段包括软件测试或硬件辅助测试。软件测试的方法如下:

  1. 手机端需打开开发者选项中的启用跟踪后,勾选 Graphics 和 View ;

  2. 启动 SDK 工具 Systrace 插件,勾选被测应用,点击 Systrace 插件,在弹出的对话框中设置持续抓取时间,在 tracetaps 下面勾选 gfx 及 view 选项;

  3. 人滑动界面可以通过节拍来进行滑动或者扫动,帧率数据会保存到默认路径下,默认名称为 trace.html ;

  4. 将 trace.html 文件拷贝到 linux 系统下通过命令进行转换,生成 trace.csv 文件。

  网络流量

  性能测试的——流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试。流量测试,同样需要引入几个名词:

  中等负荷:应用正常操作

  高负荷:应用极限操作

  流量测试包括以下测试项:

  a 、应用首次启动流量提示

  b 、应用后台连续运行 2 小时的流量值

  c 、应用高负荷运行的流量峰值

  d 、应用中等负荷运行时的流量均值流量测试

  流量测试一般都是用软件来进行的,这里我们一般分为 2 类:

  a 、采用市场提供的第三方工具来进行测试,如流量宝

  b 、自研工具进行测试

  自研工具进行测试一般包含 2 类方法:

  a 、通过 tcodump 抓包,再通过 wireshake 直接读取包信息来获得流量

  b 、首先获得被测应用的 uid 信息(可以通过 adbshelldumpsys package 来获取),然后在未操作应用之前,我们可以通过查看

  adbshell cat/proc/uid_stat/uid/tcp_rcv

  adbshell cat/proc/uid_stat/uid/tcp_snd

  获取到应用的起始的接收及发送的流量,然后我们再操作应用,再次通过上述 2 条命令可以获取到应用的结束的接收及发送的流量,通过相减及得到应用的整体流量消耗。

  iOS系统指标获取

  对于 iOS 系统,只需要一个装了 xcode 的 mac 电脑,取以上指标相对容易。最新版本是 xcode7.0 (当然你用老版本的也一点问题都没有)

  性能测试工具,推荐用下面三个 :

  工具一、 Instruments ,这个是 mac 苹果自带的工具,里面有很多模板,选择不同的系能模板就可以监听手机 App 性能了,但是要注意,没越狱的机器必须注册开发者证书,或者拿到 App 企业证书,这样 xcode 才能启动 App 进行性能监控,也就是说你被测 App 必须有源代码才行,当然你想规避这个问题,得走百度 smallApple 破解签名机制

  工具二、 GT ,是腾讯开发的一款 App ,但是也得在源码层面嵌入 GT 的 SDK

  工具三、 SmallApple ( https://github.com/hyxbiao/smallapple )

  Smallapple 是一个开源的 IOS 自动化测试工具,旨在提供一套完整的 iOS 自动化测试解决方案,提供针对 iOS App 的功能和性能测试,同时提供类似 Android adb 、重签名、 instruments 结果解析、录制回放等工具集。

  Smallapple 通过一键式的执行方式,自动完成 App 重签名、安装、测试、性能采集(包括 CPU 、内存、流量等)、 Crash 检测和结果报告等工作。

  Smallapple 特性

  Smallapple 致力于以最简单的方式,最小的代价提供给用户使用。

  支持非越狱设备

  不需要依赖源码

  支持 Appstore 或者第三方下载的 App 安装测试

  完全的命令行模式

      走在最后
       平时我们侃侃而谈的性能优化点往往也是我们最容易忽略的点.性能优化也绝非一蹴而就,需要我们在日常开发中不断去发现和优化.路漫漫其修远兮...

        想进阶学习的朋友的可以加群:175317069 群里有免费的公开课,主要内容是讲解自动化测试、功能测试还有不定期发放的软件测试资
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值