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是阿里巴巴做的 ...
随机推荐
- jacascript Date 学习
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! Date dateObject.getDate(); 返回一个月中的某一天(1-31) dateObje ...
- 在论坛中出现的比较难的sql问题:5(row_number函数 分页、随机返回数据)
原文:在论坛中出现的比较难的sql问题:5(row_number函数 分页.随机返回数据) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. 1.在inner join后, ...
- linux 下phpmyadmin 安装
系统 parrot os(Debain) php7.0 安装phpmyadmin sudo apt install phpmyadmin 然后将/usr/shar/phpmyadmin软连至/va ...
- .net Core CLR
.net Core CLR是开源的.大部分文件是C++写成.这样他就可以编译后再不同的平台运行. https://github.com/dotnet/coreclr
- 开启HSTS让浏览器强制跳转HTTPS访问
开启HSTS让浏览器强制跳转HTTPS访问 来源 https://www.cnblogs.com/luckcs/articles/6944535.html 在网站全站HTTPS后,如果用户手动敲入网站 ...
- 动态规划-最大算式 蓝桥杯ALGO-116
问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号 ...
- Android高版本收不到静态注册的广播
Beginning with Android 8.0 (API level 26), the system imposes additional restrictions on manifest-de ...
- 关于微信小程序发布新版本后的提示用户更新的方法详解
当小程序发布新的版本后 ,用户如果之前访问过该小程序,通过已打开的小程序进入(未手动删除),则会检测新版本,提醒用户更新新的版本 话不多说,上代码 App({ onLaunch: function ( ...
- Linux Centos7配置ftp服务器
一.安装 1.安装 yum install -y vsftpd 2.设置开机启动 systemctl enable vsftpd.service 3.启动 systemctl start vsftp ...
- SVN配置使用及移植
使用svn作为配置管理工具及其普遍的用于项目开发中,网上有很多关于svn的原理介绍及命令行管理教程.这里仅仅分享下个人配置及使用的过程,不通过命令行,可简单的上手操作.如有遗漏欢迎留言交流. 配置及使 ...