1. 程式人生 > >使用monkey進行android穩定性測試

使用monkey進行android穩定性測試

Monkey是android sdk自帶的自動化測試工具,主要用於測試穩定性,執行該命令可以隨機地向目標程式傳送各種模擬鍵盤事件流,並且可以自己定義傳送的次數,以此觀察被測應用程式的穩定性和可靠性。
基本用法:

$ adb shell monkey [options]

Monkey Test執行過程中在下列三種情況下會自動停止:

  1. 如果限定了Monkey執行在一個或幾個特定的包上,那麼它會監測試圖轉到其它包的操作,並對其進行阻止。
  2. 如果應用程式崩潰或接收到任何失控異常,Monkey將停止並報錯。
  3. 如果應用程式產生了應用程式不響應(application notresponding)的錯誤,Monkey將會停止並報錯。

示例:

adb shell monkey -p com.xunlei.timealbum -v-v 50000 -s 1001 --throttle 400 --pct-touch 40 --pct-motion 20 --pct-appswitch 5 --ignore-crashes --ignore-timeouts >d:\monkey.txt

解釋:
1. 執行monkey測試
2. 指定app包為:com.xunlei.timealbum
3. 指定日誌輸出級別為:-v-v
4. 指定執行次數為50000
5. 指定本次執行的編號是1001,便於後續回放
6. 指定每次操作的時間間隔為:400ms
7. 指定touch事件的佔比為:40%
8. 指定motion事件的佔比為:20%
9. 指定appswitch事件的佔比為:5%
10. 指定無視crashes:–ignore-crashes
11. 指定無視ANR:–ignore-timeouts
12. 指定日誌輸出到:d:\monkey.txt檔案

monkey相關的引數options 解釋:

常規類引數

1、-help
作用:列出簡單的用法

例:adb shell monkey -help 也可不寫help

2、-v
作用:命令列上的每一個-v都將增加反饋資訊的詳細級別。
Level0(預設),除了啟動、測試完成和最終結果外只提供較少的資訊。
Level1,提供了較為詳細的測試資訊,如逐個傳送到Activity的事件資訊。
Level2,提供了更多的設定資訊,如測試中選中或未選中的Activity資訊。

比較常用的是-v -v -v,即最多詳細資訊,一般會儲存到指定檔案中供開發人員查詢bug原因時使用。

例:adb shell monkey -v 10

事件類引數

1、-s
作用:偽隨機數生成器的seed值。如果用相同的seed值再次執行monkey,將生成相同的事件序列。
例:adb shell monkey -s 1483082208904 -v 10

2、–throttle
作用:在事件之間插入固定的時間(毫秒)延遲,你可以使用這個設定來減緩Monkey的執行速度,如果你不指定這個引數,則事件之間將沒有延遲,事件將以最快的速度生成。
注:常用引數,一般設定為300毫秒,原因是實際使用者操作的最快300毫秒左右一個動作事件,所以此處一般設定為300毫秒。
例:adb shell monkey –throttle 300 -v 10

3、–pct-touch
作用:調整觸控事件的百分比。(觸控事件是指在螢幕中的一個down-up事件,即在螢幕某處按下並擡起的操作)
注:常用引數,此引數設定要適應當前被測應用程式的操作,比如一個應用80%的操作都是觸控,那就可以將此引數的百分比設定成相應較高的百分比。
例:adb shell monkey –pct-touch 100 -v 10

4、–pct-motion
作用:調整motion事件百分比。(motion事件是由螢幕上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成)
注:常用引數,需注意的是移動事件是直線滑動
例:adb shell monkey –pct-motion 100 -v 10

5、–pct-trackball
作用:調整滾動球事件百分比。(滾動球事件由一個或多個隨機的移動事件組成,有時會伴隨著點選事件)
注:不常使用引數,現在手機幾乎沒有滾動球,但滾動球事件中包含曲線滑動事件,在被測程式需要曲線滑動時可以選用此引數。
例:adb shell monkey –pct-trackball 100 -v 10

