一罩缴、什么是monkey
monkey是Android中附帶的一個(gè)工具恬吕,可以運(yùn)行在模擬器或?qū)嶋H設(shè)備中。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流(如按鍵輸入颁独、觸摸屏輸入翘单、手勢(shì)輸入等)吨枉,實(shí)現(xiàn)對(duì)正在開(kāi)發(fā)的應(yīng)用程序進(jìn)行壓力測(cè)試蹦渣。
二、monkey測(cè)試的目的
1貌亭、進(jìn)行壓力測(cè)試/穩(wěn)定性測(cè)試
2柬唯、開(kāi)發(fā)人員結(jié)合monkey打印的日志和系統(tǒng)打印的日志,修改測(cè)試中出現(xiàn)的bug
三圃庭、monkey參數(shù)
1.count 事件數(shù) (必填)
adb shell monkey 200? 設(shè)定事件數(shù)為200
2.[-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]?
????指定某一個(gè)app 某一些應(yīng)用進(jìn)行monkey測(cè)試
adb shell monkey -p 包名 -p 包名 count
★使用adb命令查看包名
????adb shell? pm list packages?
3. [--ignore-crashes] [--ignore-timeouts]? [--ignore-security-exceptions]
????忽略測(cè)試過(guò)程中關(guān)于崩潰,超時(shí),安全證書(shū)驗(yàn)證
?如果使用了這個(gè)參數(shù):表述執(zhí)行過(guò)程中如果發(fā)生上述問(wèn)題锄奢,會(huì)結(jié)束app的進(jìn)程,然后重新打開(kāi)APP,繼續(xù)執(zhí)行直到完成設(shè)定的次數(shù)剧腻,一般會(huì)加上這些參數(shù)拘央。
?如果不使用這些參數(shù):表述執(zhí)行過(guò)程中如果發(fā)生上述問(wèn)題,停止monkey測(cè)試书在。
4. [--kill-process-after-error]
????表示發(fā)生錯(cuò)誤以后灰伟,停止monkey測(cè)試。
5. [--monitor-native-crashes] [--ignore-native-crashes]
????監(jiān)控本地應(yīng)用崩潰儒旬,忽略本地應(yīng)用崩潰
因?yàn)槲覀冃枰獪y(cè)試使用自己的應(yīng)用時(shí)是否影響了別的應(yīng)用的情況栏账,提交bug。
6. [--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
[--pct-permission PERCENT]
模擬用戶操作的事件百分比.默認(rèn)情況是不動(dòng) 栈源。
7.[-s SEED]序列值 種子值
因?yàn)閟eed本身有很多種 ,一種seed下面又會(huì)出現(xiàn)N個(gè)bug所以我們一般設(shè)定一個(gè)seed值進(jìn)行測(cè)試挡爵。用一樣的seed值,執(zhí)行操作順序是一樣的(前提:初識(shí)狀態(tài)是一樣)甚垦。對(duì)于測(cè)試人員來(lái)說(shuō)來(lái)說(shuō):在驗(yàn)證bug階段了讨,同樣的seed值可以驗(yàn)證bug是否解決。
8. [-v [-v] ...] 表示日志的級(jí)別詳細(xì)程度?
?最多就:-v -v -v 一般 2個(gè)-v制轰,具體要根據(jù)項(xiàng)目質(zhì)量要求來(lái)定前计。
9.[--throttle MILLISEC]延遲時(shí)間
?執(zhí)行完一個(gè)操作之后,會(huì)進(jìn)行等待,最長(zhǎng)等待時(shí)間,單位是毫秒,一般設(shè)定幾百ms
?作用:模擬真實(shí)用戶操作
四垃杖、monkey執(zhí)行過(guò)程
1男杈、準(zhǔn)備環(huán)境
?????配置電腦端的jdk/sdk
? ? ?手機(jī)開(kāi)啟開(kāi)發(fā)者模式,打開(kāi)USB調(diào)試功能
? ? ?連接wifi和數(shù)據(jù)網(wǎng)絡(luò),避免隨機(jī)操作關(guān)掉某一個(gè)連接
? ???關(guān)掉手機(jī)的鎖屏功能(monkey不會(huì)解鎖操作)和自動(dòng)滅屏功能调俘,選常亮或設(shè)置為最大值
? ? ?手機(jī)的電量:保持90%以上
? ? ?插上耳機(jī)伶棒,或放在可以隔音的地方
2、手機(jī)與電腦連接ADB,若測(cè)試的APP需要登錄則提前登錄賬號(hào)彩库,monkey不會(huì)自己登錄賬號(hào)肤无,但有的時(shí)候monkey會(huì)自己退出賬號(hào),這是無(wú)法避免的骇钦,可以考慮更換seed值宛渐。
3、一條基礎(chǔ)的monkey指令,并將monkey日志重定向保存在D盤
adb shell monkey -p [包名] --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes -s [seed] -v -v --throttle [ms] [COUNT] >D:\log\monkey.txt
4窥翩、monkey的調(diào)試
在執(zhí)行monkey測(cè)試時(shí)业岁,為了在發(fā)生bug時(shí)更好的定位和分析,我們可以同時(shí)保存手機(jī)的系統(tǒng)日志寇蚊。
adb logcat -v time >D:\log\logcat.txt
參數(shù)解釋:
?????????-v 表示以日志形式輸出
????????time 表示以時(shí)間的順序輸出笔时,方便定位時(shí)間點(diǎn)
? ??????D:\log\logcat.txt 自己創(chuàng)建一個(gè)用來(lái)保存日志的文檔
5、執(zhí)行結(jié)束仗岸,查看monkey日志結(jié)果
? ???// Monkey finished ——此次測(cè)試通過(guò)允耿,無(wú)bug
? ? ?沒(méi)有顯示// Monkey finished ——搜索關(guān)鍵字定位bug,然后提交bug
bug關(guān)鍵字:CRASH、ANR扒怖、Monkey aborted due to error较锡、tomstone
五、monkey的強(qiáng)制結(jié)束
monkey只會(huì)自動(dòng)停止姚垃,若要強(qiáng)制結(jié)束monkey需要?dú)⒌鬽onkey的進(jìn)程。而logcat恰好相反盼忌,不會(huì)自動(dòng)停止积糯,需要手動(dòng)停止。