Android monkey使用詳解

monkey 測試 讀書筆記

1. monkey 的基本使用

  1. monkey文檔官方網(wǎng)址:https://developer.android.com/studio/test/monkey.html

  2. 使用 monkey 有兩種方式:

    • 第一種方式:shell 端啟動

      1. 進(jìn)入 adb shell

      2. 運行 "/system/bin" 路徑下的 monkey腳本

        $ adb shell
        # cd /system/bin
        # monkey
        
    • 第二種方式:直接 pc 啟動

      直接通過以下的命令運行:

      $ adb shell /system/bin/monkey
      
    • 這兩種方式的區(qū)別: 通過 PC 端啟動谭梗,monkey 運行日志可以保存到 PC 上呼伸;通過 Shell 端啟動,monkey 運行日志可以保存到手機(jī)里刑然。

  3. 加上選項[options] 的命令如下:

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

2. monkey 的命令及其使用

monkeyoption 操作都是根據(jù)具體的需求設(shè)定的作烟,主要分為五類愉粤,分別為: 常規(guī)類、事件類拿撩、約束類衣厘、調(diào)試類和官方隱藏類參數(shù)

2.1 monkey 的常規(guī)類命令

monkey常規(guī)類命令.PNG
monkey常規(guī)類命令.PNG
  1. -h: 顯示 monkey 參數(shù)幫助信息 usage
  2. -v: 打印出日志信息压恒,每個 -v 將增加反饋信息的級別影暴。命令格式為:
    $ adb shell monkey -v <event-count>
    

-v 越多日志信息月詳細(xì),不過目前最多支持 3 個 -v探赫,即:
* 0級: 除啟動提示型宙、測試完成和最終結(jié)果外提供較少信息
* 1級: 提供較詳細(xì)測試信息,如逐個發(fā)送 Activity 的事件
* 2級: 提供更詳細(xì)安裝信息伦吠,如測試中被選中或為被選中的 Activity

2.2 monkey 的事件類命令

monkey事件類命令.PNG
monkey事件類命令.PNG
  1. -f: 后接測試腳本名妆兑,表示要使用 monkey 運行指定的 monkey 腳本,命令示例:

    $ adb shell monkey -f <scriptfile>  <event-count>
    $ abd shell monkey -f /mnt/sdcard/test 10
    
  2. -s: 后接隨機(jī)數(shù)生成器的 seed 值毛仪。如果使用相同的seed 值再次運行 monkey箭跳,將生成相同的事件序列,也就是說重復(fù)執(zhí)行剛才的隨機(jī)操作潭千。

    命令格式為:

    $ adb shell monkey -s <seed> <event-count>
    
  3. --throttle: 后接時間谱姓,單位為 ms(<milliseconds>),表示事件之間的固定延遲(即執(zhí)行每一個指令間隔的時間)刨晴,如果不接該選項屉来,monkey 將不會延遲路翻。

    命令格式:

    $ adb shell monkey --throttle <milliseconds>
    
  4. --ptc-touch: 后接觸摸事件百分比

    命令格式:

    $ adb shell monkey --ptc-touch <percent>
    
  5. --ptc-motion: 后接動作事件百分比茄靠。動作事件不單單指手勢操作茂契,它泛指從某一個位置按下(即Down事件)后經(jīng)過一系列偽隨機(jī)事件后彈起(即Up事件)。

  6. --ptc-trackball: 后接軌跡球事件百分比慨绳。軌跡球事件包括一系列的隨機(jī)移動掉冶,以及偶爾跟隨在移動后面的點擊事件。

  7. --ptc-nav: 后接基本導(dǎo)航事件百分比脐雪。 基本導(dǎo)航事件主要指來自方向輸入設(shè)備的上厌小、下、左战秋、右事件璧亚。

  8. --ptc-majornav: 后接主要導(dǎo)航事件百分比。主要導(dǎo)航事件通常指引發(fā)圖形界面的一些動作脂信,如 5-way 鍵盤中間按鍵癣蟋、返回按鍵、菜單按鍵等狰闪。

  9. --ptc-syskeys: 后接系統(tǒng)按鍵事件百分比疯搅。系統(tǒng)按鍵事件通常指僅供系統(tǒng)使用的保留按鍵,比如 home鍵埋泵,back鍵秉撇,撥號鍵等。

  10. --ptc-appswitch: 后接應(yīng)用啟動事件百分比秋泄。醫(yī)用啟動事件俗稱 打開應(yīng)用琐馆,通過調(diào)用startActivity() 方法最大限度地開啟該 package 下的所有應(yīng)用。

  11. --ptc-anyevent: 后接其他類型事件百分比恒序。除了上述提到的事件外全部都屬于其他事件瘦麸。

