Monkey自動化測試

1. Monkey測試簡介

Monkey測試是Android平臺自動化測試的一種手段,通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、按鍵等操作來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常。

2. Monkey程序介紹

Monkey程序由Android系統自帶,使用java語言寫成,在Android文件系統中的存放路徑是:/system/framework/monkey.jar;
Monkey.jar程序是由一個名爲“monkey”的shell腳本來啓動執行,shell腳本在Android文件系統中的存放路徑是:/system/bin/monkey;
這樣可以通過在cmd窗口中執行:adb shell monkey (+命令參數)來進行Monkey測試。

3. Monkey命令的簡單幫助

要獲取Monkey命令自帶的簡單幫助,在cmd中執行命令:adb shell monkey –help

4. Monkey命令參數介紹

1>.參數:-p(後面跟要覆蓋測試的報名。可以有多個-p,每個-p後跟一個報名)

參數 –p 用於約束限制,用此參數指定一個或多個包(Package,即App).指定包之後,Monkey將只允許系統啓動指定的App。如果不指定包,Monkey將允許系統啓動設備中的所有App。
指定一個包:adb shell monkey –p com.app.test 100
說明:com.app.test爲包名,100是事件計數(即讓Monkey程序模擬100次隨機用戶時間)
指定多個包:adb shell monkey –p com.app.test –p com.app.tester 100
不指定包:adb shell monkey 100
說明:Monkey隨機啓動App併發送100個隨機事件
查看設備中所有的包,在cmd窗口中執行如下命令:
adb shell
cd data/data
ls

2>.參數:-v (可以有多個,個數越多,產生的log越詳細。最多爲三個)

用於指定反饋信息級別(信息級別就是日誌的詳細程度),總共分3個級別,分別對應的參數如下表示:
日誌級別 Level 0
示例:adb shell monkey –p com.app.test –v 100
說明:缺省值,僅提供啓動提示、測試完成和最終結果等少量信息
日誌級別 Level 1
示例:adb shell monkey –p com.app.test –v –v 100
說明:提供較爲詳細的日誌,包括每個發送到Activity的事件信息
日誌級別 Level 2
示例:adb shell monkey –p com.app.test –v –v –v 100
說明:最詳細的日誌,包括了測試中、選中/未選中的Activity信息

3>.參數:-s (後面跟整數,相同的seed值表示產生的隨機事件流相同)

用於指定僞隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同
示例:
Monkey 測試1:adb shell monkey –p com.app.test –s 10 100
Monkey 測試2:adb shell monkey –p com.app.test –s 10 100
兩次測試的效果是相同的,因爲模擬的用戶操作序列是一樣的

4>.參數:–throttle <毫秒> (後面跟毫秒數,表示每個隨機事件中間的事件間隔)

用於指定用戶操作(即事件)間的時延,單位是毫秒;
示例:adb shell monkey –p com.app.test –throttle 300 100

5>.參數:–ignore-crashes (發生crash時,不停止monkey執行)

用於指定當應用程序崩潰時(Force&Close錯誤),Monkey是否停止運行。如果使用此參數,即使應用程序崩潰,Monkey依然會發送事件,直到事件計數完成。
示例:adb shell monkey –p com.app.test –ignore-crashes 100

6>.參數:–ignore-timeouts (發生ANR時,不停止monkey執行)

用於指定當應用程序發生ANR (Application No Responding)錯誤時,Monkey是否停止運行。如果使用此參數,即使應用程序發生ANR錯誤,Monkey依然會發送事件,直到事件計數完成。

7>.參數:–ignore-security-exceptions (發生許可錯誤時,不停止monkey執行)

用於指定當應用程序發生許可錯誤時,Monkey是否停止運行,如果使用此參數,即使應用程序發生許可錯誤,Monkey依然會發送事件,直到事件計數完成。

8>.參數:–kill-process-after-error (發生錯誤時,停止monkey執行)

用於指定當應用程序發生錯誤時,是否停止其運行。如果指定此參數,當應用程序發生錯誤時,應用程序停止運行並保持在當前狀態。(系統不會結束該應用程序的進程)

9>.參數:–monitor-native-crashes

用於指定是否監視並報告應用程序發生崩潰的本地代碼
四小時Momkey:
adb shell monkey -p com.app.test -v -v -v –throttle 300 –ignore-crashes –ignore-timecouts –ignore-security-exceptions 14400000 >test.log

5. Monkey日誌分析(重要)

Null指針異常:空指針異常主要是有NullPointerException異常提示
debug異常:出現的是IllegalStateException異常
低內存異常:出現的是OutOfMemoryError異常
操作無響應異常:TimerOut(KeyDispatchingTimedOut提示)
RuntimeException異常(操作無響應或應用的服務無法啓動或連接)
StaleDataException/readException異常(android數據庫出現異常)
IllegalArgumentException異常(向函數傳遞了一個不正確或不合法的參數)
關鍵詞:ANR、Exception、Null、Error、crash(Fatal)

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