1. 程式人生 > 程式設計 >Android SDK命令列工具Monkey引數及使用解析

Android SDK命令列工具Monkey引數及使用解析

什麼是Monkey?

Monkey是Android SDK提供的一個命令列工具,可以簡單方便的傳送偽隨機的使用者事件流,對Android APP做壓力(穩定性)測試。主要是為了測試app是否存在無響應和崩潰的情況。

Monkey的使用:

1、進入adb shell 環境

   在windows環境中,進入DOS介面,在介面中,輸入adb shell即可進入adb shell環境

(注意:adb shell服務使用的5037的埠,如果此埠被其他程序佔用時,將不能正常啟動adb shell,需關閉佔用該埠的程序,重新啟動adb shell)

2、檢視包名

adb shell pm list packages (-f:所有應用的包名,-3:非系統安裝的包名)

  需要控制monkey執行的時間,可以通過設定執行時長/事件傳送延時,計算出需要執行的次數。

如:想要monkey執行24小時,每100毫秒傳送一個事件。24*60*60*1000/100=864000(次)

  adb shell monkey -p *** -v -v -v --ignore-crashes --ignore-timeoutss --throttle 100 864000 >D:\monkey.log

  表示:此次monkey將會執行24小時

Monkey命令引數說明:

monkey的命令引數分為:

  基礎引數:-v 、-s 、-p 、--throttle等

  除錯選項:--ignore-crashes等

  事件型別:--pct-touch等

(一)基礎引數

1、最簡單的monkey命令(monkey 100)

表示:在裝置上,針對整個系統傳送100個偽隨機事件。

2、-v引數

用於指定反饋資訊級別(資訊級別就是日誌的詳細程度)總共分為3級,預設為-v(對應:level0)

-v:只提供啟動提示、測試完成提示和最終結果等少量資訊。

-v -v:較為詳細的日誌,包括每個傳送到activity的時間資訊。

-v -v -v:最詳細的日誌,包括測試中選中/未選中的activity資訊。

注意:在monkey測試完成時,最後一定會有一個:monkey finished標識。

3、-p引數

  在我們測試時,是針對具體的app進行測試的,所以在使用monkey測試時,我們需要提供具體的app包名給monkey,此時就需要用到引數-p。在-p後跟隨app包名。

  在測試時,可以不指定包名,此時monkey會在測試裝置上隨機啟動app進行操作;如果只需要測試一個app,使用一個-p即可;如果有多個app同時測試,可以直接使用-p 包名1 -p 包名2指定具體要測試的app。

4、-s引數

  種子值(seed),因為monkey是傳送的是偽隨機的事件流,但是如果兩次seed值相同,那兩次monkey測試所產生的事件序列也相同。(所以一般在測試時要記錄seed值,以防出現無響應和crash,不容易驗證。)

  注意:-s需要跟在包名後,次數前

5、--throttle引數

  設定執行操作的延遲時間(毫秒)--是指兩個事件之間的間隔,如果沒有指定此引數,會盡可能快的生成和傳送事件。

(二)除錯選項

1、--ignore-crashes

  用於指定當應用程式崩潰時,Monkey是否停止執行。如果使用此引數,即使應用程式崩潰,monkey依然會發送事件,直到事件計數完成。

2、---ignore-timeouts

  用於指定當應用程式發生ANR(Application No Responding)錯誤時,Monkey是否停止執行。如果使用此引數,即使應用程式發生ANR錯誤,Monkey依然會發送事件,直到事件計數完成。

3、--ignore-security-exceptionss

  用於指定當應用程式發生許可錯誤時(如證書許可,網路許可等),Monkey是否停止執行。如果使用此引數,即使應用程式發生許可錯誤,Monkey依然會發送事件,直到事件計數完成。

4、--kill-process-after-error

  用於指定當應用程式發生錯誤時,是否停止其執行。如果指定此引數,當應用程式發生錯誤時,應用程式停止執行並保持在當前狀態(注意:應用程式僅是靜止在發生錯誤時的狀態,系統並不會結束該應用程式的程序)。

5、--monitor-native-crashes

  用於指定是否監視並報告應用程式發生崩潰的原生代碼

6、--hprof

  該選項設定後,將會在monkey事件序列前後立刻生成report,大小為大於5MB,儲存在/data/misc

(三)事件型別

  monkey在傳送偽隨機事件時,是有不同的型別的。預設隨機分配比例,也可以指定其百分比。如果不設定會是--pct-anyevent為100%,也就是純隨機事件;如果配置了其他引數,但是不夠100%,餘下的百分比部分也是--pct-anyevent事件。

具體事件型別分別為:

1:觸控事件--pct-touch

  調整touch觸屏事件的百分比,觸碰事件就是指在螢幕上的一個單獨位置的一次點選/抬起的事件。

2:滑屏事件--pct-motion(手勢事件)

  (手勢事件是由一個在螢幕某處的按下事件、一系列的偽隨機移動、一個抬起事件組成)即一個滑動操作,但是是直線的,不能拐彎)

3:軌跡球--pct-trackball

  (軌跡球事件包括一個或多個隨機移動,有時還伴有點選。軌跡球現在智慧手機上已經沒有了,就是類似手柄的方向鍵一樣)

4:旋轉(--pct-rotation)

  旋轉螢幕

5:導航--pct-nav

  (導航事件包括上下左右,如方向輸入裝置的輸入)老手機的上下左右鍵,智慧機上沒有)

6:主導航--pct-majornav

  調整主要導航事件的百分比(如中間鍵、取消、確定或選單引發的圖形介面的動作)

7:系統按鍵--pct-syskeys

  調整系統按鍵事件,如:home/back/startcall/endcall以及音量控制鍵等

8:app切換--pct-appswitch

  調整啟動activity的百分比,在隨機間隔中,執行一個startActivity()方法呼叫,作為一種最大化的覆蓋安裝包的所有的activity的方法

9:鍵盤翻轉(--pct-flip)

10:隨機--pct-anyevent

  調整其他型別的事件的百分比,比如按鍵或其他不太常用到的一些事件的百分比

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。