在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Monkey 命令行工具
monkeyrunner 簡(jiǎn)介
Android 測(cè)試教程(14):ActivityInstrumentationTestCase2 示例
ApplicationTestCase 示例
Android 測(cè)試教程(13):TestCase 示例
ActivityInstrumentationTestCase2 示例
測(cè)試 Activity
測(cè)試項(xiàng)目
Android 測(cè)試教程(12):ServiceTestCase 示例
測(cè)試相關(guān) API
Monkey 命令行工具
第一個(gè)測(cè)試項(xiàng)目 HelloWorldTest
測(cè)試 Content Provider
Android 測(cè)試教程(11):ActivityUnitTestCase 示例
測(cè)試基礎(chǔ)
AndroidTestCase 示例
測(cè)試 Service

Monkey 命令行工具

寫完應(yīng)用之后,作完單元測(cè)試和功能測(cè)試,有必要對(duì)應(yīng)用的抗打擊能力做個(gè)測(cè)試,最好的方法是雇個(gè)“猴子”在測(cè)試,猴子可以胡亂瞎按鍵,在這種情況下,你的應(yīng)用是否還能正常工作呢?

Android 測(cè)試包中提供了一個(gè) Monkey 工具,就提供了“猴子”功能,不過(guò)比真”猴子“還要智能一些,你還可以指揮這個(gè)猴子, 比如按鍵的比例,觸發(fā)某個(gè)事件的頻率等等。

一個(gè)簡(jiǎn)單的用法,比如你的應(yīng)用程序的包名為:com.pstreets.navigator

可以使用 adb shell monkey -p com.pstreets.navigator -v 500

使用缺省的配置 向應(yīng)用發(fā)送 500 個(gè)隨機(jī)事件(包括按鍵,touch 事件,系統(tǒng)事件等),該命令會(huì)首先啟動(dòng)對(duì)應(yīng)的 Activity,然后向該應(yīng)用發(fā)送隨機(jī)事件:

http://wiki.jikexueyuan.com/project/android-test-course/images/17.1.jpg" alt="picutre17.1" />

Monkey 工具的詳細(xì)說(shuō)明如下:

它是一個(gè)命令行工具 ,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流,實(shí)現(xiàn)對(duì)正在開發(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)行特殊處理:

  • 如果限定了 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)告和生成的事件。

Monkey 基本用法

可以通過(guò)開發(fā)機(jī)器上的命令行或腳本來(lái)啟動(dòng) Monkey。由于 Monkey 運(yùn)行在模擬器/設(shè)備環(huán)境中,所以必須用其環(huán)境中的 shell 來(lái)進(jìn)行啟動(dòng)??梢酝ㄟ^(guò)在每條命令前加上 adb shell 來(lái)達(dá)到目的,也可以進(jìn)入 Shell 后直接輸入 Monkey 命令?;菊Z(yǔ)法如下:

$ adb shell monkey [options]

如果不指定 options,Monkey 將以無(wú)反饋模式啟動(dòng),并把事件任意發(fā)送到安裝 在目標(biāo)環(huán)境中的全部包。下面是一個(gè)更為典型的命令行示例,它啟動(dòng)指定的應(yīng)用程序,并向其發(fā)送 500 個(gè)偽隨機(jī)事件:

$ adb shell monkey -p your.package.name -v 500
–v

命令行的每一個(gè) -v 將增加反饋信息的級(jí)別。 Level 0( 缺省值 ) 除啟動(dòng)提示、測(cè)試完成和最終結(jié)果之外,提供較少信息。 Level 1 提供較為詳細(xì)的測(cè)試信息,如逐個(gè)發(fā)送到 Activity 的事件。 Level 2 提供更加詳細(xì)的設(shè)置信息,如測(cè)試中被選中的或未被選中的 Activity 。 事件

-s

偽隨機(jī)數(shù)生成器的 seed 值。如果用相同的 seed 值再次運(yùn)行 Monkey ,它將生成相同的事件序列。

–throttle

在事件之間插入固定延遲。通過(guò)這個(gè)選項(xiàng)可以減緩 Monkey 的執(zhí)行速度。如果不指定該選項(xiàng), Monkey 將不會(huì)被延遲,事件將盡可能快地被產(chǎn)成。

–pct-touch

調(diào)整觸摸事件的百分比 ( 觸摸事件是一個(gè) down-up 事件,它發(fā)生在屏幕上的某單一位置 ) 。

–pct-motion

調(diào)整動(dòng)作事件的百分比 ( 動(dòng)作事件由屏幕上某處的一個(gè) down 事件、一系列 的偽隨機(jī)事件和一個(gè) up 事件組成 ) 。

–pct-trackball

調(diào)整軌跡事件的百分比 ( 軌跡事件由一個(gè)或幾個(gè)隨機(jī)的移動(dòng)組成,有時(shí)還伴隨有點(diǎn)擊 ) 。

–pct-nav

