Android自動化測試入門工具-Monkey

前面的內(nèi)容請參見Android應用自動化測試-提綱酒繁。
這篇起滓彰,我們來介紹Android自動化測試,首先我們要看到是一個基本工具州袒,也是在實際項目中最經(jīng)常用到的一個自動化的測試工具-Monkey揭绑。

Monkey,顧名思義郎哭,也叫猴子測試他匪。一般指無目的地隨機測試,就像一個猴子在那亂按亂點彰居。它是Android SDK中自帶的一個黑盒自動化測試工具按傅,通過隨機觸發(fā)界面事件來發(fā)現(xiàn)應用的問題丈钙,一般多用于App的穩(wěn)定性測試和異常發(fā)現(xiàn)。但Monkey工具其實觸發(fā)的是一個偽隨機的事件流禀挫,也就是這個事件流并不會完全隨機的毕籽。

它的命令格式是:

adb shell monkey [options] <event_count>

官網(wǎng)給出了Monkey測試的主要參數(shù)及其用法

但我們?nèi)绻碝onkey源碼的話抬闯,會發(fā)現(xiàn)并不是所有的參數(shù)都在這個表格中給出。
還有一些其他參數(shù)如:
-f -- 指定腳本
--port -- 指定連接monkeyserver的端口
pkg-blacklist-file -- 包黑名單关筒,不觸發(fā)名單中的包
pkg-whitelist-file -- 包白名單溶握,僅觸發(fā)名單中的包

這里我們來看下常用的幾個參數(shù)含義:
-h 打印出Monkey的基本使用方法
-v 這是一個重要的參數(shù),monkey通過-v參數(shù)來確定執(zhí)行輸出日志的詳細程度蒸播,支持3級睡榆,給出-v -v -v則輸出最詳細的日志信息萍肆。
-s 前面提過,monkey工具是一個偽隨機事件流胀屿,-s參數(shù)則代表執(zhí)行的事件種子塘揣,通過這個事件種子號,我們可以生成同樣的一套事件流宿崭,在我們發(fā)現(xiàn)問題亲铡,需要復現(xiàn)時,這個參數(shù)就非常重要了葡兑。
--throttle 延時參數(shù)奖蔓,單位是毫秒,是執(zhí)行中每兩個事件之間的時間間隔讹堤,不知道則默認為0
--pct-touch 指定在當前事件流所有的事件中吆鹤,觸屏事件的占比,其他的pct事件也類似洲守,具體代表的事件可以參見前面的官方說明
-p 通過給定包名指定被測應用
-c 確定一個或多個特定的類別疑务,Monkey就只允許系統(tǒng)去訪問這些特定類別下列出的Activity了。若不指定的話岖沛,默認訪問Intent.CATEGORY_LAUNCHER 或Intent.CATEGORY_MONKEY下的Activity

主要的category:

  • intent.CATEGORY.ALTERNATIVE
  • intent.CATEGORY.BROWSABLE
  • intent.CATEGORY.DEFAULT
  • intent.CATEGORY.DEVELOPMENT_PREFERENCE
  • intent.CATEGORY.EMBED
  • intent.CATEGORY.HOME
  • intent.CATEGORY.INFO
  • intent.CATEGORY.LAUNCHER
  • intent.CATEGORY.MONKEY
  • intent.CATEGORY.OPENABLE
  • intent.CATEGORY.PREFERENCE
  • intent.CATEGORY.SELECTED_ALTERNATIVE
  • intent.CATEGORY.TAB

--hprof monkey執(zhí)行過程記錄hprof文件暑始,便于使用traceview工具來進一步分析
--ignore-crashes 忽略crash,monkey在執(zhí)行中婴削,如果發(fā)生crash廊镜,默認為停止在crash事件發(fā)生的地方并退出執(zhí)行。使用這個參數(shù)可以忽略這個crash并繼續(xù)按設定執(zhí)行完所有的event唉俗。
-f 未在官方文檔上列出的參數(shù)嗤朴,但很有用。支持Monkey腳本虫溜,后面會專門用一篇說明
--port 未在官方文檔上列出雹姊,也很有用。是monkey的網(wǎng)絡功能衡楞,也就是可以使用Monkey的server功能吱雏,后面也會專門用一篇說明。

Monkey執(zhí)行日志解析

下面我們以monkey執(zhí)行計算器應用的日志說明下Monkey執(zhí)行日志的含義

