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是阿里巴巴做的 ...
随机推荐
- 18-MySQL DBA笔记-MySQL Server调优
第18章 MySQL Server调优 本章将为读者介绍针对MySQL Server的优化,这也是DBA最熟悉的领域之一.首先我们介绍MySQL的主要参数,然后,讲述常见硬件资源的优化.我们假设读者已 ...
- (十二)Hibernate中的多表操作(2):单向多对一
由“多”方可知“一”方的信息,比如多个员工使用同一栋公寓,员工可以知道公寓的信息,而公寓无法知道员工的信息. 案例一:使用xml配置 pojo类 Group.java package bean; // ...
- Spring Boot 全局Exception处理
一.代码如下 package com.zxguan; import org.springframework.web.bind.annotation.ControllerAdvice; import o ...
- K2 BPM_当BPM遇上RPA | 企业合规和风险管理从此更高效_全球领先的工作流引擎
强化企业合规与风险管理已成为全球企业发展的共识,尤其是对于药企.银行.地产这类对于合规性要求高的企业而言,识别预测潜在的管理风险和遵循不断升级的合规义务,是保证企业平稳运行的关键. 如何从流程层面降低 ...
- 注解Annotation原理详解及其应用示例
一.什么是注解 注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包.类.接口.字段.方法参数.局部变量等进 ...
- WeixinJSBridge目前还能够直接使用的功能(2019)
参考地址:http://mmlike.sinaapp.com/ 其余功能不是不能用了,而是有各种条件了. 以下列出的功能,均可直接使用,无需appid等任何东东,只要在手机微信网页环境中 发送邮件 W ...
- c# 枚举和位标志
- SPI学习笔记1
SPI 简介 SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口.是 Motorola首先在其 MC68HCXX 系列处理器上定义的. SPI ...
- Linux命令——shutdown、halt、poweroff、reboot、cal、date
shutdown shutdown在关机的时候会通知所有用户 shutdown –r now 现在重启 shutdown now 现在关机 shutdown +5 过5分钟关机 shutdown –c ...
- 剑指Offer编程题(python)——二叉树
1.重建二叉树 """ 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1,2,4 ...