百度影片在Android和iOS端效能測試方法
背景介紹
一直以來, 效能測試 是被一部分人遺忘,又讓另一部分人無可奈何的東西。在絕大部分的創業公司,效能測試基本上都是被遺忘的,他們認為 功能測試 和穩定性測試才是重點,而在中等規模的公司中一部分測試人員考慮進行效能測試,卻無從下手。
這個系列,從 baidu 測試工程師的 工作 實踐出發,介紹 移動 端效能測試的通用方法和結合產品特點的不同側重。
隨著流量費用的降低,越來越多的人開始在公交地鐵等移動場景使用影片應用。影片類的應用會更多關注播放流暢度、下載等效能指標,下面介紹的是 百度 影片的效能 測試方法 。
百度影片是第三方影片資源聚合類產品,主要提供使用者線上播放、離線下載各種影片服務,提供 PC 、 Android 、 iOS 三端入口,使用者體驗、流暢度、下載速度、檢索影片資源等是目前產品線最關注的層面。
一款優秀的娛樂類應用,必須具有卓越的效能,超越同類競品,同時兼具良好的使用者體驗。
APP效能分析維度
App 型別眾多,根據具體型別劃分,效能指標的維度和優先順序各不相同。影片類 App 歸屬於娛樂遊戲型的 App ,因此效能測試維度優先順序排序為:流暢度、 crash 、記憶體、流量、響應時長、功耗、 CPU 。
表徵不同維度指標的量化單位如圖 21 所示。比如流暢度是 FPS (幀率),記憶體是兆比等等。
因為 Android 平臺底層是由 linux 系統改良而來,不同維度的指標絕大部分都可以透過命令來取不同的指標(具體方法可以參加後面工具)
在 iOS 平臺上,效能的獲取,必須使用 Xcode 裡面 instruments 下的相應元件,不像開源的 Android 那樣靈活,但 技術 上是可以做到各平臺的效能指標獲取測試。
APP效能指標獲取手段
Android系統指標獲取
· CPU
CPU 的測試方法分為幾類
a. 使用 Android 提供的方法
adbshell dumpsyscpuinfo |grep packagename >/address/cpu.txt 來獲取
b. 使用 top 命令
adbshell top |greppackagename>/address/cpu.txt 來獲取
· 記憶體
記憶體消耗,這個測試節點的設計目標是為了讓應用不佔用過多的系統資源,且及時釋放記憶體,保障整個系統的穩定性,當然關於記憶體測試,在這裡我們需要引入幾個概念:空閒狀態、中等規格、滿規格。
空閒狀態:指開啟應用後,點選 home 鍵讓應用後臺執行,此時應用處於的狀態叫做空閒。中等規格和滿規格指的是對應用的操作時間的間隔長短不一,中等規格時間較長,滿規格時間較短。
接下來我們說說在記憶體測試中,存在很多測試子項,如下清單所示:
1、空閒狀態下的應用記憶體消耗情況
2、中等規格狀態下的應用記憶體消耗情況
3、滿規格狀態下的應用記憶體消耗情況
4、應用記憶體峰值情況
5、應用記憶體洩露情況
6、應用是否常駐記憶體
7、 壓力測試 後的記憶體使用情況
電量
功耗測試主要從以下幾個方面入手進行測試:
a 、測試 手機 安裝目標 APK 前後待機功耗無明顯差異。
b 、常見使用場景中能夠正常進入待機,待機電流在正常範圍內。
c 、長時間連續使用應用無異常耗電現象。
功耗測試的方法分為兩類,一類為 軟體測試 ,一類為硬體測試。
軟體測試一般分為 2 類:
第一種採用市場上提供的第三方工具,如金山電池管家之類的。第二種就是自寫工具進行,這裡一般會使用 3 種方法 :
方法一、基於 android 提供的 PowerManager.WakeLock 來進行;
方法二、稍複雜一點,功耗的計算 =CPU 消耗 +Wakelock 消耗 + 資料傳輸消耗 +GPS 消耗 +Wi-Fi 連線消耗;
方法三、透過 adbshell dumpsys battery 來獲取。
接著說下硬體測試,在這裡我們一般使用萬用表或者功耗儀進行測試,使用功耗儀測試的時候,需要製作假電池來進行的,有些不能拔插電池的手機還需要焊接才能進行對了測試。
· 啟動時長
首先我們來說說啟動時間。關於應用的啟動時間的測試,分為三類:
首次啟動 -- 應用首次啟動所花費的時間
非首次啟動 -- 應用非首次啟動所花費的時間
應用介面切換 -- 應用介面內切換所花費的時間
那麼如何來做啟動時間的測試呢,一般我們分為 2 類,一類為使用軟體來測試,一類為使用硬體來測試。對於軟體測試的方法,大部分人都比較通曉使用 Android 提供的 DisplayManager 來獲取 activity 的啟動時間。透過日誌過濾關鍵字 Displayed 來過濾所有 activity 所列印的, 記錄 日誌透過。
· 幀率
GPU 這個詞對於 PC 效能測試者來說並不陌生,而今 3Dmax ,安兔兔之類的第三方軟體讓 GPU 在移動端效能測試領域家喻戶曉,但對於 App 內的 GPU 該如何來測試呢?首先我們引入幾個名詞:過度繪製、幀率、幀方差。
過度繪製是指介面顯示的 activity 套接了多層導致的結果。幀率是指螢幕重新整理率。幀方差是指螢幕重新整理幀間隔方差。
對於 GPU 的測試主要包括以下幾個測試子項:介面過度繪製、螢幕滑動幀速率、螢幕滑動平滑度。
對於過度繪製的測試主要透過人工進行測試,透過開啟開發者選項中的顯示 GPU 過度繪製來進行測試( PS :只有 Android4.2 及以上的版本才具備此功能 ) ,驗收的標準為 :
a 、不允許出現黑色畫素
b 、不允許存在 4x 過度繪製
c 、不允許存在面積超過螢幕 1/4 區域的 3x 過度繪製(淡紅色區域)
對於螢幕滑動幀速率,常用手段包括軟體測試或硬體輔助測試。軟體測試的方法如下:
1. 手機端需開啟開發者選項中的啟用跟蹤後,勾選 Graphics 和 View ;
2. 啟動 SDK 工具 Systrace 外掛,勾選被測應用,點選 Systrace 外掛,在彈出的對話方塊中設定持續抓取時間,在 tracetaps 下面勾選 gfx 及 view 選項;
3. 人滑動介面可以透過節拍來進行滑動或者掃動,幀率資料會儲存到預設路徑下,預設名稱為 trace.html ;
4. 將 trace.html 檔案複製到 linux 系統下透過命令進行轉換,生成 trace.csv 檔案。
· 網路流量
效能測試的——流量,當然我所指的效能測試是針對大部分應用而言的,可能還有部分應用會關注網速、弱網之類的測試。流量測試,同樣需要引入幾個名詞:
中等負荷:應用正常操作
高負荷:應用極限操作
流量測試包括以下測試項:
a 、應用首次啟動流量提示
b 、應用後臺連續執行 2 小時的流量值
c 、應用高負荷執行的流量峰值
d 、應用中等負荷執行時的流量均值流量測試
流量測試一般都是用軟體來進行的,這裡我們一般分為 2 類:
a 、採用市場提供的第三方工具來進行測試,如流量寶
b 、自研工具進行測試
自研工具進行測試一般包含 2 類方法:
a 、透過 tcodump 抓包,再透過 wireshake 直接讀取包資訊來獲得流量
b 、首先獲得被測應用的 uid 資訊(可以透過 adbshelldumpsys package 來獲取),然後在未操作應用之前,我們可以透過檢視
adbshell cat/proc/uid_stat/uid/tcp_rcv
adbshell cat/proc/uid_stat/uid/tcp_snd
獲取到應用的起始的接收及傳送的流量,然後我們再操作應用,再次透過上述 2 條命令可以獲取到應用的結束的接收及傳送的流量,透過相減及得到應用的整體流量消耗。
· iOS系統指標獲取
對於 iOS 系統,只需要一個裝了 xcode 的 mac 電腦,取以上指標相對容易。最新版本是 xcode7.0 (當然你用老版本的也一點問題都沒有)
效能測試工具,推薦用下面三個 :
工具一、 Instruments ,這個是 mac 蘋果 自帶的工具,裡面有很多模板,選擇不同的系能模板就可以監聽手機 App 效能了,但是要注意,沒越獄的機器必須註冊開發者證書,或者拿到 App 企業證書,這樣 xcode 才能啟動 App 進行效能監控,也就是說你被測 App 必須有原始碼才行,當然你想規避這個問題,得走百度 smallApple 破解簽名機制
工具二、 GT ,是 騰訊 開發的一款 App ,但是也得在原始碼層面嵌入 GT 的 SDK
工具三、 SmallApple ( )
Smallapple 是一個開源的 IOS 自動化測試 工具,旨在提供一套完整的 iOS 自動化測試解決方案,提供針對 iOS App 的功能和效能測試,同時提供類似 Android adb 、重簽名、 instruments 結果解析、錄製回放等工具集。
Smallapple 透過一鍵式的執行方式,自動完成 App 重簽名、安裝、測試、效能採集(包括 CPU 、記憶體、流量等)、 Crash 檢測和結果報告等工作。
Smallapple 特性:
· Smallapple 致力於以最簡單的方式,最小的代價提供給使用者使用。
· 支援非越獄裝置
· 不需要依賴原始碼
· 支援 Appstore 或者第三方下載的 App 安裝測試
· 完全的命令列模式
本文轉自【百度質量部】,更多文章可關注公眾號【測試幫日記】
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2739938/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Kafka效能測試方法Kafka
- [Traceview]android效能測試ViewAndroid
- iOS 應用效能測試的相關方法、工具及技巧iOS
- Easysearch 效能測試方法概要
- iOS17 效能測試指令碼iOS指令碼
- MYSQL 效能測試方法 - 基準測試(benchmarking)MySql
- Postmark測試後端儲存效能後端
- [android]android效能測試命令列篇Android命令列
- 介面測試和效能測試的區別
- [android]android自動化測試十四之dumpsys效能測試Android
- Android 效能測試——Heap Viewer 工具AndroidView
- Android 效能測試——Memory Monitor 工具Android
- Android與iOS測試注意點AndroidiOS
- 軟體效能測試和可靠性測試
- 移動端效能測試必備工具 PerfDog 效能狗
- weex踩坑之image圖片在ios/Android不顯示iOSAndroid
- 軟體效能測試方法有哪些?
- App 效能測試揭祕 (Android 篇)APPAndroid
- App效能測試揭祕(Android篇)APPAndroid
- Android效能測試——Allocation Tracker(Device Monitor)Androiddev
- [Android]開源效能測試工具antoolAndroid
- iOS開發那些事--編寫OCUnit測試方法-邏輯測試方法iOS
- 使用Android系統測試和iOS系統測試,到底有什麼區別?AndroidiOS
- 測試SQLPLUS的ARRAYSIZE對效能的影響SQL
- Android端手機測試體系Android
- iOS 單元測試和 UI 測試快速入門iOSUI
- 效能測試-服務端瓶頸分析思路服務端
- Android 效能測試之方向與框架篇Android框架
- Android 效能測試工具- Emmagee 2.0 釋出Android
- 【效能測試】使用ab做Http效能測試HTTP
- APP測試中IOS和Android的區別,有哪些注意點?APPiOSAndroid
- 壓測和效能分析方法論
- Webapi管理和效能測試工具WebBenchmarkWebAPI
- Nginx 和 Gunicorn 效能對比測試Nginx
- 效能測試
- 效能測試:分散式測試分散式
- Jmeter介面測試+效能測試JMeter
- 主流 go-web 服務端框架效能測試GoWeb服務端框架