Appium+python自動化(十九)- 猴哥失散多年的混血弟弟還是妹妹- Monkey(猴子)參數(超詳解)


 簡介

  前邊幾篇介紹了Monkey以及Monkey的事件,今天就給小伙伴們介紹和分享一下Monkey的參數。

  首先我們看一下這幅圖來大致了解一下:

1、Monkey 命令 基本參數介紹

-p <允許的包名列表>         

用此參數指定一個或多個包。指定包之后,monkey將只允許系統啟動指定的app。如果丌指定包, monkey將允許系統啟動設備中的所有app。  

指定一個包:

adb shell monkey -p com.shjt.map 100   

指定多個包:

adb shell monkey -p fishjoy.control.menu  –p com.shjt.map  100  

-v        

用亍指定反饋信息級別(信息級別就是日志的詳細程度),總共分3個級別,分別對應的參數如下 表所示: 

Level 0  :  adb shell monkey -p com.shjt.map -v 100               // 缺省值,僅提供啟動提示、測試完成和最終結果等少量信息   

Level 1  :  adb shell monkey -p com.shjt.map -v  -v 100          // 提供較為詳細的日志,包括每個發送到Activity的事件信息

Level 2  :  adb shell monkey -p com.shjt.map -v  -v  -v 100     // 最詳細的日志,包括了測試中選中/未選中的Activity信息


-s(隨機數種子)            

用亍指定偽隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的。  示例:

monkey測試1:

adb shell monkey -p com.shjt.map –s 10 100 

monkey測試2:

adb shell monkey -p com.shjt.map –s 10 100  


--throttle <毫秒>            

用亍指定用戶操作(即事件)間的時延,單位是毫秒;如果丌指定這個參數,monkey會盡可能快的 生成和發送消息。

示例:

adb shell monkey -p com.shjt.map --throttle 3000 100   

2、monkey 參數

2.1參數分類

  • 常規類參數
  • 事件類參數
  • 約束類參數
  • 調試類參數

2.2常規類參數

常規類參數包括幫助參數和日志信息參數。幫助參數用於輸出Monkey命令使用指導;日志信息參數將日志分為三個級別,級別越高,日志的信息越詳細。

1.幫助類參數

monkey -h

 

2.日志級別

$ adb shell monkey -v <event-count>

-v:打印出日志信息,每個-v將增加反饋信息的級別。-v越多日志信息越詳細,不過目前最多支持3個-v,即:

 

 

 

 

2.3事件類參數

事件類參數的作用是對隨機事件進行調控,從而使其遵照設定運行,如設置各種事件的百分比、設置事件生成所使用的種子值等。頻率參數主要限制事件執行的時間間隔。

1.執行指定腳本

$ adb shell monkey -f <scriptfile> <event-count>

eg:

$ adb shell monkey -f /mnt/sdcard/test1

 

2.偽隨機數生成種子值

使用 -s命令可以重復執行之前的偽隨機操作。本身每次執行偽隨機事件操作也會默認生成一個seed值

$ adb shell monkey -s <seed> <event-count>

eg:

$ adb shell monkey -s 666 100

 

3.設置間隔

如果你希望在每一個指令之間加上固定的間隔時間,可以用--throttle(注意,前面是--)命令。

$ adb shell monkey --throttle <milliseconds>

eg:

$ adb shell monkey --throttle 3000  5

--throttle:后面接時間,單位為ms(<milliseconds>),表示事件之間的固定延遲(即執行每一個指令間隔的時間),若不接該選項,monkey將不會延遲。

 

4.調整觸摸事件百分比

如果你希望調整觸摸事件的百分比,記住使用--pct-touch。

$ adb shell monkey --pct-touch

eg:

$ adb shell monkey -v -v --pct-touch 100 200

<percent>--pct-touch:后面接觸摸事件百分比

注意:觸摸事件不單單是按鍵,它泛指發生在某一位置的一個down-up事件。

 

5.調整手勢事件百分比

$ adb shell monkey --pct-motion

eg:

$ adb shell monkey -v -v --pct-motion 100 200

 

6.調整應用啟動事件的百分比

如果你希望調整應用啟動事件的百分比,記住使用--pct-app-switch。

$ adb shell monkey --pct-appswtich <percent>

--pct-appswitch:后面接應用啟動事件百分比。

應用啟動事件(即activity launches)俗稱打開應用,通過調用startActivity()方法最大限度地開啟該package下的所有應用。

 

7.調整屏幕旋轉事件百分比

$ adb shell monkey --pct-rotation <percent>

--pct-rotation 后面接屏幕旋轉事件的比例值。

 

8.其他參數

 

 

2.4約束類參數

1.包約束

-p:后面接一個或多個包名(<allowed-package-name>),如果應用需要訪問其他包里的Activity,那相關的包也需要在此同時指定。如果不指定任何包,monkey將允許系統啟動全部包里的Activity。

$ adb shell monkey -p <allowed-package-name> <event-count>

eg:

$ adb shell monkey -p com.tal.kaoyan 500

$ adb shell monkey -p com.tal.kaoyan -p com.tencent.mm 500

 

2.activity類約束

如果你希望將monkey限制在一個或幾個類別中,使用如下命令:

adb shell monkey -c <main-category> <event-count>

以下命令表示運行Intent.CATEGORY_LAUNCHER類別的Activity並發送1000個隨機事件。

$ adb shell monkey -c Intent.CATEGORY_LAUNCHER  1000

  

 

 

2.5調試類參數

1.應用程序崩潰后繼續發送事件

如果你希望monkey在應用程序崩潰后繼續發送事件,則需要用到--ignore-crashes命令

$ adb shell monkey --ignore-crashes <event-count>

在設置此選項后,當應用程序崩潰或發生失控異常時,monkey將繼續運行直到計數完成。如果不設置此選項,monkey遇到上述崩潰或異常將停止運行。

 

2.超時錯誤繼續發送事件

如果你希望monkey在任何超時錯誤發生后繼續發送事件,則需要用到--ignore-timeouts命令。

$ adb shell monkey --ignore-timeouts

<event-count>--ignore-timeouts:在設置此選項后,當應用程序發生任何超時錯誤(如ANR,即Application Not Responding)時,monkey將繼續運行直到計數完成。如果不設置此選項,monkey遇到此類超時對話框將停止運行。

 

3.應用程序權限錯誤發生后繼續發送事件

如果你希望monkey在應用程序權限錯誤發生后繼續發送事件,則需要用到--ignore-security-exceptions命令。

$ adb shell monkey --ignore-security-exceptions

<event-count>--ignore-security-exceptions:在設置此選項后,當應用程序發生任何權限錯誤(如啟動一個需要某些權限的Activity)時,monkey將繼續運行直到計數完成。如果不設置此選項,monkey遇到此類權限錯誤將停止運行。

 

4.其他

 

 

3、Monkey參數應用綜合案例

3.1測試場景

測試考研幫app Android版。測試希望通過Monkey來模擬用戶的隨機操作,檢查被測應用是否會出現異常(應用崩潰或者無響應)。

3.2需求分析

1、測試是指定應用,因此需要使用-p指定被測app包名:com.tal.kaoyan

2、這個測試的目的是希望模擬用戶操作,因此需要讓Monkey執行的事件盡可能地接近用戶的常規操作,這樣才可以最大限度地發現用戶使用過程中可能出現的問題。因此需要對Monkey執行的事件百分比做一些調整:

觸摸事件和手勢事件是用戶最常見的操作,所以通過--pct-touch和--pct-motion將這兩個事件的占比調整到40%與25%;目標應用包含了多個Activity,為了能覆蓋大部分的Activity,所以通過--pct-appswitch將Activity切換的事件占比調整到10%;被測應用在測試中出現過不少橫豎屏之間切換的問題,這個場景也必須關注,因此通過--pct-rotation把橫豎屏切換事件調整到10%。

3、使用-s參數來指定命令執行的seed值 Monkey會根據seed值來生成對應事件流,同一個seed生成的事件流是完全相同的。這里指定了seed值,是為了測試發現問題時,便於進行問題復現。

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

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

6、使用-v指定log的詳細級別 Monkey的日志輸出有3個級別:日志的級別越高,其詳細程度也越高。為了方便問題的定位,這里將日志設為 -v -v.

3.3測試命令

adb shell monkey -p com.tal.kaoyan

--pct-touch 40 --pct-motion 25 

--pct-appswitch 10

--pct-rotation 5

-s 1666 --throttle 400

--ignore-crashes

--ignore-timeouts

-v -v  200

4、小結

  好了,Monkey參數暫且到這里,告一段落,下一篇計划介紹分享Monkey的日志管理,各位小伙伴敬請期待哈!!!

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點波 推薦 哦!!!(點擊右邊的小球即可)

個人公眾號

微信群


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM