Android壓力測試工具Monkey簡介
測試步驟:
1.安裝ADB
2.連線被測手機和電腦
3.開啟CMD命令列
4.輸入monkey命令
adb shell monkey -p your.package.name --pct-touch 30 --ignore-crashes --ignore-timeouts--throttle 250 -s 2 -v -v -v 5000000
一.monkey測試命令有哪些選項?
1:常用選項
--help:列印幫助資訊
-v:指定列印資訊的詳細級別,一個 -v增加一個級別 , 預設級別為 0 。-v -v -v 為最詳細日誌。
2:事件選項
-s:指定產生隨機事件種子值,相同的種子值產生相同的事件序列。如: -s 200
--throttle:每個事件結束後的間隔時間——降低系統的壓力(如不指定,系統會盡快的傳送事件序列)。如:--throttle 100
--pct-touch:指定觸控事件的百分比,如:--pct-touch 5% , 相關的還有以下option:
--pct-motion <percent> (滑動事件)
--pct-trackball <percent> (軌跡球事件)
--pct-nav <percent> (導航事件 up/down/left/right)
--pct-majornav <percent> (主要導航事件 back key 、 menu key)
--pct-syskeys <percent> (系統按鍵事件 Home 、Back 、startCall 、 endCall 、 volumeControl)
--pct-appswitch <percent> (activity之間的切換)
--pct-anyevent <percent>(任意事件)
3:約束選項
-p:指定有效的package(如不指定,則對系統中所有package有效),一個-p 對應一個有效package, 如:-p com.ckt -p com.ckt.asura;
-c:activity必須至少包含一個指定的category,才能被啟動,否則啟動不了;
4:除錯選項
--dbg-no-events:初始化啟動的activity,但是不產生任何事件。
--hprof:指定該項後在事件序列傳送前後會立即生成分析報告 —— 一般建議指定該項。
--ignore-crashes:忽略崩潰
--ignore-timeouts:忽略超時
--ignore-security-exceptions:忽略安全異常
--kill-process-after-error:發生錯誤後直接殺掉程序
--monitor-native-crashes:跟蹤本地方法的崩潰問題
--wait-dbg:知道連線了偵錯程式才執行monkey測試。
二.一個完整的monkey語句?
adb shell monkey -p your.package.name --pct-touch 30 --ignore-crashes --ignore-timeouts--throttle 250 -s 2 -v -v -v 5000000
觸控事件佔30%,忽略crash和超時,每個事件間隔250ms,輸出最詳細日誌,執行500萬次
三.如何儲存不連著電腦跑monkey?
1.輸入命令進入shell環境:adb shell
2.輸入monkey語句執行:monkey –p com.android.mms –s 100 --throttle 1000 –v –v –v 15000 > /mnt/sdcard/monkey_test.txt&
四.如何跑多個apk的monkey?
黑名單:執行除了黑名單中以外的apk;白名單:只執行在白名單中的apk。 黑名單的設定方法: a.建立一個名稱為blacklist的txt文件,在檔案中輸入應用程式的包名,如mms應用,則在檔案中輸入com.android.mms;如果有多個應用程式不想被執行,則在檔案中新增多個包名,注意包名與包名之間均用回車鍵。 b.將blacklist.txt的檔案匯入到手機的/data目錄下,然後在執行monkey測試的時候使用--pkg-blacklist-file引數再加上blacklist檔案的儲存路徑,其他的引數設定則和測試單一apk沒有區別。 白名單的設定方法: 白名單的設定方法和黑名單的設定方法基本一致,只是在建立txt文件的時候,檔案的命令應為whitelist。在執行monkey的時候,只執行白名單中的應用。
例子: monkey –pkg-blacklist-file /data/blacklist.txt -c <options> -s <seed> <限制語句> --throttle <milliseconds> -v 執行次數> C:\blacklist_test.txt //執行黑名單以外的應用 monkey –pkg-whitelist-file /data/whitelist.txt -c <options> -s <seed> <限制語句> --throttle <milliseconds> -v 執行次數 > C:\whitelist_test.txt //執行白名單的應用
五.如何關閉mokey?
1. ps命令查詢uiautomator的程序
cmd命令列視窗輸入:
(linux)adb shell ps | grep monkey
(windows)adb shell ps | findstr monkey
返回來的第一個數字,即是monkey的程序號
2.kill 命令結束程序
繼續輸入: adb shell kill [剛才查到的程序號]
六.如何分析monkey日誌?
1、 ANR問題:在日誌中搜索“ANR” 2、 崩潰問題:在日誌中搜索“CRASH”
七.如何重現BUG?
1、 找到是monkey裡面的哪個地方出錯
2、 檢視Monkey裡面出錯前的一些事件動作,並手動執行該動作
3、 若以上步驟還不能找出,可以使用之前執行的monkey命令再執行一遍,注意seed值要一樣
八.monke的測試策略?
單個apk的驗收測試時,使用單一apk且不忽略異常的命令執行
單個apk的解決問題的測試時,使用單一apk且忽略異常的命令執行。這樣可以在一次執行的過程中發現應用程式中的多個問題。
單個apk的應用程式的壓力/健壯性測試時,主要縮短monkey測試中事件與事件之間的延遲時間,驗證在快速的事件響應的過程中,程式是否能正常執行。將--throttle的值設定為500或者更小,一般都使用500毫秒的延遲事件。
在進行apk的集合測試(測試物件為多個APP,手機測試?)時,對於高頻率使用的apk、長時間使用的apk都要包含在執行的應用程式中間。
APK分類具體:
高頻率使用的apk如:Phone、Contacts、Message、Settings、File Manager、Gallery、Input Method
長時間使用的apk如:Phone、Browser、Music player、Camera、Video player、Email、Chat
其他的apk如:Calendar、Notepad、Calculator、FM Radio、<u style="box-sizing: border-box; outline: 0px; word-break: break-all;">Google</u> Search
九.想不隨機跑moneky,指定指令碼跑monkey?
http://blog.sina.com.cn/s/blog_614423f301013cvv.html