最近在對新開發的APP進行壓力測試,學習了Monkey。在這裡進行一下總結和記錄。

monkey是手機系統自帶的一個軟體,它存在於adb shell中,對使用者是不可見的,但是可以通過ADB(Android Debug Bridge)進入手機系統裡面,它主要是生成使用者或者系統的偽隨機事件對APP進行壓測。 這些偽隨機事件是指模仿使用者對手機的操作,比如,點選,滑動,截圖,調節音量,開啟網路,點選home鍵,點選返回鍵等等等,代替我們手工進行測試。

具體步驟

一、通過USB連線上真機(開啟手機裡的開發者選項),或者電腦上有安裝模擬器 二、開啟電腦裡的DOS終端(電腦–>執行,輸入cmd回車) 三、輸入adb shell 進入adb 四、monkey -p package(具體APP包名) 1000(對APP發出的事件數)

Monkey 具體命令引數解讀

  1. mokey -p package 例如:monkey -p com.zamtel.customer 1000 我們開發的APP包名是:com.zamtel.customer,此命令表示對該APP進行1000次的事件操作 如果不指定包名,就代表是對系統進行1000個隨機事件操作

  2. monkey --throttle 1000 代表每個事件間隔多少秒進行操作,這是毫秒級別,1000代表1秒, 例:monkey -p com.zamtel.customer --throttle 1000 1000 對該APP進行1000個隨機事件操作,每個事件間隔1秒

  3. monkey -s 指定seed值 當我們對系統進行壓測時,可能會出現一些問題,此時日誌會打印出是執行那個事件時發生了問題,並把該事件的seed值打印出來,如果需要復現給開發人員看,此時這個命令就有發揮作用了,這個命令是指定事件的seed值,指定執行某一特定事件,而不是隨機生成的事件 例:monkey -s 15646 執行15464這個事件

  4. monkey --pct-touch percent 設定觸控事件的百分比 例如:monkey -v -p com.zamtel.customer --pct-touch 100 1000 -v 代表執行的時候打印出詳情 代表生成的1000個事件百分百全部是觸控事件

  5. monkey --pct-motion percent 動作事件 例:monkey -v -p com.zamtel.customer --pct-touch 40 --pct-motion 50 --pct-appswitch 10 10000 各個事件的百分比之和要等於100. 40+50+10=100

  6. 軌跡球事件 monkey --pct-trackball percent

  7. 基本導航事件 monkey --pct-nav percent

  8. 主要導航事件 monkey --pct-majornav percent

  9. 啟動activity 事件 monkey --pct-appswitch percent

  10. 不常用事件 monkey --pct-anyevent percent

  11. 忽略崩潰事件 一般對APP進行壓測時都選擇在夜間無人值守時進行,如果出現崩潰事件,系統停止執行,此時剩餘的事件將無法繼續執行下去,可以帶上這個引數,忽略崩潰事件,會重新啟動APP,繼續執行,直到達到設定的事件數 monkey --ignore-crashes

  12. 忽略ANR(APP not responding)超時事件 monkey --ignore-timeouts 同上,如果執行過程出現系統無響應事件,,忽略掉,重新啟動,繼續執行,直到達到設定的事件數