調(diào)整“基本”導(dǎo)航事件的百分比 ( 導(dǎo)航事件由來(lái)自方向輸入設(shè)備的 up/down/left/right 組成 ) 。

–pct-majornav

調(diào)整“主要”導(dǎo)航事件的百分比 ( 這些導(dǎo)航事件通常引發(fā)圖形界面中的動(dòng)作,如: 5-way 鍵盤的中間按鍵、回退按鍵、菜單按鍵 )

–pct-syskeys

調(diào)整“系統(tǒng)”按鍵事件的百分比 ( 這些按鍵通常被保留,由系統(tǒng)使用,如 Home 、 Back 、 Start Call 、 End Call 及音量控制鍵 ) 。

–pct-appswitch

調(diào)整啟動(dòng) Activity 的百分比。在隨機(jī)間隔里, Monkey 將執(zhí)行一個(gè) startActivity () 調(diào)用,作為最大程度覆蓋包中全部 Activity 的一種方法。

–pct-anyevent

調(diào)整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設(shè)備按鈕、等等。 約束限制

-p

如果用此參數(shù)指定了一個(gè)或幾個(gè)包, Monkey 將只允許系統(tǒng)啟動(dòng)這些包里的 Activity 。如果你的應(yīng)用程序還需要訪問(wèn)其它包里的 Activity( 如選擇取一個(gè)聯(lián)系人 ) ,那些包也需要在此同時(shí)指定。如果不指定任何包, Monkey 將允許系統(tǒng)啟動(dòng)全部包里的 Activity 。要指定多個(gè)包,需要使用多個(gè) -p 選項(xiàng),每個(gè) -p 選項(xiàng)只能用于一個(gè)包。

-c

如果用此參數(shù)指定了一個(gè)或幾個(gè)類別, Monkey 將只允許系統(tǒng)啟動(dòng)被這些類別中的某個(gè)類別列出的 Activity 。如果不指定任何類別, Monkey 將選擇下列類別中列出的 Activity : Intent.CATEGORY_LAUNCHER 或 Intent.CATEGORY_MONKEY 。要指定多個(gè)類別,需要使用多個(gè) -c 選項(xiàng),每個(gè) -c 選項(xiàng)只能用于一個(gè)類別。

調(diào)試

–dbg-no-events

設(shè)置此選項(xiàng), Monkey 將執(zhí)行初始啟動(dòng),進(jìn)入到一個(gè)測(cè)試 Activity ,然后不會(huì)再進(jìn)一步生成事件。為了得到最佳結(jié)果,把它與 -v 、一個(gè)或幾個(gè)包約束、以及一個(gè)保持 Monkey 運(yùn)行 30 秒或更長(zhǎng)時(shí)間的非零值聯(lián)合起來(lái),從而提供一個(gè)環(huán)境,可以監(jiān)視應(yīng)用程序所調(diào)用的包之間的轉(zhuǎn)換。

–hprof

設(shè)置此選項(xiàng),將在 Monkey 事件序列之前和之后立即生成 profiling 報(bào)告。這將會(huì)在 data/misc 中生成大文件 (~5Mb) ,所以要小心使用它。

–ignore-crashes

通常,當(dāng)應(yīng)用程序崩潰或發(fā)生任何失控異常時(shí), Monkey 將停止運(yùn)行。如果設(shè)置此選項(xiàng), Monkey 將繼續(xù)向系統(tǒng)發(fā)送事件,直到計(jì)數(shù)完成。

–ignore-timeouts

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

–ignore-security-exceptions

通常,當(dāng)應(yīng)用程序發(fā)生許可錯(cuò)誤 ( 如啟動(dòng)一個(gè)需要某些許可的 Activity) 時(shí), Monkey 將停止運(yùn)行。如果設(shè)置了此選項(xiàng), Monkey 將繼續(xù)向系統(tǒng)發(fā)送事件,直到計(jì)數(shù)完成。

–kill-process-after-error

通常,當(dāng) Monkey 由于一個(gè)錯(cuò)誤而停止時(shí),出錯(cuò)的應(yīng)用程序?qū)⒗^續(xù)處于運(yùn)行狀態(tài)。當(dāng)設(shè)置了此選項(xiàng)時(shí),將會(huì)通知系統(tǒng)停止發(fā)生錯(cuò)誤的進(jìn)程。注意,正常的 ( 成功的 ) 結(jié)束,并沒(méi)有停止啟動(dòng)的進(jìn)程,設(shè)備只是在結(jié)束事件之后,簡(jiǎn)單地保持在最后的狀態(tài)。

–monitor-native-crashes

監(jiān)視并報(bào)告 Android 系統(tǒng)中本地代碼的崩潰事件。如果設(shè)置了 –kill-process-after-error ,系統(tǒng)將停止運(yùn)行。

–wait-dbg

停止執(zhí)行中的 Monkey ,直到有調(diào)試器和它相連接。