Android APP壓力測試(一)之Monkey工具介紹


Android APP壓力測試(一)

之Monkey工具介紹

 

前言

  本文主要介紹Monkey工具。Monkey測試是Android平台自動化測試的一種手段,通過Monkey程序模擬用戶觸摸屏幕、滑動、按鍵等操作來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常。此文主要給自己查閱用。

 

 

 

[目錄]

1、Monkey簡介

2、Monkey參數說明

3、Monkey實例

4、Monkey測試結果分析

 

 

 

 

 

 

1、Monkey簡介

Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對APP進行壓力測試。Monkey測試是一種為了測試軟件的穩定性、健壯性的快速有效的方法。

 

 

2、Monkey參數說明

Monkey包括許多選項,大致分為四大類: 

1、基本選項
--help:打印幫助信息
-v:指定打印信息的詳細級別,一個 -v 增加一個級別。

日志級別 Level 0,缺省值,僅提供啟動提示、測試完成和最終結果等少量信息 

日志級別 Level 1,提供較為詳細的日志,包括每個發送到Activity的事件信息

日志級別 Level 2,最詳細的日志,包括了測試中選中/未選中的Activity信息 

  

2、事件選項
-s
偽隨機數生成器的seed值。如果用相同的seed值再次運行Monkey,它將生成相同的事件序列。
--throttle  <毫秒>
在事件之間插入固定延遲。通過這個選項可以減緩Monkey的執行速度。如果不指定該選項,Monkey將不會被延遲,事件將盡可能快地被產成。
--pct-touch
調整觸摸事件的百分比(觸摸事件是一個down-up事件,它發生在屏幕上的某單一位置)。
--pct-motion
調整動作事件的百分比(動作事件由屏幕上某處的一個down事件、一系列的偽隨機事件和一個up事件組成)。
--pct-trackball
調整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊)。
--pct-nav
調整“基本”導航事件的百分比(導航事件由來自方向輸入設備的up/down/left/right組成)。
--pct-majornav
調整“主要”導航事件的百分比(這些導航事件通常引發圖形界面中的動作,如:5-way鍵盤的中間按鍵、回退按鍵、菜單按鍵)
--pct-syskeys
調整“系統”按鍵事件的百分比(這些按鍵通常被保留,由系統使用,如Home、Back、Start Call、End Call及音量控制鍵)。
--pct-appswitch
調整啟動Activity的百分比。在隨機間隔里,Monkey將執行一個startActivity()調用,作為最大程度覆蓋包中全部Activity的一種方法。
--pct-anyevent
調整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設備按鈕、等等。
  
3、約束選項 
-p
如果用此參數指定了一個或幾個包,Monkey將只允許系統啟動這些包里的Activity。如果你的應用程序還需要訪問其它包里的Activity(如選擇取一個聯系人),那些包也需要在此同時指定。如果不指定任何包,Monkey將允許系統啟動全部包里的Activity。要指定多個包,需要使用多個 -p選項,每個-p選項只能用於一個包。
-c
如果用此參數指定了一個或幾個類別,Monkey將只允許系統啟動被這些類別中的某個類別列出的Activity。如果不指定任何類別,Monkey將選 擇下列類別中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多個類別,需要使用多個-c選項,每個-c選 項只能用於一個類別。

   

4、調試選項
--dbg-no-events
設置此選項,Monkey將執行初始啟動,進入到一個測試Activity,然后不會再進一步生成事件。為了得到最佳結果,把它與-v、一個或幾個包約 束、以及一個保持Monkey運行30秒或更長時間的非零值聯合起來,從而提供一個環境,可以監視應用程序所調用的包之間的轉換。
--hprof
設置此選項,將在Monkey事件序列之前和之后立即生成profiling報告。這將會在data/misc中生成大文件(~5Mb),所以要小心使用它。
--ignore-crashes
通常,當應用程序崩潰或發生任何失控異常時,Monkey將停止運行。如果設置此選項,Monkey將繼續向系統發送事件,直到計數完成。
--ignore-timeouts
通常,當應用程序發生任何超時錯誤(如“Application Not Responding”對話框)時,Monkey將停止運行。如果設置此選項,Monkey將繼續向系統發送事件,直到計數完成。
--ignore-security-exceptions
通常,當應用程序發生許可錯誤(如啟動一個需要某些許可的Activity)時,Monkey將停止運行。如果設置了此選項,Monkey將繼續向系統發送事件,直到計數完成。
--kill-process-after-error
通常,當Monkey由於一個錯誤而停止時,出錯的應用程序將繼續處於運行狀態。當設置了此選項時,將會通知系統停止發生錯誤的進程。注意,正常的(成功的)結束,並沒有停止啟動的進程,設備只是在結束事件之后,簡單地保持在最后的狀態。
--monitor-native-crashes
監視並報告Android系統中本地代碼的崩潰事件。如果設置了--kill-process-after-error,系統將停止運行。
--wait-dbg
停止執行中的Monkey,直到有調試器和它相連接。

參考:https://developer.android.com/intl/zh-cn/tools/help/monkey.html

  

 

3、Monkey實例

1)、指定一個包:adb  shell monkey -p com.example.findyou  10
2)、指定多個包:adb  shell monkey -p com.example.findyou –p com.example.findyou1 -p com.example.findyou2 100  
3)、Seed值:Monkey測試1:adb  shell monkey -p com.example.findyou –s 10 100
     Monkey 測試2:adb  shell monkey -p com.example.findyou –s 10 100
  指定了相同的Seed值,就可以保證兩次測試產生的隨機操作序列是完全相同的
4)、日志級別
Level 1 :adb  shell monkey -p com.example.findyou –v -v 100
說明  提供較為詳細的日志,包括每個發送到Activity的事件信息
Level 2 :adb  shell monkey -p com.example.findyou –v -v –v 100
說明  最詳細的日志,包括了測試中選中/未選中的Activity信息   

   

4、Monkey測試結果分析

Monkey測試的og分析,我們可以通過幾個關鍵詞來判斷測試是否通過。

 

1)Monkey finished
打開LOG,查看log的最下端,是否有類似以下字段:
## Network stats: elapsed  time=5123ms (5123ms mobile, 0ms wifi, 0ms  not connected)
// Monkey finished
這個字段表明本次的Monkey沒有異常,測試通過。
 

2)CRASH

同樣,在得到LOG后,搜索”CRASH”字段,如果搜索到有結果,則表明有進程出現問題,測試不通過。
// CRASH: com.onekchi.downloadmanager (pid 12919)

 

3)ANR
在Log中搜素該字段,如果有搜索有結果,則表示測試過程中,測試對象出現了無響應的現象,因此測試不通過。 --throttle <毫秒>值建議為500

 

4)無法搜索到上述信息
出現這種情況,一般都是外界原因而非程序本身原因。比如電腦異常測試中斷,需要重新測試。

 


免責聲明!

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



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