APP--Monkey壓力測試
adb
adb是安卓除錯橋是一種功能多樣的命令列工具,可以與裝置進行通話
monkey壓力測試
原理:
通過向系統傳送偽隨機的使用者事件流(如按鍵輸入、觸控式螢幕輸入、滑動Trackball、手勢輸入等操作),來對裝置上的程式進行壓力測試,
檢測程式多久的時間會發生異常。
一般在功能測試完成後進行
Monkey測試用於發現App測試中的問題(如ANR(Application Not Responding),響應延時以及CRASH,非正常退出)
Monkey還對測試中的系統進行監測,對下列三種情況進行特殊處理(自動停止):
(1)如果限定了Monkey執行在一個或幾個特定的包上,那麼它會監測試圖轉到其它包的操作,並對其進行阻止;
(2)如果應用程式崩潰或接收到任何失控異常,Monkey將停止並報錯;
(3)如果應用程式產生了應用程式不響應(application not responding)的錯誤,Monkey將會停止並報錯;
monkey命令常用的選項主要有四個,一個是-v 、-s、--throtlle、-p,-v的話用於詳細顯示命令執行過程
-p:獲取包名 (不指定,隨機)
-v:查日誌 v越多越詳細 一般來說展示在cmd裡面(也可以生成log報告來檢視)
-throttle: 延時器 相當於jmeter的思考時間 ,以毫秒為單位(mm)
-s:指定mokey命令執行的序列號,主要作用就是處理復現問題
seed:意思是把事件流做記錄,來進行迴歸測試
下次跑的時候加 -s seed
當我們程式模擬100次隨機使用者事件
事件的百分比(Event percentages):如果沒有設定,就會隨機分配
調整觸控事件的百分比
例如:
adb shell monkey -p com.sf.DarkCalculator--pct-touch 10 -v 1000
Event percentages(事件百分比):
0:點選事件百分比,即引數--pct-touch
1:滑動事件百分比,即引數--pct-motion
2:縮放事件百分比,即引數--pct-pinchzoom
3:軌跡球事件百分比,即引數--pct-trackball
4:螢幕旋轉事件百分比,即引數--pct-rotation
5:基本導航事件百分比,即引數--pct-nav
6:主要導航事件百分比,即引數--pct-majornav
7:系統按鍵事件百分比,即引數--pct-syskeys
8:Activity啟動事件百分比,即引數--pct-appswitch
9:鍵盤喚出隱藏事件百分比,即引數--pct-flip
10:其他事件百分比,即引數--pct-anyevent
monkey的調式引數,比較常用的就是兩個調式引數一個是:忽略異常退出(--ignore-crashes)、忽略響應延遲(--ignore-timeouts)
monkey的參考命令
adb shell monkey -p com.tencent.XXX(替換包名) --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes -v -v -v 1000000>d:\monkeyScreenLog.log
例子:
adb shell monkey -p com.android.browser--ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes -v -v 100000>e:\monkeyScreenLog.log
我們壓測10萬個網頁請求可能會碰到一些問題
例如 carsh(崩潰,網頁無法開啟) ANR(無響應,或者響應很慢)
一般來說app響應的時間在一秒內
可以通過上一版本來進行評估
也可以參考同行來做競品
或者根據需求或者領導要求
安卓啟動時間測試
什麼是啟動的時間:
從點選應用的啟動圖示開始創建出一個新的程序直到我們看到了介面的第一幀,這段時間就是應用的啟動時間。
我們要測量的也就是這段時間,測量這段時間可以通過adb shell命令的方式進行測量,這種方法測量的最為精確
app冷啟動:當應用啟動時,後臺沒有該應用的程序,這時系統會重新建立一個新的程序分配給該應用, 這個啟動方式就叫做冷啟動(後臺不存在該應用程序)。
app熱啟動:當應用已經被開啟, 但是被按下返回鍵、Home鍵等按鍵時回到桌面或者是其他程式的時候,再重新開啟該app時, 這個方式叫做熱啟動(後臺已經存在該應用程序)。
app首次啟動: 首次啟動應用時會有很多的資料或配置檔案的初始化工作,因此其啟動時間遠遠大於冷啟動的啟動時間,這樣的話app的啟動時間也就變成了從3個指標去衡量了
獲取包名的方法:
adb shell pm list package
(adb shell pm list package-3 (第三方))
adb logcat | findstrSTART
獲取包名
通過包名在模擬器上執行命令
舉例:adb shell am start -W [packageName]/[packageName.MainActivity]
執行成功後將返回三個測量到的時間:
ThisTime:一般和TotalTime時間一樣,除非在應用啟動時開了一個透明的Activity預先處理一些事再顯示出主Activity,這樣將比TotalTime小。
TotalTime:應用的啟動時間,包括建立程序+Application初始化+Activity初始化到介面顯示。
WaitTime:一般比TotalTime大點,包括系統影響的耗時。指令碼取得是TotalTime
ctrl +c:退出編輯介面
adb shell am force-stop com.sf.DarkCalculator :關閉app
一般來說獲取啟動的時間,要多次進行,好比測五次,取其中的平均值
電量測試
需注意,手機通過USB連線電腦,手機會處於充電狀態,必須保證手機為非充電狀態
切換非充電狀態
命令:adb shell dumpsys battery set status 1
其中 status 1 為非充電狀態,status 2 為充電狀態
即
切換為充電狀態
命令:adb shell dumpsys battery set status 2
獲取電量
命令:adb shell dumpsys battery