2.3 monkey 的約束類命令

monkey約束類命令.PNG
monkey約束類命令.PNG
  1. -p: 后接一個或多個包名(<allowed-package-name>),如果應(yīng)用需要訪問其他包里面的 Activity歧胁,那相關(guān)的包也需要在此同時指定滋饲。如果不指定任何包,monkey將允許系統(tǒng)啟動全部包里的 Activity喊巍。 每一個 -p 對應(yīng)一個包屠缭,指定多個包時每個包名前都需要加上 -p,如:
    $ adb shell monkey -p <allowed-package-name> <event-count>
       
    $ adb shell monkey -p com.csmijo.test 1000
    
  2. -c: 后接一個或多個類別名(即 <main-category> 參數(shù))崭参,monkey 將只允許系統(tǒng)啟動這些類別中某個類別列出的 Activity呵曹。如果不指定任何類別,monkey 將選擇Intent.CATEGORY_LAUNCHIntent.CATEGORY_monkey里的 Activity。

2.4 monkey 調(diào)試類命令

monkey調(diào)試類命令.PNG
monkey調(diào)試類命令.PNG
  1. --dbg-no-events: 在設(shè)置此選項后奄喂,monkey 將進(jìn)入初始啟動铐殃,進(jìn)入到某個測試 Activity 中不會進(jìn)一步生成事件。命令格式:
    $ adb shell monkey --dbg-no-events <event-count>
    
  2. --hprof: 在設(shè)置此項后跨新,將在monkey事件序列前后立即生成 profiling report富腊。 該選項將在 data/misc 中生成 5MB 大小的文件,慎用域帐!
  3. --ignore-crashes: 在設(shè)置此項后赘被,當(dāng)應(yīng)用程序崩潰或者發(fā)生失控異常時, monkey 將繼續(xù)運行直到計數(shù)完成肖揣。如果不設(shè)置此選項民假,monkey 遇到上述崩潰或者異常將停止運行。
  4. --ignore-timeouts: 在設(shè)置此選項后许饿,當(dāng)應(yīng)用程序發(fā)生任何超時錯誤(如ANR)時,monkey 將繼續(xù)運行直到計數(shù)結(jié)束舵盈。如果不設(shè)置此選項陋率,monkey 遇到此類超時對話框?qū)⑼V惯\行。
  5. --ignore-security-exceptions: 在設(shè)置此選項后秽晚,當(dāng)應(yīng)用程序發(fā)生任何權(quán)限錯誤(如啟動一個需要某些權(quán)限的 Activity)時瓦糟,monkey 將繼續(xù)運行直到計數(shù)完成。如果不設(shè)置此選項赴蝇,monkey 遇到此類權(quán)限錯誤將停止運行菩浙。
  6. --kill-process-after-error: 在設(shè)置此選項后,當(dāng)monkey 因為應(yīng)用程序發(fā)生錯誤停止時句伶,將會通知系統(tǒng)體質(zhì)發(fā)生錯誤的進(jìn)程劲蜻。如果不設(shè)置此項,在monkey 停止時發(fā)生錯誤的應(yīng)用程序?qū)⒗^續(xù)處于運行狀態(tài)考余。
  7. --monitor-nativie-crashes: 在設(shè)置此選項后先嬉,monkey 運行時 native code 的崩潰事件將被監(jiān)視被報告。如果不設(shè)置則不會監(jiān)視楚堤。
  8. --wait-dbg: 在設(shè)置此選項后疫蔓,將暫停執(zhí)行中的 monkey,知道有調(diào)試器與它連接。

2.5 官方隱藏類參數(shù)

  1. --pkg-blacklist-file: 限制 monkey 不測試指定黑名單文檔中記錄的包(package)身冬。如果沒有使用這個參數(shù)衅胀,monkey 會測試系統(tǒng)內(nèi)所有的的包。如果使用了這個參數(shù)酥筝,可通過在黑名單文檔中記錄所有不需要測試的包名稱滚躯,來相紙 monkey 的執(zhí)行范圍。 黑名單文檔中每一行只能放一個包名

  2. --pkg-whitelist-file: 限制monkey 只測試指定的白名單文檔中記錄的包。如果沒有使用這個參數(shù)哀九,monkey 會測試系統(tǒng)內(nèi)所有的包剿配。如果使用了這個參數(shù),可通過在白名單文檔內(nèi)記錄所有要測試的包阅束,來限制monkey 的執(zhí)行范圍呼胚。白名單文檔中每一行只能放一個包名。

    注意:如果要測試的包與其他的包有關(guān)聯(lián)息裸,則必須一起指定這些包來執(zhí)行這項參數(shù)蝇更。

