標籤:
簡介
Emmagee是網易杭州研究院QA團隊開發的一個簡單易上手的Android效能監測小工具,主要用於監控單個App的CPU,記憶體,流量,啟動耗時,電量,電流等效能狀態的變化,且使用者可自訂配置監控的頻率以及效能的即時顯示,並最終產生一份效能統計檔案。
實現原理
1、監控應用CPU原理
Android系統是基於Linux核心的,所以系統檔案的結構和Linux下一樣,系統總體CPU使用資訊放在/proc/stat檔案下,/proc/cpuinfo檔案存放CPU的其它資訊,包括CPU名稱,直接讀取即可。Emmagee是將選中應用的PID傳入,讀取/proc/PID/stat檔案資訊及可擷取該PID對應程式的CPU資訊。
2、監控應用消耗流量
系統中有存放整體流量和針對當程式的流量統計,/proc/net/dev和/proc/uid_stat/UID下存放tcp_rcv和tcp_send檔案,分別存放下行流量和上行流量,操作前後相減就得出結果 。
3、監控記憶體實現原理
擷取到當被測應用的PID,然後按照PID調用android的API擷取當前被測應用佔用的記憶體。/proc/meminfo檔案記錄了系統記憶體資訊。
Emmagee-2.2.apk為例
1、 下載Emmagee.apk安裝包
:https://github.com/NetEase/Emmagee/releases
2、 安裝Emmagee.apk
3、 開啟Emmagee
4、 點擊左上方的設定按鈕,可進行採集頻率,郵件發送等相關設定
5、 返回步驟3中,點選要測試的應用,然後點擊“開始測試”
6、 對app進行相關操作,完成後返回到Emmagee介面,點擊 停止測試
停止測試後,Emmagee會自動產生.csv測試結果檔案。
7、 把檔案匯出來,分析資料和統計
8、 痛點在哪裡?
工具使用似乎不難,那痛點在哪裡?
個人覺得難在情境設計。筆者實踐也不多,這裡就簡單說說設計思路吧。
前提條件:保證測試環境的乾淨
第一種類型:測試app中某個相對獨立的功能
這種一般就是保證其它條件不變,重複操作這個單一功能,然後分析資料。
例子1:app初次開機的相關效能狀態
情境描述:點擊app,啟動app直到出現app首頁面。
測試操作:
1.開啟Emmagee
2.選擇app,點擊“開始測試”,出現首頁面後,點擊“停止測試”
3.用手機清理軟體,清理“被測app”。
4.重複步驟2
資料分析:
一般情況下,2.2版本的Emmagee會自動為我們產生CPU,記憶體,流量,電量,電流資料,但是啟動耗時就不一定了,實踐中發現啟動耗時經常是擷取不到的,但是做效能測試,很關心的一點就是回應時間,不能擷取咋辦?筆者是這麼做的,設定採集頻率的時間為最小值,比如1s,這樣Emmagee就可以根據測試報告中,“時間”一欄大致統計出這個功能的耗時情況。
這些資料都有了,那麼就可以根據多次的測試資料,求出各類資料的“均值”,“峰值”
例子2:app二次啟動的相關效能狀態
情境描述:點擊app,啟動app直到出現app首頁面,退出app
測試操作:
1.開啟Emmagee
2.選擇app,點擊“開始測試”,出現首頁面後,退出app,點擊“停止測試”
3.重複步驟2
註:和例子一不一樣的地方在於,是否在前一次操作的基礎上進行操作,即“測試起點”不一樣。幸運的是,Emmagee是有這種“記憶”功能的。
資料分析:
參考例子1
第二種:測試某個流程,目的在於找出效能“瓶頸”
針對某個業務流,做一個完整的業務過程的操作
這裡重點要說的資料分析具體咋做。個人的想法是這樣的:根據測試產生的.csv檔案,繪製相關資料的曲線圖,查看曲線變化--平穩?起伏不定?還是“峰迴路轉”?如果不是很平穩,則說明效能上可能存在瓶頸,需要進一步分析是那個操作步驟中出現的。
關於咋看步驟,測試結果中,有一欄“棧頂Activity名稱”可以看到大致的操作(如果看不懂咋辦?測試前先操作看看,對比著看吧)
【轉】Emmagee app效能測試工具使用教程