Monkey簡單介紹

什麼是monkey

Monkey是Android中的一個命令行工具,monkey測試的原理就是利用socket通訊的方式來模擬用戶的按鍵輸入,觸摸屏輸入,手勢輸入等,看設備多長時間會出異常。當Monkey程序在模擬器或設備運行的時候,如果用戶觸發了比如點擊,觸摸,手勢或一些系統級別的事件的時候,它就會產生隨機脈衝,所以可以用Monkey用隨機重複的方法去負荷測試你開發的軟件。

Monkey測試目的測試軟件的穩定性、健壯性。

 

monkey的特徵

(1測試的對象僅爲應用程序包,有一定的侷限性。

(2)Monkey測試使用的事件流數據流是隨機的,不能進行自定義。

(3)可對MonkeyTest的對象,事件數量,類型,頻率等進行設置。

 

常見問題處理

(1)adb devices檢測不到設備怎麼辦呢?

如果你在命令行輸入adb devices檢測不到你的設備,可以查看一下你的adb.exe進程有沒有啓動,如果這個進程沒有啓動你的設備肯定是檢測不到的。

 

說明:adb全稱Android Debug Bridge, 是android sdk裏的一個工具, 用這個工具可以直接操作管理android模擬器或者真實的andriod手機。它的主要功能有:
* 運行設備的shell(命令行)
* 管理模擬器或設備的端口映射
* 計算機和設備之間上傳/下載文件
* 將本地apk軟件安裝至模擬器或android設備

 

如果你的adb.exe進程一直無法啓動,可能是端口被其它程序給佔用了,可以自己創建一個adb.exe的端口

創建之前你可以在命令行通過netstat查看一下你設置的這個端口有沒有程序佔用“開始”-->“運行”-->輸入cmd->命令行輸入netstat -ano |findstr "25025"如果查看沒有進程,說明這個端口沒有佔用

 

接下來在電腦->屬性->高級系統設備->環境變量->系統變量,新建一個adb.exe的端口值,如圖是自己創建的:

 

然後啓動adb的服務,“開始”-->“運行”-->輸入cmd->命令行輸入adb start-server->Enter,如圖

 

然後在命令行輸入adb devices看是否檢測到你的設備如圖

 

(2如果adb shell 進入後顯示$符表示一般用戶,#符表示擁有管理員權限用戶我們需要切換管理員權限的用戶su 戶名

 

(3) 如果在安裝APP軟件時無法安裝,提示如下報錯:

Installation error:INSTALL_FAILED_INSUFFICIENT_STORAGE

是由於設備存儲空間不足造成,需要進入“Settings>Storage”查看剩餘空間大小,如果不夠,需要刪除多餘的軟件來釋放足夠的空間。

 

、Monkey基本命令

1).標準的monkey 命令
[adb shell] monkey [options] <eventcount> , 例如:
adb shell monkey -v 500    --------產生500次隨機事件。

上面只是一個簡單的例子,實際情況中通常會有很多的options 選項
2).四大類—— 常用選項 、 事件選項 、約束選項、調試選項
1:常用選項 (monkey --help)

複製代碼 代碼如下:

--help:打印幫助信息

 

--pct-touch {百分比} 如:----pct-touch 10    調整觸摸事件的百分比

motion 動作事件  trackball軌跡事件  nav基本導航事件   majornav主要導航事件

-v:指定輸出信息的詳細級別(0~2),一個 -v增加一個級別 , 默認級別爲 0 ,最多3個。

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

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

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

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


2:事件選項
-s:指定產生隨機事件種子值,相同的種子值產生相同的事件序列。當出現問題時要重現操    作問題需要設置相同的種子值。如:-s 1521701962828 (從日誌中的seed值獲取)
--throttle:每個事件結束後的間隔時間——降低系統的壓力,單位是毫秒(如不指定,系統會盡快的發送事件序列)。如:--throttle 100


3:約束選項

複製代碼 代碼如下:

-p:指定有效的package程序名稱

可以添加多個P,測試多個package, 如:-p com.ckt -p com.ckt.asura;

如果不指定包,Monkey將允許系統啓動設備中所有的APP。


4:調試選項

複製代碼 代碼如下:

--dbg-no-events:初始化啓動的activity,但是不產生任何事件。
--ignore-crashes:忽略崩潰
--ignore-timeouts:忽略超時
--ignore-security-exceptions:忽略安全異常(發生證書許可錯誤時)
--monitor-native-crashes:監視並報告系統中本地代碼發生的崩潰

五、Monkey命令舉例說明

adb shell monkey -p com.sankuai.meituan  -v 200

但是,工作中爲了保證測試數量的完整進行,我們一般不會在發生錯誤時立刻退出壓力測試。monkey 測試命令如下:

adb shell monkey -p com.sankuai.meituan --throttle 300  --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 2000 > D:\a.txt

monkey作用的包:-p com.xy.android.junit

事件之間的延遲時間500毫秒:--throttle 500
產生時間序列的種子值:-s (復現問題時需要設置,從運行日誌中獲取)
忽略程序崩潰 : --ignore-crashes 

忽略超時: --ignore-timeouts 

監視本地程序崩潰: monitor-native-crashes 

輸出信息級別爲2: -v -v

產生 10000個事件 : 10000

信息保存路徑:> D:\a.txt

 

如果想在執行monkey命令過程中終止測試,執行以下命令即可:

【adb shell】進入後,用【ps | grep monkey】命令查詢出monkey進程號(顯示的第一個數字),然後用【kill pid 進程號】命令殺掉該進程號即可立即停止測試。

 

手工結束進程:kill pid 17185

六、Monkey 日誌分析:

(1)ANR問題:在日誌中搜索“ANR ”(注意ANR後有空格)

(2)崩潰問題:在日誌中搜索“Exception

Application Not Responding 在Android上,如果你的應該程序有一段時間響應不夠靈敏,程序無響應。

 

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