Monkey測(cè)試結(jié)果分析
一. 初步分析方法:
Monkey測(cè)試出現(xiàn)錯(cuò)誤后,一般的差錯(cuò)步驟為以下幾步:
1、 找到是monkey里面的哪個(gè)地方出錯(cuò)
2、 查看Monkey里面出錯(cuò)前的一些事件動(dòng)作,并手動(dòng)執(zhí)行該動(dòng)作
3、 若以上步驟還不能找出,可以使用之前執(zhí)行的monkey命令再執(zhí)行一遍,注意seed值要一樣
一般的測(cè)試結(jié)果分析:
1、 ANR問(wèn)題:在日志中搜索“ANR”
2、 崩潰問(wèn)題:在日志中搜索“Exception”
二. 詳細(xì)分析monkey日志:
將執(zhí)行Monkey生成的log,從手機(jī)中導(dǎo)出并打開(kāi)查看該log;在log的最開(kāi)始都會(huì)顯示Monkey執(zhí)行的seed值、執(zhí)行次數(shù)和測(cè)試的包名。
首先我們需要查看Monkey測(cè)試中是否出現(xiàn)了ANR或者異常,具體方法如上述。
然后我們要分析log中的具體信息,方法如下:
查看log中第一個(gè)Switch,主要是查看Monkey執(zhí)行的是那一個(gè)Activity,譬如下面的log中,執(zhí)行的是com.tencent.smtt.SplashActivity,在下一個(gè)swtich之間的,如果出現(xiàn)了崩潰或其他異常,可以在該Activity中查找問(wèn)題的所在。
:Switch:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.tencent.smtt/.SplashActivity;end
// Allowing start of Intent {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]cmp=com.tencent.smtt/.SplashActivity } in package com.tencent.smtt
在下面的log中,Sending Pointer ACTION_DOWN和Sending Pointer ACTION_UP代表當(dāng)前執(zhí)行了一個(gè)單擊的操作;
Sleeping for 500 milliseconds這句log是執(zhí)行Monkey測(cè)試時(shí),throttle設(shè)定的間隔時(shí)間,每出現(xiàn)一次,就代表一個(gè)事件。
SendKey(ACTION_DOWN) //KEYCODE_DPAD_DOWN? 代表當(dāng)前執(zhí)行了一個(gè)點(diǎn)擊下導(dǎo)航鍵的操作;
Sending Pointer ACTION_MOVE? ? 代表當(dāng)前執(zhí)行了一個(gè)滑動(dòng)界面的操作。
:Sending Pointer ACTION_DOWN x=47.0 y=438.0
:Sending Pointer ACTION_UP x=47.0 y=438.0
Sleeping for 500 milliseconds
:SendKey (ACTION_DOWN): 20? //KEYCODE_DPAD_DOWN
:SendKey (ACTION_UP): 20? //KEYCODE_DPAD_DOWN
Sleeping for 500 milliseconds
:Sending Pointer ACTION_MOVE x=-2.0 y=3.0
:Sending Pointer ACTION_MOVE x=4.0 y=-3.0
:Sending Pointer ACTION_MOVE x=-5.0 y=-3.0
:Sending Pointer ACTION_MOVE x=3.0 y=4.0
:Sending Pointer ACTION_MOVE x=-4.0 y=1.0
:Sending Pointer ACTION_MOVE x=-1.0 y=-1.0
:Sending Pointer ACTION_MOVE x=-2.0 y=-4.0
如果Monkey測(cè)試順利執(zhí)行完成,在log的最后,會(huì)打印出當(dāng)前執(zhí)行事件的次數(shù)和所花費(fèi)的時(shí)間;// Monkey finished代表執(zhí)行完成。Monkey執(zhí)行中斷,在log的最后也能查看到當(dāng)前已執(zhí)行的次數(shù)。Monkey執(zhí)行完成的log具體如下:
Events injected: 6000
:Dropped: keys=0 pointers=9 trackballs=0 flips=0
## Network stats: elapsed time=808384ms (0ms mobile, 808384ms wifi, 0msnot connected)
// Monkey finished