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