iOS测试-如何指标量化app耗电量和性能XCTest Metrics
对于app端的专项测试,Android端我们可以用adb或者一些三方工具进行(例如itest)进行实时的性能监控,iOS端的话也可以用用一些三方的工具,但是需要嵌入到我们的项目当中,今天来介绍下Xcode11下的apple提供的基于XCTest对app耗电量和性能的全新框架。
资料来源:https://developer.apple.com/videos/play/wwdc2019/417/
app耗电量
app耗电量和它的性能体现是息息相关的,那么app中哪些性能项会影响耗电量呢?
- CPU
- memory
- storage
- clock and OSSignpost
- custom Metrics
- network
- Wi-Fi
- Bluetooth
- Location
iOS端进行性能调优的工具
1. Xcode
Xcode本身就自带了一些工具来进行性能方面的监控,例如在Xcode的导航区就有Debug Navigator,我们可以看到应用的cpu, memory, disk, network还有耗电量的情况,在测试的过程中就可以实时监控,如果进行某些功能测试发现数值异常,就可以再利用Instruments来深入的研究测试。

2. Instruments
Instruments提供了许多基础的模版,通过这些模版可以做许多方面的专项测试,像下图标记出来的是比较常用的,后续会专门写篇博客介绍下,通过下面的模版可以针对某个性能点进行测试,可以定位到代码级别可能是哪里出现了问题。

XCTest中的性能测试
XCTest是iOS端的单元测试框架,之前也介绍过,它除了可以做一些单元测试和UI测试,其实也可以做一点性能测试。例如下图:

在measure中增加代码块来检验代码块的性能,但是指标很少且都是固定的。
Xcode11中最新的性能测试
现在,我们只需在调用 measure 时增加想要监测的指标作为参数,就可以从多个维度监测代码块的性能表现,十分简单

而检测应用启动耗时,更是容易。不需要任何代码,创建 XCTest 的时候就已经自动生成:

