建设化妆品网站服务,即时聊天app开发,深圳购物网站建设价格,前端程序员培训班转:原文#xff1a;https://blog.csdn.net/a136332462/article/details/76066909一、一般测试结果分析-搜索关键字#xff1a;1、无响应问题可以在日志中搜索 “ANR” 。2、崩溃问题搜索 “CRASH” 。3、内存泄露问题搜索GC(需进一步分析)。4、异常问题搜索 “Ex…转:原文https://blog.csdn.net/a136332462/article/details/76066909一、一般测试结果分析-搜索关键字1、无响应问题可以在日志中搜索 “ANR” 。2、崩溃问题搜索 “CRASH” 。3、内存泄露问题搜索GC(需进一步分析)。4、异常问题搜索 “Exception”(如果出现空指针 NullPointerException需格外重视)。详细说明1、 ANR问题在日志中搜索“ANR”(“Application Not Responding)说明有bug出现ANR一般是主线程的响应超过5秒或者BroadcastReceiver没有在10秒内作出响应。这个就是一个比较严重的缺陷。把耗时的操作另起线程来处理就可以了。2、 崩溃问题在日志中搜索“Exception”二. 详细分析monkey日志将执行Monkey生成的log从手机中导出并打开查看该log在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。首先我们需要查看Monkey测试中是否出现了ANR或者异常具体方法如上述。然后我们要分析log中的具体信息方法如下查看log中第一个Switch主要是查看Monkey执行的是那一个Activity譬如下面的log中执行的是com.tencent.smtt.SplashActivity在下一个swtich之间的如果出现了崩溃或其他异常可以在该Activity中查找问题的所在。:Switch:#Intent;actionandroid.intent.action.MAIN;categoryandroid.intent.category.LAUNCHER;launchFlags0x10000000;componentcom.tencent.smtt/.SplashActivity;end// Allowing start of Intent {actandroid.intent.action.MAIN cat[android.intent.category.LAUNCHER]cmpcom.tencent.smtt/.SplashActivity } in package com.tencent.smtt在下面的log中Sending Pointer ACTION_DOWN和Sending Pointer ACTION_UP代表当前执行了一个单击的操作;Sleeping for 500 milliseconds这句log是执行Monkey测试时throttle设定的间隔时间每出现一次就代表一个事件。SendKey(ACTION_DOWN) //KEYCODE_DPAD_DOWN 代表当前执行了一个点击下导航键的操作Sending Pointer ACTION_MOVE 代表当前执行了一个滑动界面的操作。:Sending Pointer ACTION_DOWN x47.0 y438.0:Sending Pointer ACTION_UP x47.0 y438.0Sleeping for 500 milliseconds:SendKey (ACTION_DOWN): 20 //KEYCODE_DPAD_DOWN:SendKey (ACTION_UP): 20 //KEYCODE_DPAD_DOWNSleeping for 500 milliseconds:Sending Pointer ACTION_MOVE x-2.0 y3.0:Sending Pointer ACTION_MOVE x4.0 y-3.0:Sending Pointer ACTION_MOVE x-5.0 y-3.0:Sending Pointer ACTION_MOVE x3.0 y4.0:Sending Pointer ACTION_MOVE x-4.0 y1.0:Sending Pointer ACTION_MOVE x-1.0 y-1.0:Sending Pointer ACTION_MOVE x-2.0 y-4.0如果Monkey测试顺利执行完成在log的最后会打印出当前执行事件的次数和所花费的时间// Monkey finished代表执行完成。Monkey执行中断在log的最后也能查看到当前已执行的次数。Monkey执行完成的log具体如下Events injected: 6000:Dropped: keys0 pointers9 trackballs0 flips0## Network stats: elapsed time808384ms (0ms mobile, 808384ms wifi, 0msnot connected)// Monkey finished三、常见问题的具体分析1、Null指针异常空指针异常主要是有NullPointerException异常提示在Monkey测试过程中该信息一般记录在plog.log (locat中也有该信息)中。如果Monkey命令被中断说明有异常信息并且有对应的打印信息可以看到如下信息说明几个问题A、android.process.acore该进程出现异常B、异常信息主要是由于NullPointerException引起的也就是出现了空指针导致了acore进程进入debugC、具体的可以继续分析是由哪个函数的那一行导致的如可以从rollAnimate3dRotate.java文件中的275行查找等。//at com.android.launcher.LauncherAnimator.ScrollAnimate3dRotate.drawFrame(ScrollAnimate3dRotate.java:275)D、可能同一应用中存在多处的空指针异常所以一旦出现空指异常后可以分析和对比log信息如果不一致的话需要把新的log信息也一同添加到bug中如果log信息一直的话则不需要继续补充没有必要的log信息。**************************************************************************// CRASH: android.process.acore (pid 1339)// Short Msg: java.lang.NullPointerException// Long Msg: java.lang.NullPointerException// Build Label: android:FIH/msm7627_surf/msm7627_surf/F0X:1.6/DONUT/0001_0_020:eng/release-keys// Build Changelist: -1// Build Time: 1271397239// ID:// Tag: AndroidRuntime// java.lang.NullPointerException:// at com.android.launcher.LauncherAnimator.ScrollAnimate3dRotate.drawFrame(ScrollAnimate3dRotate.java:275)// at com.android.launcher.Workspace.dispatchDraw(Workspace.java:605)// at android.view.ViewGroup.drawChild(ViewGroup.java:1524)// at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)// at com.android.launcher.DragLayer.dispatchDraw(DragLayer.java:258)// at android.view.ViewGroup.drawChild(ViewGroup.java:1524)// at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)// at android.view.View.draw(View.java:6329)// at android.widget.FrameLayout.draw(FrameLayout.java:352)// at android.view.ViewGroup.drawChild(ViewGroup.java:1526)// at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)// at android.view.View.draw(View.java:6329)// at android.widget.FrameLayout.draw(FrameLayout.java:352)// at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1901)// at android.view.ViewRoot.draw(ViewRoot.java:1333)// at android.view.ViewRoot.performTraversals(ViewRoot.java:1098)// at android.view.ViewRoot.handleMessage(ViewRoot.java:1618)// at android.os.Handler.dispatchMessage(Handler.java:99)// at android.os.Looper.loop(Looper.java:123)// at android.app.ActivityThread.main(ActivityThread.java:4203)// 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:799)// at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)// at dalvik.system.NativeStart.main(NativeStart.java:-2)** System appears to have crashed at event 7908 of 5000000 using seed 02、debug异常debug异常主要是由于应用程序本身的错误导致的异常。在Monkey测试过程中该信息同样记录在plog.log (locat中也有该信息)中。一般情况下出现的该问题很可能在手动测试时也可以测试到。A、com.android.browser该进程进入debugB、出现的是IllegalStateException异常该异常一般多是传递的参数非法或被多次调用时出现的异常C、Bug信息提交时详细信息中一般应该包含如下的log信息方便开发人员分析和定位。************************************************************************// CRASH: com.android.browser (pid 5683)// Short Msg: Connection is not open// Long Msg: java.lang.IllegalStateException: Connection is not open// Build Label: android:FIH/msm7627_surf/msm7627_surf/F0X:1.6/DONUT/0001_0_020:eng/release-keys// Build Changelist: -1// Build Time: 1271397239// ID:// Tag: AndroidRuntime// java.lang.IllegalStateException: Connection is not open// at android.net.http.AndroidHttpClientConnection.assertOpen(AndroidHttpClientConnection.java:153)// at android.net.http.AndroidHttpClientConnection.setSocketTimeout(AndroidHttpClientConnection.java:195)// at android.net.http.Connection.openHttpConnection(Connection.java:364)// at android.net.http.Connection.processRequests(Connection.java:225)// at android.net.http.ConnectionThread.run(ConnectionThread.java:116)** System appears to have crashed at event 34155 of 5000000 using seed 0**3、低内存异常低内存异常一般情况下主要表现在出现OutOfMemoryError异常或者提示Out of memory其后果同样表现为抛出OutOfMemoryError异常或者是通过kill process 来杀掉部分进程以释放内存空间当然如果被kill点关键的进程的话也就可能导致部分应用会自动的退出。出现该情况时主要是在进行频繁的进行大量的操作导致的所以使用手动的方式也是可能进行重现的。A、com.android.elastos.backup该进程出现的异常B、出现的是OutOfMemoryError异常该异常一般多频繁的操作(即多次调用某个函数存在申请变量空间未释放)导致的C、Bug信息提交时详细信息中同样应该包含如下的log信息方便开发人员分析和定位。// CRASH: com.android.elastos.backup (pid 1581)// Short Msg: bitmap size exceeds VM budget// Long Msg: java.lang.OutOfMemoryError: bitmap size exceeds VM budget// Build Label: android:FIH/msm7627_surf/msm7627_surf/F0X:1.6/DONUT/0001_0_020:eng/release-keys// Build Changelist: -1// Build Time: 1271397239// ID:// Tag: AndroidRuntime// java.lang.OutOfMemoryError: bitmap size exceeds VM budget// at android.graphics.Bitmap.nativeCreate(Bitmap.java:-2)// at android.graphics.Bitmap.createBitmap(Bitmap.java:464)// at android.graphics.Bitmap.createBitmap(Bitmap.java:431)// at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:336)// at android.widget.AbsListView.preScaleBitmapBG(AbsListView.java:2354)// at android.widget.AbsListView.draw(AbsListView.java:2365)// at android.view.ViewGroup.drawChild(ViewGroup.java:1526)// at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)// at android.view.View.draw(View.java:6329)// at android.view.ViewGroup.drawChild(ViewGroup.java:1526)// at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)// at android.view.View.draw(View.java:6329)// at android.widget.FrameLayout.draw(FrameLayout.java:352)// at android.view.ViewGroup.drawChild(ViewGroup.java:1526)// at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)// at android.view.View.draw(View.java:6329)// at android.widget.FrameLayout.draw(FrameLayout.java:352)// at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1901)// at android.view.ViewRoot.draw(ViewRoot.java:1333)// at android.view.ViewRoot.performTraversals(ViewRoot.java:1098)// at android.view.ViewRoot.handleMessage(ViewRoot.java:1618)// at android.os.Handler.dispatchMessage(Handler.java:99)// at android.os.Looper.loop(Looper.java:123)// at android.app.ActivityThread.main(ActivityThread.java:4203)// 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:799)// at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)// at dalvik.system.NativeStart.main(NativeStart.java:-2)** System appears to have crashed at event 143290 of 100000000 using seed 0#或者出现plog信息的最后出现如下log信息也可能存在同样问题3[56351.640641] Out of memory: kill process 14177 (app_process) score 247872 or a child3[56351.641121] Killed process 14177 (app_process)4、操作无响应异常操作无响应的问题主要表现在Monkey运行过程中出现某功能无响应提示是否“强制关闭“或“等待“同时会打印出相应的log信息如下A、可以说明com.android.soundrecorder该进程出现的无响应B、出现的是TimerOut异常该异常一般出现时一般都会又keyDispatchingTimedOut提示C、目前uPhone手机中经常出现操作无响应的几个模块包括clock、camera、soundrecorder、broser等根据开发人员分析其他模块也是有可能出现操作无响应的测试过程中请多注意。D、出现无响应异常一般情况下很难被修复和发送事件的频率也是有关系的从质量上来要求的话要求尽可能的减少出现操作无响应的频率和时间。// NOT RESPONDING: com.android.soundrecorder (pid 1931)ANR in process: com.android.soundrecorder (last in com.android.soundrecorder)Annotation: keyDispatchingTimedOutCPU usage:Load: 8.24 / 8.41 / 8.25CPU usage from 35911ms to 83ms ago:com.android.soundrecorder: 4% 3% user 0% kernel / faults: 997 minor 43 majormediaserver: 2% 2% user 0% kernel / faults: 267 minor 3 majorandroid.process.media: 2% 0% user 1% kernel / faults: 563 minor 194 majorsystem_server: 1% 1% user 0% kernel / faults: 1279 minor 5 majorcom.cootek.touchpal: 0% 0% user 0% kernel / faults: 180 minor 1 majorsensorserver_ya: 0% 0% user 0% kernel / faults: 47 minor 1 majormmcqd: 0% 0% user 0% kernelapp_process: 0% 0% user 0% kernel / faults: 203 minor 1 majorcom.fihtdc.brservice: 0% 0% user 0% kernel / faults: 29 minorkswapd0: 0% 0% user 0% kernelcom.android.settings: 0% 0% user 0% kernel / faults: 266 minorport-bridge: 0% 0% user 0% kernel / faults: 19 minorrpcrouter: 0% 0% user 0% kernelcom.android.mms: 0% 0% user 0% kernel / faults: 135 minor 8 majorTOTAL: 13% 8% user 4% kernel 0% iowaitprocrank:PID Vss Rss Pss Uss cmdline1209 35368K 25376K 15283K 14036K system_server1342 32788K 24596K 14899K 14136K android.process.acore……// procrank status was 0anr traces:// meminfo status was 0** System appears to have crashed at event 59034 of 5000000 using seed 05、其他异常A、Restart System异常(系统重新启动)即log信息的最后几行会看到Restart System的打印信息说明手机被自动的重启或断掉有几个方面的原因1、运行过程中存在异常手机被自动重启2、手机在运行过程中进入设置中的恢复出场设置导致手机重启3、其他原因如果手机后盖移动等B、RuntimeException等异常,同样的会在plog.log中可以看到相应的打印信息, java.lang.RuntimeException该问题多出现在操作无响应之后,或者是某应用的服务无法启动或连接时,需要具体问题具体的分析C、StaleDataException、readException等异常, 在plog.log中可以看到相应的打印信息,也会有相应的信息: android.database.StaleDataException,该信息说明android的数据库操作出现异常, 需要具体问题具体的分析D、IllegalArgumentException等异常多少情况下为说明向函数传递了一个不正确或不合法的参数需要具体问题具体的分析E、其他带补充和分析说明说明几点1、log信息的分析希望在bug信息的简述中能够明确说明清楚出现的是什么异常具体的log信息要单独添加到详细信息描述中方便相关人员定位和查看。2、buy的提交对于Monkey测试出现的问题a、首先要求分析log信息b、再次要确认该bug是否已经提交已经提交的bug和新运行出来的问题是否一致c、如果不一致的话是否属于同一问题如空指针异常是的话就把该问题的log信息一起注释到bug信息中并添加所有的log信息d、如果不一致的也不属于同一问题的话可以提交新的bug3、在java编程中一般的异常都会抛出xxx Exception的信息可以跟进xxx进行相关的判断和分析具体的异常则需要具体问题具体分析。6、常见的java异常算术异常类ArithmeticExecption空指针异常类NullPointerException类型强制转换异常ClassCastException数组负下标异常NegativeArrayException数组下标越界异常ArrayIndexOutOfBoundsException违背安全原则异常SecturityException文件已结束异常EOFException文件未找到异常FileNotFoundException字符串转换为数字异常NumberFormatException操作数据库异常SQLException输入输出异常IOException违法访问错误IllegalAccessError内存不足错误OutOfMemoryError堆栈溢出错误StackOverflowError 1四.percent相关命令控制了事件类型如果我们不指定事件类型。生成的报告中事件占比大致如下// Event percentages:// 0: 15.0%// 1: 10.0%// 2: 2.0%// 3: 15.0%// 4: -0.0%// 5: 25.0%// 6: 15.0%// 7: 2.0%// 8: 2.0%// 9: 1.0%// 10: 13.0%这里将事件分为了10种类型分别为0触摸事件百分比即参数--pct-touch1滑动事件百分比即参数--pct-motion2缩放事件百分比即参数--pct-pinchzoom3轨迹球事件百分比即参数--pct-trackball4屏幕旋转事件百分比5基本导航事件百分比即参数--pct-nav6主要导航事件百分比即参数--pct-majornav7系统事件百分比即参数--pct-syskeys8Activity启动事件百分比即参数--pct-appswitch9键盘翻转事件百分比即参数--pct-flip10其他事件百分比即参数--pct-anyevent