6、–pct-nav
作用:調整基本的導航事件百分比。(導航事件由方向輸入裝置的上下左右按鍵所觸發的事件組成)
注:不常用操作。
例:adb shell monkey –pct-nav 100 -v 10

7、–pct-majornav
作用:調整主要導航事件的百分比。(這些導航事件通常會導致UI介面中的動作事件,如5-way鍵盤的中間鍵,回退按鍵、選單按鍵)
注:不常用操作。
例:adb shell monkey –pct-majornav 100 -v 10

8、–pct-syskeys
作用:調整系統事件百分比。(這些按鍵通常由系統保留使用,如Home、Back、Start Call、End Call、音量調節)
注:不常用。
例:adb shell monkey –pct-syskeys 100 -v 10

9、–pct-appswitch
作用:調整Activity啟動的百分比。(在隨機的時間間隔中,Monkey將執行一個startActivity()呼叫,作為最大程度覆蓋被測包中全部Activity的一種方法)
注:不常用。
例:adb shell monkey –pct-appswitch 100 -v 5

10、–pct-anyevent
作用:調整其他事件的百分比。(這包含所有其他事件,如按鍵、其他在裝置上不常用的按鈕等)
注:不常用。
例:adb shell monkey –pct-anyevent 100 -v 5

約束類引數

1、-p
作用:如果你指定一個或多個包,Monkey將只允許訪問這些包中的Activity。如果你的應用程式需要訪問這些包(如選擇聯絡人)以外的Activity,你需要指定這些包。如果你不指定任何包,Monkey將允許系統啟動所有包的Activity。指定多個包,使用多個-p,一個-p後面接一個包名。
注:常用引數。(在前面測試準備中已有提及)
例:adb shell monkey -p com.Android.browser -v 10

2、-c
作用:如果你指定一個或多個類別,Monkey將只允許系統啟動這些指定類別中列出的Activity。如果你不指定任何類別,Monkey將選擇謝列類別中列出的Activity,Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY。指定多個類別使用多個-c,每個-c指定一個類別。
注:不常用。

3、–dbg-no-events
作用:設定此選項,Monkey將執行初始啟動,進入一個測試Activity,並不會在進一步生成事件。為了得到最佳結果,結合引數-v,一個或多個包的約束,以及一個保持Monkey執行30秒或更長時間的非零值,從而提供了一個可以監視應用程式所呼叫的包之間轉換的環境。
注:不常用。

4、–hprof
作用:設定此選項,將在Monkey生成事件序列前後生成profilling報告。在data/misc路徑下生成大檔案(~5Mb),所以要小心使用。
注:不常用。

5、–ignore-crashes
作用:通常,應用發生崩潰或異常時Monkey會停止執行。如果設定此項,Monkey將繼續傳送事件給系統,直到事件計數完成。
注:常用。

6、–ignore-timeouts
作用:通常,應用程式發生任何超時錯誤(如“Application Not responding”對話方塊)Monkey將停止執行,設定此項,Monkey將繼續傳送事件給系統,直到事件計數完成。
注:常用。

7、–ignore-security-exception
作用:通常,當程式發生許可錯誤(例如啟動一些需要許可的Activity)導致的異常時,Monkey將停止執行。設定此項,Monkey將繼續傳送事件給系統,直到事件計數完成。
注:常用。

8、–kill-process-after-error
作用:通常,當Monkey由於一個錯誤而停止時,出錯的應用程式將繼續處於執行狀態。設定此項,將會通知系統停止發生錯誤的程序。注意,正常(成功)的結束,並沒有停止啟動的程序,裝置只是在結束事件之後簡單的保持在最後的狀態。

9、–monitor-native-crashes
作用:監視並報告Andorid系統中原生代碼的崩潰事件。如果設定–kill-process-after-error,系統將停止執行。

10、–wait-dbg
作用:停止執行中的Monkey,直到有偵錯程式和它相連線