在android手機上做自動化測試,monkey比cts,Android UnitTest 好用多了,他其實是繼承與adb shell中的一段的shell指令。
一monkey測試的相關的原理
monkey測試的原理就是利用socket通訊的方式來類比使用者的按鍵輸入,觸控螢幕輸入,手勢輸入等,看裝置多長時間會出異常。當Monkey程式在模擬器或裝置啟動並執行時候,如果使用者出發了比如點擊,觸摸,手勢或一些系統層級的事件的時候,它就會產生隨機脈衝,所以可以用Monkey用隨機重複的方法去負荷測試你開發的軟體。
二、Monkey程式介紹
1) Monkey程式由Android系統內建,使用Java語言寫成,在Android檔案系統中的存放路徑是:/sdk/sdk/tools/lib/monkey.jar;相應的途徑:
注意了我的sdk在f盤
2) Monkey.jar程式是由一個名為“monkey”的Shell指令碼來啟動執行,shell指令碼在Android檔案系統中的存放路徑是:/sdk/sdk/tools/bin/monkey;
這樣就可以通過在CMD視窗中執行: adb shell monkey {+命令參數}來進行Monkey測試了。
如果我不會用monkey怎麼辦了???
三、Monkey命令的簡單協助
要擷取Monkey命令內建的簡單協助,在CMD中執行命令:
adb shell monkey –help
這樣子,就有他的各種各樣的提示命令的參數。
我這裡對其各種參數進行了簡介了。
1) 參數: -p
參數-p用於約束限制,用此參數指定一個或多個包(Package,即App)。指定
包之後,Monkey將只允許系統啟動指定的APP。如果不指定包,Monkey將允許系統啟動裝置中的所有APP。
* 指定一個包: adb shell monkey -p com.example.sellclientapp 100
說明:com.example.sellClientAPP 為包名,100是事件計數(即讓Monkey程式類比100次隨機使用者事件)。
* 指定多個包:adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100 :
* 不指定包:adb shell monkey 100
說明:Monkey隨機啟動APP並發送100個隨機事件。
* 要查看裝置中所有的包,在CMD視窗中執行以下命令:
>adb shell
#cd data/data
#ls
My Phone沒有root所以不能用這個屬性了。
2) 參數: -v
用於指定反饋資訊層級(資訊層級就是日誌的詳細程度),總共分3個層級,分別對應的參數如下表所示:
記錄層級 Level 0
樣本 adb shell monkey -p com.htc.Weather –v 100
說明 預設值,僅提供啟動提示、測試完成和最終結果等少量資訊 相應原始碼了,這十分有利於調試了。
記錄層級 Level 1
樣本 adb shell monkey -p com.htc.Weather –v -v 100
說明 提供較為詳細的日誌,包括每個發送到Activity的事件資訊
記錄層級 Level 2
樣本 adb shell monkey -p com.htc.Weather –v -v –v 100
說明 最詳細的日誌,包括了測試中選中/未選中的Activity資訊
-s
用於指定偽隨機數產生器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的。
* 樣本:
Monkey測試1:adb shell monkey -p com.htc.Weather –s 10 100
Monkey 測試2:adb shell monkey -p com.htc.Weather –s 10 100
兩次測試的效果是相同的,因為類比的使用者操作序列(每次操作按照一定的先後順序所組成的一系列操作,即一個序列)是一樣的。操作序
列雖 然是隨機產生的,但是只要我們指定了相同的Seed值,就可以保證兩次測試產生的隨機操作序列是完全相同的,所以這個操作序列偽隨
機的;
monkey很好,很強大,我這些實驗都是他的皮毛,也希望得到牛人們指證。