Monkey測試原理:
- Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試。 Monkey測試是一種為了測試軟件的穩定性、健壯性的快速有效的方法
- 是androidSDK附帶的一個工具,在Android文件系統中的存放路徑是:/system/framework/monkey.jar Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執行,shell腳本在Android文件系統中的存放路徑是:/system/bin/monkey,這樣就可以通過在shell窗口中執行: adb shell monkey {+命令參數}來進行Monkey測試了。
Monkey測試步驟:
1、將手機連接PC,測試連接是否正常
adb devices
2、查找需要測試的包名
adb shell pm list packages 列出所有包名
adb shell pm list packages testAPP123 查找名稱中包含testAPP123的包名
3、執行monkey測試(打開3個cmd窗口,分別執行以下命令)
1)打印系統日志:adb logcat -v time > e:/20190508.txt
2)監控crash和ANR:adb shell am monitor
3)常用monkey命令:(adb shell monkey + 參數)
adb shell monkey -p com.dapp.abc --throttle 200 --pct-touch 60 --pct-motion 40 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes -v -v -v 1080000 >e:\monkey_log\20190507.txt
4、停止monkey測試
adb shell ps | findstr monkey 查看進程ID
adb shell kill 26073 殺掉monkey對應的進程
5、設置黑名單
將想要添加到黑名單的包名寫到blacklist.txt中,多個包名換行分隔(monkey解析是一行行讀的)
設置白名單同理。
黑名單、白名單、-p參數,三選一,不能同時設置
adb push blacklist.txt /data/local/tmp/
adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt --throttle 200 --pct-touch 60 --pct-motion 40 -v -v -v 10000 >e:\monkey_log\2019070604.txt
Monkey參數說明:
-help 查看幫助信息
-v-v-v log的詳細級別
-s <seed> 偽隨機數生成器的seed值。(如果用相同的seed值再次運行monkey,將生成相同的事件序列)
-p <allowed-package-name> 指定包名。(若指定多個包,使用多個-P,一個-p后跟一個包名)
--throttle <millisecond> 在事件之間插入固定的時間(毫秒)延遲
--pct-touch <percent> 調整觸摸事件的百分比,一次ACTION_DOWN,一次ACTION_UP 例如:–pct-touch 10 //百分之十為觸摸事件
--pct-motion <percent> 滑動事件,按下->移動->抬起,ACTION_DOWN ACTION_MOVE ACTION_UP
-–pct-trackball percent 軌跡事件
-–pct-syskeys <percent> 系統按鍵事件 //如Home、Back、Start Call、End Call及音量控制鍵
-–pct-nav <percent> 基本導航事件(上下左右四個方向)
-–pct-majornav <percent> 主要導航事件 //如 5-way鍵盤的中間按鍵、回退鍵、菜單鍵
-–pct-appswitch <percent> 啟動Activity的百分比(測試多個APP時,保證其他app都能啟動並測到)
--pct-flip <percent> 鍵盤打開關閉
-–pct-anyevent <percent> 其他事件 //字母、數字按鍵等,一般是不常用的設備按鈕
-–pct-pinchzoom <percent> 二指縮放事件
-–pct-permission <percent> 權限(替換掉了老版本中的--pct-rotation 屏幕旋轉)
--ignore-crashes 應用程序發生崩潰或異常時,monkey繼續運行
--ignore-timeouts 應用程序發生任何超時錯誤時(如“Application Not responding”對話框),monkey繼續運行
--ignore-security-exception 當程序發生許可錯誤(例如啟動一些需要許可的Activity)時,monkey繼續運行
--ignore-native-crashes
--monitor-native-crashes
PS:
常用時間:
15小時:1080000(周內:晚上6點--早上9點)
39小時:2808000(周末:周六晚上6點--周一早上9點)
備注:因為adb發送事件,一次down算一個事件,一次up算一個事件,但是一次down加一次up才sleep一次,所以用事件間隔時間乘以事件次數,算出的運行時間並不准確。所以按照經驗,給算出的次數乘以4,這樣運行時間大致相等。比如:間隔500ms,執行5分鍾,是600次(實際1.2分鍾就執行完了)所以,想要執行5分鍾的話,600次*4=2400次