Monkey測試結果解析(二)

接第一部分:

// CRASH: wfh.LessonTable (pid 1973)

// Short Msg: java.lang.NullPointerException
// Long Msg: java.lang.NullPointerException
// Build Label: android:generic/sdk/generic/:2.1-update1/ECLAIR/35983:eng/test-keys
// Build Changelist: 35983
// Build Time: 1273161972
// ID:
// Tag: AndroidRuntime
// java.lang.NullPointerException:
//   at android.widget.TabHost.dispatchKeyEvent(TabHost.java:279)
//   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
//   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
//   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
//   at android.widget.TabHost.dispatchKeyEvent(TabHost.java:275)
//   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
//   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
//   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
//   at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1655)
//   at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1102)
//   at android.app.Activity.dispatchKeyEvent(Activity.java:2038)
//   at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1631)
//   at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2368)
//   at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2338)
//   at android.view.ViewRoot.handleMessage(ViewRoot.java:1641)
//   at android.os.Handler.dispatchMessage(Handler.java:99)
//   at android.os.Looper.loop(Looper.java:123)
//   at android.app.ActivityThread.main(ActivityThread.java:4363)
//   at java.lang.reflect.Method.invokeNative(Method.java:-2)
//   at java.lang.reflect.Method.invoke(Method.java:521)
//   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
//   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
//   at dalvik.system.NativeStart.main(NativeStart.java:-2)
** Monkey aborted due to error.
Events injected: 190
:Dropped: keys=0pointers=11trackballs=0flips=0
## Network stats: elapsed time=27954ms (27954ms mobile, 0ms wifi, 0ms not connected)
** System appears to have crashed at event 190of 200using seed 0
#
開始monkey測試時android的LogCat輸出的信息:
11-0108:52:53.712: DEBUG/AndroidRuntime(2077): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
11-0108:52:53.742: DEBUG/AndroidRuntime(2077): CheckJNI is ON
11-0108:52:54.453: DEBUG/AndroidRuntime(2077): --- registering nativefunctions ---
11-0108:52:55.542: DEBUG/ddm-heap(2077): Got feature list request
11-0108:52:59.533: INFO/ActivityManager(53): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000cmp=wfh.LessonTable/.MainTable }
11-0108:53:00.842: INFO/ActivityManager(53): Displayed activity wfh.LessonTable/.MainTable: 1266ms (total 1266ms)
11-0108:53:03.123: DEBUG/dalvikvm(1973): GC freed 7524objects / 507616bytes in 246ms
11-0108:53:03.173: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.213: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c585c0on MO that has not been deactivated or closed
11-0108:53:03.213: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.213: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.233: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.252: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c57f98on MO that has not been deactivated or closed
11-0108:53:03.252: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.252: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.263: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.293: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c57970on MO that has not been deactivated or closed
11-0108:53:03.293: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.303: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.323: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.323: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c57330on MO that has not been deactivated or closed
11-0108:53:03.333: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.353: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.363: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.403: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c45330on MO that has not been deactivated or closed
11-0108:53:03.403: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.403: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.423: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.433: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c44d08on MO that has not been deactivated or closed
11-0108:53:03.443: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.443: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.453: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.483: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c446c8on MO that has not been deactivated or closed
11-0108:53:03.483: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.503: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.523: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.563: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c26288on MO that has not been deactivated or closed
11-0108:53:03.572: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.572: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.622: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.642: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c25cb0on MO that has not been deactivated or closed
11-0108:53:03.642: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.662: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.662: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.722: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c256d8on MO that has not been deactivated or closed
11-0108:53:03.722: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.722: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.732: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.752: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c250e8on MO that has not been deactivated or closed
11-0108:53:03.752: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.762: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:03.902: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
11-0108:53:03.902: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c1e780on MO that has not been deactivated or closed
11-0108:53:03.902: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
11-0108:53:03.912: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
11-0108:53:04.247: WARN/KeyCharacterMap(1973): No keyboard forid 0
11-0108:53:04.252: WARN/KeyCharacterMap(1973): Using defaultkeymap: /system/usr/keychars/qwerty.kcm.bin
11-0108:53:04.762: INFO/ActivityManager(53): Starting activity: Intent { cmp=wfh.LessonTable/.EditLesson }
11-0108:53:05.233: WARN/WindowManager(53): No window to dispatch pointer action 0
11-0108:53:05.533: WARN/WindowManager(53): No window to dispatch pointer action 1
11-0108:53:06.782: INFO/ActivityManager(53): Displayed activity wfh.LessonTable/.EditLesson: 1637ms (total 1637ms)
11-0108:53:09.623: WARN/ActivityManager(53): Launch timeout has expired, giving up wake lock!
11-0108:53:09.682: WARN/ActivityManager(53): Activity idle timeout forHistoryRecord{43d3ab48 wfh.LessonTable/.MainTable}
11-0108:53:12.662: INFO/ActivityManager(53): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000cmp=com.android.launcher/.Launcher }
11-0108:53:15.433: INFO/NotificationService(53): enqueueToast pkg=wfh.LessonTable callback=android.app.ITransientNotification$Stub$Proxy@43d5b308duration=1
11-0108:53:15.513: INFO/System.out(1973): UpdateRecord
11-0108:53:19.353: INFO/NotificationService(53): enqueueToast pkg=android callback=android.widget.Toast$TN@43ced790duration=0
11-0108:53:19.752: WARN/InputManagerService(53): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43d2bab0
11-0108:53:20.752: INFO/ActivityManager(53): Starting activity: Intent { cmp=wfh.LessonTable/.AWeekLesson (has extras) }
11-0108:53:21.852: INFO/ActivityManager(53): Displayed activity wfh.LessonTable/.AWeekLesson: 1028ms (total 1028ms)
11-0108:53:27.093: DEBUG/AndroidRuntime(1973): Shutting down VM
11-0108:53:27.113: WARN/dalvikvm(1973): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
以下爲LogCat輸出的錯誤信息,在以下的信息中首先從自己的包中找錯誤,如果沒有自己的包的話就再找發生錯誤的包的第一個發生了異常。由錯誤提示可以看出很大的可能是因爲TabHost引發的異常。經過查看代碼發現是由於TabHost的編寫不規範,TabHost與其中一個view放在了一起,在monkey測試做滾球上下滾動時當滾到TabHost時就發生了異常了。所以把TabHost與Activity分開寫就不會出現些問題了。
11-0108:53:27.113: ERROR/AndroidRuntime(1973): Uncaught handler: thread main exiting due to uncaught exception
11-0108:53:27.133: ERROR/AndroidRuntime(1973): java.lang.NullPointerException
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.widget.TabHost.dispatchKeyEvent(TabHost.java:279)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.widget.TabHost.dispatchKeyEvent(TabHost.java:275)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1655)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1102)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.app.Activity.dispatchKeyEvent(Activity.java:2038)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1631)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2368)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2338)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1641)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.os.Looper.loop(Looper.java:123)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at android.app.ActivityThread.main(ActivityThread.java:4363)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at java.lang.reflect.Method.invokeNative(Native Method)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at java.lang.reflect.Method.invoke(Method.java:521)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-0108:53:27.133: ERROR/AndroidRuntime(1973):     at dalvik.system.NativeStart.main(Native Method)
11-0108:53:27.163: INFO/Process(53): Sending signal. PID: 1973SIG: 3
11-0108:53:27.173: INFO/dalvikvm(1973): threadid=7: reacting to signal 3
11-0108:53:27.173: ERROR/dalvikvm(1973): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
11-0108:53:27.622: INFO/AndroidRuntime(2077): AndroidRuntime onExit calling exit(190)
11-0108:53:33.702: WARN/ActivityManager(53): Launch timeout has expired, giving up wake lock!
11-0108:53:33.733: WARN/ActivityManager(53): Activity idle timeout forHistoryRecord{43d3ab48 wfh.LessonTable/.MainTable}
11-0108:53:41.173: DEBUG/dalvikvm(1334): GC freed 62objects / 3120bytes in 2419ms
11-0108:53:43.742: WARN/ActivityManager(53): Activity destroy timeout forHistoryRecord{43dc5028 wfh.LessonTable/.AWeekLesson}
四、總結:
在monkey測試中常用的命令組合有:
1、monkey -p com.yourpackage -v 500//簡單的輸出測試的信息。
2、monkey -p com.yourpackage -v -v -v 500//以深度爲三級輸出測試信息。
3、monkey -p com.yourpackage --port 端口號 -v//爲測試分配一個專用的端口號,不過這個命令只能輸出跳轉的信息及有錯誤時輸出信息。
4、monkey -p com.yourpackage -s 數字 -v 500//爲隨機數的事件序列定一個值,若出現問題下次可以重複同樣的系列進行排錯。
5、monkey -p com.yourpackage -v --throttle 3000500//爲每一次執行一次有效的事件後休眠3000毫秒。
五、附錄:
以下內容爲android系統中的keycode值,在以後的調試中會經常需要查詢:
KEYCODE_UNKNOWN=0;
KEYCODE_SOFT_LEFT=1;
KEYCODE_SOFT_RIGHT=2;
KEYCODE_HOME=3;
KEYCODE_BACK=4;
KEYCODE_CALL=5;
KEYCODE_ENDCALL=6;
KEYCODE_0=7;
KEYCODE_1=8;
KEYCODE_2=9;
KEYCODE_3=10;
KEYCODE_4=11;
KEYCODE_5=12;
KEYCODE_6=13;
KEYCODE_7=14;
KEYCODE_8=15;
KEYCODE_9=16;
KEYCODE_STAR=17;      //-----------------------------------
KEYCODE_POUND=18;
KEYCODE_DPAD_UP=19;
KEYCODE_DPAD_DOWN=20;
KEYCODE_DPAD_LEFT=21;
KEYCODE_DPAD_RIGHT=22;
KEYCODE_DPAD_CENTER=23;
KEYCODE_VOLUME_UP=24;
KEYCODE_VOLUME_DOWN=25;
KEYCODE_POWER=26;
KEYCODE_CAMERA=27;
KEYCODE_CLEAR=28;    //-----------------------------------
KEYCODE_A=29;
KEYCODE_B=30;
KEYCODE_C=31;
KEYCODE_D=32;
KEYCODE_E=33;
KEYCODE_F=34;
KEYCODE_G=35;
KEYCODE_H=36;
KEYCODE_I=37;
KEYCODE_J=38;
KEYCODE_K=39;
KEYCODE_L=40;
KEYCODE_M=41;
KEYCODE_N=42;
KEYCODE_O=43;
KEYCODE_P=44;
KEYCODE_Q=45;
KEYCODE_R=46;
KEYCODE_S=47;
KEYCODE_T=48;
KEYCODE_U=49;
KEYCODE_V=50;
KEYCODE_W=51;
KEYCODE_X=52;
KEYCODE_Y=53;
KEYCODE_Z=54;
KEYCODE_COMMA=55;    //-----------------,------------------
KEYCODE_PERIOD=56;    //-----------------.------------------
KEYCODE_ALT_LEFT=57;
KEYCODE_ALT_RIGHT=58;
KEYCODE_SHIFT_LEFT=59;
KEYCODE_SHIFT_RIGHT=60;
KEYCODE_TAB=61;
KEYCODE_SPACE=62;
KEYCODE_SYM=63;
KEYCODE_EXPLORER=64; //-----------------------------------
KEYCODE_ENVELOPE=65;  //---------------信封--------------------
KEYCODE_ENTER=66;    
KEYCODE_DEL=67;
KEYCODE_GRAVE=68;  //---------------墳墓--------------------
KEYCODE_MINUS=69;  //---------------負--------------------
KEYCODE_EQUALS=70;  //--------------等於(=)---------------------
KEYCODE_LEFT_BRACKET=71;  //----------------------------
KEYCODE_RIGHT_BRACKET=72;  //----------------------------
KEYCODE_BACKSLASH=73;  //-------------反斜線\---------------
KEYCODE_SEMICOLON=74;  //--------------;--------------
KEYCODE_APOSTROPHE=75; //---------------’-------------
KEYCODE_SLASH=76;         //--------------/?--------------
KEYCODE_AT=77;           //------------------@---------------
KEYCODE_NUM=78;
KEYCODE_HEADSETHOOK=79;  //----------------------------
KEYCODE_FOCUS=80;//*Camera*focus
KEYCODE_PLUS=81;   //------------+----------------
KEYCODE_MENU=82;
KEYCODE_NOTIFICATION=83;   //----------------------------
KEYCODE_SEARCH=84;
KEYCODE_MEDIA_PLAY_PAUSE=85;
KEYCODE_MEDIA_STOP=86;
KEYCODE_MEDIA_NEXT=87;
KEYCODE_MEDIA_PREVIOUS=88;
KEYCODE_MEDIA_REWIND=89;  //------------倒帶----------------
KEYCODE_MEDIA_FAST_FORWARD=90;
KEYCODE_MUTE=91;  //-----------靜音-----------------



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章