在軟件測試過程中,我們最能想到的就是按照功能常規(guī)流程操作步驟執(zhí)行,但有很多問題是藏匿在長時間非常規(guī)測試操作中。介紹下這種類型測試的monkey測試。
1.什么是monkey測試?
Monkey直譯為‘猴子’,猴子和測試人員本質(zhì)區(qū)別就是猴子不知道業(yè)務(wù)邏輯,猴子可以理解為完全不懂業(yè)務(wù)知識也沒有測試相關(guān)經(jīng)驗的的人員,在對于同樣一個項目而言,monkey測試就是對項目各種無目的事件操作。
2.Monkey測試原理
monkey向系統(tǒng)發(fā)送偽隨機的用戶事件流,實現(xiàn)對正在開發(fā)的應(yīng)用程序進行壓力測試
3.Monkey運行原理
monkey測試需要借助monkey工具,monkey工具是Android自帶的一個工具,使用java語言編寫的,jar包路徑:/system/framework/monkey.jar
如果要啟動monkey.jar則需要運行android中的名為“monkey”的Shell腳本,shell腳本存放路徑:/system/bin/monkey
Monkey的shell腳本需要通過adb命令來執(zhí)行,即通過cmd窗口中,adb shell monkey +命令參數(shù) 來進行monkey測試
4.monkey測試參數(shù)說明
a.基礎(chǔ)參數(shù)
1.-p:指定要測試的包名
說明:如何查看應(yīng)用的包名?
手機上打開目標(biāo)應(yīng)用:
DOS框中輸入:adb shell dumpsys window|findstr mCurrentFocus
2.-v :指定輸出日志的級別,monkey輸出日志有3個級別,通過-v參數(shù)來指定:
-v一級別 僅提供啟動提示、測試完成和最終結(jié)果等少量信息
例:adb shell monkey -p com.tal.kaoyan -v 100
–v –v二級別提供較為詳細的日志,包括每個發(fā)送到Activity的事件信息
例:adb shell monkey -p com.tal.kaoyan -v -v 100
–v –v –v三級別提供最詳細的日志
例:adb shell monkey -p com.tal.kaoyan -v -v -v 100
3.-s:用于指定偽隨機數(shù)生成器的seed值,如果seed相同,則兩次Monkey測試所產(chǎn)生的事件序列也相同的
注:seed值為monkey日志中的信息
4.--throttle <毫秒>事件之間插入固定延遲
b.事件類型參數(shù)
Monkey的事件類型總共有11種:
0:點擊事件,即參數(shù)--pct-touch
1:滑動事件,即參數(shù)--pct-motion
2:縮放事件,即參數(shù)--pct-pinchzoom
3:軌跡球事件,即參數(shù)--pct-trackball
4:屏幕旋轉(zhuǎn)事件,即參數(shù)--pct-rotation
5:基本導(dǎo)航事件,即參數(shù)--pct-nav
6:主要導(dǎo)航事件,即參數(shù)--pct-majornav
7:系統(tǒng)按鍵事件,即參數(shù)--pct-syskeys
8:Activity啟動事件,即參數(shù)--pct-appswitch
9:鍵盤喚出隱藏事件,即參數(shù)--pct-flip
10:其他事件,即參數(shù)--pct-anyevent
下圖是執(zhí)行monkey測試日志中顯示發(fā)送每類事件的默認比例,可設(shè)定某個事件類型的占比
c.調(diào)試參數(shù)
Monkey測試過程中需要長時間的對應(yīng)用發(fā)送事件測試,很可能測試時間不久就因為碰到問題而崩潰,此時測試停止,而達不到我們長期測試的目的,我們需要通過調(diào)試參數(shù)來讓測試繼續(xù)執(zhí)行就通過調(diào)試參數(shù)告訴monkey在遇到問題的時候該怎么處理
(1)--ignore-crashes:用于指定當(dāng)應(yīng)用程序崩潰時Monkey依然運行
(2)--ignore-timeouts:應(yīng)用程序發(fā)生任何超時錯誤(如“Application Not responding”對話框)Monkey依然運行
(3)--ignore-security-exceptions 指定應(yīng)用程序發(fā)生許可錯誤時(如證書許可,網(wǎng)絡(luò)許可等),monkey依然運行
5.Monkey測試命令
adb shell monkey –p com.tal.kaoyan --throttle 100 -s 1606780631055 --pct-touch 70 --ignore-crashes --ignore-timeouts --ignore-security-exception -v –v –v 864000(發(fā)送事件的次數(shù)) > d:emp\monkey.log
注:
(1)monkey的參數(shù)沒有順序要求,但是隨機事件數(shù)是一定要放在后的
(1)想要monkey運行24小時,每100毫秒發(fā)送一個事件,則需要發(fā)送的時間次數(shù)為:24*60*60*1000/100=864000(次)
6.Monkey測試能發(fā)現(xiàn)的問題:
monkey日志文件中搜索關(guān)鍵字:
(1)程序無響應(yīng),ANR問題:在日志中搜索“ANR” application not responding
(2)崩潰問題:在日志中搜索“CRASH”
(3)其他問題:在日志中搜索”Exception”