開發(fā) Android 應用,除了寫單元測試,還可以用自帶的 Monkey 工具進行 UI 自動化測試和腳本測試,本文介紹 UI 自動化測試,而Espresso測試待下一篇介紹。
Monkey 工具可以發(fā)送指定數量的隨機事件,幫我們測試應用是否會出現(xiàn) crash 或 ANR 等 bug,也方便這類 bug 的復現(xiàn)。
一、連接測試設備
點擊 Terminal 窗口,輸入 adb devices,可查看當前連接的設備

若只有一個設備,那再輸入 adb shell就能進入該設備進行 monkey 測試。
當有多個設備的時候,可以關閉其他設備,或者直接指定設備,如下方是指定了名為 emulator-5554 的設備
adb -s emulator-5554 shell
PS:如果實際上當前只有一個設備,但查到有多個offline的狀態(tài),這時也是無法monkey測試的,可以選擇重啟電腦,或者輸入以下命令解決,殺掉 adb ,然后重連設備
adb kill-server
二、Monkey工具簡單使用
同樣在 Terminal 中操作,可以先輸入 adb shell 進入設備再輸入 monkey 命令進行測試,也可以每次都輸入adb shell monkey 命令進行測試。
如以下兩種寫法效果是一樣的,不過如果先輸入 adb shell 就會進入到設備的控制臺,以后都不用再輸 adb shell 了, 而退出設備控制臺的命令是 exit


以下開始簡單的 monkey 測試##
最簡單的命令
adb shell monkey 1000 發(fā)送1000個隨機事件,執(zhí)行后就能看到設備自動操作起來了,這有可能打開設備任意應用來操作,包括一些點擊,滑動,各種按鍵事件,總之跟人手動操作是一樣的,只不過操作事件是隨機的。
一般情況下,我們測試的是指定應用,所以需要知道應用的包名
adb shell ls data/data 查看設備安裝了哪些應用,將顯示應用的包名

用命令測試一下 calender,順便在控制臺顯示操作軌跡,用 -v
adb shell monkey -p com.android.calendar -v 1000
同時測試兩個包,并且用 --throttle 100 指定命令執(zhí)行間隔為 100 ms
adb shell monkey -p com.android.calendar -p com.android.calculator2 --throttle 100 -v 1000
增加一個 -s 數字 記錄一個操作軌跡的唯一值,理論上用同一個值的話會執(zhí)行相同的操作軌跡,可以用來復現(xiàn) crash 等問題,當然發(fā)生 crash 時控制臺也會出現(xiàn)一個 seed值,用這個去執(zhí)行也能復現(xiàn)問題了
adb shell monkey -p com.android.calculator2 -s 100 -v 1000
crash 事件復現(xiàn),比如下圖中最后的 seed 0 , 0就是發(fā)生奔潰的 seed 值,我們在 -s 后面的值改為 0 就能復現(xiàn) crash 了
adb shell monkey -p com.android.calculator2 -s 0 -v 1000

添加一個 --pct-touch 100 參數,設置為100%執(zhí)行應用內點擊事件,而不會出現(xiàn)滑動狀態(tài)欄啊截屏啊按home鍵等事件
adb shell monkey -p com.android.calculator2 --pct-touch 100 -v 100
設置50%點擊事件和20%系統(tǒng)按鍵事件,其余30%為其他事件,并且設置無視 crash 和 ANR 操作超時 ,發(fā)生時測試將繼續(xù)執(zhí)行
adb shell monkey --pct-touch 50 --pct-syskeys 20 --ignore-crashes --ignore-timeouts -v 1000
在測試運行時,想要終止測試,按以下步驟
1、輸入 adb shell 進入測試設備
2、輸入 ps|grep monkey 獲取monkey的進程id
3、輸入 kill process_id 來終結 monkey 進程,如下圖第一個就是

三、Monkey 命令小結
monkey 查看所有 monkey 命令
monkey 1000 直接發(fā)1000個隨機事件
monkey -v 1000 增加Terminal對操作軌跡的顯示
monkey --throttle 1000 指定事件之間間隔,當前設置為1000ms
monkey -p com.android.calculator2 指定要運行的包名
monkey -s 10 指定一個隨機事件序列的id,下次再用同樣的id去執(zhí)行,可以復現(xiàn)問題
monkey --pct-touch 100 設置100%執(zhí)行點擊事件,不執(zhí)行上下滑,旋轉等其他操作
monkey --ignore-crashes 忽略異常,繼續(xù)跑
monkey --ignore-timeouts 忽略超時,繼續(xù)跑
四、常用 adb 命令
進入設備: adb shell
進入指定設備: adb -s 設備名 shell
安裝軟件: adb shell install apk名字
殺掉: adb adb kill-server
啟動: adb adb start-server
終止 Terminal 執(zhí)行:Ctrl+C
清空 Terminal 歷史:cls
從 adb 命令窗口退回 CMD: exit
附上官方的 monkey 測試介紹網頁
https://developer.android.google.cn/studio/test/monkey.html
至此Monkey的基本使用介紹完畢,但只能進行一些隨機事件操作,如果我們想測試 APP 某些指定的操作的話(比如注冊登錄),就要自己寫測試腳本了
下一篇將介紹 Espresso 腳本來寫指定測試操作步驟
請尊重他人勞動,轉載注明出處,謝謝