monkey命令


 

1.$ adb shell monkey <event-count>                <event-count>是隨機發送事件數

   例:adb shell monkeyn 1000   發送1000個隨機事件

2.$ adb shell monkey [options] <event-count>    [options]是monkey可傳入的參數

   Monkey的option主要分為:常規類、事件類、約束類和調試類4種

    2.1 常規類命令:

    adb shell monkey -v <event-count>

    -v:打印出日志信息,每個-v將增加反饋信息的級別。-v越多日志信息越詳情,最多支持3個-v

 

    

    2.2 事件類命令:

    $ adb shell monkey -f <scriptfile> <event-count>

    -f:后接測試腳本名,表示要使用monkey運行指定的monkey腳本,

    如:$ adb shell monkey -f /mnt/sdcard/test01 3

    注:這里的3是指循環次數,不是事件數

    如果希望重復執行之前的隨機操作,需要加-s命令,可指定隨機數生成器seed值

    $ adb shell monkey -s <seed> <event-count>

    -s:后接隨機數生成器的seed值,如果使用相同的seed值再次運行monkey,將生成相同的事件序列(也就是說,重復執行剛才的隨機操作)

    如: $ adb shell monkey -s 100 1000

    $ adb shell monkey --throttle <milliseconds> 

    --throttle:后面接時間,單位為ms,表示事件之間的固定延遲(即執行每一個指令間隔的時間),如果不接該項,monkey將不會延遲

    $ adb shell monkey --pct-touch <percent>

    --pct-touch:后面接觸摸事件百分比,觸摸事件泛指發生在某一位置的一個down-up事件,點擊

    $ adb shell monkey --pct-montion <percent>

    --pct-motion:后面接動作事件百分比,動作事件泛指從某一位置接下(即down事件)后經過一系列偽隨機事件后彈出(即up事件)

   $ adb shell monkey --pct-trackball <percent>

   --pct-trackball:后面接軌跡事件百分比,軌跡事件包括一系列的隨機移動,以及偶爾跟隨在移動后面的點擊事件

   $ adb shell monkey --pct-nav <percent>

   --pct-nav:后面接基本導航事件百分比,基本導航事件主要來自方向輸入設備的上、下、左、右事件

   $ adb shell monkey --pct-majornav <percent>

   --pct-marjornav:后面接主要導航事件百分比,主要導航事件通常指引發圖形界面的一些動作,如鍵盤中間按鍵、返回按鍵、菜單按鍵等

  $ adb shell monkey --pct-syskeys <percent>

   --pct-syskeys:后面接系統按鍵事件百分比,系統按鍵事件通常指僅供系統使用的保留按鍵,如HOME鍵、BACK鍵、撥號鍵、掛斷鍵、音量鍵等

  $ adb shell monkey --pct-appswtich <percent>

   --pct-appswitch:后面接應用啟動事件百分比,應用啟動事件(activity launches)即打開應用,通過調用startActivity()方法最大限度地開啟該package下的所有應用

  $ adb shell monkey --pct-anyevent <percent>

  --pct-anyevent:后面接其他類型事件百分比,其他類型事件指上文中未涉及的所有其他事件,如keypress、不常用的button等

  

   2.3約束類命令

   約束類命令可以讓隨機事件運行的范圍限制在某幾個包或類中。

   $ adb shell monkey -p <allowed-package-name>  <event-count>

   -p:后面接一個或多個包名,如果不指定任何包,monkey將允許系統啟動全部包里的Activity。每個-p對應一個包,指定多個包時每個包名前都需要加上-p

   如:$ adb shell monkey -p com.agent.tao  1000       運行com.agent.tao 包里的Activity並發送1000個隨機事件

   $ adb shell monkey -c <main-category>  <event-count>

   -c:后面接一個或多個類別名,monkey將只允許系統啟動這些類別中某個類別列出的Activity,如果不指定任何類別,monkey將選擇Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_monkey里的Activity

   每個-c對應一個類別,指定多個類別時每個類別名前面都需要加上-c

   如:$ adb shell monkey -c Intent.CATEGORY_LAUNCHER 1000

   運行Inter.CATEGORY_LAUNCHER類別的Activity並發送1000個隨機事件

   2.4調試類命令

   通過調試類命令可以對monkey進行簡單的調試,這樣可以快速定位monkey運行中的問題

   $ adb shell monkey --dbg-no-events  <event-count>

   --dbg-no-events:設置此項后,monkey將進行初始啟動,進入到某個測試Activity中不會進一步生成事件,可以監視應用程序所調用的包之間的轉換,為了更好的跟蹤,一般該項

   會與-v(日志)、-p<allowed-package-name> (包約束) 和 --throttle<milliseconds> (延遲)等聯合使用

   $ adb shell monkey --hprof  <event-count>

   --hprof:設置此項后,將在monkey事件序列前后立即生成profilfing report,將在data/misc中生成5MB左右大小的文件

   $ adb shell monkey --ignore-crashes  <event-count>

   --ignore-crashes:設置此項后,當應用程序崩潰或發生失控異常時,monkey將繼續運行直到計數完成。如果不設置此項,monkey遇到上述崩潰或異常將停止運行。

   $ adb shell monkey --ignore-timeouts  <event-count>

   --ignore-timeouts:設置此項后,當應用程序發生任何超時錯誤(如ANR,即Application Not Responding)時,monkey將繼續運行直到計數完成。如果不設置此項,monkey

   遇到此類超時將停止運行

   $ adb shell monkey --kill-process-after-error  <event-count>

   --kill-process-after-error:設置此項后,當monkey因為應用程序發生錯誤而停止時,將會通知系統停止發生錯誤的進程。如果不設置此項,monkey停止時發生錯誤的應用程度將

   繼續處於運行狀態。

   $ adb shell monkey --ignore-security-exceptions <event-count>

   --ignore-security-exceptions:設置此項后,當應用程序發生任何權限錯誤(如啟動一個需要某些權限的Activity)時,monkey將繼續運行直到計數完成。如果不設置此項,

  monkey遇到此類權限錯誤將停止運行。

   $ adb shell monkey --monitor-native-crashes  <event-count>

   --monitor-native-crashes:設置此項后,monkey運行時native code的崩潰事件將被監視並報告。如果不設置此選項,將不會監視此類事件。

   $ adb shell monkey --wait-dbg  <event-count>

   --wait-dbg:在設置此項后,將暫停執行中的monkey,直到有調試器與它連接。

