Android 自動化測試之 Monkey

1、Monkey簡介

1.Monkey介紹

Monkey是一個命令行工具,能夠運行在模擬器裏或實際設備中。它向系統發送僞隨機的用戶事件流,實現對正在開發的應用程序進行壓力測試。android

Monkey測試也有人叫作搞怪測試。就是用一些稀奇古怪的操做方式去測試被測試系統,以測試系統的穩定性。
Monkey測試是Android自動化測試的一種手段,Monkey測試自己很是簡單,就是模擬用戶的按鍵輸入,觸摸屏輸入,手勢輸入等,看設備多長時間會出異常。
當Monkey程序在模擬器或設備運行的時候,若是用戶觸發了好比點擊,觸摸,手勢或一些系統級別的事件的時候,它就會產生隨機脈衝,因此能夠用Monkey用隨機重複的方法去負荷測試你開發的軟件。
Monkey包括許多選項,它們大體分爲四大類:
  • 基本配置 選項,如設置嘗試的事件數量。
  • 運行約束選項,如設置只對單獨的一個包進行測試。
  • 事件類型和頻率。
  • 調試選項。
在Monkey運行的時候,它生成事件,並把它們發給系統。同時,Monkey還對測試中的系統進行監測,對下列三種狀況進行特殊處理:
  • 若是限定了Monkey運行在一個或幾個特定的包上,那麼它會監測試圖轉到其它包的操做,並對其進行阻止。
  • 若是應用程序崩潰或接收到任何失控異常,Monkey將中止並報錯。
  • 若是應用程序產生了應用程序不響應(application not responding)的錯誤,Monkey將會中止並報錯。
按照選定的不一樣級別的反饋信息,在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個模擬事件)

2、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,直到有調試器和它相鏈接。

3、Monkey測試命令

1.不輸入日誌:

adb shell monkey -v --throttle 300 --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 -p <package-name> 1000

2.輸入日誌:

adb shell monkey -v --throttle 300 --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 -p <package-name> 1000>D:\Android\monkey\log.txt
相關文章
相關標籤/搜索