3过咬、Monkey測試詳解

一大渤、什么是 Monkey 測試
Monkey 測試是通過向系統(tǒng)發(fā)送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入掸绞、手勢輸入等)泵三,實現(xiàn)對應(yīng)用程序客戶端的穩(wěn)定性測試
通俗來說衔掸,Monkey 測試即“猴子測試”烫幕,是指像猴子一樣,不知道程序的任何用戶交互方面的知識敞映,就對界面進行無目的较曼、亂點亂按的操作;
Monkey 測試是一種為了測試軟件的穩(wěn)定性驱显、健壯性的快速有效的方法诗芜;
Monkey 程序是 Android 系統(tǒng)自帶的,由 Java 語言寫成埃疫,在 Android 文件系統(tǒng)中的存放路徑是: /system/framework/monkey.jar伏恐;
Monkey 程序需要通過 adb 來運行。

二栓霜、操作步驟
安裝并配置好 adb 環(huán)境翠桦,并通過 adb 連接好設(shè)備;
獲取被測應(yīng)用的包名胳蛮;
執(zhí)行 Monkey 命令進行測試

三销凑、Monkey 命令說明
adb shell monkey + 行為參數(shù) + ">" + {日志保存路徑}
上面的">",會覆蓋日志文件仅炊,如果使用">>"斗幼,則在日志文件后面追加
示例:

adb shell monkey -p com.xxx.myapp --throttle 100 --ignore-crashes --ignore-timeouts 
--ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000 > d:\mylog.log
格式 示例 說明
常規(guī)類命令
{數(shù)字} 1000000 Monkey 測試事件次數(shù)
-v -v -v -v 每個 -v 都將增加反饋信息的級別。共3個級別抚垄,因此 -v -v -v 可以提供最詳細的設(shè)置信息蜕窿。-v:0級,除啟動提示呆馁、測試完成和最終結(jié)果外提供較少信息桐经。-v -v:1級,提供較詳細測試信息浙滤,如逐個發(fā)送到 Activity 的事件阴挣。-v -v -v:2級,提供更詳細安裝信息纺腊,如測試中被選中或未被選中的 Activity
> + {日志路徑} > d:\mylog.log Monkey 測試日志記錄文件
約束類命令
-p + {被測應(yīng)用包名} -p com.leiting.sdk.test2 只針對指定包名進行測試
-c + {一個或多個類別名} -c Intent.CATEGORY_LAUNCHER Monkey 將只允許系統(tǒng)啟動這些類別中某個類別列出的 Activity畔咧,如果不指定任何類別茎芭,Monkey 將選擇 Intent.CATEGORY_LAUNCHER 和 Intent.CATEGORY_monkey 里的 Activity(每個 -c 對應(yīng)一個類別,指定多個類別時每個類別名前面都需要加上 -c)
調(diào)試類命令
--ignore-timeouts --ignore-timeouts Monkey 測試時忽略應(yīng)用程序發(fā)生的超時錯誤盒卸,若發(fā)生超時骗爆,將繼續(xù)發(fā)送事件給系統(tǒng),直到事件計數(shù)完成(若不設(shè)置此項蔽介,在遇到超時時摘投,Monkey 將停止運行)
--ignore-security-exception --ignore-security-exception Monkey 測試時忽略程序發(fā)生的異常錯誤,若發(fā)生異常虹蓄,將繼續(xù)發(fā)送事件給系統(tǒng)犀呼,直到事件計數(shù)完成(若不設(shè)置此項,在遇到異常時薇组,Monkey 將停止運行)
--ignore-crashes --ignore-crashes Monkey 測試時忽略應(yīng)用程序崩潰(Force&Close錯誤)外臂,若發(fā)生奔潰,將繼續(xù)發(fā)送事件給系統(tǒng)律胀,直到事件計數(shù)完成(若不設(shè)置此項宋光,在遇到奔潰時,Monkey 將停止運行)
--ignore-native-crashes --ignore-native-crashes Monkey 測試時忽略本地代碼導(dǎo)致的崩潰炭菌,若發(fā)生崩潰罪佳,將繼續(xù)發(fā)送事件給系統(tǒng),直到事件計數(shù)完成(若不設(shè)置此項黑低,在遇到本地代碼導(dǎo)致的奔潰時赘艳,Monkey 將停止運行)
--monitor-native-crashes --monitor-native-crashes 監(jiān)視崩潰時的本地代碼
--dbg-no-events --dbg-no-events 設(shè)置此項后,monkey將進行初始啟動克握,進入到某個測試Activity中不會進一步生成事件蕾管,可以監(jiān)視應(yīng)用程序所調(diào)用的包之間的轉(zhuǎn)換,為了更好的跟蹤菩暗,一般該項會與-v(日志)掰曾、-p<allowed-package-name> (包約束) 和 --throttle<milliseconds> (延遲)等聯(lián)合使用
--hprof --hprof 設(shè)置此項后,將在monkey事件序列前后立即生成profilfing report停团,將在data/misc中生成5MB左右大小的文件
--kill-process-after-error --kill-process-after-error 設(shè)置此項后旷坦,當(dāng)monkey因為應(yīng)用程序發(fā)生錯誤而停止時,將會通知系統(tǒng)停止發(fā)生錯誤的進程客蹋。如果不設(shè)置此項,monkey停止時發(fā)生錯誤的應(yīng)用程度將繼續(xù)處于運行狀態(tài)孽江。
--wait-dbg --wait-dbg 在設(shè)置此項后讶坯,將暫停執(zhí)行中的monkey,直到有調(diào)試器與它連接岗屏。
事件類命令
-s {數(shù)字} -s 100 隨機數(shù)生成器的 seed 值辆琅,如果使用相同的 seed 值再次運行 Monkey漱办,將生成相同的事件序列(也就是說,重復(fù)執(zhí)行剛才的隨機操作)
--throttle + {毫秒單位時間} --throttle 100 事件之間插入的固定延遲婉烟,單位毫秒娩井。通過這個選項可以減緩Monkey的執(zhí)行速度。如果不指定似袁,Monkey將盡可能快的產(chǎn)生并執(zhí)行事件
--pct-touch + {數(shù)字} --pct-touch 30 觸摸事件占比洞辣,即整個測試過程中,觸摸事件占 30%(指在某一位置的一個 down-up 事件昙衅,如:點擊)
--pct-montion + {數(shù)字} --pct-montion 30 動作事件占比扬霜,即整個測試過程中,動作事件占 30%(指從某一位置接下(即down事件)后經(jīng)過一系列偽隨機事件后彈出(即up事件))
--pct-trackball + {數(shù)字} --pct-trackball 30 軌跡球事件占比(指隨機移動事件而涉,以及偶爾跟隨在移動事件后面的點擊事件)
--pct-nav + {數(shù)字} --pct-nav 30 基本導(dǎo)航事件占比(指來自方向輸入設(shè)備的上著瓶、下、左啼县、右事件)
--pct-majornav + {數(shù)字} --pct-majornav 30 主要導(dǎo)航事件占比(指引發(fā)圖形界面的一些動作材原,如鍵盤中間按鍵、返回按鍵季眷、菜單按鍵等)
--pct-syskeys + {數(shù)字} --pct-syskeys 30 系統(tǒng)按鍵事件占比(指僅供系統(tǒng)使用的保留按鍵余蟹,如HOME鍵、BACK鍵瘟裸、撥號鍵客叉、掛斷鍵、音量鍵等)
--pct-appswtich + {數(shù)字} --pct-appswtich 30 應(yīng)用啟動事件占比(指打開應(yīng)用话告,通過調(diào)用 startActivity() 方法最大限度地開啟該 package下的所有應(yīng)用)
--pct-anyevent + {數(shù)字} --pct-anyevent 30 其他事件占比(指上文中未涉及的所有其他事件兼搏,如 keypress、不常用的 button 等)