adb shell monkey -p com.android.calculator2 -v -v 10

-p參數(shù)指定包名瘾境,-v -v輸出兩級日志歧杏,10表示觸發(fā)10個事件

:Monkey: seed=1486970253229 count=10
## 執(zhí)行Monkey工具,本次執(zhí)行的種子值是1486970253229迷守,對應的事件數(shù)量10次
:AllowPackage: com.android.calculator2
## 指允許包名為com.android.calculator2的應用觸發(fā)事件
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
## 包含默認支持的Category:LAUNCHER犬绒、MONKEY
// Selecting main activities from category android.intent.category.LAUNCHER
//   + Using main activity com.android.calculator2.Calculator (from package com.android.calculator2)
## 使用默認的LAUCHER Activity:com.android.calculator2.Calculator
// Selecting main activities from category android.intent.category.MONKEY
// Seeded: 1486970253229
## 種子值
// Event percentages:
## 不同事件占比
//   0: 15.0%
## pct-touch,觸屏點擊事件
//   1: 10.0%
## pct-motion移動事件
//   2: 2.0%
//   3: 15.0%
## pct-trackball軌跡球事件
//   4: -0.0%
## pct majornav主導航事件
//   5: -0.0%
## pct-nav導航事件
//   6: 25.0%
//   7: 15.0%
## pct-syskeys 系統(tǒng)按鍵事件
//   8: 2.0%
## pct-appswitch應用切換事件
//   9: 2.0%
//   10: 1.0%
## pct-anyevent其他事件
//   11: 13.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.calculator2/.Calculator;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.calculator2/.Calculator } in package com.android.calculator2
Sleeping for 0 milliseconds
##事件間隔0毫秒

:Sending Key (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
:Sending Key (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(409.0,317.0)
:Sending Touch (ACTION_UP): 0:(417.92798,318.7205)
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 98    // KEYCODE_BUTTON_C
:Sending Key (ACTION_UP): 98    // KEYCODE_BUTTON_C
Sleeping for 0 milliseconds
:Sending Trackball (ACTION_MOVE): 0:(-4.0,-4.0)
:Sending Trackball (ACTION_MOVE): 0:(-5.0,-4.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,-5.0)

## 觸發(fā)事件過程....
Events injected: 10
## 觸發(fā)事件數(shù)量10
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=53ms (0ms mobile, 0ms wifi, 53ms not connected)
## 執(zhí)行時長兑凿,以及其中網(wǎng)絡(移動網(wǎng)絡凯力、wifi網(wǎng)絡茵瘾、未使用網(wǎng)絡)的耗時占比
// Monkey finished
## 完成測試

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市咐鹤,隨后出現(xiàn)的幾起案子拗秘,更是在濱河造成了極大的恐慌,老刑警劉巖慷暂,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聘殖,死亡現(xiàn)場離奇詭異,居然都是意外死亡行瑞,警方通過查閱死者的電腦和手機奸腺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來血久,“玉大人突照,你說我怎么就攤上這事⊙跬拢” “怎么了讹蘑?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長筑舅。 經(jīng)常有香客問我座慰,道長,這世上最難降的妖魔是什么翠拣? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任版仔,我火速辦了婚禮,結果婚禮上误墓,老公的妹妹穿的比我還像新娘蛮粮。我一直安慰自己,他們只是感情好谜慌,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布然想。 她就那樣靜靜地躺著,像睡著了一般欣范。 火紅的嫁衣襯著肌膚如雪变泄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天恼琼,我揣著相機與錄音杖刷,去河邊找鬼。 笑死驳癌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的役听。 我是一名探鬼主播颓鲜,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼表窘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了甜滨?” 一聲冷哼從身側響起乐严,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衣摩,沒想到半個月后昂验,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡艾扮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年既琴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泡嘴。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡甫恩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酌予,到底是詐尸還是另有隱情磺箕,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布抛虫,位于F島的核電站松靡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏建椰。R本人自食惡果不足惜雕欺,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望广凸。 院中可真熱鬧阅茶,春花似錦、人聲如沸谅海。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扭吁。三九已至撞蜂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侥袜,已是汗流浹背蝌诡。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留枫吧,地道東北人浦旱。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像九杂,于是被迫代替她去往敵國和親颁湖。 傳聞我的和親對象是個殘疾皇子宣蠕,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

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