一款优秀的应用,必修具有卓越的性能, 超越同类竞品, 同事兼具良好的用户体验.
APP性能维度分析
APP类型众多, 根据具体类型划分, 性能指标的维度和优先级各不相同. 视频类APP归属于娱乐游戏型的APP, 因此性能优先测试维度优先级排序为: 流畅度、Crash、内存、流量、响应时长、功耗、CPU. 表征不同维度指标的量化单位如下所示. 比如流畅度是FPS(帧率), 内存是MB等等。 ---------------------------------------- 不同维度指标的量化单位 ---------------------------------------- | CPU -- 占有率 | 帧率 -- FPS | 内存 -- MB 性能 | 电量 -- Jifiess | 启动时长 -- MS | 网络流量 -- KB | Crash率 -- 百分比 ---------------------------------------- 因为Android系统底层是由Linux系统改良而来, 不同维度的指标绝大部分都可以通过命令来取不同的指标。 在IOS平台上,系能的获取, 必须使用Xcode里面的instruments下的相应组件, 不想开源的Android那样灵活, 但技术上是可以做到各平台的性能指标获取测试.
APP性能指标获取手段
1. Android系统指标获取 1.1 CPU CPU的测试方法分为几类: a. 使用Android提供的方法 adb shell //进入目标设备系统 dumpsys cpuinfo | grep "packagename" >D:\cpu.txt //显示并将应用的CPU信息发送到计算机D盘 b. 使用top命令 adb shell //进入目标设备系统 top | grep "packagename" >D:\cpu.txt //显示并将应用的CPU信息发送到计算机D盘 1.2 内存 内存消耗, 这个测试节点的设计目标是为了让应用不占用过多的系统资源, 且及时释放内存, 保障整个系统的稳定性, 当然关羽内存测试, 在这里我们需要引入几个概念: 空闲状态、中等规格、满规格. 空闲状态: 值打开应用后, 点击Home键让应用后台运行, 此时应用处于的状态叫做空闲. 中等规格和满规格指的是 对应用的操作时间的间隔长短不一, 中等规格时间比较长, 满规格时间较短. 接下来我们说说在内存测试中, 存在很多测试子项, 如下清单所示: a. 空闲状态下的应用内存消耗情况 b. 中等规格状态下的应用内存消耗情况 c. 满规格装填下的应用内存消耗情况 d. 应用内存峰值情况 e. 应用内存泄露情况 f. 应用是否常驻内存 g. 压力测试后的内存使用情况 1.3 电量 功耗测试主要从以下几个方面入手进行测试: a. 测试手机安装目标APK前后待机功耗无明显差异 b. 常见使用场景中能够正常进入待机, 待机电流在正常范围内 c. 长时间连续使用应用无异常耗电现象 功耗测试的方法分为两类, 一类为软件测试, 一类为硬件测试. 软件测试一般分为两类: 1. 采用市场上提供的第三方工具 2. 自写工具进行测试 当然,这里使用另外的三种方法: 1. 基于Android提供的PowerManage.WakeLock来进行; 2. 稍复杂一点, 功耗的计算 = CPU消耗 + WakeLock消耗 + 数据传输消耗 + GPS消耗 + WiFi连接消耗; 3. 通过 adb shell dumpsys battery来获取 接下来说硬件测试, 在这里一般使用万用表或者功耗仪进行测试, 使用功耗仪测试的时候, 需要制作假电池来进行, 有些不能插拔的手机需要焊接才能进行测试. 1.4 启动时长 首先是APP的启动时间. 关于应用的启动时间测试分为三类: A. 首次启动 - 应用首次启动所花费的时间 B. 非首次启动 - 应用非首次启动所花费的时间 C. 应用界面切换 - 应用界面内切所花费的时间 做启动时间的测试一般分为两类, 一类为使用软件来测试, 一类为使用硬件来测试. 对于软件测试的方法, 大部分人都比较通晓使用Android提供的DisplayManager来获取Activity的启动时间. 通过日志过滤关键字Displayed来过滤所有Activity所打印的, 记录日志通过. 1.5 帧率 GPU这个词对于PC性能测试者来说并不陌生, 而今一些第三方软件让GPU在移动端性能测试领域广为人知, 我们对于APP内的GPU测试 引入几个名词: 过度绘制、帧率、帧方差. 过度绘制是指界面的activity桃姐了多层导致的结果. 帧率是指屏幕刷新率. 帧方差是指屏幕刷新帧间隔方差. 对于GPU的测试主要包括以下几个测试子项: 界面过度绘制、屏幕滑动帧速率、屏幕滑动平滑度. 对于过度绘制的测试主要通过人工进行测试, 通过打开开发者选项中的显示GPU过度绘制来进行测试 (只有Android 4.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文件 1.6 网络流量 我们说的性能测试是针对大部分应用而言的, 可能还有部分应用会关注网速、弱网之类的测试. 流量测试, 同样需要引入几个名词: 中等负荷:应用正常操作 高负荷:应用极限操作 流量测试包括以下测试项: a. 应用首次启动流量提示 b. 应用后台连续运行2小时的流量值 c. 应用高负荷运行的流量峰值 d. 应用中等负荷运行时的流量均值流量测试 流量测试一般都是用软件来进行的,这里我们一般分为2类: a. 采用市场提供的第三方工具来进行测试 b. 自研工具进行测试 自研工具进行测试一般包含 2 类方法: a. 通过tcodump抓包,再通过wireshake直接读取包信息来获得流量 b. 首先获得被测应用的uid信息(可以通过adbshelldumpsys package来获取),然后在未操作应用之前,我们可以通过查看 adb shell cat/proc/uid_stat/uid/tcp_rcv adb shell cat/proc/uid_stat/uid/tcp_snd 获取到应用的起始的接收及发送的流量, 然后我们再操作应用, 再次通过上述2条命令可以获取到应用的结束的接收及发送的流量, 通过相减及得到应用的整体流量消耗。
iOS系统指标获取
对于iOS系统, 只需要一个装了xcode的mac电脑, 取以上指标相对容易. 最新版本是xcode8.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安装测试 完全的命令行模式
摘自《金阳光自动化测试》(http://mp.weixin.qq.com/s?__biz=MzA4MTcyOTEwMw==&mid=2650610972&idx=1&sn=039231e3d364d756bfc9c093f36d4f9d&scene=0#rd)