Monkey學(xué)習(xí)過程與個人見解_參數(shù)

前不久我轉(zhuǎn)到一個本地化項(xiàng)目做安卓測試,還只有一個安卓測試那種。這要是測得不好就有點(diǎn)尷尬了,這么覺得的我于是想著雖然那種很洋氣的自動化我還不會,但是至少跑個monkey還是沒問題的!剛好今天比較閑于是就開始擠時間準(zhǔn)備開始學(xué)學(xué)怎么跑monkey了!

【本次僅記錄如何使用monkey各常用參數(shù)及對其的理解,腳本及報(bào)告分析放到下一篇?!?/i>


Monkey,顧名思義就是猴子,引申出來即是猴子瞎點(diǎn)能發(fā)現(xiàn)一些平時進(jìn)行正常操作發(fā)現(xiàn)不了的問題。【純屬個人理解。_(:зゝ∠)_】

關(guān)于如何連上手機(jī)開啟調(diào)試就略過不提,當(dāng)連上需調(diào)試的手機(jī)后進(jìn)入cmd的操作界面,使用adb shell進(jìn)入shell端, 然后monkey+參數(shù)。即adb shell monkey+參數(shù)。

在命令最后加上的一個整數(shù)即為想要產(chǎn)生的隨機(jī)事件數(shù)量。

Monkey的參數(shù)大致分為四類:General,Events,Constraints,Debugging。

一、General參數(shù)即是常規(guī)參數(shù),一般指-v與--help。

按照我自己學(xué)習(xí)Linux的習(xí)慣就來先搞懂命令的縮寫是什么意思。

1、-v即level,打印出的log的詳細(xì)程度。詳細(xì)程度一共有三級0/1/2,詳細(xì)如下。

Level0(默認(rèn))-v,除了啟動、測試完成和最終結(jié)果外只提供較少的信息。

Level1 -v -v,提供了較為詳細(xì)的測試信息,如逐個發(fā)送到Activity的事件信息。

Level2 -v -v -v,提供了更多的設(shè)置信息,如測試中選中或未選中的Activity信息。

1_例子:adb shell monkey -v -v -v 1000

2、--help,關(guān)于help命令就不必多說了。

此外不知道大家有沒有跟我一樣的困惑:有的教程里寫的是-help,而有的是--help,這兩個命令有區(qū)別嗎?

查詢后得出的結(jié)論是--后一般接命令完整單詞,-后一般接命令簡寫。比如--help與-h其實(shí)執(zhí)行的是同一命令,但是有的參數(shù)只能使用完整單詞比如后面將提到的--throttle。

【如有問題請?jiān)谠u論里給我提出,謝謝。】

二、Events參數(shù)即為操縱每個事件的參數(shù),比如-s,--throttle等。

1、-s參數(shù)為seed,種子。種瓜得瓜種豆得豆,即我們可以根據(jù)出現(xiàn)錯誤時的seed值運(yùn)行出相同的隨機(jī)事件序列。【這個參數(shù)我其實(shí)沒太明白如何使用,就是比如我想復(fù)現(xiàn)seed=12312時的事件序列,然后后面需要選擇執(zhí)行多少次呢?希望有人解答?!?/i>

2、--throttle 壓制,節(jié)流閥即控制,我們可以通過這個參數(shù)操作每個事件的間隔時間來模擬用戶的真實(shí)操作速度,比如一般取值為300ms。

2_例子:adb shell monkey -s 152342 --throttle 300 -v 1000

3、除了以上兩個參數(shù)外還有一系列以--pct開頭的控制每種事件百分比的參數(shù),當(dāng)測試不同類型APP時可以針對對應(yīng)的事件百分比做調(diào)整。詳細(xì)內(nèi)容如下。

--pct-touch 指定觸摸事件的百分比

--pct-motion? (滑動事件)

--pct-trackball? (軌跡球事件)

--pct-nav? (導(dǎo)航事件 up/down/left/right)

--pct-majornav? (主要導(dǎo)航事件 back key 、 menu key)

--pct-syskeys? (系統(tǒng)按鍵事件 Home 、Back 、startCall 、 endCall 、 volumeControl)

--pct-appswitch? (activity之間的切換)

--pct-anyevent (任意事件)

3_例子:adb shell monkey --pct-motion 30 --pct-touch 20 -v 1000(注意--pct數(shù)值后不用加百分號%)

三、Constraints約束參數(shù),即對運(yùn)行的隨機(jī)事件范圍等進(jìn)行約束的參數(shù),如-p。

