• 0
  • 0
分享
  • 百度视频在Android和iOS端性能测试方法——软件测试圈
  • TIMI 2021-11-11 09:56:25 字数 3513 阅读 1027 收藏 0

背景介绍

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

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

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

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

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

APP性能分析维度

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

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

1.jpg

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

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

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

APP性能指标获取手段

Android系统指标获取

  • CPU

CPU的测试方法分为几类

a、使用Android提供的方法

adbshelldumpsyscpuinfo|greppackagename>/address/cpu.txt来获取

b、使用top命令

adbshelltop|greppackagename>/address/cpu.txt来获取
  • 内存

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

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

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

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

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

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

  4. 应用内存峰值情况

  5. 应用内存泄露情况

  6. 应用是否常驻内存

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

电量

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

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

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

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

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

软件测试一般分为2类:

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

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

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

方法三、通过adbshelldumpsysbattery来获取。

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

  • 启动时长

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

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

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

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

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

  • 帧率

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

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

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

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

  • 不允许出现黑色像素

  • 不允许存在4x过度绘制

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

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

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

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

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

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

  • 网络流量

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

中等负荷:应用正常操作

高负荷:应用极限操作

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

  • 应用首次启动流量提示

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

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

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

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

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

  • 自研工具进行测试

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

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

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

adbshellcat/proc/uid_stat/uid/tcp_rcv
adbshellcat/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()

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

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

Smallapple特性:

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

  • 支持非越狱设备

  • 不需要依赖源码

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

  • 完全的命令行模式


作者:testingbang

原文链接:http://blog.itpub.net/69942496/viewspace-2739938/

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • Apache JMeter 是一款开源的性能测试工具,可以用于测试 Web 应用程序、FTP 服务器、数据库等各种类型的服务器。本文将以 JMeter 5.5 为例介绍 JMeter 的使用方法。下载和安装由于 JMeter 是使用 Java 开发的,因此在运行之前必须先安装 JDK。您可以在这 JMeter 下载和安装教程 下载 JMeter。JMeter 是一款免安装的软件,下载安装包后直接解压即可使用。在 bin 目录下,Windows 用户运行 jmeter.bat 文件即可启动 JMeter,Unix/Mac OS X 用户则需要运行 jmeter/jmeter.sh。创建测试计划在...
            0 0 1108
            分享
          •   正常情况下,有了四年的测试工程师经历,应该可以达到中级测试工程师的水平了。作为一个初中级测试工程师下一步是转开发还是继续做测试,个人建议是做测试开发!  本篇文章将由以下四个部分来展开:  ·可以继续做测试吗?  ·转行做开发可以吗?  ·为何说建议转行测试开发?  ·如何走向测试开发,有什么靠谱的办法?  一、可以继续做测试吗?答案是行不通  这里所说的测试是指普通的“手工测试”,如果只是做普通的手工测试,只是每天机械的进行“点点点”,想拿高薪是不太现实的。即使工作的时间长了,但是大部分人员还是停留在初级测试工程师的阶段。并且随着年龄的增长你会发现你越来越没有了竞争力,比你年轻、有活力、...
            0 0 1910
            分享
          • 前言在一线大厂,没有测试这个岗位,只有测开这个岗位即使是做业务测试,那么你的title也是测开所以想聊一聊测开的看法但不代表这是正确的看法,仅供参考还没来阿里之前,我对测开的看法一直以为专职做自动化测试和性能测试是测试这条路的最终归宿测试开发,只是大厂才可能存在的角色测试平台,少部分公司才会用到的东西,肯定不会成为主流的啦况且测试平台要会前端还得会后端,你都这么全栈为什么不做开发呢做 UI 自动化、接口自动化直接写 python 脚本不就好了嘛,做性能测试用 Jmeter 就好了嘛多数人眼中的测试开发开发一个测试平台,就要包揽前后端至...
            0 0 1039
            分享
          • 经验1:要参与需求评审,评审需求的过程实际也是熟悉业务需求的过程。只有对产品的业务理解到位,才能更好、更充分地设计出高质量的测试用例。经验2:对于业务需求比较复杂的交易,最好逐条梳理出对应的测试点,一条测试点对应多条案例。经验3:测试用例的级别要划分清楚,这样在测试执行时有主次之分。比如冒烟测试时,要写把重要的分支流程测到,确保能够优先发现和解决重要的问题。经验4:评审用例很关键,经过评审可以发现:用例设计的结构安排是否清晰合理;是否覆盖所有功能点;是否存在冗余用例;是否存在需求理解上的差异;经验5:测试用例的设计需要不断的更新维护。即使在测试用例设计完成,进入测试执行阶段时,也需要利用发散的...
            0 2 3770
            分享
          • 前言前面对脚本的基础配置、公共配置进行封装完成后,下一步便是对公司内部的业务进行分模块,按照模块进行对应的封装业务逻辑的封装目的将整个应用抽离分成哥哥公共模块,以便在不同的业务场景内直接复用对应的脚本文件;例如:将登录分成引导页模块、登录模块、注册模块、签到模块等等,各个模块根据业务能力划分,独立封装对应的脚本,便于后续业务功能发生变更时,快速的维护和调用脚本。脚本目录以下脚本分别对登陆模块和退出登陆模块两个模块进行独立封装本地对应的文件夹目录:脚本简述其中登录模块的测试脚本,包含了:登录的整个操作流程login_action()校验是否登录成功check_login_alter()
            0 0 1332
            分享
      • 51testing软件测试圈微信