Android Monkey測試
Android中的monkey是對app做界面壓力測試的一款工具,它可以向模擬器或者真機發送一系列隨機的用戶操作事件、或者系統事件。
概述
Monkey是android sdk自帶的一款命令行工具,適用于任何android模擬器或者真機。它通過向手機發送一系列的隨機事件,來測試手機app的穩定性。
Monkey命令包含一些參數,大體可以分為四類:
- 基本參數,如指定隨機事件的個數
- 操作約束,如限制隨機操作在指定的包內
- 事件類型和頻率
- 調試選項 </ul>
- 如果我們限制了monkey只在一個或幾個包中運行。那么monkey在運行過程中會監視產生的隨機事件,如果某一事件會跳到其他包中,monkey就會丟棄該事件,確保monkey只在指定的包中運行。
- 如果我們的程序出現crash或者有未被捕獲的異常,monkey就會停止運行,并報錯。
- 如果我們的程序出現未響應,monkey會停止運行,并報錯。 </ul>
Monkey運行過程中,向android系統發送隨機事件。并且,monkey會監視android系統的運行狀態,保證下面的三點:
Monkey的基本用法
我們可以在直接在命令行或者腳本中運行monkey,前提是android sdk環境已經ok。
基本語法如下:
$ adb shell monkey [options] <event-count>
如果沒有其他參數限制,monkey默認以quiet模式運行,它會隨機向手機中的包發送請求。一般請求,我們都需要指定包名,下面的命令限制了包名,且指定產生500個隨機事件:
$ adb shell monkey -p com.yeetrack.android.client -v 500
Monkey的參數
下面列出了Monkey可以使用的參數。
基本參數
--help
打印幫助文檔-v
命令行中的每一個-v將增加反饋信息的級別。Level 0(也是默認值)除啟動提示、測試完成和最終結果之外,其他的信息很少。Level 1提供較為詳細的測試信息,如逐個發送到Activity的事件。Level 2提供更加詳細的設置信息,如測試中被選中的或未被選中的Activity,例子adb shell -v -v 500
-s <seed>
偽隨機生成器的種子。如果seed值一樣,那么產生的monkey事件,序列也是一樣的--throttle <毫秒>
在事件之間加入固定時間延遲,單位毫秒。如果不加,monkey會盡可能快地產生事件--pct-touch <percent>
調整觸摸事件的百分比(觸摸就是一個點擊事件)--pct-motion <percent>
調整動作事件的百分比,(動作事件指一個down事件,一系列隨機事件,然后一個up事件)--pct-trackball <percent>
調整軌跡事件的百分比,(軌跡事件由一個或多個移動組成,有時伴隨點擊事件)--pct-nav <percent>
調整基本導航事件的百分比,(導航事件就是方向鍵,上下左右)--pct-majornav <percent>
調整主要導航事件的百分比(這些導航事件通常引發圖形界面中的動作,如5-way鍵盤的中間按鍵,回退按鍵,菜單按鍵)--pct-syskeys <percent>
調整系統按鍵事件的百分比(這些事件由系統保留,如Home、Back、Start、Call、End Call及音量控制鍵)--pct-appswitch <percent>
調整啟動activity的百分比。在隨機間隔里,Monkey將執行一個startActivity()調用,作為最大程度覆蓋保重全部Activity的一種方法。--pct-anyevent <percent>
調整其他類型事件的百分比。包含了所有其他類型的事件,如按鍵、其他不常使用的設備按鍵、等。
</ul>
-p <allowed-package-name>
如果使用該參數 指定了一個或幾個包,monkey將只允許啟動這些包中的activity。如果你的程序,需要訪問別的activity(如聯系人界面),那必須將聯系 人的包也指定一下,否則無法訪問。如果沒有指定包名,monkey將允許啟動安裝在手機上的所有包。如果要指定多個包,需要多個-p選項,每個-p指定一 個包。-c <main-category>
如果使用此參數指定了一個或多個類別,Monkey將只允許系統啟動被這些類別中的某個類別列出的Activity,如果不指定任何類別,Monkey將選擇下列類別中列出的Activity:Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多個類別,需要多個-c選項。
</ul>
--dbg-no-event
設置此選項,Monkey將執行初始啟動,進入到一個測試Activity,然后不再產生事件。為了得到最佳結果,把它與-v,一個或幾個包約束,以及一個保持Monkey運行30秒或更長事件的非零值聯合起來,從而提供一個環境,可以監視應用程序所調用的包之間的轉換。--hprof
設置此選項,將在Monkey事件序列之前和之后立即生成profiling報告。這將會在data/misc中生成大文件(5M),所以小心使用。--ignore-crashes
通常,當被測app崩潰或者發生任何失控異常時,Monkey將停止運行。如果設置此選項,Monkey會繼續向系統發送事件,直到計數完畢。--ignore-timeouts
通常,當被測程序出現未響應時,Monkey會停止運行。如果設置此選項,Monkey會繼續運行,直到結束。--ignore-security-excuptions
通常,當被測程序發生可允許錯誤(如啟動一個需要授權的Activity)時,Monkey將停止運行。如果設置此選項,Monkey將繼續運行,直到結束。--kill-process-after-error
通常,當Monkey由于一個錯誤而停止運行時,出錯的應用程序將繼續運行。如果設置此選項,將會通知系統停止發送錯誤的進程。注意:程序正常結束,該程序并沒有被停止。設備只是在結束事件后,簡單保持在最后的狀態。--monitor-native-chrashes
監視并報告Android系統中本地代碼的崩潰事件。如果設置了–kill-process-after-error,系統將停止運行。--wait-dbg
停止執行中的Monkey,直到有調試器和它相連。
</ul>
操作約束
調試選項
最后一個簡單的例子:
每0.5秒發送一個請求,包名com.yeetrack.android.app,總共發送請求2000個。
adb shell monkey -v 2000 --throttle 500 -p com.yeetrack.android.app
來自: Android Monkey測試
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!