APP測試
如何獲取啟動時間?
通過adb的logcat來獲取Activity啟動時間。使用者體驗時間=Activity啟動時間+啟動中非同步UI繪製的時間。
啟動時間的測試主要涉及2種場景(啟動方式):熱啟動和冷啟動。
- 冷啟動:手機系統中沒有該APP的程序,也就是首次啟動。點選APP圖示,啟動應用的時候沒有該應用的程序存在。
- 熱啟動:手機系統中有該APP的程序,即APP從後臺切換到前臺。點選APP圖示,啟動應用的時候後臺已經有該應用的程序存在了。
APP啟動時間測試方法:
1、adb命令,如adb logcat、adb shell am start、adb shell screen-record。
1.1 以com.android.browser這個包名為例,adb shell am start執行命令如下:
adb shell
am start -W -n com.android.browser/
.BrowserActivity(回車後觀察模擬器)
-
W :啟動完成之後,返回啟動耗時。
-n:後面跟的是需要啟動的APP的包名和lauchActivity。
1.2 以com.android.browser這個包名為例,adb logcat執行命令如下:
1
、先kill掉該應用,執行命令:adb logcat >
d:\testresult.txt
2
、啟動應用,待載入完成後ctril+
c停止,使用find過濾啟動時間,testresult_2.txt是最終我們想要的啟動時間,相加其中的時間。
3
、
find
“Displayed”d:\testresult.txt >
d:\testresult_1.txt
4
、
find
“com.android.browser”d:\testresult.txt >d:\testresult_2.txt
1.3 以com.android.browser這個包名為例,adb shell screen-record執行命令如下:
1
、把待測手機連上計算機,執行錄製命令:adb shell screenrecord /sdcard/demo.mp4>啟動app>按ctrl+
c結束
2
、adb pull screenrecord /sdcard/
demo.mp4 d:\record命令匯出視訊到D盤的record資料夾下
3
、使用視訊軟體開啟該視訊並進行播放分析(如KMPlayer)
4
、視訊中ICON變亮作為開始時間,將APP完全啟動後的時間作為終止時間。使用者體驗時間=終止時間-開始時間
2、程式碼裡打點(埋點),程式碼裡插入時間並列印Log.e。
3、高速相機、秒錶
4、三方工具或雲測平臺
2、移動APP流量測試
流量:指能夠連線網路的裝置在網路上所產生的資料流量。
一般對於APP測試的流量,主要關注的是使用者層面的流量,需要考慮2種場景:活動狀態、靜默狀態。
- 活動狀態:使用者對APP操作而直接導致的流量消耗。
- 靜默狀態:使用者沒操作APP,APP處於後臺狀態時流量的消耗。
對於Android系統下流量的測試方法:
1、通過Tcpdump抓包,然後利用wireshark分析。
2、檢視linux流量統計檔案
3、利用類似DDMS的工具檢視流量
4、利用Android API來統計,通過Android API的TrafficStats類來統計,該類提供了很多不同方法來獲取不同角度的流量資料。
5、三方工具或者雲測平臺。
使用比較多的linux流量統計檔案為例,以test.apk這個應用為例,檢視這個應用的流量:
1
、通過ps |
grep
com.android test命令獲取pid。
2
、通過
cat
/proc/{pid}/
status 命令獲取uid,其中{pid}替換為第一步獲取的pid值。
3
、通過cat /proc/uid_stat/{uid}/
tcp_snd命令獲取傳送的流量(單位bytes),其中{uid}替換為第二步的值。
4
、通過cat /proc/uid_stat/{uid}/tcp_rcv命令獲取接收的流量(單位bytes),其中{uid}替換為第二步的值。
3、移動APP CPU測試
測試一款APP在各種場景下CPU的佔用率情況也是比較重要的指標,CPU佔用率較高會影響使用流暢度。
一般APP在手機上的CPU佔用率主要考慮2種場景:
- 活動狀態:使用者對APP操作而直接導致的流量消耗。
- 靜默狀態:使用者沒操作APP,APP處於後臺狀態時流量的消耗。
對於APP CPU測試方法如下:
1、三方工具,如騰訊GT、網易Emmagee、阿里易測、手機自帶監控等。
2、dumpsys命令。如adb shell dumpsys cpuinfo | grep {PackageName}.
3、top命令。如adb shell top | grep {PackageName}.
4、移動APP電量測試
電量測試其實是評估消耗電量快慢的一種方式。
電量測試的測試場景主要有:
- 待機:包括無網路待機、Wi-Fi待機、3G待機等。
- 靜默狀態:開啟APP之後並不操作,讓後臺執行。
- 活動狀態:不斷地進行某些場景的操作,除了常規操作外,還應該包括看視訊、滅屏下載、喚醒等。
對於APP 電量測試方法:
1、通過硬體進行測試。比如,耗電量測試儀、騰訊自己製作的電量寶。
2、通過adb shell dumpsys batterystats命令。
3、三方工具或者雲測平臺。
5、移動APP測試工具和雲測平臺
1、騰訊GT: http://gt.qq.com ,即可對APP進行快速效能測試(CPU、記憶體、流量、電量、幀率/流暢度等)、開發日誌的檢視、Crash日誌檢視、網路資料包的抓取、APP內部引數的除錯、真機程式碼耗時統計等。
2、Emmagee:http://github.com/NetEase/Emmagee, 監控制定被測應用在使用過程中佔用機器的CPU、記憶體、流量資源的使用情況並記錄下來,同時可以通過excel來做出統計圖的形式。
3、EasyTest易測:在手機端完成實時效能資料的監控、弱網環境的模擬、手機抓包、Monkey測試等。
6、移動APP記憶體測試
記憶體洩露是什麼?
記憶體洩漏:程序中某些物件已經沒有使用價值了,但是他們卻可以直接或間接地被引用從而導致無法被GC回收。當積累超過Dalvik堆大小時就會發生記憶體洩露。
記憶體洩露常見的分析方法:
1、在adb shell 下執行命令dumpsys meminfo [應用包名],可以觀察到記憶體的使用情況。一般觀察PSS Total和Heap Size Total.其中Dalvik就是Java堆,它不能超過最大限制,檢視最大限制可以用命令getprop |grep heapgrowthlimit.
2、DDMS和MAT.DDMS可動態檢視某程序佔用記憶體的情況,而MAT可以對dump出來hprof進行分析。
3、Android Studio和MAT.適合有原始碼的情況。
4、日誌和必要的監控。
記憶體洩露步驟如下:
1、執行被測APP並持續操作
2、在DDMS中的VM heap標籤頁裡檢視消耗。其中有一個按鈕Cause GC,方便觀察記憶體的回收情況。如果多次進行發現記憶體還是在不斷增大,可回收的越來越少,那就有可能存在記憶體洩露。也可以通過data object中的Total Size來進行判斷。
3、當傳送記憶體洩露或者持續增長的時候可以通過DDMS的Dump hrof file功能捕獲記憶體快照。
4、通過命令hprof-conf [inputfile][outputfile]轉化為標準的hprof檔案
5、使用MAT開啟標準的hprof檔案並進行分析。
6、如果MAT分析不出什麼來,可以通過dumpsys meminfo 觀察Native Heap的Pss Total和Heap Alloc,如果他們一直在增長,可能是Native層出現了問題,需要去排查JNI、SO庫相關的程式碼。