1、-p package包,使用這個參數(shù)可以針對指定的包產(chǎn)生隨機(jī)事件。并且可以指定多個包,一個包名對應(yīng)一個-p參數(shù)。

1_例子:adb shell monkey -p xx.xxx.xxx -p zz.zzz.zzz -v 1000

2、-c category類別,這個參數(shù)只允許系統(tǒng)啟動這些類別中某個類別列出的Activity。使用這個參數(shù)需要知道應(yīng)用的activity名稱。如不手動指定,monkey只會啟動Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY的活動。【這個因?yàn)槲覜]看到代碼所以沒有怎么嘗試,感到遺憾,之后會好好看看這個參數(shù)。】

2_例子:adb shell monkey -p xx.xxx.xxx -c android.intent.category.LAUNCH -v 1000

四、Debugging調(diào)試參數(shù),即用于調(diào)試的參數(shù)命令,如--hprof。

1、--dbg-no-events 使用此參數(shù)時monkey會啟動待測應(yīng)用,但不發(fā)送任何消息,建議與-v,-p,-throttle一起使用。

2、--hprof 這個參數(shù)生成的profiling報(bào)告可以由HPROF查看工具會列出類、類的實(shí)例和實(shí)例的引用樹,以此來幫助你跟蹤內(nèi)存的使用情況,找出內(nèi)存泄漏的地方。HPROF最初是由J2SE支持的一種二進(jìn)制堆轉(zhuǎn)儲格式。

相對于靜態(tài)代碼分析,Profiling 是通過收集程序運(yùn)行時的信息來研究程序行為的動態(tài)分析方法。其目的在于定位程序需要被優(yōu)化的部分,從而提高程序的運(yùn)行速度或是內(nèi)存使用效率。

使用此參數(shù)時monkey會在發(fā)送事件前后生成性能報(bào)告(即內(nèi)存的快照文件),一般在設(shè)備的/data/misc目錄下生成一個hprof文件。【這個命令我今天還沒試過,等明天試試看,看看打印出的報(bào)告。】

3、--kill-process-after-error 一般情況下,當(dāng)monkey因?yàn)槟硞€錯誤指定運(yùn)行時,出問題的應(yīng)用會留在系統(tǒng)上繼續(xù)執(zhí)行,這個選項(xiàng)通知系統(tǒng)當(dāng)錯誤發(fā)生時殺掉進(jìn)程。

注意:當(dāng)monkey正常執(zhí)行完畢后,它不會關(guān)閉所啟動的應(yīng)用,設(shè)備依然停留在最后接受到消息的狀態(tài)。

4、--monitor-native-crashes 監(jiān)視由Android C/C++代碼部分(cpu計(jì)算部分)引起的崩潰,此時如果設(shè)置了“--kill-process-after-error”,整個系統(tǒng)會關(guān)機(jī)。【這個命令我今天還沒試過,等試了看看能不能結(jié)合日志分析下原因。】

5、--wait-dbg 即我們啟動monkey后,只有連上被測設(shè)備且打開調(diào)試時才繼續(xù)進(jìn)行monkey測試。

1-5_例子:adb shell monkey -p xx.xx.xx--dbg-no-events --hprof --kill-process-after-error --wait-dbg -v 1000

6、除了以上參數(shù)還有以ignore開頭的一系列參數(shù),可以便于在問題發(fā)生后繼續(xù)進(jìn)行monkey測試直到指定個數(shù)的消息全部發(fā)送完畢,而不會直接中斷停止。

--ignore-crashes 忽略待測應(yīng)用崩潰或發(fā)生異常的情況

--ignore-timeouts 忽略待測應(yīng)用停止響應(yīng)(如彈出“應(yīng)用無響應(yīng)”對話框)的情況

--ignore-security-exceptions 忽略待測應(yīng)用碰到權(quán)限方面的錯誤的情況

6_例子:adb shell monkey -p xx.xx.xx --hprof --kill-process-after-error --wait-dbg --ignore-crashes --ignore-security-exceptions -v 1000


其中一些未嘗試的參數(shù)我接下來會再試試,等嘗試了繼續(xù)更新或在更新下一篇關(guān)于腳本&報(bào)告分析的時候加在其中。


參考:

http://www.cnblogs.com/yajing-zh/p/4340795.html

http://www.cnblogs.com/wanqieddy/p/4312814.html


Submitted by 梅湖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容