參考連接:www.jianshu.com/p/09751dacd…android
這裏咱們接上一篇繼續講解如何利用monkey分析ANR、CRASH、以及monkey運行期間的系統日誌。shell
首先對於report的日誌命名須要有相應的規範,這裏建議是將level 1的文件命名爲verbose,將level 2的文件命名爲error。前者主要是用來觀看日誌信息和事件分佈信息,後者主要是用來觀看error的信息,作進一步的bug分析。bash
固然,不一樣的開發者命名規則可能不同,能夠按照本身的習慣配置。app
Code | description |
---|---|
2>/sdcard/error.txt | Level 2日誌保存到sdcard上的error.txt中 |
1>/sdcard/verbose.txt | Level 1日誌保存到sdcard上的verbose.txt中 |
在monkey自動化測試(命令行)這裏咱們須要在最後的命令行裏面加上配置。測試
adb shell monkey -p jixiang.com.myandroid --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-motion 60 -v -v --throttle 200 -s 200 1000 2>d:/error.txt 1>d:/verbose.txt
// 」2>/sdcard/error.txt 1>/sdcard/verbose.txt" //如果使用PC運行,並保存在PC端,不需加" ",可是如果須要保存在手機文件夾中,須要添加 複製代碼
這裏,先對於log日誌文件作一個概要性解釋spa
File | description |
---|---|
error.txt | 記錄了MONKEY測試時產生的一些ANR、強制關閉等異常 |
verbose.txt | 記錄了MONKEY測試時發送的各類事件,如觸摸事件的位置等等 |
log.txt | 此文件在手機上的LOG文件夾中(data/log目錄)中,主要主要記錄程序對MONKEY測試時的響應狀況 |
經過檢查verbose.txt文件的反饋信息,底部出現操作系統
monkey運行結束命令行
咱們須要對這3個文件進行分析整理,以便提交開發人員處理。調試
log日誌在使用Android Studio自帶的logcat就能夠查看,這裏再也不贅述。日誌
咱們先對verbose包進行解析。如下是概略性截圖
其中
//seed爲隨機數生成器seed值,count爲本次設置的操做次數
:Monkey: seed=200 count=1000
//後面爲指定測試的包名
:AllowPackage: com.changan.facein
//monkey進程的category
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
複製代碼
而後,在後面會有一個數據列表,這個是用來展現本次測試全部事件的百分比,我這裏直接貼出7.0(個人手機是小米NOTE3 7.0系統),這裏注意,不一樣的操做系統,得出來參數個數會不同,可是都大同小異。
* Event percentages本次測試的事件分佈頻率
* 0:觸摸事件百分比,即參數–pct-touch
*1:滑動事件百分比,即參數–pct-motion
*2:縮放事件百分比,即參數–pct-pinchzoom
*3:軌跡球事件百分比,即參數–pct-trackball
*4:屏幕旋轉事件百分比,即參數–pct-rotation
*5:獲取危險權限事件百分比,即參數–pct-permission//低版本沒有
*6:基本導航事件百分比,即參數–pct-nav
*7:主要導航事件百分比,即參數–pct-majornav
*8:系統事件百分比,即參數–pct-syskeys
*9:Activity啓動事件百分比,即參數–pct-appswitch
*10:鍵盤翻轉事件百分比,即參數–pct-flip
*11:其餘事件百分比,即參數–pct-anyevent
*/
// Event percentages:
// 0: 6.6666665%
// 1: 60.0%
// 2: 0.8888889%
// 3: 6.6666665%
// 4: -0.0%
// 5: -0.0%
// 6: 11.111112%
// 7: 6.6666665%
// 8: 0.8888889%
// 9: 0.8888889%
// 10: 0.44444445%
// 11: 5.7777777%
複製代碼
後面就是一個個switch的內容,因爲過多可是內容格式相同,這裏就截取其中的一段講解 //swicth會告訴咱們,在具體哪一個界面進行測試
Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.changan.facein/.activity.WelcomeActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.changan.facein/.activity.WelcomeActivity } in package com.changan.facein
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.changan.facein/.activity.WelcomeActivity } in package com.changan.facein
//motion時間,以及motion參數
Sleeping for 200 milliseconds
:Sending Key (ACTION_DOWN): 21 // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_UP): 21 // KEYCODE_DPAD_LEFT
複製代碼
結尾處通常會有如下幾行文字:
//Events injected 截止次數
Events injected: 1000
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=2 rotations=0
//整個測試完成持續時間爲ms。1s=1000ms
## Network stats: elapsed time=42539ms (0ms mobile, 0ms wifi, 42539ms not connected)
//monkey測試結束標識
// Monkey finished
複製代碼
到此對於Verbose的講解已經結束。
error文件中,爲發生錯誤後反饋的數據,通常沒有任何錯誤發生時,數據爲空,調試時最好忽略相應的錯誤,讓程序能夠繼續運行下去。monkey檢測到的錯誤類型分爲三種:
CRASH:系統崩潰日誌,當Apk存在崩潰的狀況下會反饋相應的數據。
A N R:當ANR狀況出現時,會反饋相應的數據。
常見的Exception:存在一些Exception的時,會反饋相應的數據