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中的其它两项做介绍。

原文地址:https://www.cnblogs.com/dreamyu/p/11769003.html

时间: 2024-08-29 10:24:58

iOS测试-如何指标量化app耗电量和性能XCTest Metrics的相关文章

iOS开发实用技巧—打包app发给测试人员测试

iOS开发实用技巧—打包app发给测试人员测试 说明:在项目开发过程中经常需要开发人员将项目打包成ipa包后,发给测试人员进行测试.本文贴图对打包的过程简单介绍. 一.Product ->archive (注意,不能是模拟器状态,如果当前调试状况是模拟器的话,则archive为灰色不可点击) 模拟器情况下: 剩余步骤: 选择 证书 生成ipa包 保存 注意:在打包的同时保存xcarchive文件,以备将来查看应用的crash日志.

iOS 测试在应用发布前后的痛点探索以及解决方案

作者-芈 峮 前言 iOS 开发从 2010 年开始在国内不断地升温,开发和测试相关的问题不绝于耳.iOS 测试主要涉及哪些内容?又有哪些挑战呢?带着疑问我们开始第一个大问题的讨论. iOS 测试的范围和可能遇到的挑战 iOS 测试范围 一般来说,每一个 iOS 应用的背后都会有一些后台服务.后台服务会给 iOS 应用提供丰富的数据和精彩的内容,后台服务的测试必须要包含在 iOS 测试中.当然,本文主要讨论一些 iOS 测试领域的内容,后台服务的测试在此就直接掠过.因此,下文提到的 iOS 测试

使用appium进行ios测试,启动inspector时遇到的问题(一)

最近在公司,让做ios的自动化测试,因为以前做过android的自动化测试,用的也是appium,觉得没什么,结果一开始在搭建环境就遇到了很多的问题,现在将我遇到的问题,以及解决方法,给大家分享出来.(ps:吐槽一下testhome,发了两个帖子一个提问帖一个心得分享帖,全都给拉到违规区了,问题也没有人给看) 进入正题,说一下我的环境: xcode 7.1.1 simulator 9.1 appium 1.4.13 iphone 5s  ios9.1 首先说一下,appium 在ios版本选择这

测试人员眼中的app版本迭代过程中的问题

测试人员眼中的app版本迭代过程的问题     --记一次app新版本的开发测试过程 1. 前言 自从8月初入职当前的公司以来,在这一期的版本迭代过程中,第一次独立承担app部分的全部测试设计及需求跟踪,从头至尾跟踪了需求分析到开发测试上线的整体过程,和曾经做过的各种测试类型相比,它没有想象的那么好,也没有想象的那么坏.应了那句老话,梨子好不好吃,自己尝了才知道. 经历完整个迭代之后,感慨良多.在这里梳理整个过程,以测试的角度来分析整个迭代过程,作为以后工作的参考. 2. 简介 2.1 项目及公

发布IOS应用程序到苹果APP STORE完整流程

参考:http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) http://www.ttlsa.com/dev/how-to-publish-iosapp-to-appstore/ (如何发布IOS应用程序到苹果APP STORE) 开发环境:xcode5.1.1 iphonesdk:7.1 开发机器:iMac 真机部署测试:apple个人开发者ID 向导: 必备ID

ios测试基础七:常用软件

ios测试常用软件列表 charles  http://www.charlesproxy.com  官网下载: Mac下常用 的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请 求都通过它来完成,从而实现了网络封包的截取和分析. WINDOWs下也有支持的版本: 常用功能: 抓包,查看请求,入参,返回值 简单模拟 多次重复请求: 模拟不同网速: Xcode 只支持m

2015年iOS测试现状

本文由 伯乐在线 - nathanw 翻译,dopcn 校稿.未经许可,禁止转载! 英文出处:www.mokacoding.com.欢迎加入翻译小组. 几周前,我决定将将我在 mokacoding 上的创作更多集中在单元测试与验收测试,自动化和生产效率上,主要在iOS领域. 相关深入文章可以看看“通过 CocoaPods 为 iOS 项目创建 Calabash 并构建配置”和“用终端运行 Xcode 测试”. 这周我们要回过头来看看,或者说是站在更高的角度审视单元测试和验收测试,以及在云端运行持

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

软件测试:如何测试一款手机app

一,非功能测试 app测试的一个重要方面是app的非功能需求.移动app在推出市场或进行进一步开发前,测试人员有一定的职责做该类需求的跟踪工作. 早期开发阶段要进行的第一个测试应该是实用性测试.通常是由alpha用户或同事进行的.走进一家咖啡馆或餐厅,问问里面的人他们的app使用情况.让他们看看现阶段开发的第一个版本并收集反馈,看看用户是否能很好地使用新功能,以便得出第一印象. 二,功能测试 每项开发的新功能都需要进行测试.app测试中功能测试是一个重要方面.测试人员应该要进行手动测试和后期的自