monkey遍歷命令詳解

1、啓動monkey

# 對手機點擊1000次,不限制應用

adb shell monkey 1000

# 限制在設置的應用中,點擊1000次

adb shell monkey -p com.cleanmaster.mguard 1000

# 設置點擊事件的間隔爲50ms

adb shell monkey -p com.cleanmaster.mguard 1000 --throttle 100

2、停止monkey

# 查看monkey的進程id

ps | grep monkey

# 根據pidnum來殺死進程

Kill pid

3、增加monkey執行健壯性

程序發生異常時,不終止測試

# 忽略崩潰

--ignore-crashes

# 忽略ANR

--ignore-timeouts

# 忽略證書或認證異常

--ignore-security-exceptions

# 忽略本地代碼發生的崩潰

--ignore-native-crashes

4、log設置

# 設置輸出log位置

adb shell monkey -p com.cleanmaster.mguard 2>/sdcard/monkey 1>/sdcard/monkey 1000

# 設置電腦輸出log位置

adb shell monkey -p com.cleanmaster.mguard 2>/Users/lizhen/cmcm/workspace/monkey/errer.txt 1>/Users/lizhen/cmcm/workspace/monkey/info.txt 1000

# 使用-v指定log詳細級別

# Monkey的日誌輸出有3個級別:默認的-v是level 0,-v -v日誌級別爲level 1,-v -v -v日誌級別爲level 2。日誌的級別越高,其詳細程度也越高。爲了方便問題的定位,將日誌級別設置爲level2。

adb shell monkey -p com.cleanmaster.mguard -v -v 2>./errer_lev1.txt 1>./info_lev1.txt --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes 5000

 

5、設置monkey事件百分比

Monkey可以隨機注入11種事件,Monkey通過這11大事件來模擬用戶的常規操作

編號 默認比例 說明

0

15.0%

0:觸摸事件百分比,即參數--pct-touch

調整觸摸事件的百分比(觸摸事件是一個down-up事件,它發生在屏幕上的某單一位置)

1

10.0%

1:滑動事件百分比,即參數--pct-motion

2

2.0%

2:縮放事件百分比,即參數--pct-pinchzoom

3

15.0%

3:軌跡球事件百分比,即參數--pct-trackball

4

0.0%

4:屏幕旋轉事件百分比,即參數--pct-rotation

5

25.0%

5:基本導航事件百分比,即參數--pct-nav

6

15.0%

6:主要導航事件百分比,即參數--pct-majornav

7

2.0%

7:系統事件百分比,即參數--pct-syskeys

8

2.0%

8:Activity啓動事件百分比,即參數--pct-appswitch

9

1.0%

9:鍵盤翻轉事件百分比,即參數--pct-flip

10

13.0%

10:其他事件百分比,即參數--pct-anyevent

# 比如

adb shell monkey -p com.cleanmaster.mguard --throttle 100 --pct-syskeys 20 -v -v 1000

 

6、monkey復現之seed值

使用-s參數來指定命令執行的seed值 

Monkey會根據seed值來生成對應事件流,同一個seed生成的事件流是完全相同的。這裏指定了seed值,是爲了測試發現問題時,便於進行問題復現。

# 已證實,seed值設置有效。

# ⚠️:每次開始前,app狀態要一致,seed一致性纔有效

adb shell monkey -p com.cleanmaster.mguard -s 1 -v -v 1000

 

7、monkey測試策略

(1)使用 --throttle 來控制事件間隔 

指定操作之間的時間間隔,一方面是希望能更接近用戶的操作場景,正常用戶操作都會有一定的時間間隔;另一方面也是不希望因爲過於頻繁的操作而導致系統崩潰,尤其是在比較低端的手機上執行測試時。因此通過–throttle設置Monkey每個操作固定延遲0.4秒。

(2)使用 --ignore-crashes --ignore-timeouts 

在執行Monkey測試時,會因爲應用的崩潰或沒有響應而意外終止,所以需要在命令中增加限制參數–ignore-crash和–ignore-timeouts,讓Monkey在遇到崩潰或沒有響應的時候,能在日誌中記錄相關信息,並繼續執行後續的測試。

(3)修改注入事件的比例 

比如增加–pct-syskeys的比例,這樣就可以增加觸發返回鍵的比例,避免monkey測試長時間停留在一個界面,增加monkey覆蓋的界面範圍。

(4)指定要啓動的Activity 

如果沒有指定的activity,那麼就會啓動含有 Intent.CATEGORY_LAUNCHER 或 Intent.CATEGORY_MONKEY 的activity。可以使用 -c 來指定啓動一個Activity,該activity必須至少包含一個指定的category,才能被啓動,否則啓動不了。

 

前面介紹了幾種常見的Monkey測試方法,但在實際項目中,選擇哪種Monkey測試策略,則需要根據實際項目的情況來做判斷。主要是看測試目的及被測應用自身的特點。

  • 假如我們想測試瀏覽器的雙指縮放功能是否有異常,那就需要選擇–pct-pinchzoom參數,調大雙指縮放事件的佔比進行Monkey測試;

  • 假如我們想驗證ROM的橫豎屏切換功能是否正常,那就需要選擇–pct-rotation參數,調大橫豎屏切換事件的佔比進行Monkey測試;

  • 假如我們想驗證重複某種特定操作時,應用是否會存在異常,那可以選擇-f參數,自定義Monkey腳本進行驗證;

  • 假如我們想驗證長時間操作時應用是否會存在內存泄漏,那就需要結合-hprof參數和dumpsys meminfo<進程名>進行Monkey測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章