1. 程式人生 > 實用技巧 >APP測試

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

4find “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庫相關的程式碼。