在移動自動化測試中,通常是需要adb命令和monkey命令的聯合使用來進行測試,adb命令何其多,monkey命令也不少,組合起來讓人頭疼,本文講列出一些常用的命令,幫助大家更好地進行移動自動化測試
Monkey 在英文裡的含義是「猴子」,在測試行業對應有一個術語叫「猴子測試」,那麼什麼是「猴子測試」
adb shell monkey [+ 命令引數] [指令數]
最簡單的範例:
adb shell monkey 100 # 傳送 100 個隨機指令
上面的 monkey 命令傳送了 100 個隨機指令,因為並沒有指定具體的應用包名。會在整個系統內隨機執行。
注意: 指令數,也就是傳送的亂數的數值一定要放在所有引數的最後。
範例:
adb shell monkey -p com.huomaotv.mobile 100
# 對「火貓 TV」傳送 100 個隨機指令
接下來的 100 條指令都會在 火貓TV 應用內進行。不過注意,100 條指令會在極快的時間完成。
Level 1: 預設值,僅提供啟動提示、測試完成、最終結果及 Crash 紀錄檔等少量資訊
adb shell monkey -p com.huomaotv.mobile -v 100
Level 2: 提供較為詳細的紀錄檔,包括每個傳送到 Activity 的事件資訊
adb shell monkey -p com.huomaotv.mobile -v -v 100
Level 3:最詳細的紀錄檔,包括了測試中選中/未選中的Activity資訊
adb shell monkey -p com.huomaotv.mobile -v -v -v 100
adb shell monkey -p com.huomaotv.mobile --throttle 300 100
# 每個指令間延時 300 毫秒
adb shell monkey -p com.huomaotv.mobile -s 5555 -v 100
可以修改命令其他引數,保留 -s 5555 可以看到隨機指令都一樣。如果修改了數量,應該是百分比和前面的指令 是一致的。比如把數量從 100 改為 200,前面的百分比和前面的隨機指令是一致的
以下命令主要用於控制在 monkey 命令執行過程中的一些偵錯選項。 其中 --ignore-crashes 和 --ignoretimeouts 在長時間執行(比如下班後執行幾個小時),可以保證在執行過程中遇到崩潰等問題的時候,依然能執 行剩餘的指令。避免剛開始執行就遇到 Crash 和 ANR 導致後續指令不會執行。
引數 | 說明 | 備註 |
---|---|---|
–ignorecrashes | 用於指定當應用程式崩潰時,Monkey是否停止執行。如果使用此引數,即使應用程式 崩潰,Monkey依然會傳送事件,直到事件計數完成。 | 長 時 間 運 行 必 備 |
–ignoretimeouts | 用於指定當應用程式發生ANR(Application No Responding)錯誤時,Monkey是否 停止執行。如果使用此引數,即使應用程式發生ANR錯誤,Monkey依然會傳送事件, 直到事件計數完成。 | 長 時 間 運 行 必 備 |
–ignoresecurityexceptions | 用於指定當應用程式發生許可錯誤時(如證書許可,網路許可等),Monkey是否停止 執行。如果使用此引數,即使應用程式發生許可錯誤,Monkey依然會傳送事件,直到 事件計數完成 | |
–killprocessafter-erro | 用於指定當應用程式發生錯誤時,是否停止其執行。如果指定此引數,當應用程式發 生錯誤時,應用程式停止執行並保持在當前狀態(注意:應用程式僅是靜止在發生錯 誤時的狀態,系統並不會結束該應用程式的程序)。 | |
–monitornativecrashes | 用於指定是否監視並報告應用程式發生崩潰的原生程式碼。 | |
-wait-dbg | 停止執行中的Monkey,直到有偵錯程式和它相連線。 | |
-dbg-noevents | 設定此選項,Monkey將執行初始啟動,進入到一個測試Activity,然後不會再進一步 生成事件。為了得到最佳結果,把它與-v、一個或幾個包約束、以及一個保持Monkey 執行30秒或更長時間的非零值聯合起來,從而提供一個環境,可以監視應用程式所調 用的包之間的轉換 |
範例:
adb shell monkey -p com.huomaotv.mobile --ignore-crashes --ignore-timeouts --monitornative-crashes -v 100000
指定時間型別百分比引數
monkey 隨機傳送的命令中包含各種隨機事件,各種型別的事件按照某種比例產生。如果想要指定某種型別的事件更多一些,可以指定該事件的百分比。
比如當前測試的應用中主要支援的操作就是觸控和滑動等常規操作,那麼就可以提高這兩種型別的隨機事件的比例。
事件類別 | 調整事件說明 |
---|---|
–pct-touch | 調整觸控事件的百分比(觸控事件是一個down-up事件,它發生在螢幕上的某單一位置) |
–pctmotion | 調整滑動事件的百分比(動作事件由螢幕上某處的一個down事件、一系列的偽隨機事件和一 個up事件組成) |
–pctpinchzoom | 調整縮放事件的百分比(縮放事件即智慧機上的放大縮小手勢) |
–pcttrackball | 調整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點選) |
–pctrotation | 調整橫豎屏切換事件的比例 |
–pct-nav | 調整「基本」導航事件的百分比(導航事件由來自方向輸入裝置up/down/left/right組成) |
–pctmajornav | 調整「主要」導航事件的百分比(這些導航事件通常引發圖形介面中的動作,如:回退按鍵、菜 單按鍵) |
–pct-flip | 調整鍵盤事件的百分比(鍵盤事件如點選輸入框、鍵盤彈起、點選輸入框以外區域、鍵盤收 回等) |
–pctsyskeys | 調整「系統」按鍵事件的百分比(這些按鍵通常被保留,由系統使用,如Home、Back、Start Call、End Call及音量控制鍵) |
–pctappswitch | 調整啟動Activity的百分比。在隨機間隔裡,Monkey將執行一個startActivity()呼叫,作為最 大程度覆蓋包中全部Activity的一種方法 |
–pctanyevent | 調整其它型別事件的百分比。它包羅了所有其它型別的事件,如:按鍵、其它不常用的裝置 按鈕、等等 |
範例:
# 單個引數設定百分比
adb shell monkey -p com.huomaotv.mobile --pct-appswitch 20 10000
# 多個引數設定百分比
adb shell monkey -p com.huomaotv.mobile --pct-appswitch 20 --pct-rotation 20 --pcttouch 30 --pct-motion 20 10000
注意: 引數後面緊接百分比 ,百分比的總量不能大於 100%
在命令的最後,加上 > 重定向到本地檔案。 d:/monkey.log 放在 d 盤的根目錄
範例:
adb shell monkey -p com.huomaotv.mobile --pct-appswitch 20 --pct-rotation 20 --pcttouch 30 --pct-motion 20 --ignore-crashes --ignore-timeouts --monitor-native-crashes 10000 > d:/monkey.log
那麼對於 monkey 跑完之後,我們要如何去確認有沒有出現 bug 呢? 最直觀簡單的方式就是通過搜尋以下關鍵字:
需要更多資料歡迎關注聯絡我,也歡迎大家進群一起交流自動化測試遇到的問題或經驗,點選並輸入暗號:CSDN