3. monkey 腳本編寫

3.1 monkey API 詳解

  1. 軌跡球事件

    DispatchTrackball(long downTime, long eventTime, int action, float x, float y, float pressure, float size, int metaState, float xPrecision, float yPrecision, int device, int edgeFlags)
    

    只需要關(guān)注: action、x呼盆、y 即可

    • ACTION_DOWN = 0
    • ACTION_UP = 1
    • ACTION_MULTIPLE = 2
  2. 輸入字符串事件

    DispatchString(String text)
    
  3. 點擊事件

    DispatchPointer(long downTime, long eventTime, int action, float x, float y, float pressure, float size, int metaState, float xPrecision, float yPrecision, int device, int edgeFlags)
    

    只需要關(guān)注: action年扩、x、y 即可

  4. 啟動應(yīng)用

    LaunchActivity(String pkg_name,String cl_name)
    
  5. 等待事件

    UserWait(long sleeptime)
    

    時間的單位為:毫秒(millisecond)

  6. 按下鍵值

    DispatchPress(int keyCode)
    
  7. 長按鍵值

    LongPress(int keyCode)
    
  8. 發(fā)送鍵值

    DispatchKey(long downTime, long eventTime, int action, int code, int repeat, int metaState, int device, int scancode)
    
  9. 開關(guān)軟鍵盤

    DispatchFlip(boolean keyboardOpen)
    

3.2 monkey 腳本編寫

type= raw events
count= 10
speed= 1.0
start data >>
captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,0.06666667,0,0.0,0.0,65539,0)
captureDispatchKey(5113146,5113146,0,20,0,0,0,0)
captureDispatchFlip(true)
...

4. monkey 日志分析

4.1 monkey 日志的保存方法

  1. 保存在 pc 中访圃,命令如下:

    $ adb shell monkey [options] <event-count> > d:\monkeylog.txt
    
  2. 保存在手機(jī)中厨幻,命令如下:

    $ adb shell
    # monkey [options] <event-count> /mnt/sdcard/monkeylog.txt
    
  3. 標(biāo)準(zhǔn)流與錯誤流分開保存,命令如下:

    # monkey [options] <event-count> 1>/mnt/sdcard/monkeylog.txt 2>/mnt/sdcard/monkeyErrorlog.txt
    

4.2 monkey 日志內(nèi)容解析

  1. 搜索關(guān)鍵字"ANR" 查找 ANR 相關(guān)信息
  2. 搜索關(guān)鍵字"CRASH" 查找 Crash 相關(guān)信息

[參考文獻(xiàn)]

  • 《深入理解Android自動化測試》
  • 《騰訊Android自動化測試實戰(zhàn)》
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腿时,一起剝皮案震驚了整個濱河市况脆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌批糟,老刑警劉巖格了,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異徽鼎,居然都是意外死亡盛末,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門否淤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悄但,“玉大人,你說我怎么就攤上這事石抡∷隳” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵汁雷,是天一觀的道長净嘀。 經(jīng)常有香客問我,道長侠讯,這世上最難降的妖魔是什么挖藏? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮厢漩,結(jié)果婚禮上膜眠,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好宵膨,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布架谎。 她就那樣靜靜地躺著,像睡著了一般辟躏。 火紅的嫁衣襯著肌膚如雪谷扣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天捎琐,我揣著相機(jī)與錄音会涎,去河邊找鬼。 笑死瑞凑,一個胖子當(dāng)著我的面吹牛末秃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播籽御,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼练慕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了技掏?” 一聲冷哼從身側(cè)響起铃将,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎零截,沒想到半個月后麸塞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秃臣,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡涧衙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了奥此。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弧哎。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖稚虎,靈堂內(nèi)的尸體忽然破棺而出撤嫩,到底是詐尸還是另有隱情,我是刑警寧澤蠢终,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布序攘,位于F島的核電站,受9級特大地震影響寻拂,放射性物質(zhì)發(fā)生泄漏程奠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一祭钉、第九天 我趴在偏房一處隱蔽的房頂上張望瞄沙。 院中可真熱鬧,春花似錦、人聲如沸距境。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垫桂。三九已至师幕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伪货,已是汗流浹背们衙。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留碱呼,地道東北人蒙挑。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像愚臀,于是被迫代替她去往敵國和親忆蚀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容