一、Monkey簡介
1.Monkey介紹
Monkey是一個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流,實現對正在開發的應用程式進行壓力測試。
Monkey測試也有人叫做搞怪測試。就是用一些稀奇古怪的操作方式去測試被測試系統,以測試系統的穩定性。Monkey測試是Android自動化測試的一種手段,Monkey測試本身非常簡單,就是模擬使用者的按鍵輸入,觸控式螢幕輸入,手勢輸入等,看裝置多長時間會出異常。
當Monkey程式在模擬器或裝置執行的時候,如果使用者觸發了比如點選,觸控,手勢或一些系統級別的事件的時候,它就會產生隨機脈衝,所以可以用Monkey用隨機重複的方法去負荷測試你開發的軟體。
Monkey包括許多選項,它們大致分為四大類:
- 基本配置 選項,如設定嘗試的事件數量。
- 執行約束選項,如設定只對單獨的一個包進行測試。
- 事件型別和頻率。
- 除錯選項。
- 如果限定了Monkey執行在一個或幾個特定的包上,那麼它會監測試圖轉到其它包的操作,並對其進行阻止。
- 如果應用程式崩潰或接收到任何失控異常,Monkey將停止並報錯。
- 如果應用程式產生了應用程式不響應(application not responding)的錯誤,Monkey將會停止並報錯。
談到Monkey,必須介紹一下ADB:
ADB是Android SDK裡的一個工具,用這個工具可以直接操作管理android模擬器或者真實的Android裝置。它的主要功能有:
- 執行裝置的shell(命令列)
- 管理模擬器或裝置的埠對映
- 計算機和裝置之間上傳/下載檔案
- 將本地apk軟體安裝至模擬器或android裝置
- ADB是一個客戶端-伺服器端 程式,其中客戶端是你用來操作的電腦,伺服器端是android裝置。
2.adb 的常用命令:
adb devices 獲取所有連線ADB的模擬器或者真機adb install c:/xxx.apk 安裝自己的apk到裝置上
adb uninstall apk包名 從裝置上解除安裝apk
adb -s emulator-5556 uninstall apk包名 指定某裝置解除安裝apk
adb start-server 重啟adb
adb kill-server 殺死adb
adb shell pm list packages 獲取所有應用的包名
3.Monkey的常用命令:
adb shell monkey –help (獲取幫助命令)adb shell monkey 1000 (隨機執行1000個模擬事件)
adb shell monkey -p xxxx 1000 (指定某個應用隨機執行1000個模擬事件,xxx填應用包名)
adb shell monkey (引數) 100 (帶引數執行100個模擬事件)
二、Monkey引數介紹
1.基本引數:
-v: 日誌詳細程度。注意:每一個-v將增加反饋資訊的級別。Level 0(預設值)除啟動提示、測試完成和最終結果之外,提供較少資訊。Level 1提供較為詳細的測試資訊,如逐個傳送到Activity的事件。Level 2提供更加詳細的設定資訊,如測試中被選中的或未被選中的Activity。
-s:偽隨機數生成器的seed值。
注意:如果用相同的seed值再次執行Monkey, 兩次monkey測試將生成相同的事件序列。
--throttle:兩次事件的時間間隔,單位是毫秒
注意:通過這個選項可以減緩Monkey的執行速度。如果不指定該選項,Monkey將 不會被延遲,事件將盡可能快地被產成。
2.傳送事件的型別
--pct-touch <percent>: 指定觸控事件百分比,一個點上先後有按下和抬起的操作。--pct-motion <percent>: 指定滑動事件百分比,先按下,滑動一段距離,然後抬起。
--pct-trackball <percent>: 軌跡球事件百分比,一系列的隨機移動和單擊操作。
--pct-nav <percent>: 基本導航事件百分比(硬體),設定基本的導航事件(上/下/左/右導航鍵)的生成比例。
--pct-majornav <percent>:主要導航事件百分比,會導致UI產生回饋的事件,如單擊5個方向鍵中的中間按鈕,單擊後退鍵或者選單鍵。
--pct-syskeys <percent>: 系統按鍵事件百分比(Home、Back、startCall、endCall、volumeControl)。
--pct-appswitch <percent>: 指定啟動Activity的百分比。在隨機間隔裡,Monkey將執行一個startActivity()呼叫,作為最大程度覆蓋包中全部Activity的一種方法。
--pct-anyevent <percent>: 指定其他事件百分比,普通的按鍵訊息,裝置上一些不常用的按鈕事件。
3.約束條件
-p <allowed-package-name>: 如果用此引數指定了一個或幾個包,Monkey將只允許系統啟動這些包裡的Activity。 如果你的應用程式還需要訪問其它包裡的Activity(如選擇取一個聯絡人),那些包也需要在此 同時指定。如果不指定任何包,Monkey將允許系統啟動全部包裡的Activity。注意:要指定多個包,需要使用多個-p選項,每個-p選項只能用於一個包。
-c <main-category>: 如果用此引數指定了一個或幾個類別,Monkey將只允許系統啟動被這些類別中的某個類別列出的Activity。 如果不指定任何類別,Monkey將選 擇下列類別中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。
注意:要指定多個類別,需要使用多個-c選項,每個-c選項只能用於一個類別。
4.除錯選項
--dbg-no-events: 指定了此選項,monkey會啟動待測應用,但不傳送任何訊息,建議與-v,-p,-throttle一起使用。--hprof: 指定此選項,monkey會在傳送事件前後生成效能報告(即記憶體的快照檔案),一般在裝置的/data/misc目錄下生成一個5M左右的檔案。
--ignore-crashes: 指定了此選項,待測應用崩潰或發生異常時,繼續傳送系統訊息,直到指定個數的訊息全部傳送完畢,否則停止執行。
--ignore-timeouts: 指定了此選項,待測應用停止響應(如彈出“應用無響應”對話方塊)時,繼續傳送系統訊息,直到指定個數的訊息全部傳送完畢,否則停止執行。
--ignore-security-exceptions:指定了此選項,待測應用碰到許可權方面的錯誤時,繼續傳送系統訊息,直到指定個數的訊息全部傳送完畢,否則停止執行。
--kill-process-after-error: 一般情況下,當monkey因為某個錯誤指定執行時,出問題的應用會留在系統上繼續執行,這個選項通知系統當錯誤發生時殺掉程式。
注意:當monkey正常執行完畢後,它不會關閉所啟動的應用,裝置依然停留在最後接受到訊息的狀態。
--monitor-native-crashes: 監視由Android C/C++程式碼部分(cpu計算部分)引起的崩潰,此時如果設定了“--kill-process-after-error”,整個系統會關機。
--wait-dbg: 停止執行中的Monkey,直到有偵錯程式和它相連線。