如何进行Monkey Test
目錄
一 簡(jiǎn)介
二?測(cè)試準(zhǔn)備
三 基本命令格式
四 測(cè)試Log獲取
五?Monkey命令參數(shù)介紹
六?Android?Monkey?test官方資料
?
一、簡(jiǎn)介
Monkey是Android中的一個(gè)命令行工具,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢(shì)輸入等),實(shí)現(xiàn)對(duì)正在開(kāi)發(fā)的應(yīng)用程序進(jìn)行壓力測(cè)試。Monkey包括許多選項(xiàng),它們大致分為四大類:
?
- 基本配置選項(xiàng),如設(shè)置嘗試的事件數(shù)量
- 運(yùn)行約束選項(xiàng),如設(shè)置只對(duì)單獨(dú)的一個(gè)包進(jìn)行測(cè)試
- 事件類型和頻率
- 調(diào)試選項(xiàng)
?
在Monkey運(yùn)行的時(shí)候,它生成事件,并把它們發(fā)給系統(tǒng)。同時(shí),Monkey還對(duì)測(cè)試中的系統(tǒng)進(jìn)行監(jiān)測(cè),對(duì)下列三種情況進(jìn)行特殊處理(自動(dòng)停止):
?
- 如果限定了Monkey運(yùn)行在一個(gè)或幾個(gè)特定的包上,那么它會(huì)監(jiān)測(cè)試圖轉(zhuǎn)到其它包的操作,并對(duì)其進(jìn)行阻止。
- 如果應(yīng)用程序崩潰或接收到任何失控異常,Monkey將停止并報(bào)錯(cuò)。
- 如果應(yīng)用程序產(chǎn)生了應(yīng)用程序不響應(yīng)(application?not?responding)的錯(cuò)誤,Monkey將會(huì)停止并報(bào)錯(cuò)。
?
按照選定的不同級(jí)別的反饋信息,在Monkey中還可以看到其執(zhí)行過(guò)程報(bào)告和生成的事件
?
二、測(cè)試準(zhǔn)備
Monkey?test前必須先進(jìn)入android設(shè)備的adb?shell(Android?SDK環(huán)境配置不在此描述,網(wǎng)上有很多)步驟如下:
1.?開(kāi)始—>運(yùn)行—>cmd???
2.?usb連接手機(jī),輸入?adb?shell?命令,待出現(xiàn)??即可輸入以下內(nèi)容?
3.?進(jìn)入手機(jī)后,輸入相應(yīng)的monkey命令即可測(cè)試
?
?
三、基本命令格式
adb?shell?monkey?–p?程序包?–v?測(cè)試次數(shù)
比如“adb?shell?monkey?–p?com.htc.Weather?–v?20000”意思是對(duì)com.htc.Weather?這個(gè)程序包單獨(dú)進(jìn)行一次20000次的monkey測(cè)試
其中程序包名稱可以在串口終端這句命令獲得:ls?data/data?顯示所有程序包
?
四、測(cè)試Log獲取
用Monkey?test測(cè)試,為了方便分析問(wèn)題,可以在命令monkey命令后面加上?“|logcat?-v?time”,這樣就能邊測(cè)試邊打印Log(記得用終端保存Log文本)例如:
adb?shell?monkey?–p?com.htc.Weather?–v?20000|logcat?-v?time
但是這個(gè)組合在monkey測(cè)試完成后,logcat仍然在執(zhí)行,測(cè)試時(shí)需要注意。
如果測(cè)試monkey碰到crash或者anr(程序強(qiáng)制性退出或不響應(yīng))現(xiàn)象時(shí),在抓取log的同時(shí)需要提供traces.txt,步驟如下:
1.?測(cè)試版本需要具備root權(quán)限
2.?進(jìn)入data/anr目錄下面
3.?將traces.txt文件拷貝到TF卡中,然后拷貝出來(lái)發(fā)給軟件分析即可
?
五、Monkey命令參數(shù)介紹
1)?參數(shù):-p
參數(shù)-p用于約束限制,用此參數(shù)指定一個(gè)或多個(gè)包(Package,即App)。指定
包之后,Monkey將只允許系統(tǒng)啟動(dòng)指定的APP。如果不指定包,Monkey將允許系統(tǒng)啟動(dòng)設(shè)備中的所有APP。
*?指定一個(gè)包:?adb?shell?monkey?-p?com.htc.Weather??100
說(shuō)明:com.htc.Weather為包名,100是事件計(jì)數(shù)(即讓Monkey程序模擬100次隨機(jī)用戶事件)。
*?指定多個(gè)包:adb?shell?monkey?-p?com.htc.Weather?–p?com.htc.pdfreader??-p?com.htc.photo.widgets?100
*?不指定包:adb?shell?monkey?100
說(shuō)明:Monkey隨機(jī)啟動(dòng)APP并發(fā)送100個(gè)隨機(jī)事件。
*?要查看設(shè)備中所有的包,在CMD窗口中執(zhí)行以下命令:
??>adb?shell
??#cd?data/data
??#ls
?
2)?參數(shù):??-v
用于指定反饋信息級(jí)別(信息級(jí)別就是日志的詳細(xì)程度),總共分3個(gè)級(jí)別,分別對(duì)應(yīng)的參數(shù)如下表所示:
日志級(jí)別?Level?0??
示例?adb?shell?monkey?-p?com.htc.Weather?–v?100
說(shuō)明?缺省值,僅提供啟動(dòng)提示、測(cè)試完成和最終結(jié)果等少量信息
?
日志級(jí)別?Level?1
示例?adb?shell?monkey?-p?com.htc.Weather?–v?-v?100
說(shuō)明??提供較為詳細(xì)的日志,包括每個(gè)發(fā)送到Activity的事件信息?
?
日志級(jí)別?Level?2
示例?adb?shell?monkey?-p?com.htc.Weather?–v?-v?–v?100
說(shuō)明??最詳細(xì)的日志,包括了測(cè)試中選中/未選中的Activity信息
?
3)參數(shù):??-s
用于指定偽隨機(jī)數(shù)生成器的seed值,如果seed相同,則兩次Monkey測(cè)試所產(chǎn)生的事件序列也相同的。
*?示例:
Monkey測(cè)試1:adb?shell?monkey?-p?com.htc.Weather?–s?10?100
??Monkey測(cè)試2:adb?shell?monkey?-p?com.htc.Weather?–s?10?100
???兩次測(cè)試的效果是相同的,因?yàn)槟M的用戶操作序列(每次操作按照一定的先后順序所組成的一系列操作,即一個(gè)序列)是一樣的。操作序列雖然是隨機(jī)生成的,但是只要我們指定了相同的Seed值,就可以保證兩次測(cè)試產(chǎn)生的隨機(jī)操作序列是完全相同的,所以這個(gè)操作序列偽隨機(jī)的;
?
4)?參數(shù):??--throttle?<毫秒>
用于指定用戶操作(即事件)間的時(shí)延,單位是毫秒;
*?示例:adb?shell?monkey?-p?com.htc.Weather?–throttle?3000?100
???
5)?參數(shù):??--ignore-crashes
用于指定當(dāng)應(yīng)用程序崩潰時(shí)(Force?&?Close錯(cuò)誤),Monkey是否停止運(yùn)行。如果使用此參數(shù),即使應(yīng)用程序崩潰,Monkey依然會(huì)發(fā)送事件,直到事件計(jì)數(shù)完成。
*?示例1:adb?shell?monkey?-p?com.htc.Weather?--ignore-crashes?1000
??測(cè)試過(guò)程中即使Weather程序崩潰,Monkey依然會(huì)繼續(xù)發(fā)送事件直到事件數(shù)目達(dá)到1000為止;
*?示例2:adb?shell?monkey?-p?com.htc.Weather?1000
??測(cè)試過(guò)程中,如果Weather程序崩潰,Monkey將會(huì)停止運(yùn)行。
?
6)?參數(shù):??--ignore-timeouts
用于指定當(dāng)應(yīng)用程序發(fā)生ANR(Application?No?Responding)錯(cuò)誤時(shí),Monkey是否停止運(yùn)行。如果使用此參數(shù),即使應(yīng)用程序發(fā)生ANR錯(cuò)誤,Monkey依然會(huì)發(fā)送事件,直到事件計(jì)數(shù)完成。
?
7)?參數(shù):??--ignore-security-exceptions
用于指定當(dāng)應(yīng)用程序發(fā)生許可錯(cuò)誤時(shí)(如證書(shū)許可,網(wǎng)絡(luò)許可等),Monkey是否停止運(yùn)行。如果使用此參數(shù),即使應(yīng)用程序發(fā)生許可錯(cuò)誤,Monkey依然會(huì)發(fā)送事件,直到事件計(jì)數(shù)完成。
?
8)?參數(shù):??--kill-process-after-error
用于指定當(dāng)應(yīng)用程序發(fā)生錯(cuò)誤時(shí),是否停止其運(yùn)行。如果指定此參數(shù),當(dāng)應(yīng)用程序發(fā)生錯(cuò)誤時(shí),應(yīng)用程序停止運(yùn)行并保持在當(dāng)前狀態(tài)(注意:應(yīng)用程序僅是靜止在發(fā)生錯(cuò)誤時(shí)的狀態(tài),系統(tǒng)并不會(huì)結(jié)束該應(yīng)用程序的進(jìn)程)。
?
9)?參數(shù):??--monitor-native-crashes
用于指定是否監(jiān)視并報(bào)告應(yīng)用程序發(fā)生崩潰的本地代碼。
?
10)?參數(shù):??--pct-{+事件類別}?{+事件類別百分比}
用于指定每種類別事件的數(shù)目百分比(在Monkey事件序列中,該類事件數(shù)目占總事件數(shù)目的百分比)
?
參數(shù):
使用說(shuō)明:
示例:
?
--pct-touch?{+百分比}
調(diào)整觸摸事件的百分比(觸摸事件是一個(gè)down-up事件,它發(fā)生在屏幕上的某單一位置)
adb?shell?monkey?-p?com.htc.Weather?--pct-touch?10?1000
?
--pct-motion?{+百分比}
調(diào)整動(dòng)作事件的百分比(動(dòng)作事件由屏幕上某處的一個(gè)down事件、一系列的偽隨機(jī)事件和一個(gè)up事件組成)adb?shell?monkey?-p?com.htc.Weather?--pct-motion?20?1000
?
--pct-trackball?{+百分比}
調(diào)整軌跡事件的百分比(軌跡事件由一個(gè)或幾個(gè)隨機(jī)的移動(dòng)組成,有時(shí)還伴隨有點(diǎn)擊)
adb?shell?monkey?-p?com.htc.Weather?--pct-trackball?30?1000
--pct-nav?{+百分比}
?
調(diào)整“基本”導(dǎo)航事件的百分比(導(dǎo)航事件由來(lái)自方向輸入設(shè)備的up/down/left/right組成)
adb?shell?monkey?-p?com.htc.Weather?--pct-nav?40?1000
?
--pct-majornav?{+百分比}
調(diào)整“主要”導(dǎo)航事件的百分比(這些導(dǎo)航事件通常引發(fā)圖形界面中的動(dòng)作,如:5-way鍵盤(pán)的中間按鍵、回退按鍵、菜單按鍵)
adb?shell?monkey?-p?com.htc.Weather?--pct-majornav?50?1000
?
--pct-syskeys?{+百分比}
調(diào)整“系統(tǒng)”按鍵事件的百分比(這些按鍵通常被保留,由系統(tǒng)使用,如Home、Back、Start?Call、End?Call及音量控制鍵)
adb?shell?monkey?-p?com.htc.Weather?--pct-syskeys?60?1000
?
--pct-appswitch?{+百分比}
調(diào)整啟動(dòng)Activity的百分比。在隨機(jī)間隔里,Monkey將執(zhí)行一個(gè)startActivity()調(diào)用,作為最大程度覆蓋包中全部Activity的一種方法
adb?shell?monkey?-p?com.htc.Weather?--pct-appswitch?70?1000
?
--pct-anyevent?{+百分比}
調(diào)整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設(shè)備按鈕、等等
adb?shell?monkey?-p?com.htc.Weather
?
--pct?-anyevent?100?1000*?指定多個(gè)類型事件的百分比:?
adb?shell?monkey?-p?com.htc.Weather?--pct-anyevent?50?--pct-appswitch?50?1000
注意:各事件類型的百分比總數(shù)不能超過(guò)100%;?
原文:http://www.cnblogs.com/zgz345/p/3186811.html
總結(jié)
以上是生活随笔為你收集整理的如何进行Monkey Test的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java中 a+=b和a=a+b有什么区
- 下一篇: 索引原理及几种索引类型区别