Android運行Monkey

Monkey 是一個在模擬器或設備上運行的程序,可生成僞隨機用戶事件(例如點擊、輕觸或手勢)流以及很多系統級事件。您可以使用 Monkey 以隨機且可重複的方式對正在開發的應用進行壓力測試。

概覽

Monkey 是一個命令行工具,可以在任何模擬器實例或設備上運行。它會將僞隨機用戶事件流發送到系統中,從而在您正在開發的應用軟件上進行壓力測試。

Monkey 包含許多選項,主要分爲以下四個類別:

  • 基本配置選項,例如設置要嘗試的事件數。
  • 操作限制條件,例如將測試對象限制爲單個軟件包。
  • 事件類型和頻率。
  • 調試選項。

Monkey 在運行時會生成事件並將其發送到系統。它還會監視被測系統並查找三種特殊情況:

  • 如果您已將 Monkey 限制爲在一個或多個特定軟件包中運行,它會監視轉到任何其他軟件包的嘗試並阻止它們。
  • 如果應用崩潰或收到任何未處理的異常,Monkey 會停止並報告錯誤。
  • 如果應用生成“應用無響應”錯誤,Monkey 會停止並報告錯誤。

根據您選擇的詳細程度級別,您還將看到有關 Monkey 進度和所生成事件的報告。

Monkey 的基本用法

您可以使用開發計算機上的命令行啓動 Monkey,也可以通過腳本啓動。由於 Monkey 在模擬器/設備環境中運行,因此您必須從該環境中通過 shell 啓動它。爲此,您可以在每個命令前面加上 adb shell,或者直接進入 shell 並輸入 Monkey 命令。

基本語法如下:

$ adb shell monkey [options] <event-count>

 

如果未指定任何選項,Monkey 將以靜默(非詳細)模式啓動,並將事件發送到目標上安裝的任何(及所有)軟件包。下面是一個更典型的命令行,它會啓動您的應用並向其發送 500 個僞隨機事件:

$ adb shell monkey -p your.package.name -v 500

 

命令選項參考

下表列出了您可以在 Monkey 命令行中添加的所有選項。

類別 選項 說明
常規 --help 輸出簡單的使用指南。
-v 命令行上的每個 -v 都會增加詳細程度級別。級別 0(默認值)只提供啓動通知、測試完成和最終結果。級別 1 提供有關測試在運行時(例如發送到您的 Activity 的各個事件)的更多詳細信息。級別 2 提供更詳細的設置信息,例如已選擇或未選擇用於測試的 Activity。
事件 -s <seed> 僞隨機數生成器的種子值。如果您使用相同的種子值重新運行 Monkey,它將會生成相同的事件序列。
--throttle <milliseconds> 在事件之間插入固定的延遲時間。您可以使用此選項減慢 Monkey 速度。如果未指定,則沒有延遲,系統會盡快地生成事件。
--pct-touch <percent> 調整輕觸事件所佔百分比。(輕觸事件是指屏幕上的單個位置上的按下/釋放事件。)
--pct-motion <percent> 調整動作事件所佔百分比。(動作事件包括屏幕上某個位置的按下事件,一系列僞隨機動作和一個釋放事件。)
--pct-trackball <percent> 調整軌跡球事件所佔百分比。(軌跡球事件包括一個或多個隨機動作,有時後跟點擊。)
--pct-nav <percent> 調整“基本”導航事件所佔百分比。(導航事件包括向上/向下/向左/向右,作爲方向輸入設備的輸入。)
--pct-majornav <percent> 調整“主要”導航事件所佔百分比。(這些導航事件通常會導致界面中的操作,例如 5 方向鍵的中間按鈕、返回鍵或菜單鍵。)
--pct-syskeys <percent> 調整“系統”按鍵事件所佔百分比。(這些按鍵通常預留供系統使用,例如“主屏幕”、“返回”、“發起通話”、“結束通話”或“音量控件”。)
--pct-appswitch <percent> 調整 Activity 啓動次數所佔百分比。Monkey 會以隨機間隔發起 startActivity() 調用,以最大限度地覆蓋軟件包中的所有 Activity。
--pct-anyevent <percent> 調整其他類型事件所佔百分比。這包括所有其他類型的事件,例如按鍵、設備上的其他不太常用的按鈕等等。
約束 -p <allowed-package-name> 如果您通過這種方式指定一個或多個軟件包,Monkey 將僅允許系統訪問這些軟件包內的 Activity。如果應用需要訪問其他軟件包中的 Activity(例如選擇聯繫人),您還需要指定這些軟件包。如果您未指定任何軟件包,Monkey 將允許系統啓動所有軟件包中的 Activity。要指定多個軟件包,請多次使用 -p 選項 - 每個軟件包對應一個 -p 選項。
-c <main-category> 如果您通過這種方式指定一個或多個類別,Monkey 將僅允許系統訪問其中一個指定類別中所列的 Activity。如果您沒有指定任何類別,Monkey 會選擇 Intent.CATEGORY_LAUNCHER 或 Intent.CATEGORY_MONKEY 類別所列的 Activity。要指定多個類別,請多次使用 -c 選項 - 每個類別對應一個 -c 選項。
調試 --dbg-no-events 指定後,Monkey 將初始啓動到測試 Activity,但不會生成任何其他事件。爲了獲得最佳結果,請結合使用 -v、一個或多個軟件包約束條件以及非零限制,以使 Monkey 運行 30 秒或更長時間。這提供了一個環境,您可以在其中監控應用調用的軟件包轉換操作。
--hprof 如果設置此選項,此選項將在 Monkey 事件序列之前和之後立即生成分析報告。這將在 data/misc 下生成大型(約爲 5Mb)文件,因此請謹慎使用。要了解如何分析性能分析報告,請參閱分析應用性能
--ignore-crashes 通常,當應用崩潰或遇到任何類型的未處理異常時,Monkey 將會停止。如果您指定此選項,Monkey 會繼續向系統發送事件,直到計數完成爲止。
--ignore-timeouts 通常情況下,如果應用遇到任何類型的超時錯誤(例如“應用無響應”對話框),Monkey 將會停止。如果您指定此選項,Monkey 會繼續向系統發送事件,直到計數完成爲止。
--ignore-security-exceptions 通常情況下,如果應用遇到任何類型的權限錯誤(例如,如果它嘗試啓動需要特定權限的 Activity),Monkey 將會停止。如果您指定此選項,Monkey 會繼續向系統發送事件,直到計數完成爲止。
--kill-process-after-error 通常情況下,當 Monkey 因出錯而停止運行時,出現故障的應用將保持運行狀態。設置此選項後,它將會指示系統停止發生錯誤的進程。注意,在正常(成功)完成情況下,已啓動的進程不會停止,並且設備僅會處於最終事件之後的最後狀態。
--monitor-native-crashes 監視並報告 Android 系統原生代碼中發生的崩潰。如果設置了 --kill-process-after-error,系統將會停止。
--wait-dbg 阻止 Monkey 執行,直到爲其連接了調試程序。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章