Monkey學習

Monkey是一個工程,生成偉隨機事件流(在一段時間內徹底不重複的事件流),由種子生成。能夠模擬用戶,點擊,觸屏等。最好用來作壓力測試。沒法作功能測試。java

adb shell monkey -p -v -s -throttle 延時 --pct-touch 某個事件百分比 --pct-trackball 軌跡球能夠解決解鎖是圓環的(這個軌跡球用monkeyrunner更合適) --pct-syskeys 有80+系統事件,這個參數會給一個值,若是不想進行交互,這項變成0便可。shell

分析Monkey源碼:測試

-v -v -v 表示進入一級目錄(的Activity) 二級目錄(的Activity) 三級目錄(的Activity) 找到主入口Activitycomponent

MonkeyActivityEvent類:負責進入apk的主界面。工做流程:首先生成Intent事件,Intent.ACTION_MAIN會告訴程序這個動做在主Activity裏。接口

Intent intent = new Intent(Intent.ACTION_MAIN);進程

intent.addCategory(Intent.CATEGORY_LAUNCHER);事件

這兩句至關於「洗衣服」,ACTION_MAIN要在CATEGORY_lAUNCHER時進去。開發

intent.setcomponent(mApp);文檔

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 設置Intent啓動模式get

Monkey如何發送鍵盤啊,觸屏啊一系列事件,或者滑動啊,drag等?這和Monkeyrunner很相像,首先要定義超類MonkeyEvent.java,裏面有不少抽象方法。Monkeyrunner是Monkey的改進版。全部的xxEvent都是實現了方法。好比說調用鍵盤事件,首先要傳一個事件,事件默認的就是-1,表示什麼都沒有:

private KeyEvent getEvent(){

  if (mDeviced < 0){

    return new KeyEvent(mAction,mKeyCode);}

}

其中mAction表示內定的事件,默認是-1;定義了不少常量,好比home鍵是4 ,等等;mKeyCode表示按下去或者擡起來;

MonkeyMotionEvent.java 對應的是開發文檔中的 --pct-Montion 這裏面不少都是實現的隱藏性接口,

 

init進程啓動 - 啓動zygote

相關文章
相關標籤/搜索