Monkey測試
monkey測試簡介
什麼是Monkey
Monkey程式是Android系統自帶的,由Java語言寫成,在Android檔案系統中的存放路徑是: /system/framework/monkey.jar。
操作流程
通過名為“monkey”的Shell指令碼去啟動Monkey.jar程式(shell指令碼在Android檔案系統中 的存放路徑是:/system/bin/monkey),在你指定的APP應用上模擬使用者點選,滑動,輸入等操作以極快的速度來對裝置程式進行壓力測試,檢測程式是否會發生異常,然後通過日誌進行排錯。
目的
測試app 是否會是否會Crash,主要用於穩定性測試
操作命令格式:adb shell monkey {+命令引數}
操作步驟
- 環境配置:把adb加入系統環境,手機開啟開發者模式
- 連線手機,獲取測試的包名。獲取包名的方法
- Monkey編寫測試命令,並執行。monkey操作命令
如果要提前中結束測試,中斷執行中的monkey
CTRL+C adb shell ps | grep monkey返回程序號 adb shell kill [剛才查到的程序號]
從Monkey日誌中看問題
測試結果初步判斷
-
monkey執行時未加
--ignore-crashes
--ignore-crashes
引數,就先瀏覽日誌中Events injected: 值
,檢視當前已執行的次數,就知道有無bug - 程式無響應的問題:在日誌中搜索 “ANR”
-
崩潰問題:在日誌中搜索 “Exception” ,在這裡順便提一下常見的Java異常:
- 算術異常類:ArithmeticExecption
- 空指標異常類:NullPointerException
- 型別強制轉換異常:ClassCastException
- 陣列負下標異常:NegativeArrayException
- 陣列下標越界異常:ArrayIndexOutOfBoundsException
- 違背安全原則異常:SecturityException
- 檔案已結束異常:EOFException
- 檔案未找到異常:FileNotFoundException
- 字串轉換為數字異常:NumberFormatException
- 操作資料庫異常:SQLException
- 輸入輸出異常:IOException
- 違法訪問錯誤:IllegalAccessError
- 記憶體不足錯誤:OutOfMemoryError
- 堆疊溢位錯誤:StackOverflowError 15.其他,參考
找出問題後的操作步驟:
- 找到是monkey裡面的哪個地方出錯
- 檢視Monkey裡面出錯前的一些事件動作,並手動執行該動作
- 若以上步驟還不能找出,可以使用之前執行的monkey命令再執行一遍,注意seed值要一樣。
常規測試的monkey用法
adb shell monkey -p com.xxx.myapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:\mylog.log
對應引數說明
-p指定包名
--throttle 100MILLISEC事件之間插入的固定延遲。通過這個選項可以減緩Monkey的執行速度。如果不指定,Monkey將盡可能快的產生並執行事件
--ignore-crashes作用:通常,應用發生崩潰或異常時Monkey會停止執行。如果設定此項,Monkey將繼續傳送事件給系統,直到事件計數完成。
--ignore-timeouts作用:通常,應用程式發生任何超時錯誤(如“Application Not responding”對話方塊)Monkey將停止執行,設定此項,Monkey將繼續傳送事件給系統,直到事件計數完成。
--ignore-security-exception作用:通常,當程式發生許可錯誤(例如啟動一些需要許可的Activity)導致的異常時,Monkey將停止執行。設定此項,Monkey將繼續傳送事件給系統,直到事件計數完成。
--ignore-native-crashes忽略原生代碼導致的崩潰。設定忽略後,Monkey將執行完所有的事件,不會因此停止
--monitor-native-crashes 監視崩潰時的原生代碼
-v每個-v都將增加反饋資訊的級別。共3個級別,因此,-v -v -v可以提供最詳細的設定資訊。
1000000 這裡是指點選的次數
>d:\mylog.log日誌輸出