如果设置基准线(baseline),那么每次运行测试时,Xcode 都会自动对比 我们设定的基准线,如果启动耗时高于基准线,那么测试就不通过。
如何做性能测试
苹果为我们提供了这些工具,如何真正的落地到项目中呢?我来分享下我们的做法。
我们需要充分利用这些工具:
- 在测试阶段,在进行功能测试的同时,需要关注Debug Navigator,但是不用太刻意,因为大多数的性能问题是在明显的用户感知下暴露的,而不是脱离用户的体验而定的性能的指标标准。
- 当我们发现有可能存在性能问题,我们需要使用instruments工具对某一性能进行专项的测试,查看性能瓶颈问题出在哪个地方。
- 我们对于可能会有性能问题,或者我们app中用户比较敏感的功能,都在XCTest中做单元测试,并使用measure进行性能测试。
性能指标的确立
那么如何建立性能指标呢?指标或者量化的东西才能真正的说明问题,也才能让开发去进行优化修改。
我们有以下两种方式来建立性能指标
1. 竞品分析,对于与竞品中重叠的功能或公共指标(启动时间,加载时间等)进行性能指标分析,确立一个自己app指标
2. follow first feeling,有些可能是本身app独有的或者没有竞品做对比的,我们如何确立性能指标呢?我们使用follow first feeling原则。怎么理解,测试在测试过程中发现有明显的性能问题或者产品在验收中发现有性能问题,例如页面加载慢,视频缓存速度慢,我们需要与开发形成共识,在第一时间进行判断是否需要进行性能调优,一旦通过测试或者产品验收,我们通过跑measure确认第一次的性能指标为标准指标,再次进行版本更迭测试的时候不能低于第一次的指标。类似于做a/b测试。
我认为像app产品,如果有竞品还好,没有竞品是比较难做一些专项或性能相关的测试,app如果不是很大,功能不是很多,现在主流的机型都可以很顺畅的跑这些app。如果这样的app有一些性能问题,大多数都可以算作是开发bug,在对页面渲染啊,数据加载啊,线程处理啊上处理不当造成的,而这些问题如果细心一点或者关注debug navaigator都可以第一时间排查出来。而我们对于这种app指标的确立follow第一感觉就可以了,测试也是用户,为用户把好第一道关,往后的版本只能越做越好,而不能比第一感觉还差,这样的话对于用户体验,或者对于app的性能也能把好质量了。
后续也会针对wwdc中的其它两项做介绍。
iOS测试-如何指标量化app耗电量和性能XCTest Metrics的更多相关文章
- Android手机app耗电量测试工具 - Gsam Battery Monitor
这段时间需要测试一个Android手机app的耗电量,在网上找了一个工具,Gsam Battery Monitor,觉得挺好用,和大家分享一下. 安装app后打开,可以看到主界面是这样的 点击一下上图 ...
- iOS 测试在应用发布前后的痛点探索以及解决方案
作者-芈 峮 前言 iOS 开发从 2010 年开始在国内不断地升温,开发和测试相关的问题不绝于耳.iOS 测试主要涉及哪些内容?又有哪些挑战呢?带着疑问我们开始第一个大问题的讨论. iOS 测试的范 ...
- 测试者出的APP测试面试题
测试者出的APP测试面试题 一.开场问题:(自由发挥) 1.请自我介绍一下: 2.为什么离开上一个公司呢? 3.做测试多久了?以前做过哪些项目?你们以前测试的流程是怎样的?用过哪些测试工具? 4.你觉 ...
- 使用appium进行ios测试,启动inspector时遇到的问题(一)
最近在公司,让做ios的自动化测试,因为以前做过android的自动化测试,用的也是appium,觉得没什么,结果一开始在搭建环境就遇到了很多的问题,现在将我遇到的问题,以及解决方法,给大家分享出来. ...
- 发布iOS应用程序到苹果APP STORE完整流程
参考:http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) http ...
- 如何利用Pre.im分发iOS测试包
大众创新万众创业,在移动互联网的风口,移动APP开发与测试发展方兴未艾,受到了越来越多的重视.相较 iOS,Android 的开发环境更加开放.Android 开发者要测试应用时,只需发个 APK 安 ...
- 2015年iOS测试现状
本文由 伯乐在线 - nathanw 翻译,dopcn 校稿.未经许可,禁止转载! 英文出处:www.mokacoding.com.欢迎加入翻译小组. 几周前,我决定将将我在 mokacoding 上 ...
- APP测试基本流程以及APP测试要点
APP测试流程梳理 APP测试要点梳理 链接:http://pan.baidu.com/s/1gfaEZ1x 密码:07yt 1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开 ...
- 弱网络模拟测试工具---易测app
易测功能介绍 易测是一款基于无线客户端研发场景的通用测试工具, 它通过在研发人员的自持机上提供各种辅助能力&标准化的专项测试服务来提升研发质量&效率. 易测app是阿里巴巴做的 ...
随机推荐
- 牛客 82E 无向图中的最短距离 (bitset,bfs)
有一个n个点的无向图,有m次查询,每次查询给出一些(xi,yi) 令dist(x,y)表示x和y点在图中最短距离,dist(x,x)=0,如果x,y不连通则dist(x,y) = inf 每次查询图中 ...
- Asp.net core 学习笔记 2.2 migration to 3.0
Ef core 3.0 一些要注意的改变 refer : https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/breaki ...
- 关于财务YT知识点
1 YT 将今年剩余的未花完的money做YT,生成一个YT号,用在下一年使用的机制. 2 生成YT的方式 2.1 PR生成YT 2.2 PO生成YT 2.3 TR生成YT 2.4 预算直接生成YT ...
- php 配置微信公众号
首先你要在微信公众号官网申请一个公众号,然后登录进去 在网页的左下方找到开发的基本配置 就可以开始配置服务器下面的东西了 点击打开成这个样子的 就是一些参数,url填写你自己服务器的具体地址就好了,我 ...
- hdu 5900 区间dp
题意:给你n对pair 里面有两个值,分别是key 和 val .你可以取相邻的两个pair 获得其中的val,前提是两个pair 的key 的 gcd 不为 1.当然你把相邻的两个取走了之后原本不相 ...
- (十)mybatis之缓存
一.缓存的意义 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)去查询,从缓存中进行查询,从而提高查询效率,解决了高并发系统的性能问题. 二.mybatis ...
- 【转载】在使用JDBC连接MySql时报错:You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support
在使用JDBC连接MySql时报错:You must configure either the server or JDBC driver (via the serverTimezone config ...
- 【Transact-SQL】让人快遗忘的游标
原文:[Transact-SQL]让人快遗忘的游标 最初学SQL Server的时候,当学到游标的时候,突然有了一种亲切感,因为这种通过一个while循环,一条一条的处理数据的方式,很像学过的过程式语 ...
- 移动端 H5 上拉刷新,下拉加载
http://www.mescroll.com/api.html#options 这里有几个重要的设置 1.down 下不启用下拉刷新是因为再手机端有默认的下拉刷新,会冲突,待解决 2.up 中的 a ...
- CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败
今天在使用 C# 操作 Excel 时,一直在报错误: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下 ...