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中的其它兩項做介紹。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM