安卓app测试之Monkey测试
一、Monkey特點
1、運行時機(jī):一般是產(chǎn)品穩(wěn)定后 首輪功能測試完成的夜間進(jìn)行
2、需要知道packageName
3、目的:主要測試產(chǎn)品是否存在崩潰問題和ANR問題。
二、獲取包名的兩個方法
首先安裝到模擬器上想獲取的包:adb install <帶路徑的包名>
1、通過adb logcat獲取
adb shell “l(fā)ogcat | grep START”【如果直接使用不出現(xiàn)log,可以先進(jìn)入linux命令:adb shell,然后再執(zhí)行:logcat | grep START】
然后打開apk ,就可以出現(xiàn)包名
2、aapt dump badging apk名稱
三、Monkey的基本命令
1、標(biāo)準(zhǔn)monkey命令:adb shell monkey -p com.android.calculator2 -v 50
-p:packageName
-v:日志級別
50:事件數(shù)
2、adb shell monkey -p com.android.calculator2 -v -v --pct-touch 50 --throttle 600 88
--pct-touch 50 設(shè)置整個過程中點擊操作所占的百分比
--throttle 600每個事件間隔600ms
3、adb shell monkey -p packagename --throttle 500 --ignore-crashes --ignore-timeouts --ignoresecurity-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>c:monkey_test.log
--ignore-crashes 用于指定當(dāng)應(yīng)用程序崩潰時(Force& Close錯誤),Monkey是否停止運行。如果 使用此參數(shù),即使應(yīng)用程序崩潰,Monkey依然會發(fā)送事件,直到事件計數(shù)完成。
--ignore-timeouts 用于指定當(dāng)應(yīng)用程序發(fā)生ANR(Application No Responding)錯誤時,Monkey是 否停止運行。如果使用此參數(shù),即使應(yīng)用程序發(fā)生ANR錯誤,Monkey依然會發(fā)送事件,直到事件計 數(shù)完成。
--ignore-security-exceptions 用于指定當(dāng)應(yīng)用程序發(fā)生許可錯誤時(如證書許可,網(wǎng)絡(luò)許可等), Monkey是否停止運行。如果使用此參數(shù),即使應(yīng)用程序發(fā)生許可錯誤Monkey依然會發(fā)送事件,直 到事件計數(shù)完成。
--kill-process-after-error 用于指定當(dāng)應(yīng)用程序發(fā)生錯誤時,是否停止其運行。如果指定此參數(shù),當(dāng)應(yīng) 用程序發(fā)生錯誤時,應(yīng)用程序停止運行并保持在當(dāng)前狀態(tài)(注意:應(yīng)用程序僅是靜止在發(fā)生錯誤時 的狀態(tài),系統(tǒng)并不會結(jié)束該應(yīng)用程序的進(jìn)程)。
--monitor-native-crashes 用于指定是否監(jiān)視并報告應(yīng)用程序發(fā)生崩潰的本地代碼
四、Monkey的日志級別
參數(shù): -v 用于指定反饋信息級別(信息級別就是日志的詳細(xì)程度),總共分3個級別,分別對應(yīng)的參數(shù)如下表所示:
1、日志級別 Level0
示例 adb shellmonkey -p com.htc.Weather –v 100
說明 缺省值,僅提供啟動提示、測試完成和最終結(jié)果等少量信息
2、日志級別 Level 1
示例 adb shell monkey -p com.htc.Weather –v -v 100
說明 提供較為詳細(xì)的日志,包括每個發(fā)送到Activity的事件信息
3、日志級別 Level 2
示例 adb shell monkey -p com.htc.Weather –v -v –v 100
說明 最詳細(xì)的日志,包括了測試中選中/未選中的Activity信息
五、Monkey的事件類型
1、--pct-touch:指定觸摸事件的百分比,如:--pct-touch 5
2、 --pct-motion (滑動事件)
3、 --pct-trackball (軌跡球事件)
4、 --pct-nav (導(dǎo)航事件 up/down/left/right)
5、 --pct-majornav (主要導(dǎo)航事件 back key 、 menu key)
6、 --pct-syskeys (系統(tǒng)按鍵事件 Home 、Back 、startCall 、 endCall 、 volumeControl)
7、 --pct-appswitch (activity之間的切換)
8、--pct-anyevent (任意事件)
六、Monkey的參數(shù) -s
參數(shù): -s 用于指定偽隨機(jī)數(shù)生成器的seed值,如果seed相同,則兩次Monkey測試所產(chǎn)生的事件序列也相同的。 示例:
Monkey測試1:adb shell monkey -p com.htc.Weather –s 10 100
Monkey 測試2:adb shell monkey -p com.htc.Weather–s 10 100 兩次測試的效果是相同的,因為模擬的用戶操作序列(每次操作按照一定的先后順序所組成的一系列 操作,即一個序列)是一樣的。操作序列雖然是隨機(jī)生成的,但是只要我們指定了相同的Seed值,就可 以保證兩次測試產(chǎn)生的隨機(jī)操作序列是完全相同的,所以這個操作序列偽隨機(jī)的;
七、Monkey的日志分析
1、按關(guān)鍵字進(jìn)行搜索,ANR、Exception、Crash、Error。
2、找到有問題的地方,查看上下文信息。
3、注意第一個switch上下文信息。
4、查看monkey里面出錯前的一些事件動作,可以手動執(zhí)行該動作。
5、進(jìn)行問題復(fù)現(xiàn),可以使用之前執(zhí)行的monkey命令在執(zhí)行一遍,注意seed值要一樣。
【測試結(jié)果分析】
(1)、ANR問題(程序無響應(yīng)):在日志中搜索“ANR"(application no response)
(2)、閃退問題:在日志中搜索"crash"
(3)、異常:搜索"exception"
(4)、強制退出:搜索"force closed"
八、Crash專項
1、安裝可以引起Crash的App
2、執(zhí)行壓力命令
3、析取Crash的Exception信息
案例:執(zhí)行壓力測試,并且生成monkey_test.log日志文件。
#adb shell monkey -p cn.besttest.crashtest -v 100 >E:monkeymonkey_test.log
#查看E盤文件夾下已經(jīng)生成了monkey_test.log。
#打開文件,進(jìn)行crash分析
九、ANR專項
步驟同上
1、安裝可以引起ANR的App
2、執(zhí)行壓力命令
3、析取ANR的Exception信息
1、查看monkey的log
2、/data/anr/traces.txt
3、查看logcat日志 ANR
總結(jié)
以上是生活随笔為你收集整理的安卓app测试之Monkey测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux声卡录音和播放(alsa方法)
- 下一篇: 魔性的素数环1~20 自带解释~