首頁>技術>

monkey 是什麼

monkey 是一款通過命令列來對我們APP進行測試的工具,可以執行在模擬器裡或真機上。它向系統傳送偽隨機的使用者事件流,實現對正應用程式進行壓力測試。

偽隨機是個什麼?是因為該隨機事件可進行復現(定位可能出現的問題)。我們每次執行一組隨機事件,系統都會給一個隨機的ID,稱之為seed。若我們想將該組隨機事件再次執行一遍,則使用-s+seed+count即可。

那麼monkey的使用場景是哪些呢?

monkey 測試是 Android 平臺自動化測試的一種手段,通過 monkey 程式模擬使用者觸控式螢幕幕、滑動 Trackball、按鍵等操作來對裝置上的程式進行壓力測試,檢測程式多久會發生異常。(當然也可以做自動化測試)開發人員結合 monkey 列印的日誌 和系統列印的日誌,修改測試中出現的問題 。

那什麼時候進行壓力測試呢?等產品穩定,沒有太多的bug 的時候,一般會用 monkey 去測試待測應用的穩定性,健壯性(是否會發生閃退,崩潰,無響應)和整機測試

1、確保電腦已安裝adb直接下載adb 安裝包,把相關檔案放到 c:/windows/system32 目錄和 c:/windows/system 目錄下,完成安裝

2、jdk環境已配好(沒配好自己配吧,自己配不好請移駕https://www.baidu.com/s?ie=utf-8&wd=jdk%E7%8E%AF%E5%A2%83%E6%90%AD%E9%85%8D)

為什麼要配置jdk

1) Monkey程式由Android系統自帶,使用Java語言寫成,在Android檔案系統中的存放路徑是:/system/framework/monkey.jar;

2) Monkey.jar程式是由一個名為“monkey”的Shell指令碼來啟動執行,shell指令碼在Android檔案系統中的存放路徑是:/system/bin/monkey;這樣就可以通過在CMD視窗中執行:adb shell monkey {+命令引數}來進行Monkey測試了。

3、(安裝模擬器/真機)手機已經開啟開發者模式以及USB除錯狀態

4、 把手機鎖屏設定為從不

重要的命令引數都有什麼

1)引數: -p

引數-p用於約束限制,用此引數指定一個或多個包(Package,即App)。指定包之後,monkey將只允許系統啟動指定的APP。如果不指定包,monkey將允許系統啟動裝置中的所有APP。

指定一個包:

adb shell monkey -p com.kaiyuan.developmentbusiness 100

說明:com.kaiyuan.developmentbusiness 為包名,100是事件計數(即讓monkey程式模擬 100 次隨機使用者事件)。

指定多個包:

adb shell monkey -p com.qywlandroid –p com.kaiyuan.developmentbusiness 100

不指定包:

adb shell monkey 100

說明:monkey 隨機啟動APP併發送100個隨機事件。

2) 引數: -v 日誌詳細程度

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

日誌級別 Level0

adb shellmonkey -p com.kaiyuan.developmentbusiness –v 100

說明預設值,僅提供啟動提示,測試完成和最終結果等少量資訊

日誌級別 Level 1

adb shellmonkey -p com.kaiyuan.developmentbusiness –v -v 100 說明提供較為詳細的日誌,包括每個傳送到Activity的事件資訊

日誌級別 Level 2

adb shellmonkey -p com.kaiyuan.developmentbusiness –v -v –v 100 說明最詳細的日誌,包括了測試中選中/未選中的Activity資訊

3)引數:-s

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

monkey 測試1:adb shell monkey -p com.kaiyuan.developmentbusiness –s 10 100

monkey 測試2:adb shell monkey -p com.kaiyuan.developmentbusiness –s 10 100

兩次測試的效果是相同的,因為模擬的使用者操作序列(每次操作按照一定的先後順序所組成的一系列操作,即一個序列)是一樣的。操作序列雖然是隨機生成的,但是隻要我們指定了相同的Seed值,就可以保證兩次測試產生的隨機操作序列是完全相同的,所以這個操作序列偽隨機的;

4) 引數:--throttle <毫秒>

用於指定使用者操作(即事件)間的時延,單位是毫秒;

adb shell monkey -p com.qywlandroid –throttle 3000 100

5) 引數: --ignore-crashes

用於指定當應用程式崩潰時(Force& Close錯誤),monkey是否停止執行。如果使用此引數,即使應用程式崩潰,Monkey依然會發送事件,直到事件計數完成。

adb shellmonkey -p com.qywlandroid --ignore-crashes 1000

測試過程中即使Weather程式崩潰,Monkey依然會繼續傳送事件直到事件數目達到1000為止;

adb shellmonkey -p com.qywlandroid 1000

測試過程中,如果Weather程式崩潰,Monkey將會停止執行。

我這裡用的pycharmIDE,寫完之後直接建個 .bat放裡面就好了,比如

請看我的目錄

裡面的bugreport_book檔案是最後生成的,他從哪裡來的呢?

這個時候就該講一哈我們偉大的外掛ChkBugReportChkBugRepor t是一個開源工具,它可以把你得到的bugreprot.t解析成適合閱讀的 html 檔案。匯出的html檔案包含了根據 bugreport.txt 資料得出的圖表和分析結論。

1、如果這個執行緒死鎖,在報告的Errors將會出現。

2、***.logs 這部分是對system、main和kernel日誌的分析,在這裡你可以看到每個程序記憶體使用圖、那個程式產生的log最多、Activity的啟動耗時、資料庫操作耗時統計、物件被鎖定- - 時間、AIDL呼叫時間、Activity和Service的生命週期及其在記憶體中使用頻率等等

3、Processes 操作app過程中產生的系統事件日誌、記憶體使用資訊等等

4、Battery statistics 電池使用統計

5、CPU Frequency statistics CPU頻率統計

6、Raw data 一些原始資料

https://github.com/Chan-pipi/Chan-pipi

首先新增.config檔案,新增內容為

然後建立runmonkey.py檔案,主要函式為

1. 引用.config,不然你寫它幹啥用

不支援該協議取消重新上傳

2. 安裝安裝包

3.執行monkey命令

4. 建立bugreport.txt報告,並生成html檔案

5. 完成

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 下一個十年,PHP何去何從