移動app效能測試工具:Emmagee使用介紹
Emmagee
簡介
Emmagee是網易杭州研究院QA團隊開發的一個簡單易上手的Android效能監測小工具,主要用於監控單個App的CPU,記憶體,流量,啟動耗時,電量,電流等效能狀態的變化,且使用者可自定義配置監控的頻率以及效能的實時顯示,並最終生成一份效能統計檔案。
特點:簡單、易上手、開源、只支援Android
實現原理
1、監控應用CPU原理
Android系統是基於Linux核心的,所以系統檔案的結構和Linux下一樣,系統總體CPU使用資訊放在/proc/stat檔案下,/proc/cpuinfo檔案存放CPU的其它資訊,包括CPU名稱,直接讀取即可。Emmagee是將選中應用的
2、監控應用消耗流量
系統中有存放整體流量和針對當程式的流量統計,/proc/net/dev和/proc/uid_stat/UID下存放tcp_rcv和tcp_send檔案,分別存放下行流量和上行流量,操作前後相減就得出結果。
3、監控記憶體實現原理
獲取到當被測應用的PID,然後按照PID呼叫android的API獲取當前被測應用佔用的記憶體。/proc/meminfo檔案記錄了系統記憶體資訊。
使用方法
Emmagee-2.4.apk為例
1、下載Emmagee.apk安裝包
下載地址:https://github.com/NetEase/Emmagee/releases
2、安裝Emmagee.apk
3、開啟Emmagee
4、點選左上角的設定按鈕,可進行採集頻率,郵件傳送等相關設定
5、返回步驟3中,點選要測試的應用,然後點選“開始測試”
6、對app進行相關操作,完成後返回到Emmagee介面,點選停止測試
停止測試後,Emmagee會自動生成.csv測試結果檔案,測試結果檔案預設儲存在SD卡下,檔名稱如:Emmagee_TestResult_20160615103812。
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名稱”可以看到大致的操作(如果看不懂咋辦?測試前先操作看看,對比著看吧)