共計 2095 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章主要介紹了 App 中如何測試啟動時間,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
背景介紹
Android 用戶也許會經常碰到以下的問題:1)應用后臺開著,手機很快沒電了——應用耗電大;2)首次 / 非首次啟動應用,進入應用特別慢——應用啟動慢;3)應用使用過程中,越來越卡——CPU 能力不足 / 內存泄露;4)應用頁面卡頓——幀率較低、頁面卡頓。因此,對開發的 Android 應用,必須對其進行性能測試,不然將會直接影響用戶體驗。
Android 應用性能測試通常包括:啟動時間、內存、CPU、耗電量、流量、流暢度等。本次先介紹啟動時間的測試方法。
啟動時間對于 App 的性能測試,啟動時間是個重要指標,啟動時間分為兩種情況,一種是冷啟動時間(通常是系統重啟,即在啟動前沒有該 App 進程的情況),另一種是熱啟動,即 App 從被切換到前臺(點 back 退出后再點擊圖標啟動)。QA 測試時,一般關注冷啟動的啟動時間。以下介紹三種測試啟動時間的方法,供大家參考,可以有針對性的使用。
1.1 使用 adb 命令
1.1.1 測試方法 輸入 adbshell am start -W packagename/MainActivity 命令,計算啟動時間。如下圖:
圖 1 應用第一次啟動也就是我們常說的冷啟動, 這時候你的應用程序的進程是沒有創建的. 這也是大部分應用的使用場景. 用戶在桌面上點擊你應用的 icon 之后, 首先要創建進程, 然后才啟動 MainActivity. 這時候 adbshell am start -w packagename/MainActivity 返回的結果, 就是標準的應用程序的啟動時間。注意 Android 5.0 之前的手機是沒有 WaitTime 這個值的。關于 ThisTime/TotalTime/WaitTime 的區別, 下面是其解釋。 WaitTime=endTime-startTime
startTime 記錄的剛準備調用 startActivityAndWait() 的時間點
endTime 記錄的是 startActivityAndWait() 函數調用返回的時間點
WaitTime = startActivityAndWait() 調用耗時。
WaitTime 就是總的耗時,包括前一個應用 Activity pause 的時間和新應用啟動的時間;ThisTime 表示一連串啟動 Activity 的最后一個 Activity 的啟動耗時;TotalTime 表示新應用啟動的耗時,包括新進程的啟動和 Activity 的啟動,但不包括前一個應用 Activity pause 的耗時。也就是說,開發者一般只要關心 TotalTime 即可,這個時間才是自己應用真正啟動的耗時。
總結一下,如果只關心某個應用自身啟動耗時,參考 TotalTime;如果關心系統啟動應用耗時,參考 WaitTime;如果關心應用有界面 Activity 啟動耗時,參考 ThisTime。
1.1.2 總結
該方法算出的時間是系統從開始處理啟動 activity 的時間到完成運行 layout 和 draw 函數的時間,簡單的理解就是啟動這個 Activity 的時間,并不包括點擊 icon 到系統接收到消息的時間。顯然,這個時間并不能完整的模擬用戶操作場景的啟動時間。其次該方法只計算一個 Activity 的整體啟動時間,沒有分別統計其中每個函數的時間,不便于定位問題。針對這兩個問題,我們接下來看一下下面兩個方法是怎樣解決的。
我們在測試中關注的其實是用戶體驗的啟動時間,那么上面的時間就不能滿足我們的需求了。既然是用戶體驗我們可以用更直觀的方式,使用 screenrecord 進行屏幕錄制然后分析視頻。
1.2 使用 screenrecord 進行屏幕錄制
1.2.1 測試方法 (1)輸入命令 adb shellscreenrecord –bugreport /sdcard/lanch.mp4–bugreport 參數會使視頻輸出一些時間信息和幀信息便于我們分析啟動時間。(2)點擊收集圖標,app 完全啟動后,使用 ctrl+ c 結束視頻錄制。(3)使用命令 adb pullsdcard/lanch.mp4 ./,導出視頻(4)導出視頻到電腦,使用可以按幀播放的視頻軟件打開(mac 上 quicktime 就可以,win 下可以用 kmplayer),并按幀播放。如下圖所示: 圖 3 具體每步做了哪些,可以參照下表。
1.3.2 總結 這樣打點,可以清晰明了的看出 Activity 的總耗時及各個函數的耗時情況,這樣在測試過程中,如果遇到問題可以很容易的定位到具體的函數。在測試過程中也有針對點,比如貼吧直播后續會以插件的形式整合到貼吧里,測試時,可以多關注 plugin 初始化的時間。
針對啟動時間這一性能指標,個人覺得打點輸出日志的方式較為理想,QA 在測試過程中發現有疑似問題后,可以給出具體的函數耗時時間。
感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“App 中如何測試啟動時間”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!