4沙郭、從 Monkey 日志中看問題:

  • 程序無響應(yīng)的問題:在日志中搜索 “ANR”
  • 崩潰問題:在日志中搜索 “Exception”佛呻,Java常見異常:

算術(shù)異常類:ArithmeticExecption
空指針異常類:NullPointerException
類型強制轉(zhuǎn)換異常:ClassCastException
數(shù)組負下標(biāo)異常:NegativeArrayException
數(shù)組下標(biāo)越界異常:ArrayIndexOutOfBoundsException
違背安全原則異常:SecturityException
文件已結(jié)束異常:EOFException
文件未找到異常:FileNotFoundException
字符串轉(zhuǎn)換為數(shù)字異常:NumberFormatException
操作數(shù)據(jù)庫異常:SQLException
輸入輸出異常:IOException
違法訪問錯誤:IllegalAccessError
內(nèi)存不足錯誤:OutOfMemoryError
堆棧溢出錯誤:StackOverflowError
其他

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市病线,隨后出現(xiàn)的幾起案子吓著,更是在濱河造成了極大的恐慌,老刑警劉巖送挑,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绑莺,死亡現(xiàn)場離奇詭異,居然都是意外死亡惕耕,警方通過查閱死者的電腦和手機纺裁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人欺缘,你說我怎么就攤上這事栋豫。” “怎么了谚殊?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵丧鸯,是天一觀的道長。 經(jīng)常有香客問我嫩絮,道長丛肢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任絮记,我火速辦了婚禮摔踱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怨愤。我一直安慰自己派敷,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布撰洗。 她就那樣靜靜地躺著篮愉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪差导。 梳的紋絲不亂的頭發(fā)上试躏,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音设褐,去河邊找鬼颠蕴。 笑死,一個胖子當(dāng)著我的面吹牛助析,可吹牛的內(nèi)容都是我干的犀被。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼外冀,長吁一口氣:“原來是場噩夢啊……” “哼寡键!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雪隧,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤西轩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后脑沿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藕畔,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年庄拇,在試婚紗的時候發(fā)現(xiàn)自己被綠了注服。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖祠汇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熄诡,我是刑警寧澤可很,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站凰浮,受9級特大地震影響我抠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜袜茧,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一菜拓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧笛厦,春花似錦纳鼎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至姨谷,卻和暖如春逗宁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背梦湘。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工瞎颗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捌议。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓哼拔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親禁灼。 傳聞我的和親對象是個殘疾皇子管挟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

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