一、準備條件
1.測試設備需要是Android 4.1以上版本的系統(tǒng)
2.將手機設置為充電時屏幕不關閉
方法:進入手機設置--開發(fā)者選項--充電時屏幕不會休眠
(備注:找不到開發(fā)者選項的設備點擊內部版本號三次會彈出開發(fā)者選項)
3.部分手機(如:魅族),自帶手機手機管家,關閉:USB安全管理
方法:手機管家—權限管理—USB安全管理—關閉
4.部分手機(如小米),開啟:USB調試(安全設置)
方法:開發(fā)者選項—USB調試(安全設置)--開啟
5.手機解鎖圖案設置為“無”
方法:手機系統(tǒng)設置—安全--屏幕鎖定圖案設置為“無”
6.手機首次執(zhí)行時如彈出安裝uiautomator請按提示一步步點擊后安裝
7.手機安裝uiautomator
進入python所在目錄,例如:D:\Python27\Lib\site-packages\uiautomator\libs
adb –s 設備號 install app-uiautomator.apk
adb -s 設備號 install app-uiautomator-test.apk
二、執(zhí)行說明
1.測試準備:
執(zhí)行時手機不能和電腦斷開,否則不會生成執(zhí)行日志等文件
2.測試報告:
報告:report/時間戳/設備號
文件:report/時間戳/設備號/monkey.txt(每次執(zhí)行都生成)
文件:report/時間戳/設備號/20190115_205323_logcat(崩潰時截取的logcat)
文件:report/時間戳/設備號/xxx.csh(崩潰時截取)
3.各按鈕說明
幫助:跳轉到”SuperMonkey使用說明書“頁面
開始:當前選擇設備開始執(zhí)行monkey測試
停止:停止當前選擇設備執(zhí)行的monkey
開始所有:所有設備都開始執(zhí)行monkey測試
停止所有:停止所有設備執(zhí)行monkey
獲取包名: 請進入到被測試app程序里面,再點擊”獲取包名“
多設備可以選擇相同包,點擊”開始全部”同時執(zhí)行monkey測試
多設備可以選擇不同測試包,分別點擊”開始“執(zhí)行相應的monkey測試
4.提示信息
開始:提示"monkey test has been started 設備號"
停止:提示"monkey test has been stoped 設備號"
開始所有:不同設備連續(xù)彈出提示"monkey test has been started 設備號"
停止所有:不同設備連續(xù)彈出提示"monkey test has been stoped 設備號";
(多設備提示語連續(xù)彈出,只保留最后一條)
測試正常結束:{'monkey progress': 'finished', 'testresult': {'CRASH': 0, 'ANR': 0}}
三、monkey各參數(shù)段說明
1.-help 查看monkey的幫助信息
例:adb shell monkey -help
2.-p 指定被測應用的包名
例:adb shell monkey -p com.UCMobile.x86 100
如果想要指定多個包名,每一個包名要跟一個-p
例:adb shell monkey -p packageName1 -p packageName2 100
3. COUNT 設置執(zhí)行的次數(shù)
例:adb shell monkey 100
4.-s 設置種子數(shù)(相當于設置一個路徑,因為monkey是
隨機事件,所以為了使回歸路徑一致就需要設置相同的seed值)
例:adb shell monkey 100 -s 5
如果想重現(xiàn)上面例子的路徑下次執(zhí)行的-s也必須為5
5.--throttle 設置每次隨機事件的時間間隔(單位:毫秒)
例:adb shell monkey 100 --throttle 500
6.--throttle time --randomize-throttle 設置隨機時間的時間間隔區(qū)間
例:adb shell monkey 100 --throttle 500 --randomize-throttle
說明:執(zhí)行一百次monkey隨機事件,每次事件的間隔在0到500毫秒之間不固定
7.-v 設置日志級別最多(默認一個-v)
例:adb shell monkey -v 100
如需更詳細的日志可以加多個-v,最多3個
例:adb shell monkey -v -v -v 100
8.--ignore-crashes 運行中忽略crash,遇到crash依然把后面的事件跑完
例:adb shell monkey --ignore-crashes -v 100
9.--ignore-timeouts 運行中忽略ANR,遇到ANR依然把后面的事件跑完
例:adb shell monkey --ignore-timeouts -v 100
10.設置事件百分比,所有的百分比加起來不能超過100%
0:觸摸事件百分比,即參數(shù)--pct-touch
1:滑動事件百分比,即參數(shù)--pct-motion
2:縮放事件百分比,即參數(shù)--pct-pinchzoom
3:軌跡球事件百分比,即參數(shù)--pct-trackball
4:屏幕旋轉事件百分比,即參數(shù)--pct-rotation
5:基本導航事件百分比,即參數(shù)--pct-nav
6:主要導航事件百分比,即參數(shù)--pct-majornav
7:系統(tǒng)事件百分比,即參數(shù)--pct-syskeys
8:Activity啟動事件百分比,即參數(shù)--pct-appswitch
9:鍵盤翻轉事件百分比,即參數(shù)--pct-flip
10:其他事件百分比,即參數(shù)--pct-anyevent
例:adb shell monkey --pct-touch 20 -v 100
11.--ignore-native-crashes 忽略monkey本身的異常,直到事件執(zhí)行完畢
例:adb shell monkey --ignore-native-crashes -v 100
四、monkey日志分析
1.崩潰問題
如出現(xiàn)崩潰問題在monkey.txt里搜索CRASH ;
SuperMonkey工具會實時分析和統(tǒng)計崩潰問題
例如:
// CRASH: xxxxxxxx
// Short Msg: java.lang.NullPointerException
2.ANR問題
如出現(xiàn)ANR問題,monkey.txt里搜索ANR in xxx
SuperMonkey工具會實時分析和統(tǒng)計無響應問題
3.Monkey測試完成
如monkey測試完成,monkey.txt里搜索Monkey finished