結果檢查與分析

測試結束后,需要將手機連接PC,拷貝以下文件:

  • info.txt:此文件在手機上的SDCARD中,主要記錄了MONKEY測試時發送的各種事件,如觸摸事件的位置等等。
  • error.txt:此文件在手機上的SDCARD中,主要記錄了MONKEY測試時產生的一些ANR、強制關閉等異常。
  • LOG文件:此文件在手機上的LOG文件夾中中,主要主要記錄程序對MONKEY測試時的響應情況。

我們需要對這3個文件進行分析整理,以便提交開發人員處理。

檢查測試是否完成

通過info.txt文件,可以查看Monkey是否執行成功。如下圖

結果分析整理

我們目前執行Monkey測試的目的是為了檢查是否有內存泄露,而這類問題主要是通過Log文件來體現的。

Error文件也記錄了部分異常,考慮到這部分文件格式已經很規范,因此不需要再次整理。

Log文件記錄了所有信息,因此我們需要進行初步分析整理后再提交研發,以減少研發工作量。

Monkey測試后在Mobilelog文件中會產生多個main_log文件,里面含有詳細的log執行記錄。通過main_log文件,我們可以查看可能存在內存泄露代碼所在具體位置。是否該行代碼存在泄露需要開發人員進一步驗證。我們只提供可能存在代碼泄露的信息。

含有mian_log的文件都需要進行查看。搜索關鍵字“leak”,在搜索結果中,查看與Ideafreiend相關的代碼。如下圖:

 

注:com.lenovo.ideafriend:Ideafriend包名;CursorLeakDetecter: 游標泄露檢查器

 

1. 程序無響應的問題: 在日志中搜索 “ANR”
2. 崩潰問題:在日志中搜索 “Exception”   (如果出現空指針, NullPointerException)  肯定是有bug

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM