Monkey是一個(gè)在仿真器或設(shè)備上運(yùn)行的程序鳞贷,并生成用戶事件(如點(diǎn)擊朴艰,觸摸或手勢)以及一些系統(tǒng)級事件的偽隨機(jī)流仿村。 您可以使用Monkey以隨機(jī)但可重復(fù)的方式對您正在開發(fā)的應(yīng)用程序進(jìn)行壓力測試间学。
Monkey測試介紹
Monkey是一個(gè)命令行工具入偷,您可以在任何模擬器實(shí)例或設(shè)備上運(yùn)行淹办。它發(fā)送用戶事件的偽隨機(jī)流到系統(tǒng)中眉枕,對您正在開發(fā)的應(yīng)用軟件進(jìn)行壓力測試。
Monkey包括許多選項(xiàng)怜森,但它們分為四個(gè)主要類別:
- 基本配置選項(xiàng)速挑,如設(shè)置要嘗試的事件數(shù)。
- 操作約束副硅,例如將測試限制為單個(gè)包姥宝。
- 事件類型和頻率。
- 調(diào)試選項(xiàng)恐疲。
當(dāng)Monkey運(yùn)行時(shí)腊满,它會(huì)生成事件并將它們發(fā)送到系統(tǒng)套么。 它還監(jiān)視被測系統(tǒng),并特別處理三種條件:
- 如果你限制Monkey在一個(gè)或多個(gè)特定包中運(yùn)行碳蛋,它會(huì)監(jiān)視并禁止導(dǎo)航到任何其他包胚泌。
- 如果您的應(yīng)用程序崩潰或收到任何未處理的異常,Monkey將停止并報(bào)告錯(cuò)誤疮蹦。
- 如果您的應(yīng)用程序生成應(yīng)用程序無響應(yīng)錯(cuò)誤诸迟,Monkey將停止并報(bào)告錯(cuò)誤。
根據(jù)您選擇的詳細(xì)程度級別愕乎,您還將看到有關(guān)Monkey進(jìn)度和生成事件的報(bào)告阵苇。
Monkey的基本使用
您可以使用命令行或腳本在開發(fā)機(jī)器上啟動(dòng)Monkey。 因?yàn)镸onkey必須在模擬器/設(shè)備環(huán)境中運(yùn)行感论,所以必須從該環(huán)境中的shell啟動(dòng)它绅项。 您可以通過將 adb shell
作為每個(gè)命令的前綴,或者直接輸入shell
并輸入Monkey命令來完成比肄。
基本語法是:
$ adb shell monkey [options] <event-count>
如果沒有指定選項(xiàng)快耿,Monkey將以安靜(非詳細(xì))模式啟動(dòng),并將事件發(fā)送到目標(biāo)上安裝的任何(和所有)包芳绩。 下面是一個(gè)更典型的命令行掀亥,它將啟動(dòng)您的應(yīng)用程序并向其發(fā)送500個(gè)偽隨機(jī)事件:
$ adb shell monkey -p your.package.name -v 500
命令選項(xiàng)參考
下表列出了您可以在Monkey命令行中包含的所有選項(xiàng)。
類別 | 選項(xiàng) | 描述 |
---|---|---|
普通 | --help | 打印簡單的使用指南妥色。 |
-v | 命令行上的每個(gè)-v將增加反饋信息級別(日志的詳細(xì)程序)搪花。</br>級別0 示例 adb shellmonkey -p com.htc.Weather –v 100 </br>(默認(rèn)值)僅提供了啟動(dòng)信息,測試完成和最終結(jié)果等少量信息嘹害。</br>級別1 示例 adb shellmonkey -p com.htc.Weather –v -v 100 </br>提供較為詳細(xì)的日志撮竿,包括每個(gè)發(fā)送到Activity的事件信息。</br>級別2 示例 adb shellmonkey -p com.htc.Weather –v -v –v 100 </br>最詳細(xì)的日志笔呀,包括了測試中選中/未選中的Activity信息幢踏。 |
|
事件 | -s <seed> | 偽隨機(jī)數(shù)生成器的種子值。 如果你用相同的種子值重新運(yùn)行Monkey许师,它將生成相同的事件序列房蝉。 |
--throttle <milliseconds> |
adb shell monkey -p com.htc.Weather --throttle 3000 100 在事件之間插入固定延遲。 你可以使用這個(gè)選項(xiàng)來減慢Monkey微渠。 如果未指定惨驶,則不存在延遲,并且盡可能快地生成事件敛助。 |
|
--pct-touch <percent> |
adb shell monkey -p com.htc.Weather --pct-touch 10 1000 調(diào)整觸摸事件的百分比粗卜。 (觸摸事件是屏幕上單個(gè)位置的 down-up事件。) |
|
--pct-motion <percent> |
com.htc.Weather --pct-motion 20 1000 調(diào)整運(yùn)動(dòng)事件的百分比纳击。 (運(yùn)動(dòng)事件包括屏幕上某處的down事件续扔,一系列偽隨機(jī)運(yùn)動(dòng)和up事件攻臀。) |
|
--pct-trackball <percent> |
adb shell monkey -p com.htc.Weather --pct-trackball 30 1000 調(diào)整軌跡球事件的百分比。 (跟蹤球事件由一個(gè)或多個(gè)隨機(jī)移動(dòng)組成纱昧,有時(shí)后跟一次點(diǎn)擊刨啸。) |
|
--pct-nav <percent> |
adb shell monkey -p com.htc.Weather --pct-nav 40 1000 調(diào)整“基本”導(dǎo)航事件的百分比。 (導(dǎo)航事件由來自方向輸入設(shè)備的up/down/left/right組成)识脆。 |
|
--pct-majornav <percent> |
adb shell monkey -p com.htc.Weather --pct-majornav 50 1000 調(diào)整“主要”導(dǎo)航事件的百分比设联。 (這些是通常會(huì)在您的UI中執(zhí)行操作的導(dǎo)航事件,例如5向鍵盤中的中心按鈕灼捂,后退鍵或菜單鍵)离例。 |
|
--pct-syskeys <percent> |
adb shell monkey -p com.htc.Weather --pct-syskeys 60 1000 調(diào)整“系統(tǒng)”鍵事件的百分比。 (這些是通常保留供系統(tǒng)使用的鍵悉稠,例如Home宫蛆,Back,Start Call的猛,End Call或音量控制耀盗。) |
|
--pct-appswitch <percent> |
adb shell monkey -p com.htc.Weather--pct-appswitch 70 1000 調(diào)整活動(dòng)的百分比。 在隨機(jī)的時(shí)間間隔卦尊,Monkey將發(fā)出一個(gè)startActivity() 調(diào)用叛拷,作為最大限度地覆蓋你的包中所有Activity的一種方法。 |
|
--pct-anyevent <percent> |
adb shell monkey -p com.htc.Weather --pct -anyevent 100 1000 調(diào)整其他類型事件的百分比岂却。 這是所有其他類型的事件的全部胡诗,例如按鍵,設(shè)備上的其他較少使用的按鈕等等淌友。 |
|
約束 | -p <allowed-package-name> |
adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100 如果以這種方式指定一個(gè)或多個(gè)軟件包,Monkey將只允許系統(tǒng)訪問這些軟件包中的活動(dòng)骇陈。 如果您的應(yīng)用程序需要訪問其他包中的活動(dòng)(例如選擇聯(lián)系人)震庭,您還需要指定這些包。 如果不指定任何軟件包你雌,Monkey將允許系統(tǒng)在所有軟件包中啟動(dòng)活動(dòng)器联。 要指定多個(gè)包,請多次使用-p選項(xiàng) - 每個(gè)包一個(gè)-p選項(xiàng)婿崭。 |
-c <main-category> | 如果您以這種方式指定一個(gè)或多個(gè)類別拨拓,Monkey將只允許系統(tǒng)訪問使用指定類別之一列出的活動(dòng)。 如果不指定任何類別氓栈,則Monkey將選擇使用類別Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY列出的活動(dòng)渣磷。 要指定多個(gè)類別,請多次使用-c選項(xiàng) - 每個(gè)類別一個(gè)-c選項(xiàng)授瘦。 | |
調(diào)試 | --dbg-no-events | 當(dāng)指定時(shí)醋界,Monkey將執(zhí)行初始啟動(dòng)進(jìn)入測試活動(dòng)竟宋,但不會(huì)生成任何進(jìn)一步的事件。 為了獲得最佳效果形纺,請結(jié)合-v丘侠,一個(gè)或多個(gè)程序包約束和非零事件延時(shí),保持Monkey運(yùn)行30秒或更長時(shí)間逐样。 這提供了一個(gè)環(huán)境蜗字,您可以在其中監(jiān)視應(yīng)用程序調(diào)用的軟件包轉(zhuǎn)換。 |
--hprof | 如果設(shè)置脂新,此選項(xiàng)將立即在Monkey事件序列之前和之后生成性能分析報(bào)告挪捕。 這將在data/misc下產(chǎn)生大(?5Mb)文件,因此請小心使用戏羽。 有關(guān)跟蹤文件的更多信息担神,請參閱Traceview。 | |
--ignore-crashes | 通常始花,當(dāng)應(yīng)用程序崩潰或遇到任何類型的未處理的異常時(shí)妄讯,Monkey將停止。 如果指定此選項(xiàng)酷宵,則Monkey將繼續(xù)向系統(tǒng)發(fā)送事件亥贸,直到計(jì)數(shù)完成。 | |
--ignore-timeouts | 通常浇垦,當(dāng)應(yīng)用程序遇到任何類型的超時(shí)錯(cuò)誤(如“應(yīng)用程序無響應(yīng)”對話框)時(shí)炕置,Monkey將停止。 如果指定此選項(xiàng)男韧,則Monkey將繼續(xù)向系統(tǒng)發(fā)送事件朴摊,直到計(jì)數(shù)完成。 | |
--ignore-security-exceptions | 通常此虑,當(dāng)應(yīng)用程序遇到任何類型的權(quán)限錯(cuò)誤時(shí)甚纲,Monkey將停止,例如朦前,如果它嘗試啟動(dòng)需要某些權(quán)限的活動(dòng)介杆。 如果指定此選項(xiàng),則Monkey將繼續(xù)向系統(tǒng)發(fā)送事件韭寸,直到計(jì)數(shù)完成春哨。 | |
--kill-process-after-error | 通常,當(dāng)Monkey由于錯(cuò)誤而停止時(shí)恩伺,失敗的應(yīng)用程序?qū)⒈3诌\(yùn)行赴背。 設(shè)置此選項(xiàng)時(shí),它將通知系統(tǒng)停止發(fā)生錯(cuò)誤的進(jìn)程。 注意癞尚,在正常(成功)完成下耸三,啟動(dòng)的進(jìn)程不停止,并且設(shè)備在最后事件之后簡單地保持在最后狀態(tài)浇揩。 | |
--monitor-native-crashes | Android系統(tǒng)原生代碼中的監(jiān)視和報(bào)告崩潰仪壮。 如果設(shè)置了-kill-process-after-error,系統(tǒng)將停止胳徽。 | |
--wait-dbg | 停止Monkey執(zhí)行积锅,直到調(diào)試器連接到它。 |
注:
日志保存時(shí)可直接通過一下命令
adb shell -p com.htc.Weather -v -v -v 10000 > monkey.txt
如需保存logcat日志养盗,可以新開個(gè)dos窗口執(zhí)行
adb shell logcat > logcat.txt