APP非功能測試


1、移動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是最終我們想要的啟動時間,相加其中的時間。
3find “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庫相關的代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM