monkey常見命令

原理概括:adb devices---了解包名--adb shell monkey -p 包名 -v 運(yùn)行次數(shù)(多個(gè)參數(shù)的組合形成不同的用例以求最大的覆蓋)--當(dāng)崩潰或無響應(yīng)時(shí)分析monkey日志

常規(guī)monkey命令(可直接在項(xiàng)目里使用):

adb shell monkey -p com.jiochat.jiochatapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:\b.log

重現(xiàn)bug:monkey日志搜索關(guān)鍵詞ANR exception,將之前的事件重新操作,尤其是seed值要一模一樣闪唆,如monkey -p 包名 -v seed 0 500

日志分析:查看是否有crash等關(guān)鍵字,找上下文堪夭,進(jìn)行簡單分析將你所能定位的錯(cuò)誤信息發(fā)給開發(fā)。

該工具用于進(jìn)行壓力測試拣凹。 測試人員結(jié)合monkey 打印的日志 和系統(tǒng)打印的日志森爽,開發(fā)人員修改測試中出現(xiàn)的問題。Monkey 是SDK中附帶的一個(gè)工具,所有的事件都是隨機(jī)產(chǎn)生的嚣镜,不帶任何人的主觀性爬迟。

Monkey程序由Android系統(tǒng)自帶,使用Java語言寫成菊匿,在Android文件系統(tǒng)中的存放路徑是:/system/framework/monkey.jar付呕。

Monkey.jar程序是由一個(gè)名為“monkey”的Shell腳本來啟動(dòng)執(zhí)行,shell腳本在Android文件系統(tǒng)中的存放路徑是:/system/bin/monkey跌捆;這樣就可以通過在shell窗口中執(zhí)行: adb shell monkey {+命令參數(shù)}來進(jìn)行Monkey測試了徽职。

二、monkey測試環(huán)境搭建:運(yùn)行前安裝adb(MONKEY測試使用的是ADB命令佩厚,因此只需要配置ADB環(huán)境即可姆钉。)

1.pc端下載adb命令包,解壓后放到C盤目錄下(也就是jdk抄瓦,sdk潮瓶,下載地址:http://pan.baidu.com/s/1pJ6Yqs7,jdk安裝钙姊,sdk解壓即可毯辅,并配置環(huán)境變量,path加上platform-tools和tools的目錄路徑)

2.手機(jī)通過usb連接電腦煞额,自動(dòng)安裝usb驅(qū)動(dòng)思恐,連接成功

3.驗(yàn)證adb命令能否運(yùn)行

pc端進(jìn)入cmd命令行---進(jìn)入C:\tmg目錄下--運(yùn)行adb shell赤屋,出現(xiàn)$符號證明adb命令運(yùn)行成功,進(jìn)入shell模式

三壁袄、手機(jī)設(shè)置

手機(jī)屏幕超時(shí)設(shè)置為從不關(guān)閉,防止手機(jī)進(jìn)入鎖屏狀態(tài)媚媒。

? ?以htc手機(jī)為例:進(jìn)入設(shè)置-顯示--屏幕待機(jī)--設(shè)置為從不關(guān)閉嗜逻。

四、運(yùn)行monkey

運(yùn)行方式有三種:a.pc機(jī)上 adb shell monkey +參數(shù) ?b pc機(jī)輸入adb shell進(jìn)入到手機(jī)的安卓設(shè)備后再monkey+參數(shù) C手機(jī)設(shè)備上安裝一個(gè)模擬器手機(jī)執(zhí)行monkey+參數(shù)(手機(jī)模擬器可以通過百度搜索或360手機(jī)助手搜a(bǔ)ndroid terminal缭召,安裝即可栈顷,可以在模擬器的命令行中輸入mokey +參數(shù))

下面是第一種方法:

1.查看包名:查看電腦中某一位置的apk文件的包名:PC打開CMD-進(jìn)入TMG目錄-運(yùn)行設(shè)備--查看包名aapt dump badging *.apk(apk文件的路徑,可以直接拖拽)嵌巷。

或者直接查看手機(jī)中存在的apk包萄凤,進(jìn)入adb shell 命令后---手機(jī)的data/data文件夾--ls查看所有包名 找到要測apk的包名

2.運(yùn)行monkey,對此包進(jìn)行300次無規(guī)律點(diǎn)擊搪哪。

或者運(yùn)行monkey靡努,對此包進(jìn)行300次無規(guī)律點(diǎn)擊后將日志導(dǎo)出到電腦的某一位置

adb shell -p 包名 -v 點(diǎn)擊數(shù) >電腦某一位置

3、測試停止后晓折,查看導(dǎo)出的monkey日志惑朦,發(fā)現(xiàn)問題。

在log的最開始都會顯示Monkey執(zhí)行的seed值漓概、執(zhí)行次數(shù)和測試的包名漾月。

首先我們需要查看Monkey測試中是否出現(xiàn)了ANR或者異常,無響應(yīng)問題(ANR問題):在日志中搜索“ANR ”(此處有空格)胃珍, 崩潰問題:在日志中搜索“Exception”梁肿,快速定位到關(guān)鍵事件信息 。然后查看Monkey里面出錯(cuò)前的一些事件動(dòng)作觅彰,并手動(dòng)執(zhí)行該動(dòng)作吩蔑,找出重現(xiàn)步驟,給開發(fā)填抬。

五哥纫、monkey命令詳解

monkey -pcom.tencent.mtaexample -s 23 ?--throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &

? ? ? ? 1. ? -p后面接著的對應(yīng)的包名,如果是整機(jī)測試痴奏,就不需要 -ppackage_name

? ? ? ? 2. ? -s后面是對應(yīng)的種子數(shù)蛀骇,好像就是操作步驟,根據(jù)她們測試的經(jīng)驗(yàn)读拆,一般種子數(shù)在23擅憔,同步她們測試的結(jié)果,一般種子的個(gè)數(shù)固定為23檐晕,和她們選擇的操作步驟就是同步的暑诸。

? ? ? ? 3. ? --ignore-crashes --ignore-timeouts 這里是在monkey測試的過程中遇到carash或者timeout的情況時(shí)忽略掉蚌讼,一般不設(shè)置時(shí),出現(xiàn)carash或者timeout時(shí)个榕,Monkey測試會終止篡石。這里是防止Monkey測試終止。

? ? ? ? 4. ? -v 指的是Monkey測試時(shí)打印log級別西采。

5. ? 100000 這里是指點(diǎn)擊的次數(shù)凰萨,根據(jù)她們測試的經(jīng)驗(yàn),對于單個(gè)應(yīng)用程序這個(gè)次數(shù)設(shè)置在100000次就可以了械馆;如果是整機(jī)胖眷,一般設(shè)置在500000次。

/data/local/tmp/log.txt測試的log記錄在手機(jī)上/data/local/tmp/ 下面的log.txt里面霹崎,這個(gè)名字可以自己寫珊搀。

? ? ? ? 6. ? 2>&1 固定的寫法,這個(gè)也很重要尾菇,代表的意思是中間忽略的東東的日志一并輸入到指定的文件中境析。

? ? ? ? 7. ? 最后單獨(dú)的一個(gè)"&" 是一旦Monkey測試開始了,之后可以拔掉數(shù)據(jù)線派诬,不會影響Monkey測試簿晓。

? ? ? ? 8. ? 測試所有模塊 ?monkey ?-s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &

六、monkey常用參數(shù)詳解

-v ?日志詳細(xì)程度

Level 0 ?: ?adb shell monkey ?-p fishjoy.control.menu ?-v 100 ? 最簡單(默認(rèn))千埃,除了啟動(dòng)憔儿、測試完成和最終結(jié)果外只提供較少的信息。

Level 1 ?: ?adb shell monkey ?-p fishjoy.control.menu ?-v ?-v 100 ?提供了較為詳細(xì)的測試信息放可,如逐個(gè)發(fā)送到Activity的事件信息

Level 2 ?: ?adb shell monkey ?-p fishjoy.control.menu ?-v ?-v ?-v 100?提供了更多的設(shè)置信息谒臼,如測試中選中或未選中的Activity信息

比較常用的是-v -v -v,一般會保存到指定文件中供開發(fā)人員查找bug原因時(shí)使用

-s(隨機(jī)數(shù)種子)

指定偽隨機(jī)數(shù)生成器的seed值耀里,如果seed相同蜈缤,則兩次Monkey測試所產(chǎn)生的事件序列也相同的。

示例: monkey測試1:adb ?shell ?monkey ?-p fishjoy .control.menu ?–s 10 ?100

? ? ? ? ? monkey測試2:adb ?shell ?monkey ?-p fishjoy .control.menu ?–s 10 ?100

--throttle <毫秒>?

指定用戶操作(即事件)間的時(shí)延冯挎,單位是毫秒底哥;如果不指定這個(gè)參數(shù),monkey會盡可能快的生成和發(fā)送消息房官。

示例:adb ?shell monkey -p fishjoy.control.menu ?--throttle 3000 100?

-p <允許的包名列表>?

用此參數(shù)指定一個(gè)或多個(gè)包趾徽。指定包之后,monkey將只允許系統(tǒng)啟動(dòng)指定的app翰守。如果不指定包孵奶,monkey將允許系統(tǒng)啟動(dòng)設(shè)備中的所有app。


--ignore-security-exception?


作用:通常蜡峰,當(dāng)程序發(fā)生許可錯(cuò)誤(例如啟動(dòng)一些需要許可的Activity)導(dǎo)致的異常時(shí)了袁,Monkey將停止運(yùn)行朗恳。設(shè)置此項(xiàng),Monkey將繼續(xù)發(fā)送事件給系統(tǒng)载绿,直到事件計(jì)數(shù)完成粥诫。


--ignore-timeouts


作用:通常,應(yīng)用程序發(fā)生任何超時(shí)錯(cuò)誤(如“Application Not responding”對話框)Monkey將停止運(yùn)行崭庸,設(shè)置此項(xiàng)怀浆,Monkey將繼續(xù)發(fā)送事件給系統(tǒng),直到事件計(jì)數(shù)完成冀自。


--ignore-crashes


作用:通常,應(yīng)用發(fā)生崩潰或異常時(shí)Monkey會停止運(yùn)行秒啦。如果設(shè)置此項(xiàng)熬粗,Monkey將繼續(xù)發(fā)送事件給系統(tǒng),直到事件計(jì)數(shù)完成余境。


--pct-touch <percent>

作用:調(diào)整觸摸事件的百分比.(觸摸事件是指在屏幕中的一個(gè)down-up事件驻呐,即在屏幕某處按下并抬起的操作)比如一個(gè)應(yīng)用80%的操作都是觸摸,那就可以將此參數(shù)的百分

比設(shè)置成相應(yīng)較高的百分比芳来。如觸摸返回含末、觸摸簽到等

--pct-motion<percent>

調(diào)整motion事件百分比。(motion事件是由屏幕上某處一個(gè)down事件即舌、一系列偽隨機(jī)的移動(dòng)事件和一個(gè)up事件組成)也就是直線滑動(dòng)事件如從左到有滑動(dòng)解鎖


--pct-trackball <percent>

作用:調(diào)整滾動(dòng)球事件百分比佣盒。(滾動(dòng)球事件由一個(gè)或多個(gè)隨機(jī)的移動(dòng)事件組成,有時(shí)會伴隨著點(diǎn)擊事件)如不規(guī)則滑動(dòng)解鎖

--pct-nav<percent> 導(dǎo)航顽聂,現(xiàn)在手機(jī)基本沒有導(dǎo)航了

---pct-syskeys<percent> 按鍵消息比例肥惭,主頁、后退紊搪、音量增減

--pct-anyevent 其他不常用的按鍵比例的設(shè)置蜜葱,不常用

--hprof ?monkey測試完成后生成內(nèi)存快照,data/misc路徑下生成耀石,不常用牵囤,比較占空間


--ignore-security-exceptions ?忽略權(quán)限問題的

--kill-process-after-error 當(dāng)錯(cuò)誤發(fā)生時(shí)殺進(jìn)程

--monitor-native-crashes 監(jiān)視崩潰時(shí)的本地代碼

七、殺monkey進(jìn)程

如果想中斷運(yùn)行中的monkey CTRL+C

adb shell ps | grep monkey ?返回進(jìn)程號

adb shell kill [剛才查到的進(jìn)程號]

app包名查看:

a.手機(jī)安裝包名查看器'

?b.aapt命令 ?aapt dump badging *.apk

c滞伟、源碼下的AndroidManifest.xml文件查看

d.adb logcat抓取當(dāng)前Android機(jī)運(yùn)行的app的包名( ?I/ActivityManager(數(shù)字): Displayed 包名/類

名: +ms )

命令行輸入 adb logcat >e:\bag.txt

手機(jī)操控app揭鳞,ctrl+c停止

去e:\bag.txt這個(gè)文件下搜索關(guān)鍵字如Displayed?,一般都能找到

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梆奈,一起剝皮案震驚了整個(gè)濱河市汹桦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鉴裹,老刑警劉巖舞骆,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝴乔,死亡現(xiàn)場離奇詭異,居然都是意外死亡主届,警方通過查閱死者的電腦和手機(jī)另锋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狈惫,“玉大人睛蛛,你說我怎么就攤上這事‰侍福” “怎么了忆肾?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長菱肖。 經(jīng)常有香客問我客冈,道長,這世上最難降的妖魔是什么稳强? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任场仲,我火速辦了婚禮,結(jié)果婚禮上退疫,老公的妹妹穿的比我還像新娘渠缕。我一直安慰自己,他們只是感情好褒繁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布亦鳞。 她就那樣靜靜地躺著,像睡著了一般棒坏。 火紅的嫁衣襯著肌膚如雪蚜迅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天俊抵,我揣著相機(jī)與錄音谁不,去河邊找鬼。 笑死徽诲,一個(gè)胖子當(dāng)著我的面吹牛刹帕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谎替,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼偷溺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钱贯?” 一聲冷哼從身側(cè)響起挫掏,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秩命,沒想到半個(gè)月后尉共,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褒傅,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年袄友,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了殿托。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,637評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剧蚣,死狀恐怖支竹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸠按,我是刑警寧澤礼搁,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站目尖,受9級特大地震影響馒吴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜卑雁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一募书、第九天 我趴在偏房一處隱蔽的房頂上張望绪囱。 院中可真熱鬧测蹲,春花似錦、人聲如沸鬼吵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽齿椅。三九已至琉挖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涣脚,已是汗流浹背示辈。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遣蚀,地道東北人矾麻。 一個(gè)月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像芭梯,于是被迫代替她去往敵國和親险耀。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,500評論 2 348

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

  • 一玖喘、monkey介紹 Monkey是Android中的一個(gè)命令行工具甩牺,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中。它向系統(tǒng)發(fā)送...
    小_小_桂閱讀 984評論 0 53
  • 本文主要介紹Monkey的相關(guān)命令累奈,具體Monkey的操作贬派,詳見本系列的第一篇文章 1急但、包名指定: 可以指定一個(gè),...
    無以解憂雜貨鋪閱讀 843評論 0 2
  • (1):adb shell monkey ...
    fenger_0624閱讀 720評論 0 2
  • 簡介 Monkey 是Android SDK提供的一個(gè)命令行工具赠群, 可以簡單羊始,方便地運(yùn)行在任何版本的Android...
    我為峰2014閱讀 3,587評論 0 10
  • 2018.4.19 從上高中開始,我頭上就像罩了一個(gè)鐵帽子查描,后來通過吃素修行突委,靈修癥狀在減輕,但有時(shí)還是感動(dòng)頭腦里...
    光與愛的Lily閱讀 375評論 0 0