【專項測試】App啟動性能分析的筆記

專項測試checklist
性能測試
耗電量測試
batteryhistory
instruments
卡頓測試
blockcanary
h5性能測試
devtool
headless
chrome
場景測試
兼容性測試
mqc mtc testln
appium grid stf
健壯性測試
monkey
弱網測試
facebok atc
proxy定制
安全測試
wvs
burpsuite

專項測試(技術維度)
崩潰
自動遍歷
monkey測試
橫豎屏切換、快速進退
卡頓(掉幀、gc、cpu)
卡頓測試
內存泄漏測試
method profile
響應慢(啟動時間、交互響應、H5)
冷熱啟動
界面切換
h5性能測試
發熱(cpu、mem、io、network、gps等硬件使用)
method profile
gc統計
io統計
流量統計
硬件使用統計
耗電量分析
兼容性問題(機型覆蓋、回歸)
兼容性測試
自動化測試
自動遍歷
monkey測試

Activity啟動流程
含義:在app中,每一個頁面就是一個Activity

啟動過程
啟動app:創建一個空白的窗口,啟動app的進程
啟動application onCreate:創建一個對象
啟動MainTread主線程
activity init:頁面進程的創建,init都是進程創建
Activity onCreate:創建activity對象,渲染整個頁面,創建好后,替換空白的頁面,就是整個==displayed time==結束的時候
other stuff:動態加載頁面的過程,比如加載js、php等動態資源
主要流程
application onCreate
加載第三方的sdk:加載第三方的服務
登錄使用第三方qq登錄
把內容分享到微信
使用支付寶等支付手段
Activity onCreate(占用時間最長)
加載自身的邏輯
發送遠程數據請求 xxx.json
渲染界面list
app啟動性能指標
冷啟動(最重要)

時間:從application onCreate到displayed time之間
通俗含義:app沒有啟動或app進程被殺
暖啟動

app已經啟動了,但是很久沒有使用,手機內存把app進程殺掉,但對象還在保留
熱啟動

app進程在后臺,沒有被內存殺掉,進入app時只是把后臺帶到前臺給用戶展示
首屏啟動(好像沒有這個)

百度了很久好像都沒這個東西,估計是指打開之后有一個廣告的展示?
建議時間(不是特別標準,了解即可)

冷啟動5秒
暖啟動2秒
熱啟動1.5秒

app啟動時間測試方法以及工具
adb logcat(時間不太準確)
原因:空白頁、廣告時間,動態加載其實adb logcat都無法記錄,只有一個主“頁面”或者進入其他頁面之后的時間
錄屏+視頻拆幀(最準確)
uiautomator等自動化工具200ms
traceview
硬埋點(不同硬件之間,一個統一測試啟動時間的方法)
adb logcat
操作步驟
清理緩存數據:adb shell pm clear package
停止進程:adb shell am force-stop package
啟動app:adb shell am start -S -W package/activty
獲取數據:adb logcat | grep -i displayed
結果
startTime:記錄剛準備調用stratActivityAndWait()的時間點
endTime:記錄stratActivityAndWait()函數調用返回的時間點
WaitTime:stratActivityAndWait()的調用耗時
WaitTime=endTime-startTime
實戰
記錄雪球的啟動時間

C:\Users\user>adb shell pm clear com.xueqiu.android
Success

C:\Users\user>adb shell am force-stop com.xueqiu.android

-W: wait for launch to complete

-S: force stop the target app before starting the activity

C:\Users\user>adb shell am start -S -W com.xueqiu.android/.view.WelcomeActivityAlias
Stopping: com.xueqiu.android
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xueqiu.android/.view.WelcomeActivityAlias }
Status: ok
Activity: com.xueqiu.android/.view.WelcomeActivityAlias
ThisTime: 1063
TotalTime: 1063
WaitTime: 1111
Complete

C:\Users\user>adb logcat | grep -i displayed
05-03 05:06:19.698 951 986 I ActivityManager: Displayed com.xueqiu.trade.android/com.xueqiu.android.base.h5.H5Activity: +490ms
05-03 05:08:00.489 951 986 I ActivityManager: Displayed com.xueqiu.android/.common.search.USearchActivity: +214ms
05-03 05:10:00.307 951 986 I ActivityManager: Displayed com.xueqiu.android/.view.WelcomeActivityAlias: +1s63ms
05-03 05:10:02.058 951 986 I ActivityManager: Displayed com.xueqiu.android/.common.MainActivity: +590ms
05-03 05:10:06.771 951 986 I ActivityManager: Displayed com.xueqiu.android/.common.UpdateDialogActivity: +105ms
05-03 05:11:19.856 951 986 I ActivityManager: Displayed com.xueqiu.android/.view.WelcomeActivityAlias: +728ms
05-03 05:11:21.266 951 986 I ActivityManager: Displayed com.xueqiu.android/.common.MainActivity: +955ms

使用ffmpeg拆針
操作步驟
要先吧ffmpeg的程序下載了,然后配置環境變量,請在官網下載windows的版本吧,環境配置特別簡單

清除app的緩存:adb shell pm clear package
強制停止app的進程,處于冷啟動的狀態adb shell am force-stop package
錄制一個時間為30秒的視頻,并保存在sdcard中:adb shell screenrecord --bugreport --time-limit 30 /sdcard/1.mp4 &
啟動app:adb shell am start -S -W package/activity
把文件pull到當前文件夾:adb pull /sdcard/1.mp4 .
把錄制的視頻轉化成gif,感覺沒卵用:ffmpeg -i 1.mp4 xueqiu.gif
ffmpeg -i 1.mp4 -r 10 frames_%03d.jpg
-i后面跟要處理的視頻文件
-r表示一秒要拆多少幀,如果是30秒的視頻,就會拆成300張圖片
%03d表示文件從001開始,到最后的300
把1.mp4的視頻拆成300張圖片,一張圖片的時間為0.1秒
==注意:使用方法7時,盡量把視頻放在一個文件夾里面==

實操
C:\Users\user>adb shell pm clear com.xueqiu.android
Success

C:\Users\user>adb shell am force-stop com.xueqiu.android

C:\Users\user>adb shell am start -S -W com.xueqiu.android/.view.WelcomeActivityAlias
Stopping: com.xueqiu.android
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xueqiu.android/.view.WelcomeActivityAlias }
Status: ok
Activity: com.xueqiu.android/.view.WelcomeActivityAlias
ThisTime: 1063
TotalTime: 1063
WaitTime: 1111
Complete

C:\Users\user>adb pull /sdcard/1.mp4 .

C:\Users\user>ffmpeg -i 1.mp4 -r 10 frames_%03d.jpg

(文章來源于霍格沃茲測試學院) 更多技術文章可點擊http://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/3822

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容