背景介绍

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

  这个系列,从 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 安装测试

  · 完全的命令行模式

本文转自【百度质量部】,更多文章可关注公众号【测试帮日记】

百度视频在Android和iOS端性能测试方法相关推荐

  1. grasscutter 使用指南——Android/Windows/IOS端均已支持

    grasscutter 使用指南--Android/Windows/IOS端均已支持 前言 grasscutter是某二次元手游的开源后端,目前功能并不完整,但正在contributers正在全速开发 ...

  2. 一套代码两端运行不靠谱?是时候放弃 C++ 跨 Android、iOS 端开发!

    「Write once,run anywhere!」想必是很多开发者以及企业梦寐以求的愿望,但是在分析跨平台中的种种成本之后,我们不禁发问,这种策略真的靠谱吗? 近日,云存储公司 Dropbox 就此 ...

  3. 中国android和iOS用户数量,Android和iOS端Outlook用户数量突破1亿

    来源:cnBeta 根据微软官方提供的数据,微软的移动端电子邮件客户端再次创造了新的里程碑.全球范围内Android和iOS端的Microsoft Outlook用户数量已经突破1亿,而这是微软在移动 ...

  4. 视频直播技术之iOS端推流

    随着网络基础建设的发展和资费的下降,在这个内容消费升级的时代,文字.图片无法满足人们对视觉的需求,因此视频直播应运而生.承载了实时性Real-Time和交互性的直播云服务是直播覆盖各行各业的新动力.网 ...

  5. 视频直播技术之iOS端推流 1

    随着网络基础建设的发展和资费的下降,在这个内容消费升级的时代,文字.图片无法满足人们对视觉的需求,因此视频直播应运而生.承载了实时性Real-Time和交互性的直播云服务是直播覆盖各行各业的新动力.网 ...

  6. yooasset+hybridclr在android,ios端热更新测试

    Hybridclr+YooAsset+Unity Run android+iOS 这个工程是用来学习YooAsset和Hybridcl,来做unity资源和代码热更新, 实现了android 和ios ...

  7. 百度for android,百度视频 for Android

    百度视频手机版汇聚最新电影.热播电视剧.最热综艺.韩剧.美剧.动漫.体育.新闻.游戏竞技,你想看的,这里都有!百度视频是国内最全最强大的视频播放器,快速播放.高清画质.高速下载.离线观看,省流量.无广 ...

  8. 美颜SDK如何进行Android和iOS双端开发?

    近期,小编看到大家都在搜索一个热门问题,"美颜SDK在开发过程中有必要搞双端开发吗?"双端,也就是常见的APP开发中的Android与iOS端.虽然美颜SDK不同于传统的APP,但 ...

  9. 跨平台Android和IOS百度语音在线识别原生插件

    一.插件推荐 跨平台Office文档.图片在线预览,视频播放原生插件 Android和IOS图片在线预览,视频播放原生插件 跨平台Android和IOS百度OCR文字识别.证卡识别.票据识别原生插件 ...

最新文章

  1. 电脑科学性计算机怎么用,怎么使用科学计算器59 000×(1+r)-2
  2. Memcached 一致性哈希算法PHP实现
  3. 基础的c语言题目,几个c语言的基础题目
  4. SAP License:瞎搞!你真的懂什么是ERP、中台和低代码吗?
  5. Python结合Shell/Hadoop实现MapReduce
  6. javaWeb基础知识及注意事项
  7. spring security原理图及其解释
  8. 1.不同角度的性能测试
  9. QT 播放器之VideoWidget
  10. 图像采集——OV5640摄像头简介、硬件电路及上电控制的Verilog代码实现并进行modelsim仿真
  11. IDEA进行对json数据格式化
  12. 愿你永远像个boy,找到自己的光亮
  13. Android实战技巧之三十九:短信收发
  14. python使用opencv实现人脸检测
  15. 知云文献翻译打不开_有了这几个软件,轻松读懂英文文献
  16. esxi改mac地址_ESXI克隆CentOS修改MAC地址
  17. reddits股票线程成为华尔街必读的内容
  18. 深度学习基础(五):循环神经网络概念、结构及原理实现
  19. 70、android 查看当前显示activity方式
  20. 学习1368个单词 - 有关物和人的名词

热门文章

  1. CSDN写文章MarkDown用到的表情包收集(转自Github)
  2. 人工智能也存在偏见?探究人工智能偏见的识别和管理
  3. jQuery快速掌握(看这一篇就够了)
  4. APP强制更新(uni-app)
  5. Android 动态分区详解(六) 动态分区的底层机制
  6. 获取淘宝订单的解决方案
  7. 停止对初创企业的限制
  8. JavaScript - 语言提高
  9. 微信小程序 - 暗黑模式(深色模式)
  10. LM2596 负载增大,电压降低的问题