




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一、簡介monkey是Android中的一個(gè)命令行工具,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實(shí)現(xiàn)對正在開發(fā)的應(yīng)用程序進(jìn)行壓力測試。Monkey測試是一種為了測試軟件的穩(wěn)定性、健壯性的快速有效的方法。特征如下:A、測試的對象僅為應(yīng)用程序包,有一定的局限性。B、Monkey測試使用的事件流數(shù)據(jù)流是隨機(jī)的,不能進(jìn)行自定義。C、可對MonkeyTest的對象、事件數(shù)量、類型、頻率等進(jìn)行設(shè)置monkey是根植在Android系統(tǒng)中的??梢杂胊db shell進(jìn)入Android命令行后輸入monkey啟動,也可以直接用adb shell m
2、onkey啟動。我們假設(shè)已經(jīng)用adb shell進(jìn)入了Android命令行模式。一個(gè)最簡單的例子:#monkey -p com.android.browser 500monkey包括許多選項(xiàng),它們大致分為四大類:l 基本配置選項(xiàng),如設(shè)置嘗試的事件數(shù)量l 運(yùn)行約束選項(xiàng),如設(shè)置只對單獨(dú)的一個(gè)包進(jìn)行測試l 事件類型和頻率l 調(diào)試選項(xiàng)在monkey運(yùn)行的時(shí)候,它生成事件,并把它們發(fā)給系統(tǒng)。同時(shí),monkey還對測試中的系統(tǒng)進(jìn)行監(jiān)測,對下列三種情況進(jìn)行特殊處理(自動停止):l 如果限定了monkey運(yùn)行在一個(gè)或幾個(gè)特定的包上,那么它會監(jiān)測試圖轉(zhuǎn)到其它包的操作,并對其進(jìn)行阻止;l 如果應(yīng)用程序崩潰或接收到
3、任何失控異常,monkey將停止并報(bào)錯;l 如果應(yīng)用程序產(chǎn)生了應(yīng)用程序不響應(yīng)(application not responding)的錯誤,monkey將會停止并報(bào)錯。按照選定的不同級別的反饋信息,在monkey中還可以看到其執(zhí)行過程報(bào)告和生成的事件二、環(huán)境部署三、測試準(zhǔn)備Monkey測試前必須先進(jìn)入android設(shè)備的adb shell步驟如下:1. 開始>運(yùn)行>cmd 2. usb連接手機(jī),輸入 adb shell 命令,待出現(xiàn) 即可輸入以下內(nèi)容
4、;3. 進(jìn)入手機(jī)后,輸入相應(yīng)的monkey命令即可測試 四、基本命令格式adb shell monkey p 程序包 v 測試次數(shù)比如:“adb shell monkey p com.htc.Weather v 20000”意思是對com.htc.Weather這個(gè)程序包單獨(dú)進(jìn)行一次20000次的monkey測試其中程序包名稱可以在串口終端這句命令獲得:ls data/data 顯示所有程序包 五、測試Log獲取用monkey
5、測試,為了方便分析問題,可以在命令monkey命令后面加上 “|logcat -v time”,這樣就能邊測試邊打印log(記得用終端保存log文本)例如:adb shell monkey p com.htc.Weather v 20000|logcat -v time但是這個(gè)組合在monkey測試完成后,logcat仍然在執(zhí)行,測試時(shí)需要注意。如果測試monkey碰到crash或者anr(程序崩潰或不響應(yīng))現(xiàn)象時(shí),在抓取log的同時(shí)需要提供traces.txt,步驟如下:1.
6、0;測試版本需要具備root權(quán)限2. 進(jìn)入data/anr目錄下面3. 將traces.txt文件拷貝到TF卡中,然后拷貝出來發(fā)給軟件分析即可 六、monkey命令參數(shù)介紹1) p用于約束限制,指定一個(gè)或多個(gè)包(Package,即App)。指定包之后,monkey將只允許系統(tǒng)啟動指定的APP。如果不指定包,monkey將允許系統(tǒng)啟動設(shè)備中的所有APP。要指定多個(gè)包,需要使用多個(gè) -p選項(xiàng),每個(gè)-p選項(xiàng)只能用于一個(gè)包。指定一個(gè)包 adb shell monkey -p com.htc.Weather
7、0; 100說明: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說明:monkey隨機(jī)啟動APP并發(fā)送100個(gè)隨機(jī)事件。* 要查看設(shè)備中所有的包,在cmd窗口中執(zhí)
8、行以下命令: >adb shell #cd data/data #ls 2) -v用于指定反饋信息級別(信息級別就是日志的詳細(xì)程度),總共分3個(gè)級別,分別對應(yīng)的參數(shù)如下表所示:日志級別 Level 0 示例:adb shell monkey -p com.htc.Weather v 100說明:缺省值,僅提供啟動提示、測試完成和最終結(jié)果等少量信息 日志級別 Lev
9、el 1示例:adb shell monkey -p com.htc.Weather v -v 100說明:提供較為詳細(xì)的日志,包括每個(gè)發(fā)送到Activity的事件信息 日志級別 Level 2示例:adb shell monkey -p com.htc.Weather v -v v 100說明:最詳細(xì)的日志,包括了測試中選中/未選中的Activity信息 3) -s用于指定
10、偽隨機(jī)數(shù)生成器的seed值,如果seed相同,則兩次monkey測試所產(chǎn)生的事件序列也相同的。* 示例:monkey測試1:adb shell monkey -p com.htc.Weather s 10 100 monkey測試2:adb shell monkey -p com.htc.Weather s 10 100 兩次測試的效果是相同的,因?yàn)槟M的用戶操作序列(每次操作按照一定的先后
11、順序所組成的一系列操作,即一個(gè)序列)是一樣的。操作序列雖然是隨機(jī)生成的,但是只要我們指定了相同的seed值,就可以保證兩次測試產(chǎn)生的隨機(jī)操作序列是完全相同的,所以這個(gè)操作序列偽隨機(jī)的; 4) -throttle(設(shè)置事件間延時(shí))用于指定用戶操作(即事件)間的時(shí)延,單位是毫秒;在事件之間插入固定延遲。通過這個(gè)選項(xiàng)可以減緩Monkey的執(zhí)行速度。如果不指定該選項(xiàng), Monkey將不會被延遲,事件將盡可能快地被生成。示例:adb shell monkey -p com.htc.Weather -throttle 3000
12、 100 5) -ignore-crashes(忽略崩潰)用于指定當(dāng)應(yīng)用程序崩潰時(shí)(Force & Close錯誤),monkey是否停止運(yùn)行。如果使用此參數(shù),即使應(yīng)用程序崩潰,monkey依然會發(fā)送事件,直到事件計(jì)數(shù)完成。示例1:adb shell monkey -p com.htc.Weather -ignore-crashes 1000測試過程中即使Weather程序崩潰,monkey依然會繼續(xù)發(fā)送事件直到事件數(shù)目達(dá)到1000為止;示例2:adb shell
13、160;monkey -p com.htc.Weather 1000測試過程中,如果Weather程序崩潰,monkey將會停止運(yùn)行。 6) -ignore-timeouts(忽略超時(shí))用于指定當(dāng)應(yīng)用程序發(fā)生ANR(Application No Responding)錯誤時(shí),monkey是否停止運(yùn)行。如果使用此參數(shù),即使應(yīng)用程序發(fā)生ANR錯誤,monkey依然會發(fā)送事件,直到事件計(jì)數(shù)完成。 7) -ignore-security-exceptions(忽略安全異常)用于指定當(dāng)應(yīng)用程序發(fā)生許可錯誤時(shí)(如證書許可、網(wǎng)絡(luò)
14、許可、啟動一個(gè)需要某些許可的Activity等),monkey是否停止運(yùn)行。如果使用此參數(shù),即使應(yīng)用程序發(fā)生許可錯誤,monkey依然會發(fā)送事件,直到事件計(jì)數(shù)完成。 8) -kill-process-after-error(錯誤后殺進(jìn)程)用于指定當(dāng)應(yīng)用程序發(fā)生錯誤時(shí),是否停止其運(yùn)行。如果指定此參數(shù),當(dāng)應(yīng)用程序發(fā)生錯誤時(shí),應(yīng)用程序停止運(yùn)行并保持在當(dāng)前狀態(tài)(注意:應(yīng)用程序僅是靜止在發(fā)生錯誤時(shí)的狀態(tài),系統(tǒng)并不會結(jié)束該應(yīng)用程序的進(jìn)程)。通常,當(dāng)Monkey由于一個(gè)錯誤而停止時(shí),出錯的應(yīng)用程序?qū)⒗^續(xù)處于運(yùn)行狀態(tài)。當(dāng)設(shè)置了此選項(xiàng)時(shí),將會通知系統(tǒng)停止發(fā)生錯誤的進(jìn)程。注意,正常的(成功的)結(jié)束,并沒
15、有停止啟動的進(jìn)程,設(shè)備只是在結(jié)束事件之后,簡單地保持在最后的狀態(tài)。9) -monitor-native-crashes監(jiān)視并報(bào)告Android系統(tǒng)中本地代碼的崩潰事件。如果設(shè)置了-kill-process-after-error,系統(tǒng)將停止運(yùn)行。10) -pct-+事件類別 +事件類別百分比用于指定每種類別事件的數(shù)目百分比(在monkey事件序列中,該類事件數(shù)目占總事件數(shù)目的百分比) 參數(shù):使用說明:示例:-pct-touch +百分比 -觸摸事件調(diào)整觸摸事件的百分比(觸摸事件是一個(gè)down-up事件,它發(fā)生在屏幕上的某單一位置)adb she
16、ll monkey -p com.htc.Weather -pct-touch 10 1000-pct-motion +百分比 -動作事件調(diào)整動作事件的百分比(動作事件由屏幕上某處的一個(gè)down事件、一系列的偽隨機(jī)事件和一個(gè)up事件組成)adb shell monkey -p com.htc.Weather -pct-motion 20 1000 -pct-trackball +百分比-軌跡事件調(diào)整軌跡事件的百分比(軌跡事件由一個(gè)或幾個(gè)
17、隨機(jī)的移動組成,有時(shí)還伴隨有點(diǎn)擊)adb shell monkey -p com.htc.Weather -pct-trackball 30 1000-pct-nav +百分比-基本導(dǎo)航事件調(diào)整基本導(dǎo)航事件的百分比(導(dǎo)航事件由來自方向輸入設(shè)備的up/down/left/right組成)adb shell monkey -p com.htc.Weather -pct-nav 40 1000 -pct-majornav +百分比-
18、主要導(dǎo)航事件調(diào)整主要導(dǎo)航事件的百分比(這些導(dǎo)航事件通常引發(fā)圖形界面中的動作,如:5-way鍵盤的中間按鍵、回退按鍵、菜單按鍵)adb shell monkey -p com.htc.Weather -pct-majornav 50 1000 -pct-syskeys +百分比-系統(tǒng)按鍵事件調(diào)整系統(tǒng)按鍵事件的百分比(這些按鍵通常被保留,由系統(tǒng)使用,如Home、Back、Start Call、End Call及音量控制鍵)adb shell monkey -p
19、 com.htc.Weather -pct-syskeys 60 1000 -pct-appswitch +百分比-啟動Activity的百分比調(diào)整啟動Activity的百分比。在隨機(jī)間隔里,monkey將執(zhí)行一個(gè)startActivity()調(diào)用,作為最大程度覆蓋包中全部Activity的一種方法adb shell monkey -p com.htc.Weather -pct-appswitch 70 1000 -pct-anyevent +百
20、分比調(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ù)
21、不能超過100%; 11)-c <main-category>如果用此參數(shù)指定了一個(gè)或幾個(gè)類別,Monkey將只允許系統(tǒng)啟動被這些類別中的某個(gè)類別列出的Activity。如果不指定任何類別,Monkey將選擇下列類別中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多個(gè)類別,需要使用多個(gè)-c選項(xiàng),每個(gè)-c選項(xiàng)只能用于一個(gè)類別。12)-dbg-no-events設(shè)置此選項(xiàng),Monkey將執(zhí)行初始啟動,進(jìn)入到一個(gè)測試Activity,然后不會再進(jìn)一步生成事件。為了得到最佳結(jié)果,把它與-v、一個(gè)或幾
22、個(gè)包約束、以及一個(gè)保持Monkey運(yùn)行30秒或更長時(shí)間的非零值聯(lián)合起來,從而提供一個(gè)環(huán)境,可以監(jiān)視應(yīng)用程序所調(diào)用的包之間的轉(zhuǎn)換。13)-hprof 設(shè)置此選項(xiàng),將在Monkey事件序列之前和之后立即生成profiling報(bào)告。這將會在data/misc中生成大文件(5Mb),所以要小心使用它。14)-wait-dbg停止執(zhí)行中的Monkey,直到有調(diào)試器和它相連接。七、實(shí)例應(yīng)用股票測試:#adb shell monkey p com.ebensz.stock v 500這條命令解釋:-p com.ebensz.stock是指定測試的程序,-v是顯示默認(rèn)程度的信息,最后count就是事件數(shù)設(shè)定為
23、500假如:運(yùn)行結(jié)束后,結(jié)果顯示為:* System appears to have crashed at event 48 of 500 using seed 0系統(tǒng)在500個(gè)操作的第48個(gè)操作里出現(xiàn)了異常,用的種子是0。0就是偽隨機(jī)數(shù)的種子。我們下次想用相同的操作序列再現(xiàn)這個(gè)異常,只需要:#adb shell monkey -p com.ebensz.stock -s 0 500同時(shí)能在這個(gè)測試的結(jié)果中看到報(bào)錯的log信息首先我們應(yīng)該明白我們不可能使用monkey來制定做一樣測試,重復(fù)做很多次,因?yàn)?monkey是偽隨機(jī)的,就是說雖然有一定規(guī)律可循,但是并不是我們就可以指定動作,但是我們可以通過添加命令選項(xiàng)來將操作限制在一定的范圍內(nèi)。如剛才的股票測試:#adb shell monkey p com.ebensz.stock -throttle 50 -pct-anyevent 100 v 500這條命令的解釋:-throttle 50 設(shè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遺產(chǎn)分房協(xié)議書范本
- 個(gè)人房屋抵押合同
- 配電箱組裝培訓(xùn)
- 《啟迪-課件素材》課件
- 車輛開運(yùn)輸發(fā)票合同協(xié)議
- 遠(yuǎn)程醫(yī)療服務(wù)合同協(xié)議
- 河道入股協(xié)議書
- 郵送廣告制作合同協(xié)議
- 跪求個(gè)人協(xié)議合同協(xié)議
- 送菜合同協(xié)議書模板
- 量子信息與量子計(jì)算課件
- 優(yōu)秀初三600字入團(tuán)申請書
- 獨(dú)居石稀土精礦的氫氧化鈉分解工藝技術(shù)
- 手弧焊的基本操作
- 漢密爾頓抑郁量表(HAMD)
- 施工項(xiàng)目安全交底確認(rèn)書
- 國際機(jī)票后端引擎緩存系統(tǒng)架構(gòu)
- 貴州干部履歷表(2023版)
- 滿堂支架現(xiàn)澆砼連續(xù)箱梁的監(jiān)理實(shí)施細(xì)則
- “楓橋經(jīng)驗(yàn)”PPT課件
- 30萬噸年煤制甲醇變換工段初步設(shè)計(jì)
評論
0/150
提交評論