Android自带Monkey测试
Monkey是在模擬器上或設備上運行的一個小程序,它能夠產生為隨機的用戶事件流,例如點擊(click),觸摸(touch),揮手(gestures),還有一系列的系統級事件。可以使用Monkey來給正在開發的程序做隨機的,可重復的壓力測試 。
Monkey基本用法
可以通過開發機器上的命令行或腳本來啟動Monkey。由于Monkey運行在模擬器/設備環境中,所以必須用其環境中的shell來進行啟動。可以通過在每條命令前加上adb shell來達到目的,也可以進入Shell后直接輸入Monkey命令。基本語法如下:
$ adb shell monkey[options]
如果不指定options,Monkey將以無反饋模式啟動,并把事件任意發送到安裝在目標環境中的全部包。下面是一個更為典型的命令行示例,它啟動指定的應用程序,并向其發送500個偽隨機事件:
$ adb shell monkey-p your.package.name -v 500
| 類別 ? | 選項 ? | 說明 ? |
| 常規 ? | --help ? | 列出簡單的用法。 ? |
| -v ? | 命令行的每一個-v將增加反饋信息的級別。Level 0(缺省值)除啟動提示、測試完成和最終結果之外,提供較少信息。Level 1提供較為詳細的測試信息,如逐個發送到Activity的事件。Level 2提供更加詳細的設置信息,如測試中被選中的或未被選中的Activity。 ? | |
| 事件 ? | -s <seed> ? | 偽隨機數生成器的seed值。如果用相同的seed值再次運行Monkey,它將生成相同的事件序列。 ? |
| --throttle <milliseconds> ? | 在事件之間插入固定延遲。通過這個選項可以減緩Monkey的執行速度。如果不指定該選項,Monkey將不會被延遲,事件將盡可能快地被產成。 ? | |
| --pct-touch <percent> ? | 調整觸摸事件的百分比(觸摸事件是一個down-up事件,它發生在屏幕上的某單一位置)。 ? | |
| --pct-motion <percent> ? | 調整動作事件的百分比(動作事件由屏幕上某處的一個down事件、一系列的偽隨機事件和一個up事件組成)。 ? | |
| --pct-trackball <percent> ? | 調整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊)。 ? | |
| --pct-nav <percent> ? | 調整“基本”導航事件的百分比(導航事件由來自方向輸入設備的up/down/left/right組成)。 ? | |
| --pct-majornav <percent> ? | 調整“主要”導航事件的百分比(這些導航事件通常引發圖形界面中的動作,如:5-way鍵盤的中間按鍵、回退按鍵、菜單按鍵) ? | |
| --pct-syskeys <percent> ? | 調整“系統”按鍵事件的百分比(這些按鍵通常被保留,由系統使用,如Home、Back、Start Call、End Call及音量控制鍵)。 ? | |
| --pct-appswitch <percent> ? | 調整啟動Activity的百分比。在隨機間隔里,Monkey將執行一個startActivity()調用,作為最大程度覆蓋包中全部Activity的一種方法。 ? | |
| --pct-anyevent <percent> ? | 調整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設備按鈕、等等。 ? | |
| 約束限制 ? | -p <allowed-package-name> ? | 如果用此參數指定了一個或幾個包,Monkey將只允許系統啟動這些包里的Activity。如果你的應用程序還需要訪問其它包里的Activity(如選擇取一個聯系人),那些包也需要在此同時指定。如果不指定任何包,Monkey將允許系統啟動全部包里的Activity。要指定多個包,需要使用多個-p選項,每個-p選項只能用于一個包。 ? |
| -c <main-category> ? | 如果用此參數指定了一個或幾個類別,Monkey將只允許系統啟動被這些類別中的某個類別列出的Activity。如果不指定任何類別,Monkey將選擇下列類別中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多個類別,需要使用多個-c選項,每個-c選項只能用于一個類別。 ? | |
| 調試 ? | --dbg-no-events ? | 設置此選項,Monkey將執行初始啟動,進入到一個測試Activity,然后不會再進一步生成事件。為了得到最佳結果,把它與-v、一個或幾個包約束、以及一個保持Monkey運行30秒或更長時間的非零值聯合起來,從而提供一個環境,可以監視應用程序所調用的包之間的轉換。 ? |
| --hprof ? | 設置此選項,將在Monkey事件序列之前和之后立即生成profiling報告。這將會在data/misc中生成大文件(~5Mb),所以要小心使用它。 ? | |
| --ignore-crashes ? | 通常,當應用程序崩潰或發生任何失控異常時,Monkey將停止運行。如果設置此選項,Monkey將繼續向系統發送事件,直到計數完成。 ? | |
| --ignore-timeouts ? | 通常,當應用程序發生任何超時錯誤(如“Application Not Responding”對話框)時,Monkey將停止運行。如果設置此選項,Monkey將繼續向系統發送事件,直到計數完成。 ? | |
| --ignore-security-exceptions ? | 通常,當應用程序發生許可錯誤(如啟動一個需要某些許可的Activity)時,Monkey將停止運行。如果設置了此選項,Monkey將繼續向系統發送事件,直到計數完成。 ? | |
| --kill-process-after-error ? | 通常,當Monkey由于一個錯誤而停止時,出錯的應用程序將繼續處于運行狀態。當設置了此選項時,將會通知系統停止發生錯誤的進程。注意,正常的(成功的)結束,并沒有停止啟動的進程,設備只是在結束事件之后,簡單地保持在最后的狀態。 ? | |
| --monitor-native-crashes ? | 監視并報告Android系統中本地代碼的崩潰事件。如果設置了--kill-process-after-error,系統將停止運行。 ? | |
| --wait-dbg ? | 停止執行中的Monkey,直到有調試器和它相連接。 ? |
??
1.Android中的應用包名(可與開發確認)
? com.android.browser
?com.android.launcher
?com.android.settings
?com.android.calculator2
?com.android.contacts
?com.android.calendar
?com.android.alarmclock
?com.android.music
2.monkey 應用:
? (1)測試系統:
adb shell?monkey –v 10000
(2)測試應用如Browser:
? adb shell?monkey –pcom.android.browser –v 10000
(3)提取測試結果:
? 1)先把結果存入模擬器或者設備的sdcard中:
??? adb shell?monkey –pcom.android.browser –v 10000 > /sdcard/browser1.log?exit
?? 2)用adb 命令把log文件考到本地:
??? adb pull/sdcard/browser1.log ?D:\log\
?? 3)用Editplus 打開.即使可看到測試結果.
3.關于-p 與-v的說明:
? -p:指定應用包.一個-p只能指定一個應用包,可用多個-p指定多個應用包.?
? -v:
零個-v,得到的結果信息非常少(我測的時候,什么結果也沒有)
一個-v:得到的信息稍多一些.
兩個-v:得到的信息非常多.
關于-v的更具體的信息,請看上面的表格.
4.關于-s:
? s-------seed :種子的意思.看下面的例子:
?adb shell?monkey –p com.android.browser–s 1 –v 1000
?以上命令會得到一系列事件的模擬,如果你還想把剛剛模擬的事件原模原樣地重復一遍,那么就用同樣的seed 值,如果不想重復剛剛模擬的隨機事件,就換一個-s 值.如果你輸入下面的命令:
monkey –p com.android.browser –s 2 –v 1000
你的隨機事件就發生變化了.不再是原來的隨機事件.缺省-s的模擬事件與上一次的相同,所以建議加上-s,以確保對隨機模擬事件的控制.
5.關于--throttle
?這是事件延遲參數
?1)如果不加這個參數,兩個事件之間不存在延遲,這樣對系統的壓力會比較大.
?2)加上延遲,其后面接的單位是毫秒.如:
? adb shell? monkey -pcom.android.browser -s 1 --throttle 300 -v 1000
? 執行以上命令之后,monkey 的兩個隨機事件之間要有300毫秒的延遲.至于何時用這個參數,要根據性能測試的需要.
6.關于查看結果:
? 1)如果一切正常.不會存在memeinfo以及 CUP 占用信息.
? 2)如果應用有問題,在未加其他相關參數的情況下,會在有問題的事件/應用處停止,如果涉及到mem 以及 CPU信息,則會列出此信息.在停止的位置會顯示出錯的事件/應用的名字.查看時應留意.(關于如何查看,仍然在調查中)
7.關于其他參數.正在調查中.?
參考文章:
Android自帶了很多方便的測試工具和方法,包括我們常用的單元測試、Robotium測試、Monkey測試、MonkeyRunner測試、senevent模擬等。這些方法對于我們編寫高質量的APP十分有用。也可以提前暴露我們程序的隱藏問題。今天給大家講一下Monkey測試,Monkey測試可以說是我上面提到過的測試方法里面最簡單的。??
1、Monkey測試簡介
Monkey主要應用在壓力和可靠性測試上,運行該命令可以隨機地向目標程序發送各種模擬鍵盤事件流,并且可以自己定義發送的次數,以此觀察被測應用程序的穩定性和可靠性,應用起來也比較簡單,記住那幾個命令就行了。
- Monkey程序由Android系統自帶,使用Java語言寫成,在Android文件系統中的存放路徑是:/system/framework/monkey.jar
- Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執行,shell腳本在Android文件系統中的存放路徑是:/system/bin/monkey
?
2、Monkey的基本用法
$ adb shell monkey [options]如果不指定options,Monkey將以無反饋模式啟動,并把事件任意發送到安裝在目標環境中的全部包。下面是一個常見用法的示例,它啟動指定的應用程序,并向其發送100個偽隨機事件:
$ adb shell monkey -p package_name -v 100?
3、Monkey測試例子
上面就是一個使用Monkey測試Launcher的例子,因為對某個APP進行測試的時候,需要指定APP的包名,我們可以先進入data\data目錄下面,看看有哪些APP包。
?
4、Monkey測試停止條件
Monkey Test執行過程中在下列三種情況下會自動停止:
- 如果限定了Monkey運行在一個或幾個特定的包上,那么它會監測試圖轉到其它包的操作,并對其進行阻止。
- 如果應用程序崩潰或接收到任何失控異常,Monkey將停止并報錯。
- 如果應用程序產生了應用程序不響應(application not responding)的錯誤,Monkey將會停止并報錯。
?
?
5、Monkey詳細參數
下面是Monkey的詳細參數表,圖片是從CSDN一位開發者的博客上截取的。
6、結語
Monkey測試是Android自動化測試里面使用比較簡單的方法,可以很大程度檢驗我們的程序是否穩定,能否經得起壓力測試,可以根據實際情況調整測試的強度和測試重點。這個也是我在開發APP的時候最常用的方法,基本上每個版本發布之前,我都會進行比較高強度的Monkey測試,就像我每次發布Launcher之前都會進行1W次Monkey測試。系統集成后,再進行整體的壓力測試。
最后說一句,Monkey測試只是一個模擬測試,很多時候跟實際情況時有差別的。所以這個只能是其中一個輔助測試,后面有空再講解其他的自動化測試方法。?
參考網址:http://developer.android.com/tools/help/monkey.html
轉載于:https://www.cnblogs.com/aikongmeng/p/3697329.html
總結
以上是生活随笔為你收集整理的Android自带Monkey测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VB6:通过ADO访问Oracle存储过
- 下一篇: windows虚拟显示器SDK开发和提供